]> git.madduck.net Git - code/vcsh.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Do not use shared Git repositories
authorThomas Tuegel <ttuegel@mailbox.org>
Mon, 17 Jul 2017 13:20:13 +0000 (08:20 -0500)
committerThomas Tuegel <ttuegel@mailbox.org>
Mon, 17 Jul 2017 13:20:13 +0000 (08:20 -0500)
Shared repositories were created using `git init --shared=0600` with the intent
of keeping configuration data private. Git reports an error if "shared"
repositories are created with private permissions. (Due to an apparent bug, the
error was not reported before git-2.13.2.)

Instead of creating a shared repository, use `umask 0077` to make created files
accessible only to the current user. The umask setting is inherited by child
processes and respected by Git.

t/100-init.t
vcsh

index 74facc02655ba9db6b733c754d6685b61d43813d..15ce922f0e32040dae47cb795653567b8a90a2b7 100644 (file)
@@ -18,7 +18,7 @@ ok $output eq "", 'No repos set up yet.';
 
 $output = `./vcsh init test1`;
 
 
 $output = `./vcsh init test1`;
 
-ok $output eq "Initialized empty shared Git repository in " . $ENV{'HOME'} . "/.config/vcsh/repo.d/test1.git/\n";
+ok $output eq "Initialized empty Git repository in " . $ENV{'HOME'} . "/.config/vcsh/repo.d/test1.git/\n";
 
 $output = `./vcsh status`;
 
 
 $output = `./vcsh status`;
 
diff --git a/vcsh b/vcsh
index de1b419f4ce57ee0d74233d4156358d418f3055a..57a465cd1166e3e7afe89f7cddad38867baed61c 100755 (executable)
--- a/vcsh
+++ b/vcsh
@@ -22,6 +22,9 @@
 VERSION='1.20141026'
 SELF=$(basename $0)
 
 VERSION='1.20141026'
 SELF=$(basename $0)
 
+# Ensure all files created are accessible only to the current user.
+umask 0077
+
 fatal() {
        echo "$SELF: fatal: $1" >&2
        [ -z $2 ] && exit 1
 fatal() {
        echo "$SELF: fatal: $1" >&2
        [ -z $2 ] && exit 1
@@ -261,7 +264,7 @@ init() {
        [ ! -e "$GIT_DIR" ] || fatal "'$GIT_DIR' exists" 10
        mkdir -p "$VCSH_BASE" || fatal "could not create '$VCSH_BASE'" 50
        cd "$VCSH_BASE" || fatal "could not enter '$VCSH_BASE'" 11
        [ ! -e "$GIT_DIR" ] || fatal "'$GIT_DIR' exists" 10
        mkdir -p "$VCSH_BASE" || fatal "could not create '$VCSH_BASE'" 50
        cd "$VCSH_BASE" || fatal "could not enter '$VCSH_BASE'" 11
-       git init --shared=0600
+       git init --shared=false
        upgrade
        hook post-init
 }
        upgrade
        hook post-init
 }