From: David Turner <dturner@twopensource.com>
To: git@vger.kernel.org, pclouds@gmail.com
Cc: David Turner <dturner@twopensource.com>
Subject: [PATCH v6 13/19] watchman: add a config option to enable the extension
Date: Wed, 27 Apr 2016 16:04:35 -0400 [thread overview]
Message-ID: <1461787481-877-14-git-send-email-dturner@twopensource.com> (raw)
In-Reply-To: <1461787481-877-1-git-send-email-dturner@twopensource.com>
For installations that have centrally-managed configuration, it's
easier to set a config once than to run update-index on every
repository.
Signed-off-by: David Turner <dturner@twopensource.com>
---
.gitignore | 1 +
Documentation/config.txt | 4 ++++
Makefile | 1 +
read-cache.c | 6 ++++++
t/t1701-watchman-extension.sh | 37 +++++++++++++++++++++++++++++++++++++
test-dump-watchman.c | 16 ++++++++++++++++
6 files changed, 65 insertions(+)
create mode 100755 t/t1701-watchman-extension.sh
create mode 100644 test-dump-watchman.c
diff --git a/.gitignore b/.gitignore
index b92f122..e6a5b2c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -188,6 +188,7 @@
/test-dump-cache-tree
/test-dump-split-index
/test-dump-untracked-cache
+/test-dump-watchman
/test-fake-ssh
/test-scrap-cache-tree
/test-genrandom
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 2cd6bdd..15001ce 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1848,6 +1848,10 @@ imap::
The configuration variables in the 'imap' section are described
in linkgit:git-imap-send[1].
+index.addwatchmanextension::
+ Automatically add the watchman extension to the index whenever
+ it is written.
+
index.version::
Specify the version with which new index files should be
initialized. This does not affect existing repositories.
diff --git a/Makefile b/Makefile
index 65ab0f4..5f0a954 100644
--- a/Makefile
+++ b/Makefile
@@ -599,6 +599,7 @@ TEST_PROGRAMS_NEED_X += test-delta
TEST_PROGRAMS_NEED_X += test-dump-cache-tree
TEST_PROGRAMS_NEED_X += test-dump-split-index
TEST_PROGRAMS_NEED_X += test-dump-untracked-cache
+TEST_PROGRAMS_NEED_X += test-dump-watchman
TEST_PROGRAMS_NEED_X += test-fake-ssh
TEST_PROGRAMS_NEED_X += test-genrandom
TEST_PROGRAMS_NEED_X += test-hashmap
diff --git a/read-cache.c b/read-cache.c
index 470a27d..252299d 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -2427,6 +2427,7 @@ static int do_write_index(struct index_state *istate, int newfd,
int entries = istate->cache_nr;
struct stat st;
struct strbuf previous_name_buf = STRBUF_INIT, *previous_name;
+ int watchman = 0;
for (i = removed = extended = 0; i < entries; i++) {
if (cache[i]->ce_flags & CE_REMOVE)
@@ -2450,6 +2451,11 @@ static int do_write_index(struct index_state *istate, int newfd,
if (istate->version == 3 || istate->version == 2)
istate->version = extended ? 3 : 2;
+ if (!git_config_get_bool("index.addwatchmanextension", &watchman) &&
+ watchman &&
+ !the_index.last_update)
+ the_index.last_update = xstrdup("");
+
hdr_version = istate->version;
hdr.hdr_signature = htonl(CACHE_SIGNATURE);
diff --git a/t/t1701-watchman-extension.sh b/t/t1701-watchman-extension.sh
new file mode 100755
index 0000000..71f1d46
--- /dev/null
+++ b/t/t1701-watchman-extension.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+test_description='watchman extension smoke tests'
+
+# These don't actually test watchman interaction -- just the
+# index extension
+
+. ./test-lib.sh
+
+test_expect_success 'enable watchman' '
+ test_commit a &&
+ test-dump-watchman .git/index >actual &&
+ echo "last_update: (null)" >expect &&
+ test_cmp expect actual &&
+ git update-index --watchman &&
+ test-dump-watchman .git/index >actual &&
+ echo "last_update: " >expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'disable watchman' '
+ git update-index --no-watchman &&
+ test-dump-watchman .git/index >actual &&
+ echo "last_update: (null)" >expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'auto-enable watchman' '
+ test_config index.addwatchmanextension true &&
+ test_commit c &&
+ test-dump-watchman .git/index >actual &&
+ echo "last_update: " >expect &&
+ test_cmp expect actual
+'
+
+
+test_done
diff --git a/test-dump-watchman.c b/test-dump-watchman.c
new file mode 100644
index 0000000..0314fa5
--- /dev/null
+++ b/test-dump-watchman.c
@@ -0,0 +1,16 @@
+#include "cache.h"
+#include "ewah/ewok.h"
+
+int main(int argc, char **argv)
+{
+ do_read_index(&the_index, argv[1], 1);
+ printf("last_update: %s\n", the_index.last_update ?
+ the_index.last_update : "(null)");
+
+ /*
+ * For now, we just dump last_update, since it is not reasonable
+ * to populate the extension itself in tests.
+ */
+
+ return 0;
+}
--
2.4.2.767.g62658d5-twtrsrc
next prev parent reply other threads:[~2016-04-27 20:06 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-27 20:04 [PATCH v6 00/19] index-helper/watchman David Turner
2016-04-27 20:04 ` [PATCH v6 01/19] read-cache.c: fix constness of verify_hdr() David Turner
2016-04-27 20:04 ` [PATCH v6 02/19] read-cache: allow to keep mmap'd memory after reading David Turner
2016-04-27 20:04 ` [PATCH v6 03/19] index-helper: new daemon for caching index and related stuff David Turner
2016-04-28 18:58 ` Junio C Hamano
2016-04-29 18:46 ` David Turner
2016-04-29 20:47 ` Junio C Hamano
2016-05-01 0:22 ` Duy Nguyen
2016-04-27 20:04 ` [PATCH v6 04/19] index-helper: add --strict David Turner
2016-04-27 20:04 ` [PATCH v6 05/19] index-helper: log warnings David Turner
2016-04-27 20:04 ` [PATCH v6 06/19] daemonize(): set a flag before exiting the main process David Turner
2016-04-27 20:04 ` [PATCH v6 07/19] index-helper: add --detach David Turner
2016-04-27 20:04 ` [PATCH v6 08/19] read-cache: add watchman 'WAMA' extension David Turner
2016-04-27 20:04 ` [PATCH v6 09/19] Add watchman support to reduce index refresh cost David Turner
2016-04-27 20:04 ` [PATCH v6 10/19] index-helper: use watchman to avoid refreshing index with lstat() David Turner
2016-04-27 20:04 ` [PATCH v6 11/19] update-index: enable/disable watchman support David Turner
2016-04-27 20:04 ` [PATCH v6 12/19] unpack-trees: preserve index extensions David Turner
2016-04-27 20:04 ` David Turner [this message]
2016-04-27 20:04 ` [PATCH v6 14/19] index-helper: kill mode David Turner
2016-04-27 20:04 ` [PATCH v6 15/19] index-helper: don't run if already running David Turner
2016-04-27 20:04 ` [PATCH v6 16/19] index-helper: autorun mode David Turner
2016-04-27 20:04 ` [PATCH v6 17/19] index-helper: optionally automatically run David Turner
2016-04-27 20:04 ` [PATCH v6 18/19] Add tracing to measure where most of the time is spent David Turner
2016-04-27 20:04 ` [PATCH v6 19/19] untracked-cache: config option David Turner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1461787481-877-14-git-send-email-dturner@twopensource.com \
--to=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=pclouds@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).