Skip to content

Commit 1f77d0c

Browse files
committed
Merge branch 'status-no-lock-index'
This branch allows third-party tools to call `git status --no-lock-index` to avoid lock contention with the interactive Git usage of the actual human user. Signed-off-by: Johannes Schindelin <[email protected]>
2 parents 4e49497 + 8f02884 commit 1f77d0c

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

Documentation/git-status.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,13 @@ ignored, then the directory is not shown, but all contents are shown.
134134
without options are equivalent to 'always' and 'never'
135135
respectively.
136136

137+
--no-lock-index::
138+
--lock-index::
139+
(DEPRECATED: use --no-optional-locks instead)
140+
Specifies whether `git status` should try to lock the index and
141+
update it afterwards if any changes were detected. Defaults to
142+
`--lock-index`.
143+
137144
<pathspec>...::
138145
See the 'pathspec' entry in linkgit:gitglossary[7].
139146

builtin/commit.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1364,6 +1364,7 @@ static int git_status_config(const char *k, const char *v, void *cb)
13641364

13651365
int cmd_status(int argc, const char **argv, const char *prefix)
13661366
{
1367+
static int no_lock_index = 0;
13671368
static struct wt_status s;
13681369
int fd;
13691370
struct object_id oid;
@@ -1397,12 +1398,20 @@ int cmd_status(int argc, const char **argv, const char *prefix)
13971398
N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"),
13981399
PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
13991400
OPT_COLUMN(0, "column", &s.colopts, N_("list untracked files in columns")),
1401+
OPT_BOOL(0, "no-lock-index", &no_lock_index,
1402+
N_("do not lock the index")),
14001403
OPT_END(),
14011404
};
14021405

14031406
if (argc == 2 && !strcmp(argv[1], "-h"))
14041407
usage_with_options(builtin_status_usage, builtin_status_options);
14051408

1409+
if (no_lock_index) {
1410+
warning("--no-lock-index is deprecated, use --no-optional-locks"
1411+
" instead");
1412+
setenv(GIT_OPTIONAL_LOCKS_ENVIRONMENT, "false", 1);
1413+
}
1414+
14061415
status_init_config(&s, git_status_config);
14071416
argc = parse_options(argc, argv, prefix,
14081417
builtin_status_options,

0 commit comments

Comments
 (0)