From: "Torsten Bögershausen" <tboegi@web.de>
To: Duy Nguyen <pclouds@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH v3 23/23] untracked cache: guard and disable on system changes
Date: Thu, 11 Dec 2014 21:41:25 +0100 [thread overview]
Message-ID: <548A0175.6000008@web.de> (raw)
In-Reply-To: <CACsJy8BPzcAPJZG4=+mt=LmhhheJjXkfD2+znMjBbjbB9mODDQ@mail.gmail.com>
On 10.12.14 13:22, Duy Nguyen wrote:
> On Wed, Dec 10, 2014 at 12:08 PM, Torsten Bögershausen <tboegi@web.de> wrote:
>> That opens another question:
>> How flexible/extensible/self-describing is the format of the UNTR extension
>> ?
>> If we drop the OS name & root dir check because it disallows network use,
>> but later add a better method to verify that the underlying chain
>> local OS - network - remote OS-remote FS is OK,
>> do we need to change the file format of UNTR ?
>> If yes, can old clients read the new format and vice versa?
>> Do we need a version information of some kind, or does the
>> old client skip unknown entries like we do with extensions in the index ?
> The way index extensions are done so far, there's no actual versioning
> inside an extension.Once an extension is out, its format is set in
> stone. If you change your mind, you make a new extension (with a
> different signature), so signatures are sort of "version". Code is
> shared mostly so it should not be a problem. Old clients don't
> recognize new extensions, so they drop them. New clients either stick
> to old extensions or convert them to new ones. This is all local
> matters, so I don't think we need to worry too much.
Thanks for the info.
Even if I share the the concerns that the cache may work on one system,
but not on the other, there should be better ways to protect from that.
Using the uname does not really help, if you move one repo from NTFS to VFAT,
we will not detect it (assuming we use Windows).
(And how much do we need to support the move of a repo ?)
There is a concern that this may not work, when different clients are accessing
the repo, using the UNTR extension.
Some kind of sanity check would be good to have, what can be done ?
The most important things are the timestamps.
I can think of 2 sanity checks:
- If the modified time stamp of a directory is older then the create time of any file,
the UNTR cache can not be used.
- If the timestamp of a file changes, but the sha1 sum is the same, what does this mean?
The file (or the whole repo) has been copied, or the time stamping does not work.
A simple verification of the FS could be to stat() .git/, create a temp file, delete it and
stat() again. If mtime does not change, the FS is unusable for UNTR.
Then we could extend the uname idea:
Create a string in UNTR which is a collection of lines like this:
Working-For: Linux;/mnt/nfs/projects/project1
Not-OK-For: WIndows:/a:/project1
(Of course the strings can be made nicer, and '\n' is URL-encoded.)
Each system that is not listed needs to probe the repo, add another line
and re-write the index.
We can even add a "best-for" line, and invalidate the UNTR every 12 hours or so.
Should we think about having an ASCII area for additional information, which is part
of the stone, but the content is flexible ?
The patch-series really speeds up "git status" on a network, thanks for working on it.
The next days^H^H^H^H weeks I will do some more tests, using different combinations
of OS and network protocols.
next prev parent reply other threads:[~2014-12-11 20:41 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-08 14:04 [PATCH v3 00/23] nd/untracked-cache updates Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH] checkout: add --ignore-other-wortrees Nguyễn Thái Ngọc Duy
2014-12-08 13:58 ` Duy Nguyen
2014-12-08 14:04 ` [PATCH v3 01/23] dir.c: optionally compute sha-1 of a .gitignore file Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 02/23] untracked cache: record .gitignore information and dir hierarchy Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 03/23] untracked cache: initial untracked cache validation Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 04/23] untracked cache: invalidate dirs recursively if .gitignore changes Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 05/23] untracked cache: make a wrapper around {open,read,close}dir() Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 06/23] untracked cache: record/validate dir mtime and reuse cached output Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 07/23] untracked cache: mark what dirs should be recursed/saved Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 08/23] untracked cache: don't open non-existent .gitignore Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 09/23] ewah: add convenient wrapper ewah_serialize_strbuf() Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 10/23] untracked cache: save to an index extension Nguyễn Thái Ngọc Duy
2014-12-09 23:28 ` Eric Sunshine
2014-12-10 0:21 ` Duy Nguyen
2014-12-08 14:04 ` [PATCH v3 11/23] untracked cache: load from UNTR " Nguyễn Thái Ngọc Duy
2014-12-15 19:35 ` Junio C Hamano
2014-12-08 14:04 ` [PATCH v3 12/23] untracked cache: invalidate at index addition or removal Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 13/23] read-cache.c: split racy stat test to a separate function Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 14/23] untracked cache: avoid racy timestamps Nguyễn Thái Ngọc Duy
2014-12-08 14:04 ` [PATCH v3 15/23] untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS Nguyễn Thái Ngọc Duy
2014-12-08 14:05 ` [PATCH v3 16/23] untracked cache: mark index dirty if untracked cache is updated Nguyễn Thái Ngọc Duy
2014-12-08 14:05 ` [PATCH v3 17/23] untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE Nguyễn Thái Ngọc Duy
2014-12-08 14:05 ` [PATCH v3 18/23] status: enable untracked cache Nguyễn Thái Ngọc Duy
2014-12-08 14:05 ` [PATCH v3 19/23] update-index: manually enable or disable " Nguyễn Thái Ngọc Duy
2014-12-08 14:05 ` [PATCH v3 20/23] update-index: test the system before enabling " Nguyễn Thái Ngọc Duy
2014-12-08 14:05 ` [PATCH v3 21/23] t7063: tests for " Nguyễn Thái Ngọc Duy
2014-12-08 14:05 ` [PATCH v3 22/23] mingw32: add uname() Nguyễn Thái Ngọc Duy
2014-12-08 14:05 ` [PATCH v3 23/23] untracked cache: guard and disable on system changes Nguyễn Thái Ngọc Duy
2014-12-09 10:04 ` brian m. carlson
2014-12-09 22:53 ` Duy Nguyen
2014-12-10 5:08 ` Torsten Bögershausen
2014-12-10 12:22 ` Duy Nguyen
2014-12-11 20:41 ` Torsten Bögershausen [this message]
2014-12-15 3:02 ` Duy Nguyen
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=548A0175.6000008@web.de \
--to=tboegi@web.de \
--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.
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 NNTP newsgroup(s).