git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v4 08/10] dir: simplify untracked cache "ident" field

From
Torsten Bögershausen <tboegi@web.de>
Date
Dec 30, 2015, 11:47 UTC
Message-ID
<5683C463.9010003@web.de>
In-Reply-To
<1451372974-16266-9-git-send-email-chriscool@tuxfamily.org>
On 2015-12-29 08.09, Christian Couder wrote:
Show 5 quoted lines
> It is not a good idea to compare kernel versions and disable
> the untracked cache if it changes as people may upgrade and
> still want the untracked cache to work. So let's just
> compare work tree locations to decide if we should disable
> it.
OK with that.
Show 6 quoted lines
> 
> Also it's not useful to store many locations in the ident
> field and compare to any of them. It can even be dangerous
> if GIT_WORK_TREE is used with different values. So let's
> just store one location, the location of the current work
> tree.

I don't think I fully agree in all details. The list is there to distinguish between different clients when sharing a Git workspace over a network to different clients:

A file system is exported from Linux to Linux via NFS, including a Git workspace) The same Workspace is exported via SAMBA to Windows and, in an extreme case, AFS to Mac OS.

Other combinations could be Linux - SAMBA - Linux Linux - AFP - Linux

Mac OS - NFS - Linux Mac OS - AFP - Mac OS Mac OS - SMB - Linux, Mac OS, Windows The list is incomplete (BSD and other Unix is missing), there are other combinations of network protocols, there are NAS boxes which mostly Linux under the hood, but may have vendor specific tweaks.

Now we want to know, which of the combinations work. The different clients need to test separately. E.g. for a given server:

NFS - Linux SMB - Linux SMB Windows.

At this point I would agree that the old code from dir.c:
static const char *get_ident_string(void)
{
	static struct strbuf sb = STRBUF_INIT;
	struct utsname uts;
	if (sb.len)
		return sb.buf;
	if (uname(&uts) < 0)
		die_errno(_("failed to get kernel name and information"));
	strbuf_addf(&sb, "Location %s, system %s %s %s", get_git_work_tree(),
		    uts.sysname, uts.release, uts.version);
	return sb.buf;
}
------------------
is unneccessary picky, and the sysname should be enough:

strbuf_addf(&sb, "Location %s, system %s", get_git_work_tree(), uts.sysname);

The old code did not find out, which network protocol that we used, (you need to call "mount", and grep for the directory, and try to get the FS information, which may be ext4, btrfs, smbfs, nfs....) This is unnecessary complicated, so we endet up in using the path.

If I was a system administrator, (I sometimes am), I would set up a bunch of Linux boxes in a similar way, so that the repo is under /nfs/server1/projects/myproject (and the same path is used for all Linux boxes)

The Windows machines may use something like N:/projects/myproject or //server1/projects/myproject

and Mac OS may use /Volumes/projects/myproject (If mounted from the finder) or /nfs/projects/myproject (When autofs is used)

I may have missed the discussion somewhat, could you explain why having different uname/location combinations are not usable at your site ?

How much burden is actually put on your system, and is there a way to keep a list of different clients ?

What I understand is that a kernel update of a Linux machine shouldn't matter, but if a machine runs Windows or Linux should matter.

Previous: Christian CouderNext: Christian Couder
Message 14 of 24 in “Untracked cache improvements”
  1. 00/10 Untracked cache improvementsChristian Couder, Dec 29, 2015
  2. 01/10 dir: free untracked cache when removing itChristian Couder, Dec 29, 2015
  3. Junio C HamanoDec 29, 2015
  4. 02/10 update-index: use enum for untracked cache optionsChristian Couder, Dec 29, 2015
  5. 03/10 update-index: add --test-untracked-cacheChristian Couder, Dec 29, 2015
  6. Junio C HamanoDec 29, 2015
  7. 04/10 update-index: add untracked cache notificationsChristian Couder, Dec 29, 2015
  8. 05/10 update-index: move 'uc' var declarationChristian Couder, Dec 29, 2015
  9. 06/10 dir: add {new,add}_untracked_cache()Christian Couder, Dec 29, 2015
  10. 07/10 dir: add remove_untracked_cache()Christian Couder, Dec 29, 2015
  11. 08/10 dir: simplify untracked cache "ident" fieldChristian Couder, Dec 29, 2015
  12. Junio C HamanoDec 29, 2015
  13. Christian CouderDec 30, 2015
  14. Torsten BögershausenDec 30, 2015
  15. Christian CouderDec 30, 2015
  16. 09/10 config: add core.untrackedCacheChristian Couder, Dec 29, 2015
  17. Junio C HamanoDec 29, 2015
  18. Christian CouderDec 30, 2015
  19. Junio C HamanoDec 30, 2015
  20. Christian CouderDec 31, 2015
  21. Junio C HamanoJan 4, 2016
  22. Christian CouderJan 8, 2016
  23. Junio C HamanoJan 8, 2016
  24. 10/10 t7063: add tests for core.untrackedCacheChristian Couder, Dec 29, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.