X-Git-Url: https://git.madduck.net/code/vcsh.git/blobdiff_plain/a82dfd998413a033234b6e604200331e64f8528f..b469b65f0110f09dec06a7061975947647716332:/vcsh?ds=inline diff --git a/vcsh b/vcsh index d4e1ba0..d1d26ed 100755 --- a/vcsh +++ b/vcsh @@ -22,6 +22,9 @@ 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 @@ -106,6 +109,7 @@ help() { commit Commit in all repositories delete Delete an existing repository enter Enter repository; spawn new instance of \$SHELL + with \$GIT_DIR set. foreach [<-g>] Execute a command for every repository help Display this help text @@ -162,7 +166,7 @@ clone() { You should add files to your new repository." exit fi - GIT_VERSION_MAJOR=$(git --version | sed -n 's/.* \([0-9]\)\..*/\1/p' ) + GIT_VERSION_MAJOR=$(git --version | sed -E -n 's/.* ([0-9]+)\..*/\1/p' ) if [ 1 -lt "$GIT_VERSION_MAJOR" ];then git fetch origin "$VCSH_BRANCH" else @@ -186,11 +190,12 @@ clone() { commit() { hook pre-commit + shift # remove the "commit" command. for VCSH_REPO_NAME in $(list); do echo "$VCSH_REPO_NAME: " GIT_DIR=$VCSH_REPO_D/$VCSH_REPO_NAME.git; export GIT_DIR use - git commit --untracked-files=no --quiet + git commit --untracked-files=no --quiet "$@" VCSH_COMMAND_RETURN_CODE=$? echo done @@ -261,7 +266,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 - git init --shared=0600 + git init --shared=false upgrade hook post-init } @@ -274,7 +279,7 @@ list() { get_files() { GIT_DIR=$VCSH_REPO_D/$VCSH_REPO_NAME.git; export GIT_DIR - git ls-files + git ls-files --full-name } list_tracked() { @@ -476,9 +481,9 @@ write_gitignore() { use cd "$VCSH_BASE" || fatal "could not enter '$VCSH_BASE'" 11 - local GIT_VERSION=$(git --version) - local GIT_VERSION_MAJOR=$(echo $GIT_VERSION | sed -n 's/.* \([0-9]\)\..*/\1/p') - local GIT_VERSION_MINOR=$(echo $GIT_VERSION | sed -n 's/.* \([0-9]\)\.\([0-9]\)\..*/\2/p') + local GIT_VERSION="$(git --version)" + local GIT_VERSION_MAJOR=$(echo $GIT_VERSION | sed -E -n 's/.* ([0-9]+)\..*/\1/p') + local GIT_VERSION_MINOR=$(echo $GIT_VERSION | sed -E -n 's/.* ([0-9]+)\.([0-9]+)\..*/\2/p') OLDIFS=$IFS IFS=$(printf '\n\t') gitignores=$(for file in $(git ls-files); do