Skip to content

Instantly share code, notes, and snippets.

@rcoup
Created June 27, 2019 12:13
Show Gist options
  • Select an option

  • Save rcoup/79e2d12904cf7b532e1b40b013b76348 to your computer and use it in GitHub Desktop.

Select an option

Save rcoup/79e2d12904cf7b532e1b40b013b76348 to your computer and use it in GitHub Desktop.

Revisions

  1. rcoup created this gist Jun 27, 2019.
    215 changes: 215 additions & 0 deletions git_revparse_single.cflow.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,215 @@
    $ cflow -T --brief --main=git_revparse_single refs.c revparse.c
    +-git_revparse_single() <int git_revparse_single (git_object **out, git_repository *repo, const char *spec) at revparse.c:854>
    +-git_revparse_ext() <int git_revparse_ext (git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec) at revparse.c:828>
    | +-revparse__ext() <int revparse__ext (git_object **object_out, git_reference **reference_out, size_t *identifier_len_out, git_repository *repo, const char *spec) at revparse.c:663>
    | | +-assert()
    | | +-ensure_base_rev_loaded() <int ensure_base_rev_loaded (git_object **object, git_reference **reference, const char *spec, size_t identifier_len, git_repository *repo, bool allow_empty_identifier) at revparse.c:610>
    | | | +-object_from_reference() <int object_from_reference (git_object **object, git_reference *reference) at revparse.c:596>
    | | | | +-git_reference_resolve() <int git_reference_resolve (git_reference **ref_out, const git_reference *ref) at refs.c:723>
    | | | | | +-git_reference_type() <git_reference_t git_reference_type (const git_reference *ref) at refs.c:357>
    | | | | | | \-assert()
    | | | | | +-git_reference_lookup() <int git_reference_lookup (git_reference **ref_out, git_repository *repo, const char *name) at refs.c:162>
    | | | | | | \-git_reference_lookup_resolved() <int git_reference_lookup_resolved (git_reference **ref_out, git_repository *repo, const char *name, int max_nesting) at refs.c:201>
    | | | | | | +-assert()
    | | | | | | +-reference_normalize_for_repo() <int reference_normalize_for_repo (git_refname_t out, git_repository *repo, const char *name, bool validate) at refs.c:182>
    | | | | | | | +-git_repository__cvar()
    | | | | | | | \-git_reference_normalize_name() <int git_reference_normalize_name (char *buffer_out, size_t buffer_size, const char *name, unsigned int flags) at refs.c:1090>
    | | | | | | | +-git_reference__normalize_name() <int git_reference__normalize_name (git_buf *buf, const char *name, unsigned int flags) at refs.c:964>
    | | | | | | | | +-assert()
    | | | | | | | | +-git_buf_clear()
    | | | | | | | | +-strlen()
    | | | | | | | | +-git_path_iconv_init_precompose()
    | | | | | | | | +-git_path_iconv()
    | | | | | | | | +-git_buf_sets()
    | | | | | | | | +-git_buf_oom()
    | | | | | | | | +-ensure_segment_validity() <int ensure_segment_validity (const char *name) at refs.c:907>
    | | | | | | | | | +-strlen()
    | | | | | | | | | +-is_valid_ref_char() <int is_valid_ref_char (char ch) at refs.c:888>
    | | | | | | | | | \-memcmp()
    | | | | | | | | +-git_buf_len()
    | | | | | | | | +-git_buf_joinpath()
    | | | | | | | | +-git_buf_cstr()
    | | | | | | | | +-git_buf_truncate()
    | | | | | | | | +-is_all_caps_and_underscore() <bool is_all_caps_and_underscore (const char *name, size_t len) at refs.c:943>
    | | | | | | | | | \-assert()
    | | | | | | | | +-strcmp()
    | | | | | | | | +-strchr()
    | | | | | | | | +-git_error_set()
    | | | | | | | | +-git_buf_dispose()
    | | | | | | | | \-git_path_iconv_clear()
    | | | | | | | +-git_buf_len()
    | | | | | | | +-git_error_set()
    | | | | | | | +-git_buf_copy_cstr()
    | | | | | | | \-git_buf_dispose()
    | | | | | | +-git_repository_refdb__weakptr()
    | | | | | | +-strncpy()
    | | | | | | +-git_reference_free() <void git_reference_free (git_reference *reference) at refs.c:124>
    | | | | | | | +-git__free()
    | | | | | | | \-GIT_REFCOUNT_DEC()
    | | | | | | +-git_refdb_lookup()
    | | | | | | \-git_error_set()
    | | | | | +-git_reference_lookup_resolved() <int git_reference_lookup_resolved (git_reference **ref_out, git_repository *repo, const char *name, int max_nesting) at refs.c:201> [see 11]
    | | | | | \-git_error_set()
    | | | | +-git_object_lookup()
    | | | | +-git_reference_target() <const git_oid *git_reference_target (const git_reference *ref) at refs.c:375>
    | | | | | \-assert()
    | | | | \-git_reference_free() <void git_reference_free (git_reference *reference) at refs.c:124> [see 45]
    | | | +-git_buf_put()
    | | | +-revparse_lookup_object() <int revparse_lookup_object (git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec) at revparse.c:88>
    | | | | +-maybe_sha() <int maybe_sha (git_object **out, git_repository *repo, const char *spec) at revparse.c:28>
    | | | | | +-strlen()
    | | | | | \-maybe_sha_or_abbrev() <int maybe_sha_or_abbrev (git_object **out, git_repository *repo, const char *spec, size_t speclen) at revparse.c:18>
    | | | | | +-git_oid_fromstrn()
    | | | | | \-git_object_lookup_prefix()
    | | | | +-git_reference_dwim() <int git_reference_dwim (git_reference **out, git_repository *repo, const char *refname) at refs.c:290>
    | | | | | +-git_buf_puts()
    | | | | | +-git_buf_clear()
    | | | | | +-git_buf_printf()
    | | | | | +-git_buf_cstr()
    | | | | | +-git_reference_is_valid_name() <int git_reference_is_valid_name (const char *refname) at refs.c:1412>
    | | | | | | \-git_reference__is_valid_name() <int git_reference__is_valid_name (const char *refname, unsigned int flags) at refs.c:1402>
    | | | | | | +-git_reference__normalize_name() <int git_reference__normalize_name (git_buf *buf, const char *name, unsigned int flags) at refs.c:964> [see 16]
    | | | | | | \-git_error_clear()
    | | | | | +-git_reference_lookup_resolved() <int git_reference_lookup_resolved (git_reference **ref_out, git_repository *repo, const char *name, int max_nesting) at refs.c:201> [see 11]
    | | | | | +-git_error_set()
    | | | | | \-git_buf_dispose()
    | | | | +-git_object_lookup()
    | | | | +-git_reference_target() <const git_oid *git_reference_target (const git_reference *ref) at refs.c:375> [see 53]
    | | | | +-strlen()
    | | | | +-maybe_abbrev() <int maybe_abbrev (git_object **out, git_repository *repo, const char *spec) at revparse.c:38>
    | | | | | +-strlen()
    | | | | | \-maybe_sha_or_abbrev() <int maybe_sha_or_abbrev (git_object **out, git_repository *repo, const char *spec, size_t speclen) at revparse.c:18> [see 60]
    | | | | +-maybe_describe() <int maybe_describe (git_object **out, git_repository *repo, const char *spec) at revparse.c:65>
    | | | | | +-strstr()
    | | | | | +-build_regex() <int build_regex (regex_t *regex, const char *pattern) at revparse.c:45>
    | | | | | | +-git_error_set()
    | | | | | | +-p_regcomp()
    | | | | | | +-git_error_set_regex()
    | | | | | | \-regfree()
    | | | | | +-regexec()
    | | | | | +-regfree()
    | | | | | \-maybe_abbrev() <int maybe_abbrev (git_object **out, git_repository *repo, const char *spec) at revparse.c:38> [see 78]
    | | | | \-git_error_set()
    | | | +-git_buf_cstr()
    | | | \-git_buf_dispose()
    | | +-extract_curly_braces_content() <int extract_curly_braces_content (git_buf *buf, const char *spec, size_t *pos) at revparse.c:524>
    | | | +-git_buf_clear()
    | | | +-assert()
    | | | \-git_buf_putc()
    | | +-handle_caret_curly_syntax() <int handle_caret_curly_syntax (git_object **out, git_object *obj, const char *curly_braces_content) at revparse.c:506>
    | | | +-dereference_to_non_tag() <int dereference_to_non_tag (git_object **out, git_object *obj) at revparse.c:375>
    | | | | +-git_object_type()
    | | | | +-git_tag_peel()
    | | | | \-git_object_dup()
    | | | +-handle_grep_syntax() <int handle_grep_syntax (git_object **out, git_repository *repo, const git_oid *spec_oid, const char *pattern) at revparse.c:477>
    | | | | +-build_regex() <int build_regex (regex_t *regex, const char *pattern) at revparse.c:45> [see 83]
    | | | | +-git_revwalk_new()
    | | | | +-git_revwalk_sorting()
    | | | | +-git_revwalk_push_glob()
    | | | | +-git_revwalk_push()
    | | | | +-walk_and_search() <int walk_and_search (git_object **out, git_revwalk *walk, regex_t *regex) at revparse.c:451>
    | | | | | +-git_revwalk_next()
    | | | | | +-git_object_lookup()
    | | | | | +-git_revwalk_repository()
    | | | | | +-regexec()
    | | | | | +-git_commit_message()
    | | | | | \-git_object_free()
    | | | | +-regfree()
    | | | | \-git_revwalk_free()
    | | | +-git_object_owner()
    | | | +-git_object_id()
    | | | +-parse_obj_type() <git_object_t parse_obj_type (const char *str) at revparse.c:358>
    | | | | \-strcmp()
    | | | \-git_object_peel()
    | | +-git_buf_cstr()
    | | +-git_object_free()
    | | +-extract_how_many() <int extract_how_many (int *n, const char *spec, size_t *pos) at revparse.c:565>
    | | | +-assert()
    | | | +-git__isdigit()
    | | | +-git__strntol32()
    | | | \-strlen()
    | | +-handle_caret_parent_syntax() <int handle_caret_parent_syntax (git_object **out, git_object *obj, int n) at revparse.c:383>
    | | | +-git_object_peel()
    | | | +-git_commit_parent()
    | | | \-git_object_free()
    | | +-handle_linear_syntax() <int handle_linear_syntax (git_object **out, git_object *obj, int n) at revparse.c:403>
    | | | +-git_object_peel()
    | | | +-git_commit_nth_gen_ancestor()
    | | | \-git_object_free()
    | | +-extract_path() <int extract_path (git_buf *buf, const char *spec, size_t *pos) at revparse.c:549>
    | | | +-git_buf_clear()
    | | | +-assert()
    | | | +-git_buf_puts()
    | | | \-git_buf_len()
    | | +-any_left_hand_identifier() <bool any_left_hand_identifier (git_object *object, git_reference *reference, size_t identifier_len) at revparse.c:641>
    | | +-handle_colon_syntax() <int handle_colon_syntax (git_object **out, git_object *obj, const char *path) at revparse.c:418>
    | | | +-git_object_peel()
    | | | +-git_tree_entry_bypath()
    | | | +-git_tree_entry_to_object()
    | | | +-git_object_owner()
    | | | +-git_tree_entry_free()
    | | | \-git_object_free()
    | | +-handle_grep_syntax() <int handle_grep_syntax (git_object **out, git_repository *repo, const git_oid *spec_oid, const char *pattern) at revparse.c:477> [see 103]
    | | +-git_error_set()
    | | +-ensure_base_rev_is_not_known_yet() <int ensure_base_rev_is_not_known_yet (git_object *object) at revparse.c:633>
    | | +-handle_at_syntax() <int handle_at_syntax (git_object **out, git_reference **ref, const char *spec, size_t identifier_len, git_repository *repo, const char *curly_braces_content) at revparse.c:314>
    | | | +-assert()
    | | | +-git_buf_put()
    | | | +-try_parse_numeric() <int try_parse_numeric (int *n, const char *curly_braces_content) at revparse.c:126>
    | | | | +-git__strntol32()
    | | | | \-strlen()
    | | | +-retrieve_previously_checked_out_branch_or_revision() <int retrieve_previously_checked_out_branch_or_revision (git_object **out, git_reference **base_ref, git_repository *repo, const char *identifier, size_t position) at revparse.c:142>
    | | | | +-build_regex() <int build_regex (regex_t *regex, const char *pattern) at revparse.c:45> [see 83]
    | | | | +-git_reference_lookup() <int git_reference_lookup (git_reference **ref_out, git_repository *repo, const char *name) at refs.c:162> [see 10]
    | | | | +-git_reflog_read()
    | | | | +-git_reflog_entrycount()
    | | | | +-git_reflog_entry_byindex()
    | | | | +-git_reflog_entry_message()
    | | | | +-regexec()
    | | | | +-git_buf_put()
    | | | | +-git_reference_dwim() <int git_reference_dwim (git_reference **out, git_repository *repo, const char *refname) at refs.c:290> [see 63]
    | | | | +-git_buf_cstr()
    | | | | +-maybe_abbrev() <int maybe_abbrev (git_object **out, git_repository *repo, const char *spec) at revparse.c:38> [see 78]
    | | | | +-git_reference_free() <void git_reference_free (git_reference *reference) at refs.c:124> [see 45]
    | | | | +-git_buf_dispose()
    | | | | +-regfree()
    | | | | \-git_reflog_free()
    | | | +-git_buf_cstr()
    | | | +-retrieve_revobject_from_reflog() <int retrieve_revobject_from_reflog (git_object **out, git_reference **base_ref, git_repository *repo, const char *identifier, size_t position) at revparse.c:257>
    | | | | +-git_reference_dwim() <int git_reference_dwim (git_reference **out, git_repository *repo, const char *refname) at refs.c:290> [see 63]
    | | | | +-git_object_lookup()
    | | | | +-git_reference_target() <const git_oid *git_reference_target (const git_reference *ref) at refs.c:375> [see 53]
    | | | | +-retrieve_oid_from_reflog() <int retrieve_oid_from_reflog (git_oid *oid, git_reference *ref, size_t identifier) at revparse.c:207>
    | | | | | +-git_reflog_read()
    | | | | | +-git_reference_owner() <git_repository *git_reference_owner (const git_reference *ref) at refs.c:369>
    | | | | | | \-assert()
    | | | | | +-git_reference_name() <const char *git_reference_name (const git_reference *ref) at refs.c:363>
    | | | | | | \-assert()
    | | | | | +-git_reflog_entrycount()
    | | | | | +-git_reflog_entry_byindex()
    | | | | | +-git_oid_cpy()
    | | | | | +-git_reflog_entry_id_new()
    | | | | | +-git_reflog_entry_committer()
    | | | | | +-git_reflog_free()
    | | | | | \-git_error_set()
    | | | | \-git_reference_free() <void git_reference_free (git_reference *reference) at refs.c:124> [see 45]
    | | | +-strcmp()
    | | | +-retrieve_remote_tracking_reference() <int retrieve_remote_tracking_reference (git_reference **base_ref, const char *identifier, git_repository *repo) at revparse.c:286>
    | | | | +-git_reference_dwim() <int git_reference_dwim (git_reference **out, git_repository *repo, const char *refname) at refs.c:290> [see 63]
    | | | | +-git_reference_is_branch() <int git_reference_is_branch (const git_reference *ref) at refs.c:1303>
    | | | | | +-assert()
    | | | | | \-git_reference__is_branch() <int git_reference__is_branch (const char *ref_name) at refs.c:1298>
    | | | | | \-git__prefixcmp()
    | | | | +-git_branch_upstream()
    | | | | \-git_reference_free() <void git_reference_free (git_reference *reference) at refs.c:124> [see 45]
    | | | +-git__date_parse()
    | | | \-git_buf_dispose()
    | | +-ensure_left_hand_identifier_is_not_known_yet() <int ensure_left_hand_identifier_is_not_known_yet (git_object *object, git_reference *reference) at revparse.c:655>
    | | | \-ensure_base_rev_is_not_known_yet() <int ensure_base_rev_is_not_known_yet (git_object *object) at revparse.c:633> [see 153]
    | | +-git_reference_free() <void git_reference_free (git_reference *reference) at refs.c:124> [see 45]
    | | \-git_buf_dispose()
    | +-GIT_UNUSED()
    | +-git_object_free()
    | \-git_reference_free() <void git_reference_free (git_reference *reference) at refs.c:124> [see 45]
    +-git_reference_free() <void git_reference_free (git_reference *reference) at refs.c:124> [see 45]
    \-git_object_free()