From: Junio C Hamano <gitster@pobox.com>
To: Kjetil Barvik <barvik@broadpark.no>
Cc: git@vger.kernel.org
Subject: Re: [PATCH/RFC v1 2/6] remove some memcpy() and strchr() calls inside create_directories()
Date: Wed, 28 Jan 2009 12:36:57 -0800 [thread overview]
Message-ID: <7vd4e7np5i.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: 1233004637-15112-3-git-send-email-barvik@broadpark.no
Kjetil Barvik <barvik@broadpark.no> writes:
> OK, maybe I instead should have tried to merge the function
> create_directories() with the safe_create_leading_directories() and
> *_const() functions? What do pepople think?
Strictly speaking, the safe_create_leading_* functions are meant to work
on paths inside $GIT_DIR and are not meant for paths inside the work tree,
which is this function is about. Their semantics are different with
respect to adjust_shared_perm().
Which means that you would either have two variants (one for work tree
paths, and another for paths inside $GIT_DIR), or a unified function that
has an argument to specify whether to run adjust_shared_perm().
HOWEVER.
That is only "strictly speaking".
A non-bare repository that is shared feels like an oximoron, but perhaps
there is a valid "shared work area" workflow that may benefit from such a
setup.
I see existing (mis)uses of the safe_create_leading_* in builtin-apply.c,
builtin-clone.c (the one that creates the work_tree, the other one is Ok),
merge-recursive.c (both call sites) that are used to touch the work tree,
but all places that create regular files in the work tree do not run
adjust_shared_perm() but simply honor the user's umask.
If we _were_ to support a "shared work area" workflow, having a unified
"create leading directory" function that always calls adjust_shared_perm()
may make sense (note that adjust_shared_perm() is a no-op in a non-shared
repository). We then need to also call adjust_shared_perm() for codepaths
that create regular files as well, though (e.g. write_entry() in entry.c,
but there are many others).
> diff --git a/entry.c b/entry.c
> index 05aa58d..c2404ea 100644
> --- a/entry.c
> +++ b/entry.c
> @@ -2,15 +2,19 @@
> #include "blob.h"
> #include "dir.h"
>
> -static void create_directories(const char *path, const struct checkout *state)
> +static void
> +create_directories(int path_len, const char *path, const struct checkout *state)
Please do not split the line like this.
The existing sources are not laid out to allow "grep ^funcname(", nor are
we going to reformat all the files to support such a use case.
When we pass <string, length> pair to functions, I think we pass them in
the order I just wrote in all the other functions.
The micro-optimization itself makes sense to me, though.
next prev parent reply other threads:[~2009-01-28 20:40 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-26 21:17 [PATCH/RFC v1 0/6] git checkout: more cleanups, optimisation, less lstat() calls Kjetil Barvik
2009-01-26 21:17 ` [PATCH/RFC v1 1/6] symlinks.c: small cleanup and optimisation Kjetil Barvik
2009-01-28 20:36 ` ??? " Junio C Hamano
2009-01-29 14:19 ` Kjetil Barvik
2009-01-26 21:17 ` [PATCH/RFC v1 2/6] remove some memcpy() and strchr() calls inside create_directories() Kjetil Barvik
2009-01-28 20:36 ` Junio C Hamano [this message]
2009-01-26 21:17 ` [PATCH/RFC v1 3/6] cleanup of write_entry() in entry.c Kjetil Barvik
2009-01-28 21:31 ` Junio C Hamano
2009-01-26 21:17 ` [PATCH/RFC v1 4/6] use fstat() instead of lstat() when we have an opened file Kjetil Barvik
2009-01-26 21:17 ` [PATCH/RFC v1 5/6] combine-diff.c: remove a call to fstat() inside show_patch_diff() Kjetil Barvik
2009-01-27 9:35 ` Mike Ralphson
2009-01-27 12:03 ` Kjetil Barvik
2009-01-27 12:06 ` Mike Ralphson
2009-01-28 20:37 ` Junio C Hamano
2009-01-29 1:16 ` Junio C Hamano
2009-01-29 8:20 ` Kjetil Barvik
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=7vd4e7np5i.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=barvik@broadpark.no \
--cc=git@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.