diff options
Diffstat (limited to 'eclass/git-r3.eclass')
-rw-r--r-- | eclass/git-r3.eclass | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/eclass/git-r3.eclass b/eclass/git-r3.eclass index 51f0ae5a247d..a5d0f054d90f 100644 --- a/eclass/git-r3.eclass +++ b/eclass/git-r3.eclass @@ -1,6 +1,6 @@ -# Copyright 1999-2014 Gentoo Foundation +# Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/git-r3.eclass,v 1.47 2014/07/28 14:13:50 mgorny Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/git-r3.eclass,v 1.48 2015/02/04 09:44:24 ulm Exp $ # @ECLASS: git-r3.eclass # @MAINTAINER: @@ -131,6 +131,17 @@ fi # @DESCRIPTION: # If non-empty, this variable prevents any online operations. +# @ECLASS-VARIABLE: EVCS_UMASK +# @DEFAULT_UNSET +# @DESCRIPTION: +# Set this variable to a custom umask. This is intended to be set by +# users. By setting this to something like 002, it can make life easier +# for people who do development as non-root (but are in the portage +# group), and then switch over to building with FEATURES=userpriv. +# Or vice-versa. Shouldn't be a security issue here as anyone who has +# portage group write access already can screw the system over in more +# creative ways. + # @ECLASS-VARIABLE: EGIT_BRANCH # @DEFAULT_UNSET # @DESCRIPTION: @@ -309,8 +320,16 @@ _git-r3_set_gitdir() { addwrite "${EGIT3_STORE_DIR}" if [[ ! -d ${GIT_DIR} ]]; then + local saved_umask + if [[ ${EVCS_UMASK} ]]; then + saved_umask=$(umask) + umask "${EVCS_UMASK}" || die "Bad options to umask: ${EVCS_UMASK}" + fi mkdir "${GIT_DIR}" || die git init --bare || die + if [[ ${saved_umask} ]]; then + umask "${saved_umask}" || die + fi fi } @@ -507,7 +526,11 @@ git-r3_fetch() { fi # try to fetch from the remote - local r success + local r success saved_umask + if [[ ${EVCS_UMASK} ]]; then + saved_umask=$(umask) + umask "${EVCS_UMASK}" || die "Bad options to umask: ${EVCS_UMASK}" + fi for r in "${repos[@]}"; do einfo "Fetching ${r} ..." @@ -668,6 +691,9 @@ git-r3_fetch() { break fi done + if [[ ${saved_umask} ]]; then + umask "${saved_umask}" || die + fi [[ ${success} ]] || die "Unable to fetch from any of EGIT_REPO_URI" # submodules can reference commits in any branch |