@@ -620,3 +620,6 @@ core.size::
* `pack.useSparse=true` uses the sparse tree-walk algorithm, which is
optimized for enumerating objects during linkgit:git-push[1] from a
client machine.
++
+* `status.aheadBehind=false` enables `--no-ahead-behind` by default during
+linkgit:git-status[1] calls, saving time in a fast-moving commit history.
@@ -15,7 +15,8 @@ status.branch::
status.aheadBehind::
Set to true to enable `--ahead-behind` and false to enable
`--no-ahead-behind` by default in linkgit:git-status[1] for
- non-porcelain status formats. Defaults to true.
+ non-porcelain status formats. Defaults to true, unless
+ `core.size=large`.
status.displayCommentPrefix::
If set to true, linkgit:git-status[1] will insert a comment
@@ -36,6 +36,7 @@
#include "help.h"
#include "commit-reach.h"
#include "commit-graph.h"
+#include "repo-settings.h"
static const char * const builtin_commit_usage[] = {
N_("git commit [<options>] [--] <pathspec>..."),
@@ -1117,8 +1118,11 @@ static void finalize_deferred_config(struct wt_status *s)
* in particular), we inherit _FULL for backwards compatibility.
*/
if (use_deferred_config &&
- s->ahead_behind_flags == AHEAD_BEHIND_UNSPECIFIED)
- s->ahead_behind_flags = status_deferred_config.ahead_behind;
+ s->ahead_behind_flags == AHEAD_BEHIND_UNSPECIFIED) {
+ prepare_repo_settings(the_repository);
+ if (the_repository->settings->status_ahead_behind != -1)
+ s->ahead_behind_flags = the_repository->settings->status_ahead_behind;
+ }
if (s->ahead_behind_flags == AHEAD_BEHIND_UNSPECIFIED)
s->ahead_behind_flags = AHEAD_BEHIND_FULL;
@@ -1259,10 +1263,6 @@ static int git_status_config(const char *k, const char *v, void *cb)
status_deferred_config.show_branch = git_config_bool(k, v);
return 0;
}
- if (!strcmp(k, "status.aheadbehind")) {
- status_deferred_config.ahead_behind = git_config_bool(k, v);
- return 0;
- }
if (!strcmp(k, "status.showstash")) {
s->show_stash = git_config_bool(k, v);
return 0;
@@ -15,6 +15,7 @@ static int git_repo_config(const char *key, const char *value, void *cb)
UPDATE_DEFAULT(rs->core_commit_graph, 1);
UPDATE_DEFAULT(rs->gc_write_commit_graph, 1);
UPDATE_DEFAULT(rs->pack_use_sparse, 1);
+ UPDATE_DEFAULT(rs->status_ahead_behind, 1);
UPDATE_DEFAULT(rs->index_version, 4);
}
return 0;
@@ -31,6 +32,10 @@ static int git_repo_config(const char *key, const char *value, void *cb)
rs->pack_use_sparse = git_config_bool(key, value);
return 0;
}
+ if (!strcmp(key, "status.aheadbehind")) {
+ rs->status_ahead_behind = git_config_bool(key, value);
+ return 0;
+ }
if (!strcmp(key, "index.version")) {
rs->index_version = git_config_int(key, value);
return 0;
@@ -50,6 +55,7 @@ void prepare_repo_settings(struct repository *r)
r->settings->core_commit_graph = -1;
r->settings->gc_write_commit_graph = -1;
r->settings->pack_use_sparse = -1;
+ r->settings->status_ahead_behind = -1;
r->settings->index_version = -1;
repo_config(r, git_repo_config, r->settings);
@@ -5,6 +5,7 @@ struct repo_settings {
char core_commit_graph;
char gc_write_commit_graph;
char pack_use_sparse;
+ char status_ahead_behind;
int index_version;
};