зеркало из https://github.com/microsoft/git.git
Use new semantics of is_bare/inside_git_dir/inside_work_tree
Up to now to check for a working tree this was used: !is_bare && !inside_git_dir (the check for bare is redundant because is_inside_git_dir returned already 1 for bare repositories). Now the check is: inside_work_tree && !inside_git_dir Signed-off-by: Matthias Lederhofer <matled@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
892c41b98a
Коммит
7ae3df8c0a
|
@ -470,7 +470,7 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (require_work_tree &&
|
if (require_work_tree &&
|
||||||
(is_bare_repository() || is_inside_git_dir()))
|
(!is_inside_work_tree() || is_inside_git_dir()))
|
||||||
die("This operation must be run in a work tree");
|
die("This operation must be run in a work tree");
|
||||||
|
|
||||||
pathspec = get_pathspec(prefix, argv + i);
|
pathspec = get_pathspec(prefix, argv + i);
|
||||||
|
|
|
@ -44,7 +44,7 @@ cd_to_toplevel () {
|
||||||
}
|
}
|
||||||
|
|
||||||
require_work_tree () {
|
require_work_tree () {
|
||||||
test $(is_bare_repository) = false &&
|
test $(git-rev-parse --is-inside-work-tree) = true &&
|
||||||
test $(git-rev-parse --is-inside-git-dir) = false ||
|
test $(git-rev-parse --is-inside-git-dir) = false ||
|
||||||
die "fatal: $0 cannot be used without a working tree."
|
die "fatal: $0 cannot be used without a working tree."
|
||||||
}
|
}
|
||||||
|
|
|
@ -594,7 +594,7 @@ sub post_fetch_checkout {
|
||||||
my $index = $ENV{GIT_INDEX_FILE} || "$ENV{GIT_DIR}/index";
|
my $index = $ENV{GIT_INDEX_FILE} || "$ENV{GIT_DIR}/index";
|
||||||
return if -f $index;
|
return if -f $index;
|
||||||
|
|
||||||
return if command_oneline(qw/rev-parse --is-bare-repository/) eq 'true';
|
return if command_oneline(qw/rev-parse --is-inside-work-tree/) eq 'false';
|
||||||
return if command_oneline(qw/rev-parse --is-inside-git-dir/) eq 'true';
|
return if command_oneline(qw/rev-parse --is-inside-git-dir/) eq 'true';
|
||||||
command_noisy(qw/read-tree -m -u -v HEAD HEAD/);
|
command_noisy(qw/read-tree -m -u -v HEAD HEAD/);
|
||||||
print STDERR "Checked out HEAD:\n ",
|
print STDERR "Checked out HEAD:\n ",
|
||||||
|
|
20
git.c
20
git.c
|
@ -224,7 +224,7 @@ const char git_version_string[] = GIT_VERSION;
|
||||||
* require working tree to be present -- anything uses this needs
|
* require working tree to be present -- anything uses this needs
|
||||||
* RUN_SETUP for reading from the configuration file.
|
* RUN_SETUP for reading from the configuration file.
|
||||||
*/
|
*/
|
||||||
#define NOT_BARE (1<<2)
|
#define NEED_WORK_TREE (1<<2)
|
||||||
|
|
||||||
static void handle_internal_command(int argc, const char **argv, char **envp)
|
static void handle_internal_command(int argc, const char **argv, char **envp)
|
||||||
{
|
{
|
||||||
|
@ -234,7 +234,7 @@ static void handle_internal_command(int argc, const char **argv, char **envp)
|
||||||
int (*fn)(int, const char **, const char *);
|
int (*fn)(int, const char **, const char *);
|
||||||
int option;
|
int option;
|
||||||
} commands[] = {
|
} commands[] = {
|
||||||
{ "add", cmd_add, RUN_SETUP | NOT_BARE },
|
{ "add", cmd_add, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "annotate", cmd_annotate, RUN_SETUP | USE_PAGER },
|
{ "annotate", cmd_annotate, RUN_SETUP | USE_PAGER },
|
||||||
{ "apply", cmd_apply },
|
{ "apply", cmd_apply },
|
||||||
{ "archive", cmd_archive },
|
{ "archive", cmd_archive },
|
||||||
|
@ -244,9 +244,9 @@ static void handle_internal_command(int argc, const char **argv, char **envp)
|
||||||
{ "cat-file", cmd_cat_file, RUN_SETUP },
|
{ "cat-file", cmd_cat_file, RUN_SETUP },
|
||||||
{ "checkout-index", cmd_checkout_index, RUN_SETUP },
|
{ "checkout-index", cmd_checkout_index, RUN_SETUP },
|
||||||
{ "check-ref-format", cmd_check_ref_format },
|
{ "check-ref-format", cmd_check_ref_format },
|
||||||
{ "check-attr", cmd_check_attr, RUN_SETUP | NOT_BARE },
|
{ "check-attr", cmd_check_attr, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "cherry", cmd_cherry, RUN_SETUP },
|
{ "cherry", cmd_cherry, RUN_SETUP },
|
||||||
{ "cherry-pick", cmd_cherry_pick, RUN_SETUP | NOT_BARE },
|
{ "cherry-pick", cmd_cherry_pick, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "commit-tree", cmd_commit_tree, RUN_SETUP },
|
{ "commit-tree", cmd_commit_tree, RUN_SETUP },
|
||||||
{ "config", cmd_config },
|
{ "config", cmd_config },
|
||||||
{ "count-objects", cmd_count_objects, RUN_SETUP },
|
{ "count-objects", cmd_count_objects, RUN_SETUP },
|
||||||
|
@ -274,7 +274,7 @@ static void handle_internal_command(int argc, const char **argv, char **envp)
|
||||||
{ "mailsplit", cmd_mailsplit },
|
{ "mailsplit", cmd_mailsplit },
|
||||||
{ "merge-base", cmd_merge_base, RUN_SETUP },
|
{ "merge-base", cmd_merge_base, RUN_SETUP },
|
||||||
{ "merge-file", cmd_merge_file },
|
{ "merge-file", cmd_merge_file },
|
||||||
{ "mv", cmd_mv, RUN_SETUP | NOT_BARE },
|
{ "mv", cmd_mv, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "name-rev", cmd_name_rev, RUN_SETUP },
|
{ "name-rev", cmd_name_rev, RUN_SETUP },
|
||||||
{ "pack-objects", cmd_pack_objects, RUN_SETUP },
|
{ "pack-objects", cmd_pack_objects, RUN_SETUP },
|
||||||
{ "pickaxe", cmd_blame, RUN_SETUP | USE_PAGER },
|
{ "pickaxe", cmd_blame, RUN_SETUP | USE_PAGER },
|
||||||
|
@ -287,9 +287,9 @@ static void handle_internal_command(int argc, const char **argv, char **envp)
|
||||||
{ "rerere", cmd_rerere, RUN_SETUP },
|
{ "rerere", cmd_rerere, RUN_SETUP },
|
||||||
{ "rev-list", cmd_rev_list, RUN_SETUP },
|
{ "rev-list", cmd_rev_list, RUN_SETUP },
|
||||||
{ "rev-parse", cmd_rev_parse, RUN_SETUP },
|
{ "rev-parse", cmd_rev_parse, RUN_SETUP },
|
||||||
{ "revert", cmd_revert, RUN_SETUP | NOT_BARE },
|
{ "revert", cmd_revert, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "rm", cmd_rm, RUN_SETUP | NOT_BARE },
|
{ "rm", cmd_rm, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "runstatus", cmd_runstatus, RUN_SETUP | NOT_BARE },
|
{ "runstatus", cmd_runstatus, RUN_SETUP | NEED_WORK_TREE },
|
||||||
{ "shortlog", cmd_shortlog, RUN_SETUP | USE_PAGER },
|
{ "shortlog", cmd_shortlog, RUN_SETUP | USE_PAGER },
|
||||||
{ "show-branch", cmd_show_branch, RUN_SETUP },
|
{ "show-branch", cmd_show_branch, RUN_SETUP },
|
||||||
{ "show", cmd_show, RUN_SETUP | USE_PAGER },
|
{ "show", cmd_show, RUN_SETUP | USE_PAGER },
|
||||||
|
@ -326,8 +326,8 @@ static void handle_internal_command(int argc, const char **argv, char **envp)
|
||||||
prefix = setup_git_directory();
|
prefix = setup_git_directory();
|
||||||
if (p->option & USE_PAGER)
|
if (p->option & USE_PAGER)
|
||||||
setup_pager();
|
setup_pager();
|
||||||
if ((p->option & NOT_BARE) &&
|
if ((p->option & NEED_WORK_TREE) &&
|
||||||
(is_bare_repository() || is_inside_git_dir()))
|
(!is_inside_work_tree() || is_inside_git_dir()))
|
||||||
die("%s must be run in a work tree", cmd);
|
die("%s must be run in a work tree", cmd);
|
||||||
trace_argv_printf(argv, argc, "trace: built-in: git");
|
trace_argv_printf(argv, argc, "trace: built-in: git");
|
||||||
|
|
||||||
|
|
2
setup.c
2
setup.c
|
@ -95,7 +95,7 @@ void verify_non_filename(const char *prefix, const char *arg)
|
||||||
const char *name;
|
const char *name;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
if (is_inside_git_dir())
|
if (!is_inside_work_tree() || is_inside_git_dir())
|
||||||
return;
|
return;
|
||||||
if (*arg == '-')
|
if (*arg == '-')
|
||||||
return; /* flag */
|
return; /* flag */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче