From: Junio C Hamano <gitster@pobox.com>
To: David Turner <dturner@twopensource.com>
Cc: git@vger.kernel.org, mhagger@alum.mit.edu
Subject: Re: [PATCH v4 23/26] initdb: move safe_create_dir into common code
Date: Wed, 21 Oct 2015 12:38:48 -0700 [thread overview]
Message-ID: <xmqq37x4vwon.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <1444938410-2345-24-git-send-email-dturner@twopensource.com> (David Turner's message of "Thu, 15 Oct 2015 15:46:47 -0400")
David Turner <dturner@twopensource.com> writes:
> In a moment, we'll create initdb functions for ref backends, and code
> from initdb that calls this function needs to move into the files
> backend. So this function needs to be public.
OK, but unlike the static function, being in public interface part
can invite mistakes of using this for things outside $GIT_DIR [*1*].
Let's have "Never use this for working tree directories" somewhere
in its docstring.
Other than that, this one, 24/26 and 25/26 looked fine to me.
Thanks.
[Footnote]
*1* Anything created by this function and everything underneath are
repository metadata and this function must not be used to do with
anything with the working tree, as it is clear with the use of
adjust_shared_perm().
> diff --git a/cache.h b/cache.h
> index 9a905a8..1d8a051 100644
> --- a/cache.h
> +++ b/cache.h
> @@ -1737,4 +1737,9 @@ void stat_validity_update(struct stat_validity *sv, int fd);
> int versioncmp(const char *s1, const char *s2);
> void sleep_millisec(int millisec);
>
> +/*
> + * Create a directory and (if share is nonzero) adjust its permissions
> + * according to the shared_repository setting.
> + */
> +void safe_create_dir(const char *dir, int share);
> #endif /* CACHE_H */
> diff --git a/path.c b/path.c
> index 212695a..9e0283c 100644
> --- a/path.c
> +++ b/path.c
> @@ -723,6 +723,18 @@ int adjust_shared_perm(const char *path)
> return 0;
> }
>
> +void safe_create_dir(const char *dir, int share)
> +{
> + if (mkdir(dir, 0777) < 0) {
> + if (errno != EEXIST) {
> + perror(dir);
> + exit(1);
> + }
> + }
> + else if (share && adjust_shared_perm(dir))
> + die(_("Could not make %s writable by group"), dir);
> +}
> +
> static int have_same_root(const char *path1, const char *path2)
> {
> int is_abs1, is_abs2;
next prev parent reply other threads:[~2015-10-21 19:48 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-15 19:46 [PATCH v4 00/26] refs backend pre-vtable patches David Turner
2015-10-15 19:46 ` [PATCH v4 01/26] refs.c: create a public version of verify_refname_available David Turner
2015-10-15 19:46 ` [PATCH v4 02/26] refs: make repack_without_refs and is_branch public David Turner
2015-10-16 6:34 ` Michael Haggerty
2015-10-19 23:16 ` David Turner
2015-10-15 19:46 ` [PATCH v4 03/26] refs-be-files.c: rename refs to refs-be-files David Turner
2015-10-16 6:36 ` Michael Haggerty
2015-10-15 19:46 ` [PATCH v4 04/26] refs.c: add a new refs.c file to hold all common refs code David Turner
2015-10-15 19:46 ` [PATCH v4 05/26] refs.c: move update_ref to refs.c David Turner
2015-10-21 19:03 ` David Turner
2015-10-15 19:46 ` [PATCH v4 06/26] refs.c: move delete_pseudoref and delete_ref to the common code David Turner
2015-10-21 19:04 ` David Turner
2015-10-15 19:46 ` [PATCH v4 07/26] refs.c: move read_ref_at to the common refs file David Turner
2015-10-15 19:46 ` [PATCH v4 08/26] refs.c: move the hidden refs functions to the common code David Turner
2015-10-15 19:46 ` [PATCH v4 09/26] refs.c: move dwim and friend functions to the common refs code David Turner
2015-10-15 19:46 ` [PATCH v4 10/26] refs.c: move warn_if_dangling_symref* to the common code David Turner
2015-10-15 19:46 ` [PATCH v4 11/26] refs.c: move read_ref, read_ref_full and ref_exists " David Turner
2015-10-15 19:46 ` [PATCH v4 12/26] refs.c: move resolve_refdup to common David Turner
2015-10-15 19:46 ` [PATCH v4 13/26] refs.c: move check_refname_format to the common code David Turner
2015-10-15 19:46 ` [PATCH v4 14/26] refs.c: move is_branch " David Turner
2015-10-15 19:46 ` [PATCH v4 15/26] refs.c: move prettify_refname " David Turner
2015-10-15 19:46 ` [PATCH v4 16/26] refs.c: move ref iterators " David Turner
2015-10-15 19:46 ` [PATCH v4 17/26] refs.c: move head_ref_namespaced " David Turner
2015-10-15 19:46 ` [PATCH v4 18/26] refs: move transaction functions into " David Turner
2015-10-15 19:46 ` [PATCH v4 19/26] refs.c: move refname_is_safe to the " David Turner
2015-10-15 19:46 ` [PATCH v4 20/26] refs.c: move copy_msg " David Turner
2015-10-15 19:46 ` [PATCH v4 21/26] refs.c: move peel_object " David Turner
2015-10-15 19:46 ` [PATCH v4 22/26] refs.c: move should_autocreate_reflog to " David Turner
2015-10-15 19:46 ` [PATCH v4 23/26] initdb: move safe_create_dir into " David Turner
2015-10-21 19:38 ` Junio C Hamano [this message]
2015-10-21 19:47 ` David Turner
2015-10-15 19:46 ` [PATCH v4 24/26] refs: make files_log_ref_write functions public David Turner
2015-10-15 19:46 ` [PATCH v4 25/26] refs: break out ref conflict checks David Turner
2015-10-15 19:46 ` [PATCH v4 26/26] introduce "extensions" form of core.repositoryformatversion David Turner
2015-10-21 19:40 ` Junio C Hamano
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=xmqq37x4vwon.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=dturner@twopensource.com \
--cc=git@vger.kernel.org \
--cc=mhagger@alum.mit.edu \
/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.