From: Junio C Hamano <junkio@cox.net>
To: Martin Langhoff <martin.langhoff@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: git /objects directory created 755 by default?
Date: Tue, 20 Dec 2005 17:37:06 -0800 [thread overview]
Message-ID: <7vlkyffcxp.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <7vacevgwqr.fsf@assigned-by-dhcp.cox.net> (Junio C. Hamano's message of "Tue, 20 Dec 2005 15:43:56 -0800")
Junio C Hamano <junkio@cox.net> writes:
> Martin Langhoff <martin.langhoff@gmail.com> writes:
>
>> Since git changed to creating the objects subdirectories "on demand",
>> these are created 755 regardless of the user's umask. This is quite
>> inconvenient in ("cvs style") team-shared repositories, which work
>> great otherwise.
>
> Hmph.
>
> I have 002 as umask. .git/objects or .git/objects/[0-9a-f]{2}
> directories are created 0775 for me.
Martin, is this happening when your developers push into the
shared repo? If so, do your developers use git-shell? Do their
umask set properly even when they come over ssh and gets into
noninteractive shell? What do they see when they do this?
$ ssh shared.repo.machine.example.com umask
the answer may wall be "What do you think I am, A shell?", or
0022.
The git-shell command is designed to be not git aware (it does
not know how a git repository looks like, nor does not know all
the commands it can handle right now happen to take the
repository directory as their first parameter). If we do not
mind butchering things, we could introduce:
[shell]
umask = 0002
to the configuration file, and do something like this (not even
compile tested, and I am not sure what else it breaks):
---
diff --git a/shell.c b/shell.c
index cd31618..33898f8 100644
--- a/shell.c
+++ b/shell.c
@@ -1,15 +1,34 @@
#include "cache.h"
#include "quote.h"
-static int do_generic_cmd(const char *me, char *arg)
+static int shell_umask = 0002; /* default */
+
+static int slurp_repository_umask(const char *var, const char *value)
+{
+ if (!strcmp(var, "shell.umask"))
+ shell_umask = git_config_int(value);
+ else
+ return git_default_config(var, value);
+ return 0;
+}
+
+/*
+ * These commands take arg == git repository directory.
+ */
+static int do_git_repo_cmd(const char *me, char *arg)
{
const char *my_argv[4];
if (!arg || !(arg = sq_dequote(arg)))
die("bad argument");
+ if (!enter_repo(arg, 0))
+ die("'%s': Nah -- not a git repository", arg);
+ git_config(slurp_repository_umask);
+ umask(shell_umask);
+
my_argv[0] = me;
- my_argv[1] = arg;
+ my_argv[1] = ".";
my_argv[2] = NULL;
return execvp(me, (char**) my_argv);
@@ -19,8 +38,8 @@ static struct commands {
const char *name;
int (*exec)(const char *me, char *arg);
} cmd_list[] = {
- { "git-receive-pack", do_generic_cmd },
- { "git-upload-pack", do_generic_cmd },
+ { "git-receive-pack", do_git_repo_cmd },
+ { "git-upload-pack", do_git_repo_cmd },
{ NULL },
};
next prev parent reply other threads:[~2005-12-21 1:37 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-20 23:25 git /objects directory created 755 by default? Martin Langhoff
2005-12-20 23:43 ` Junio C Hamano
2005-12-21 1:37 ` Junio C Hamano [this message]
2005-12-21 2:28 ` Martin Langhoff
2005-12-21 4:53 ` Junio C Hamano
2005-12-21 5:10 ` Martin Langhoff
2005-12-21 5:03 ` Junio C Hamano
2005-12-21 5:15 ` Martin Langhoff
2005-12-21 5:17 ` Junio C Hamano
2005-12-21 5:23 ` Martin Langhoff
2005-12-22 3:46 ` Ben Clifford
2005-12-21 15:35 ` Johannes Schindelin
2005-12-21 22:10 ` Junio C Hamano
2005-12-21 22:20 ` Johannes Schindelin
2005-12-22 9:45 ` Andreas Ericsson
2005-12-22 11:27 ` Johannes Schindelin
2005-12-22 12:28 ` Andreas Ericsson
2005-12-22 14:37 ` Johannes Schindelin
2005-12-22 15:53 ` Andreas Ericsson
2005-12-22 16:03 ` Johannes Schindelin
2005-12-22 16:52 ` Andreas Ericsson
2005-12-22 17:31 ` Johannes Schindelin
2005-12-22 19:14 ` Junio C Hamano
2005-12-22 19:28 ` Johannes Schindelin
2005-12-22 20:15 ` Junio C Hamano
2005-12-22 20:27 ` Johannes Schindelin
2005-12-23 4:19 ` Junio C Hamano
2005-12-23 12:07 ` Andreas Ericsson
2005-12-22 10:11 ` Alex Riesen
2005-12-22 11:35 ` Johannes Schindelin
2005-12-22 14:38 ` Alex Riesen
2005-12-22 15:09 ` Johannes Schindelin
2005-12-22 15:14 ` Alex Riesen
2005-12-22 15:52 ` Johannes Schindelin
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=7vlkyffcxp.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=git@vger.kernel.org \
--cc=martin.langhoff@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).