int git_open_log(GIT_LOG * handle, char * arg) { struct rev_info *p_Rev; char ** argv=0; int argc=0; unsigned int i=0; struct setup_revision_opt opt; /* clear flags */ unsigned int obj_size = get_max_object_index(); for(i =0; i<obj_size; i++) { struct object *ob= get_indexed_object(i); if(ob) { ob->flags=0; if (ob->parsed && ob->type == OBJ_COMMIT) { struct commit* commit = (struct commit*)ob; free_commit_list(commit->parents); commit->parents = NULL; if (commit->tree) free_tree_buffer(commit->tree); commit->tree = NULL; ob->parsed = 0; } } } if(arg != NULL) argv = strtoargv(arg,&argc); if (!argv) return -1; p_Rev = malloc(sizeof(struct rev_info)); if (p_Rev == NULL) { free(argv); return -1; } memset(p_Rev,0,sizeof(struct rev_info)); invalidate_ref_cache(NULL); init_revisions(p_Rev, g_prefix); p_Rev->diff = 1; memset(&opt, 0, sizeof(opt)); opt.def = "HEAD"; cmd_log_init(argc, argv, g_prefix,p_Rev,&opt); p_Rev->pPrivate = argv; *handle = p_Rev; return 0; }
int git_for_each_ref_in(const char * refname, each_ref_fn fn, void * data) { int ret; invalidate_ref_cache(NULL); ret = for_each_ref_in(refname, fn, data); free_all_pack(); return ret; }
int git_open_log(GIT_LOG * handle, char * arg) { struct rev_info *p_Rev; char ** argv=0; int argc=0; unsigned int i=0; struct setup_revision_opt opt; /* clear flags */ unsigned int obj_size = get_max_object_index(); for(i =0; i<obj_size; i++) { struct object *ob= get_indexed_object(i); if(ob) ob->flags=0; } if(arg != NULL) argv = strtoargv(arg,&argc); if (!argv) return -1; p_Rev = malloc(sizeof(struct rev_info)); if (p_Rev == NULL) { free(argv); return -1; } memset(p_Rev,0,sizeof(struct rev_info)); invalidate_ref_cache(NULL); init_revisions(p_Rev, g_prefix); p_Rev->diff = 1; memset(&opt, 0, sizeof(opt)); opt.def = "HEAD"; cmd_log_init(argc, argv, g_prefix,p_Rev,&opt); p_Rev->pPrivate = argv; *handle = p_Rev; return 0; }
int git_init(void) { _fmode = _O_BINARY; _setmode(_fileno(stdin), _O_BINARY); _setmode(_fileno(stdout), _O_BINARY); _setmode(_fileno(stderr), _O_BINARY); cleanup_chdir_notify(); reset_git_env(); // set HOME if not set already gitsetenv("HOME", get_windows_home_directory(), 0); drop_all_attr_stacks(); git_config_clear(); g_prefix = setup_git_directory(); git_config(git_default_config, NULL); invalidate_ref_cache(); return 0; }
const char *git_resolve_ref(const char *ref, unsigned char *sha1, int reading, int *flag) { invalidate_ref_cache(NULL); return resolve_ref_unsafe(ref,sha1,reading, flag); }