Merge branch 'ab/various-leak-fixes'
Various leak fixes. * ab/various-leak-fixes: built-ins: use free() not UNLEAK() if trivial, rm dead code revert: fix parse_options_concat() leak cherry-pick: free "struct replay_opts" members rebase: don't leak on "--abort" connected.c: free the "struct packed_git" sequencer.c: fix "opts->strategy" leak in read_strategy_opts() ls-files: fix a --with-tree memory leak revision API: call graph_clear() in release_revisions() unpack-file: fix ancient leak in create_temp_file() built-ins & libs & helpers: add/move destructors, fix leaks dir.c: free "ident" and "exclude_per_dir" in "struct untracked_cache" read-cache.c: clear and free "sparse_checkout_patterns" commit: discard partial cache before (re-)reading it {reset,merge}: call discard_index() before returning tests: mark tests as passing with SANITIZE=leak
This commit is contained in:
commit
9ea1378d04
@ -695,6 +695,6 @@ finish:
|
|||||||
die(_("Unable to write new index file"));
|
die(_("Unable to write new index file"));
|
||||||
|
|
||||||
dir_clear(&dir);
|
dir_clear(&dir);
|
||||||
UNLEAK(pathspec);
|
clear_pathspec(&pathspec);
|
||||||
return exit_status;
|
return exit_status;
|
||||||
}
|
}
|
||||||
|
@ -106,6 +106,7 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix)
|
|||||||
const char *user_relative_path = NULL;
|
const char *user_relative_path = NULL;
|
||||||
char *prefixed_filename;
|
char *prefixed_filename;
|
||||||
size_t output_path_len;
|
size_t output_path_len;
|
||||||
|
int ret;
|
||||||
|
|
||||||
const struct option bugreport_options[] = {
|
const struct option bugreport_options[] = {
|
||||||
OPT_CALLBACK_F(0, "diagnose", &diagnose, N_("mode"),
|
OPT_CALLBACK_F(0, "diagnose", &diagnose, N_("mode"),
|
||||||
@ -182,7 +183,9 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix)
|
|||||||
user_relative_path);
|
user_relative_path);
|
||||||
|
|
||||||
free(prefixed_filename);
|
free(prefixed_filename);
|
||||||
UNLEAK(buffer);
|
strbuf_release(&buffer);
|
||||||
UNLEAK(report_path);
|
|
||||||
return !!launch_editor(report_path.buf, NULL, NULL);
|
ret = !!launch_editor(report_path.buf, NULL, NULL);
|
||||||
|
strbuf_release(&report_path);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1471,6 +1471,8 @@ static void die_if_some_operation_in_progress(void)
|
|||||||
"or \"git worktree add\"."));
|
"or \"git worktree add\"."));
|
||||||
if (state.bisect_in_progress)
|
if (state.bisect_in_progress)
|
||||||
warning(_("you are switching branch while bisecting"));
|
warning(_("you are switching branch while bisecting"));
|
||||||
|
|
||||||
|
wt_status_state_free_buffers(&state);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int checkout_branch(struct checkout_opts *opts,
|
static int checkout_branch(struct checkout_opts *opts,
|
||||||
|
@ -991,8 +991,11 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
|||||||
struct object_id oid;
|
struct object_id oid;
|
||||||
const char *parent = "HEAD";
|
const char *parent = "HEAD";
|
||||||
|
|
||||||
if (!active_nr && read_cache() < 0)
|
if (!active_nr) {
|
||||||
|
discard_cache();
|
||||||
|
if (read_cache() < 0)
|
||||||
die(_("Cannot read index"));
|
die(_("Cannot read index"));
|
||||||
|
}
|
||||||
|
|
||||||
if (amend)
|
if (amend)
|
||||||
parent = "HEAD^1";
|
parent = "HEAD^1";
|
||||||
@ -1875,8 +1878,8 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
|
|||||||
apply_autostash(git_path_merge_autostash(the_repository));
|
apply_autostash(git_path_merge_autostash(the_repository));
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
UNLEAK(author_ident);
|
strbuf_release(&author_ident);
|
||||||
UNLEAK(err);
|
strbuf_release(&err);
|
||||||
UNLEAK(sb);
|
strbuf_release(&sb);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -639,8 +639,9 @@ static char *default_user_config(void)
|
|||||||
int cmd_config(int argc, const char **argv, const char *prefix)
|
int cmd_config(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
int nongit = !startup_info->have_repository;
|
int nongit = !startup_info->have_repository;
|
||||||
char *value;
|
char *value = NULL;
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
given_config_source.file = xstrdup_or_null(getenv(CONFIG_ENVIRONMENT));
|
given_config_source.file = xstrdup_or_null(getenv(CONFIG_ENVIRONMENT));
|
||||||
|
|
||||||
@ -856,23 +857,19 @@ int cmd_config(int argc, const char **argv, const char *prefix)
|
|||||||
free(config_file);
|
free(config_file);
|
||||||
}
|
}
|
||||||
else if (actions == ACTION_SET) {
|
else if (actions == ACTION_SET) {
|
||||||
int ret;
|
|
||||||
check_write();
|
check_write();
|
||||||
check_argc(argc, 2, 2);
|
check_argc(argc, 2, 2);
|
||||||
value = normalize_value(argv[0], argv[1]);
|
value = normalize_value(argv[0], argv[1]);
|
||||||
UNLEAK(value);
|
|
||||||
ret = git_config_set_in_file_gently(given_config_source.file, argv[0], value);
|
ret = git_config_set_in_file_gently(given_config_source.file, argv[0], value);
|
||||||
if (ret == CONFIG_NOTHING_SET)
|
if (ret == CONFIG_NOTHING_SET)
|
||||||
error(_("cannot overwrite multiple values with a single value\n"
|
error(_("cannot overwrite multiple values with a single value\n"
|
||||||
" Use a regexp, --add or --replace-all to change %s."), argv[0]);
|
" Use a regexp, --add or --replace-all to change %s."), argv[0]);
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
else if (actions == ACTION_SET_ALL) {
|
else if (actions == ACTION_SET_ALL) {
|
||||||
check_write();
|
check_write();
|
||||||
check_argc(argc, 2, 3);
|
check_argc(argc, 2, 3);
|
||||||
value = normalize_value(argv[0], argv[1]);
|
value = normalize_value(argv[0], argv[1]);
|
||||||
UNLEAK(value);
|
ret = git_config_set_multivar_in_file_gently(given_config_source.file,
|
||||||
return git_config_set_multivar_in_file_gently(given_config_source.file,
|
|
||||||
argv[0], value, argv[2],
|
argv[0], value, argv[2],
|
||||||
flags);
|
flags);
|
||||||
}
|
}
|
||||||
@ -880,8 +877,7 @@ int cmd_config(int argc, const char **argv, const char *prefix)
|
|||||||
check_write();
|
check_write();
|
||||||
check_argc(argc, 2, 2);
|
check_argc(argc, 2, 2);
|
||||||
value = normalize_value(argv[0], argv[1]);
|
value = normalize_value(argv[0], argv[1]);
|
||||||
UNLEAK(value);
|
ret = git_config_set_multivar_in_file_gently(given_config_source.file,
|
||||||
return git_config_set_multivar_in_file_gently(given_config_source.file,
|
|
||||||
argv[0], value,
|
argv[0], value,
|
||||||
CONFIG_REGEX_NONE,
|
CONFIG_REGEX_NONE,
|
||||||
flags);
|
flags);
|
||||||
@ -890,8 +886,7 @@ int cmd_config(int argc, const char **argv, const char *prefix)
|
|||||||
check_write();
|
check_write();
|
||||||
check_argc(argc, 2, 3);
|
check_argc(argc, 2, 3);
|
||||||
value = normalize_value(argv[0], argv[1]);
|
value = normalize_value(argv[0], argv[1]);
|
||||||
UNLEAK(value);
|
ret = git_config_set_multivar_in_file_gently(given_config_source.file,
|
||||||
return git_config_set_multivar_in_file_gently(given_config_source.file,
|
|
||||||
argv[0], value, argv[2],
|
argv[0], value, argv[2],
|
||||||
flags | CONFIG_FLAGS_MULTI_REPLACE);
|
flags | CONFIG_FLAGS_MULTI_REPLACE);
|
||||||
}
|
}
|
||||||
@ -934,26 +929,28 @@ int cmd_config(int argc, const char **argv, const char *prefix)
|
|||||||
flags | CONFIG_FLAGS_MULTI_REPLACE);
|
flags | CONFIG_FLAGS_MULTI_REPLACE);
|
||||||
}
|
}
|
||||||
else if (actions == ACTION_RENAME_SECTION) {
|
else if (actions == ACTION_RENAME_SECTION) {
|
||||||
int ret;
|
|
||||||
check_write();
|
check_write();
|
||||||
check_argc(argc, 2, 2);
|
check_argc(argc, 2, 2);
|
||||||
ret = git_config_rename_section_in_file(given_config_source.file,
|
ret = git_config_rename_section_in_file(given_config_source.file,
|
||||||
argv[0], argv[1]);
|
argv[0], argv[1]);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
if (ret == 0)
|
else if (!ret)
|
||||||
die(_("no such section: %s"), argv[0]);
|
die(_("no such section: %s"), argv[0]);
|
||||||
|
else
|
||||||
|
ret = 0;
|
||||||
}
|
}
|
||||||
else if (actions == ACTION_REMOVE_SECTION) {
|
else if (actions == ACTION_REMOVE_SECTION) {
|
||||||
int ret;
|
|
||||||
check_write();
|
check_write();
|
||||||
check_argc(argc, 1, 1);
|
check_argc(argc, 1, 1);
|
||||||
ret = git_config_rename_section_in_file(given_config_source.file,
|
ret = git_config_rename_section_in_file(given_config_source.file,
|
||||||
argv[0], NULL);
|
argv[0], NULL);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
if (ret == 0)
|
else if (!ret)
|
||||||
die(_("no such section: %s"), argv[0]);
|
die(_("no such section: %s"), argv[0]);
|
||||||
|
else
|
||||||
|
ret = 0;
|
||||||
}
|
}
|
||||||
else if (actions == ACTION_GET_COLOR) {
|
else if (actions == ACTION_GET_COLOR) {
|
||||||
check_argc(argc, 1, 2);
|
check_argc(argc, 1, 2);
|
||||||
@ -966,5 +963,6 @@ int cmd_config(int argc, const char **argv, const char *prefix)
|
|||||||
return get_colorbool(argv[0], argc == 2);
|
return get_colorbool(argv[0], argc == 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
free(value);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -612,7 +612,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
|
|||||||
if (1 < rev.diffopt.skip_stat_unmatch)
|
if (1 < rev.diffopt.skip_stat_unmatch)
|
||||||
refresh_index_quietly();
|
refresh_index_quietly();
|
||||||
release_revisions(&rev);
|
release_revisions(&rev);
|
||||||
UNLEAK(ent);
|
object_array_clear(&ent);
|
||||||
UNLEAK(blob);
|
UNLEAK(blob);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -613,6 +613,7 @@ void overlay_tree_on_index(struct index_state *istate,
|
|||||||
if (!fn)
|
if (!fn)
|
||||||
fn = read_one_entry_quick;
|
fn = read_one_entry_quick;
|
||||||
err = read_tree(the_repository, tree, &pathspec, fn, istate);
|
err = read_tree(the_repository, tree, &pathspec, fn, istate);
|
||||||
|
clear_pathspec(&pathspec);
|
||||||
if (err)
|
if (err)
|
||||||
die("unable to read tree entries %s", tree_name);
|
die("unable to read tree entries %s", tree_name);
|
||||||
|
|
||||||
|
@ -1789,5 +1789,6 @@ done:
|
|||||||
}
|
}
|
||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
free(branch_to_free);
|
free(branch_to_free);
|
||||||
|
discard_index(&the_index);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1322,6 +1322,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
|
|||||||
if (reset_head(the_repository, &ropts) < 0)
|
if (reset_head(the_repository, &ropts) < 0)
|
||||||
die(_("could not move back to %s"),
|
die(_("could not move back to %s"),
|
||||||
oid_to_hex(&options.orig_head->object.oid));
|
oid_to_hex(&options.orig_head->object.oid));
|
||||||
|
strbuf_release(&head_msg);
|
||||||
remove_branch_state(the_repository, 0);
|
remove_branch_state(the_repository, 0);
|
||||||
ret = finish_rebase(&options);
|
ret = finish_rebase(&options);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -1828,10 +1829,13 @@ cleanup:
|
|||||||
strbuf_release(&revisions);
|
strbuf_release(&revisions);
|
||||||
free(options.reflog_action);
|
free(options.reflog_action);
|
||||||
free(options.head_name);
|
free(options.head_name);
|
||||||
|
strvec_clear(&options.git_am_opts);
|
||||||
free(options.gpg_sign_opt);
|
free(options.gpg_sign_opt);
|
||||||
free(options.cmd);
|
free(options.cmd);
|
||||||
free(options.strategy);
|
free(options.strategy);
|
||||||
strbuf_release(&options.git_format_patch_opt);
|
strbuf_release(&options.git_format_patch_opt);
|
||||||
free(squash_onto_name);
|
free(squash_onto_name);
|
||||||
|
string_list_clear(&exec, 0);
|
||||||
|
string_list_clear(&strategy_options, 0);
|
||||||
return !!ret;
|
return !!ret;
|
||||||
}
|
}
|
||||||
|
@ -973,6 +973,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
|||||||
item = string_list_append(&names, line.buf);
|
item = string_list_append(&names, line.buf);
|
||||||
item->util = populate_pack_exts(item->string);
|
item->util = populate_pack_exts(item->string);
|
||||||
}
|
}
|
||||||
|
strbuf_release(&line);
|
||||||
fclose(out);
|
fclose(out);
|
||||||
ret = finish_command(&cmd);
|
ret = finish_command(&cmd);
|
||||||
if (ret)
|
if (ret)
|
||||||
@ -1175,7 +1176,6 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
|||||||
string_list_clear(&existing_nonkept_packs, 0);
|
string_list_clear(&existing_nonkept_packs, 0);
|
||||||
string_list_clear(&existing_kept_packs, 0);
|
string_list_clear(&existing_kept_packs, 0);
|
||||||
clear_pack_geometry(geometry);
|
clear_pack_geometry(geometry);
|
||||||
strbuf_release(&line);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -485,5 +485,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
|
|||||||
if (!pathspec.nr)
|
if (!pathspec.nr)
|
||||||
remove_branch_state(the_repository, 0);
|
remove_branch_state(the_repository, 0);
|
||||||
|
|
||||||
|
discard_index(&the_index);
|
||||||
|
|
||||||
return update_ref_status;
|
return update_ref_status;
|
||||||
}
|
}
|
||||||
|
@ -530,6 +530,7 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
|
|||||||
strbuf_addstr(&parsed, " --");
|
strbuf_addstr(&parsed, " --");
|
||||||
sq_quote_argv(&parsed, argv);
|
sq_quote_argv(&parsed, argv);
|
||||||
puts(parsed.buf);
|
puts(parsed.buf);
|
||||||
|
strbuf_release(&parsed);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,6 +221,7 @@ static int run_sequencer(int argc, const char **argv, struct replay_opts *opts)
|
|||||||
opts->strategy = xstrdup_or_null(opts->strategy);
|
opts->strategy = xstrdup_or_null(opts->strategy);
|
||||||
if (!opts->strategy && getenv("GIT_TEST_MERGE_ALGORITHM"))
|
if (!opts->strategy && getenv("GIT_TEST_MERGE_ALGORITHM"))
|
||||||
opts->strategy = xstrdup(getenv("GIT_TEST_MERGE_ALGORITHM"));
|
opts->strategy = xstrdup(getenv("GIT_TEST_MERGE_ALGORITHM"));
|
||||||
|
free(options);
|
||||||
|
|
||||||
if (cmd == 'q') {
|
if (cmd == 'q') {
|
||||||
int ret = sequencer_remove_state(opts);
|
int ret = sequencer_remove_state(opts);
|
||||||
@ -261,6 +262,9 @@ int cmd_cherry_pick(int argc, const char **argv, const char *prefix)
|
|||||||
opts.action = REPLAY_PICK;
|
opts.action = REPLAY_PICK;
|
||||||
sequencer_init_config(&opts);
|
sequencer_init_config(&opts);
|
||||||
res = run_sequencer(argc, argv, &opts);
|
res = run_sequencer(argc, argv, &opts);
|
||||||
|
if (opts.revs)
|
||||||
|
release_revisions(opts.revs);
|
||||||
|
free(opts.revs);
|
||||||
if (res < 0)
|
if (res < 0)
|
||||||
die(_("cherry-pick failed"));
|
die(_("cherry-pick failed"));
|
||||||
return res;
|
return res;
|
||||||
|
@ -1689,8 +1689,10 @@ static int do_push_stash(const struct pathspec *ps, const char *stash_msg, int q
|
|||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
strbuf_release(&patch);
|
||||||
free_stash_info(&info);
|
free_stash_info(&info);
|
||||||
strbuf_release(&stash_msg_buf);
|
strbuf_release(&stash_msg_buf);
|
||||||
|
strbuf_release(&untracked_files);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ static char *create_temp_file(struct object_id *oid)
|
|||||||
if (write_in_full(fd, buf, size) < 0)
|
if (write_in_full(fd, buf, size) < 0)
|
||||||
die_errno("unable to write temp-file");
|
die_errno("unable to write temp-file");
|
||||||
close(fd);
|
close(fd);
|
||||||
|
free(buf);
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -629,6 +629,7 @@ static int add(int ac, const char **av, const char *prefix)
|
|||||||
N_("try to match the new branch name with a remote-tracking branch")),
|
N_("try to match the new branch name with a remote-tracking branch")),
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
int ret;
|
||||||
|
|
||||||
memset(&opts, 0, sizeof(opts));
|
memset(&opts, 0, sizeof(opts));
|
||||||
opts.checkout = 1;
|
opts.checkout = 1;
|
||||||
@ -705,9 +706,9 @@ static int add(int ac, const char **av, const char *prefix)
|
|||||||
die(_("--[no-]track can only be used if a new branch is created"));
|
die(_("--[no-]track can only be used if a new branch is created"));
|
||||||
}
|
}
|
||||||
|
|
||||||
UNLEAK(path);
|
ret = add_worktree(path, branch, &opts);
|
||||||
UNLEAK(opts);
|
free(path);
|
||||||
return add_worktree(path, branch, &opts);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void show_worktree_porcelain(struct worktree *wt, int line_terminator)
|
static void show_worktree_porcelain(struct worktree *wt, int line_terminator)
|
||||||
|
@ -85,6 +85,7 @@ int check_connected(oid_iterate_fn fn, void *cb_data,
|
|||||||
promisor_pack_found:
|
promisor_pack_found:
|
||||||
;
|
;
|
||||||
} while ((oid = fn(cb_data)) != NULL);
|
} while ((oid = fn(cb_data)) != NULL);
|
||||||
|
free(new_pack);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,8 +122,10 @@ no_promisor_pack_found:
|
|||||||
else
|
else
|
||||||
rev_list.no_stderr = opt->quiet;
|
rev_list.no_stderr = opt->quiet;
|
||||||
|
|
||||||
if (start_command(&rev_list))
|
if (start_command(&rev_list)) {
|
||||||
|
free(new_pack);
|
||||||
return error(_("Could not run 'git rev-list'"));
|
return error(_("Could not run 'git rev-list'"));
|
||||||
|
}
|
||||||
|
|
||||||
sigchain_push(SIGPIPE, SIG_IGN);
|
sigchain_push(SIGPIPE, SIG_IGN);
|
||||||
|
|
||||||
@ -154,5 +157,6 @@ no_promisor_pack_found:
|
|||||||
err = error_errno(_("failed to close rev-list's stdin"));
|
err = error_errno(_("failed to close rev-list's stdin"));
|
||||||
|
|
||||||
sigchain_pop(SIGPIPE);
|
sigchain_pop(SIGPIPE);
|
||||||
|
free(new_pack);
|
||||||
return finish_command(&rev_list) || err;
|
return finish_command(&rev_list) || err;
|
||||||
}
|
}
|
||||||
|
8
dir.c
8
dir.c
@ -3581,7 +3581,11 @@ static void free_untracked(struct untracked_cache_dir *ucd)
|
|||||||
|
|
||||||
void free_untracked_cache(struct untracked_cache *uc)
|
void free_untracked_cache(struct untracked_cache *uc)
|
||||||
{
|
{
|
||||||
if (uc)
|
if (!uc)
|
||||||
|
return;
|
||||||
|
|
||||||
|
free(uc->exclude_per_dir_to_free);
|
||||||
|
strbuf_release(&uc->ident);
|
||||||
free_untracked(uc->root);
|
free_untracked(uc->root);
|
||||||
free(uc);
|
free(uc);
|
||||||
}
|
}
|
||||||
@ -3739,7 +3743,7 @@ struct untracked_cache *read_untracked_extension(const void *data, unsigned long
|
|||||||
next + offset + hashsz);
|
next + offset + hashsz);
|
||||||
uc->dir_flags = get_be32(next + ouc_offset(dir_flags));
|
uc->dir_flags = get_be32(next + ouc_offset(dir_flags));
|
||||||
exclude_per_dir = (const char *)next + exclude_per_dir_offset;
|
exclude_per_dir = (const char *)next + exclude_per_dir_offset;
|
||||||
uc->exclude_per_dir = xstrdup(exclude_per_dir);
|
uc->exclude_per_dir = uc->exclude_per_dir_to_free = xstrdup(exclude_per_dir);
|
||||||
/* NUL after exclude_per_dir is covered by sizeof(*ouc) */
|
/* NUL after exclude_per_dir is covered by sizeof(*ouc) */
|
||||||
next += exclude_per_dir_offset + strlen(exclude_per_dir) + 1;
|
next += exclude_per_dir_offset + strlen(exclude_per_dir) + 1;
|
||||||
if (next >= end)
|
if (next >= end)
|
||||||
|
1
dir.h
1
dir.h
@ -188,6 +188,7 @@ struct untracked_cache {
|
|||||||
struct oid_stat ss_info_exclude;
|
struct oid_stat ss_info_exclude;
|
||||||
struct oid_stat ss_excludes_file;
|
struct oid_stat ss_excludes_file;
|
||||||
const char *exclude_per_dir;
|
const char *exclude_per_dir;
|
||||||
|
char *exclude_per_dir_to_free;
|
||||||
struct strbuf ident;
|
struct strbuf ident;
|
||||||
/*
|
/*
|
||||||
* dir_struct#flags must match dir_flags or the untracked
|
* dir_struct#flags must match dir_flags or the untracked
|
||||||
|
@ -2558,6 +2558,11 @@ void discard_index(struct index_state *istate)
|
|||||||
free_untracked_cache(istate->untracked);
|
free_untracked_cache(istate->untracked);
|
||||||
istate->untracked = NULL;
|
istate->untracked = NULL;
|
||||||
|
|
||||||
|
if (istate->sparse_checkout_patterns) {
|
||||||
|
clear_pattern_list(istate->sparse_checkout_patterns);
|
||||||
|
FREE_AND_NULL(istate->sparse_checkout_patterns);
|
||||||
|
}
|
||||||
|
|
||||||
if (istate->ce_mem_pool) {
|
if (istate->ce_mem_pool) {
|
||||||
mem_pool_discard(istate->ce_mem_pool, should_validate_cache_entries());
|
mem_pool_discard(istate->ce_mem_pool, should_validate_cache_entries());
|
||||||
FREE_AND_NULL(istate->ce_mem_pool);
|
FREE_AND_NULL(istate->ce_mem_pool);
|
||||||
|
@ -1358,6 +1358,7 @@ static void find_subpos(const char *buf,
|
|||||||
|
|
||||||
/* parse signature first; we might not even have a subject line */
|
/* parse signature first; we might not even have a subject line */
|
||||||
parse_signature(buf, end - buf, &payload, &signature);
|
parse_signature(buf, end - buf, &payload, &signature);
|
||||||
|
strbuf_release(&payload);
|
||||||
|
|
||||||
/* skip past header until we hit empty line */
|
/* skip past header until we hit empty line */
|
||||||
while (*buf && *buf != '\n') {
|
while (*buf && *buf != '\n') {
|
||||||
|
@ -3054,6 +3054,7 @@ void release_revisions(struct rev_info *revs)
|
|||||||
date_mode_release(&revs->date_mode);
|
date_mode_release(&revs->date_mode);
|
||||||
release_revisions_mailmap(revs->mailmap);
|
release_revisions_mailmap(revs->mailmap);
|
||||||
free_grep_patterns(&revs->grep_filter);
|
free_grep_patterns(&revs->grep_filter);
|
||||||
|
graph_clear(revs->graph);
|
||||||
/* TODO (need to handle "no_free"): diff_free(&revs->diffopt) */
|
/* TODO (need to handle "no_free"): diff_free(&revs->diffopt) */
|
||||||
diff_free(&revs->pruning);
|
diff_free(&revs->pruning);
|
||||||
reflog_walk_info_release(revs->reflog_info);
|
reflog_walk_info_release(revs->reflog_info);
|
||||||
|
@ -2897,6 +2897,7 @@ static void read_strategy_opts(struct replay_opts *opts, struct strbuf *buf)
|
|||||||
strbuf_reset(buf);
|
strbuf_reset(buf);
|
||||||
if (!read_oneliner(buf, rebase_path_strategy(), 0))
|
if (!read_oneliner(buf, rebase_path_strategy(), 0))
|
||||||
return;
|
return;
|
||||||
|
free(opts->strategy);
|
||||||
opts->strategy = strbuf_detach(buf, NULL);
|
opts->strategy = strbuf_detach(buf, NULL);
|
||||||
if (!read_oneliner(buf, rebase_path_strategy_opts(), 0))
|
if (!read_oneliner(buf, rebase_path_strategy_opts(), 0))
|
||||||
return;
|
return;
|
||||||
|
@ -17,6 +17,7 @@ int cmd_main(int argc, const char **argv)
|
|||||||
f = fopen(buf.buf, "w");
|
f = fopen(buf.buf, "w");
|
||||||
if (!f)
|
if (!f)
|
||||||
die("Could not write to %s", buf.buf);
|
die("Could not write to %s", buf.buf);
|
||||||
|
strbuf_release(&buf);
|
||||||
for (i = 0; i < argc; i++)
|
for (i = 0; i < argc; i++)
|
||||||
fprintf(f, "%s%s", i > 0 ? " " : "", i > 0 ? argv[i] : "ssh:");
|
fprintf(f, "%s%s", i > 0 ? " " : "", i > 0 ? argv[i] : "ssh:");
|
||||||
fprintf(f, "\n");
|
fprintf(f, "\n");
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='git for-each-repo builtin'
|
test_description='git for-each-repo builtin'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'run based on configured value' '
|
test_expect_success 'run based on configured value' '
|
||||||
|
@ -6,6 +6,7 @@ test_description='check that the most basic functions work
|
|||||||
Verify wrappers and compatibility functions.
|
Verify wrappers and compatibility functions.
|
||||||
'
|
'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'character classes (isspace, isalpha etc.)' '
|
test_expect_success 'character classes (isspace, isalpha etc.)' '
|
||||||
|
@ -12,6 +12,7 @@ test_description='sparse checkout tests
|
|||||||
'
|
'
|
||||||
|
|
||||||
TEST_CREATE_REPO_NO_TEMPLATE=1
|
TEST_CREATE_REPO_NO_TEMPLATE=1
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
. "$TEST_DIRECTORY"/lib-read-tree.sh
|
. "$TEST_DIRECTORY"/lib-read-tree.sh
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
test_description='git read-tree in partial clones'
|
test_description='git read-tree in partial clones'
|
||||||
|
|
||||||
TEST_NO_CREATE_REPO=1
|
TEST_NO_CREATE_REPO=1
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'read-tree in partial clone prefetches in one batch' '
|
test_expect_success 'read-tree in partial clone prefetches in one batch' '
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
test_description='Test git update-ref error handling'
|
test_description='Test git update-ref error handling'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
# Create some references, perhaps run pack-refs --all, then try to
|
# Create some references, perhaps run pack-refs --all, then try to
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='avoid rewriting packed-refs unnecessarily'
|
test_description='avoid rewriting packed-refs unnecessarily'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
# Add an identifying mark to the packed-refs file header line. This
|
# Add an identifying mark to the packed-refs file header line. This
|
||||||
|
@ -4,6 +4,7 @@ test_description='Test reflog interaction with detached HEAD'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
reset_state () {
|
reset_state () {
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
test_description='test separate work tree'
|
test_description='test separate work tree'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -5,6 +5,7 @@ test_description='checkout can switch to last branch and merge base'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
test_description='checkout'
|
test_description='checkout'
|
||||||
|
|
||||||
TEST_CREATE_REPO_NO_TEMPLATE=1
|
TEST_CREATE_REPO_NO_TEMPLATE=1
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
# Arguments: [!] <branch> <oid> [<checkout options>]
|
# Arguments: [!] <branch> <oid> [<checkout options>]
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='checkout --no-overlay <tree-ish> -- <pathspec>'
|
test_description='checkout --no-overlay <tree-ish> -- <pathspec>'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -18,6 +18,7 @@ This test runs git ls-files --others with the following working tree:
|
|||||||
git repository with a commit and an untracked file
|
git repository with a commit and an untracked file
|
||||||
'
|
'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup: directories' '
|
test_expect_success 'setup: directories' '
|
||||||
|
@ -41,6 +41,8 @@ Also for modification test, the cache and working tree have:
|
|||||||
We should report path0, path1, path2/file2, path3/file3, path7 and path8
|
We should report path0, path1, path2/file2, path3/file3, path7 and path8
|
||||||
modified without reporting path9 and path10. submod1 is also modified.
|
modified without reporting path9 and path10. submod1 is also modified.
|
||||||
'
|
'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'git update-index --add to add various paths.' '
|
test_expect_success 'git update-index --add to add various paths.' '
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='fetching and pushing project with subproject'
|
test_description='fetching and pushing project with subproject'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success setup '
|
||||||
|
@ -8,6 +8,8 @@ test_description='git ls-files test (--with-tree).
|
|||||||
This test runs git ls-files --with-tree and in particular in
|
This test runs git ls-files --with-tree and in particular in
|
||||||
a scenario known to trigger a crash with some versions of git.
|
a scenario known to trigger a crash with some versions of git.
|
||||||
'
|
'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='git rebase interactive environment'
|
test_description='git rebase interactive environment'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -5,6 +5,7 @@ test_description='git rebase with its hook(s)'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success setup '
|
||||||
|
@ -5,6 +5,7 @@ test_description='git rebase --signoff
|
|||||||
This test runs git rebase --signoff and make sure that it works.
|
This test runs git rebase --signoff and make sure that it works.
|
||||||
'
|
'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
# A simple file to commit
|
# A simple file to commit
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='rebase should reread the todo file if an exec modifies it'
|
test_description='rebase should reread the todo file if an exec modifies it'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
. "$TEST_DIRECTORY"/lib-rebase.sh
|
. "$TEST_DIRECTORY"/lib-rebase.sh
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='git rebase across mode change'
|
test_description='git rebase across mode change'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -1638,7 +1638,7 @@ test_expect_success 'no effect on diff from --color-moved with --word-diff' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success !SANITIZE_LEAK 'no effect on show from --color-moved with --word-diff' '
|
test_expect_success 'no effect on show from --color-moved with --word-diff' '
|
||||||
git show --color-moved --word-diff >actual &&
|
git show --color-moved --word-diff >actual &&
|
||||||
git show --word-diff >expect &&
|
git show --word-diff >expect &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
@ -2024,7 +2024,7 @@ test_expect_success '--color-moved rewinds for MIN_ALNUM_COUNT' '
|
|||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success !SANITIZE_LEAK 'move detection with submodules' '
|
test_expect_success 'move detection with submodules' '
|
||||||
test_create_repo bananas &&
|
test_create_repo bananas &&
|
||||||
echo ripe >bananas/recipe &&
|
echo ripe >bananas/recipe &&
|
||||||
git -C bananas add recipe &&
|
git -C bananas add recipe &&
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
test_description='diff --relative tests'
|
test_description='diff --relative tests'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -8,6 +8,7 @@ test_description='test --stat output of various commands'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
. "$TEST_DIRECTORY"/lib-terminal.sh
|
. "$TEST_DIRECTORY"/lib-terminal.sh
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='diff --no-index'
|
test_description='diff --no-index'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='behavior of diff when reading objects in a partial clone'
|
test_description='behavior of diff when reading objects in a partial clone'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'git show batches blobs' '
|
test_expect_success 'git show batches blobs' '
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='patching from inconvenient places'
|
test_description='patching from inconvenient places'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='git apply with weird postimage filenames'
|
test_description='git apply with weird postimage filenames'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='log/show --expand-tabs'
|
test_description='log/show --expand-tabs'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
HT=" "
|
HT=" "
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
test_description='test custom script in place of pack-objects'
|
test_description='test custom script in place of pack-objects'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'create some history to fetch' '
|
test_expect_success 'create some history to fetch' '
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
test_description='test noop fetch negotiator'
|
test_description='test noop fetch negotiator'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'noop negotiator does not emit any "have"' '
|
test_expect_success 'noop negotiator does not emit any "have"' '
|
||||||
|
@ -4,6 +4,7 @@ test_description='test cloning a repository with detached HEAD'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
head_is_detached() {
|
head_is_detached() {
|
||||||
|
@ -4,6 +4,7 @@ test_description='tests for git clone -c key=value'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'clone -c sets config in cloned repo' '
|
test_expect_success 'clone -c sets config in cloned repo' '
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='Test shallow cloning of repos with submodules'
|
test_description='Test shallow cloning of repos with submodules'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
pwd=$(pwd)
|
pwd=$(pwd)
|
||||||
|
@ -5,6 +5,7 @@ test_description='Test cloning repos with submodules using remote-tracking branc
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
pwd=$(pwd)
|
pwd=$(pwd)
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
test_description='test handling of --alternate-refs traversal'
|
test_description='test handling of --alternate-refs traversal'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
# Avoid test_commit because we want a specific and known set of refs:
|
# Avoid test_commit because we want a specific and known set of refs:
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
test_description='basic git merge-index / git-merge-one-file tests'
|
test_description='basic git merge-index / git-merge-one-file tests'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup diverging branches' '
|
test_expect_success 'setup diverging branches' '
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='for-each-ref errors for broken refs'
|
test_description='for-each-ref errors for broken refs'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
ZEROS=$ZERO_OID
|
ZEROS=$ZERO_OID
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
|
|
||||||
test_description='Test criss-cross merge'
|
test_description='Test criss-cross merge'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'prepare repository' '
|
test_expect_success 'prepare repository' '
|
||||||
|
@ -8,6 +8,7 @@ test_description='per path merge controlled by merge attribute'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success setup '
|
||||||
|
@ -5,6 +5,7 @@ test_description='ask merge-recursive to merge binary files'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success setup '
|
||||||
|
@ -4,6 +4,7 @@ test_description='merging when a directory was replaced with a symlink'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'create a commit where dir a/b changed to symlink' '
|
test_expect_success 'create a commit where dir a/b changed to symlink' '
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
test_description='merge with sparse files'
|
test_description='merge with sparse files'
|
||||||
|
|
||||||
TEST_CREATE_REPO_NO_TEMPLATE=1
|
TEST_CREATE_REPO_NO_TEMPLATE=1
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
# test_file $filename $content
|
# test_file $filename $content
|
||||||
|
@ -63,7 +63,7 @@ test_expect_success '"mixed" reset is not allowed in bare' '
|
|||||||
test_must_fail git reset --mixed HEAD^
|
test_must_fail git reset --mixed HEAD^
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success !SANITIZE_LEAK '"soft" reset is allowed in bare' '
|
test_expect_success '"soft" reset is allowed in bare' '
|
||||||
git reset --soft HEAD^ &&
|
git reset --soft HEAD^ &&
|
||||||
git show --pretty=format:%s >out &&
|
git show --pretty=format:%s >out &&
|
||||||
echo one >expect &&
|
echo one >expect &&
|
||||||
|
@ -5,6 +5,7 @@ test_description='commit-msg hook'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'with no hook' '
|
test_expect_success 'with no hook' '
|
||||||
|
@ -9,6 +9,7 @@ test_description='per-repo forced setting of email address'
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup a likely user.useConfigOnly use case' '
|
test_expect_success 'setup a likely user.useConfigOnly use case' '
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
test_description='ignored hook warning'
|
test_description='ignored hook warning'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success setup '
|
||||||
|
@ -4,6 +4,7 @@ test_description='git merge
|
|||||||
|
|
||||||
Testing the resolve strategy.'
|
Testing the resolve strategy.'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -8,6 +8,7 @@ This test runs git merge --signoff and makes sure that it works.
|
|||||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
# Setup test files
|
# Setup test files
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
test_description='help.autocorrect finding a match'
|
test_description='help.autocorrect finding a match'
|
||||||
|
|
||||||
|
TEST_PASSES_SANITIZE_LEAK=true
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
test_expect_success 'setup' '
|
test_expect_success 'setup' '
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
test_description='git svn dcommit can commit renames of files with ugly names'
|
test_description='git svn dcommit can commit renames of files with ugly names'
|
||||||
|
|
||||||
TEST_FAILS_SANITIZE_LEAK=true
|
|
||||||
. ./lib-git-svn.sh
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
test_expect_success 'load repository with strange names' '
|
test_expect_success 'load repository with strange names' '
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
test_description='git svn creates empty directories'
|
test_description='git svn creates empty directories'
|
||||||
|
|
||||||
TEST_FAILS_SANITIZE_LEAK=true
|
|
||||||
. ./lib-git-svn.sh
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
test_expect_success 'initialize repo' '
|
test_expect_success 'initialize repo' '
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
test_description='git svn propset tests'
|
test_description='git svn propset tests'
|
||||||
|
|
||||||
TEST_FAILS_SANITIZE_LEAK=true
|
|
||||||
. ./lib-git-svn.sh
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
test_expect_success 'setup propset via import' '
|
test_expect_success 'setup propset via import' '
|
||||||
|
@ -9,7 +9,6 @@ This test uses git to clone a Subversion repository that contains empty
|
|||||||
directories, and checks that corresponding directories are created in the
|
directories, and checks that corresponding directories are created in the
|
||||||
local Git repository with placeholder files.'
|
local Git repository with placeholder files.'
|
||||||
|
|
||||||
TEST_FAILS_SANITIZE_LEAK=true
|
|
||||||
. ./lib-git-svn.sh
|
. ./lib-git-svn.sh
|
||||||
|
|
||||||
GIT_REPO=git-svn-repo
|
GIT_REPO=git-svn-repo
|
||||||
|
Loading…
Reference in New Issue
Block a user