git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: David Turner <dturner@twopensource.com>
To: git@vger.kernel.org, pclouds@gmail.com
Cc: David Turner <dturner@twopensource.com>
Subject: [PATCH v12 14/20] watchman: add a config option to enable the extension
Date: Thu, 19 May 2016 17:45:51 -0400	[thread overview]
Message-ID: <1463694357-6503-15-git-send-email-dturner@twopensource.com> (raw)
In-Reply-To: <1463694357-6503-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 82d4446..6d3fe71 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -2426,6 +2426,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)
@@ -2449,6 +2450,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

  parent reply	other threads:[~2016-05-19 21:47 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-19 21:45 [PATCH v12 00/20] index-helper/watchman David Turner
2016-05-19 21:45 ` [PATCH v12 01/20] read-cache.c: fix constness of verify_hdr() David Turner
2016-05-19 21:45 ` [PATCH v12 02/20] read-cache: allow to keep mmap'd memory after reading David Turner
2016-05-19 21:45 ` [PATCH v12 03/20] pkt-line: add gentle version of packet_write David Turner
2016-06-25 14:01   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 04/20] index-helper: new daemon for caching index and related stuff David Turner
2016-06-17 16:43   ` Christian Couder
2016-06-25 14:15     ` Duy Nguyen
2016-06-25 14:33   ` Duy Nguyen
2016-06-25 19:21     ` David Turner
2016-06-26  4:27       ` Duy Nguyen
2016-06-26 19:29         ` David Turner
2016-06-27  5:50           ` Duy Nguyen
2016-06-26  8:53       ` Eric Wong
2016-06-26 17:49         ` David Turner
2016-06-26 23:25           ` Eric Wong
2016-05-19 21:45 ` [PATCH v12 05/20] index-helper: add --strict David Turner
2016-06-25 14:43   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 06/20] daemonize(): set a flag before exiting the main process David Turner
2016-05-19 21:45 ` [PATCH v12 07/20] index-helper: add --detach David Turner
2016-06-25 14:46   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 08/20] index-helper: log warnings David Turner
2016-05-19 21:45 ` [PATCH v12 09/20] read-cache: add watchman 'WAMA' extension David Turner
2016-06-25 14:59   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 10/20] watchman: support watchman to reduce index refresh cost David Turner
2016-06-17 16:01   ` Christian Couder
2016-05-19 21:45 ` [PATCH v12 11/20] index-helper: use watchman to avoid refreshing index with lstat() David Turner
2016-06-17 13:02   ` Duy Nguyen
2016-06-17 21:39     ` David Turner
2016-06-19  5:07     ` [PATCH v12 11/20] index-helper: use watchman to avoid refreshing, " David Turner
2016-06-23  6:24       ` David Turner
2016-06-23 15:33         ` Duy Nguyen
2016-06-25 16:27   ` [PATCH v12 11/20] index-helper: use watchman to avoid refreshing " Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 12/20] update-index: enable/disable watchman support David Turner
2016-06-25 16:31   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 13/20] unpack-trees: preserve index extensions David Turner
2016-05-19 21:45 ` David Turner [this message]
2016-05-19 21:45 ` [PATCH v12 15/20] index-helper: kill mode David Turner
2016-05-19 21:45 ` [PATCH v12 16/20] index-helper: don't run if already running David Turner
2016-06-17 16:18   ` Christian Couder
2016-05-19 21:45 ` [PATCH v12 17/20] index-helper: autorun mode David Turner
2016-06-25 16:35   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 18/20] index-helper: optionally automatically run David Turner
2016-06-25 16:38   ` Duy Nguyen
2016-05-19 21:45 ` [PATCH v12 19/20] trace: measure where the time is spent in the index-heavy operations David Turner
2016-05-19 21:45 ` [PATCH v12 20/20] index-helper: indexhelper.exitafter config David Turner
2016-06-25 13:28 ` [PATCH v12 00/20] index-helper/watchman Duy Nguyen
2016-06-25 16:42   ` Duy Nguyen
2016-06-26  4:08   ` 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=1463694357-6503-15-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).