In this commit, it's just 'mirror' explained :).
---
 eclass/git-r3.eclass | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/eclass/git-r3.eclass b/eclass/git-r3.eclass
index 8462fba..9c8508a 100644
--- a/eclass/git-r3.eclass
+++ b/eclass/git-r3.eclass
@@ -32,6 +32,19 @@ if [[ ! ${_INHERITED_BY_GIT_2} ]]; then
        DEPEND="dev-vcs/git"
 fi
 
+# @ECLASS-VARIABLE: EGIT_CLONE_TYPE
+# @DESCRIPTION:
+# Type of clone that should be used against the remote repository.
+# This can be either of: 'mirror'.
+#
+# The 'mirror' type clones all remote branches and tags with complete
+# history and all notes. EGIT_COMMIT can specify any commit hash.
+# Upstream-removed branches and tags are purged from the local clone
+# while fetching. This mode is suitable for cloning the local copy
+# for development or hosting a local git mirror. However, clones
+# of repositories with large diverged branches may quickly grow large.
+: ${EGIT_CLONE_TYPE:=mirror}
+
 # @ECLASS-VARIABLE: EGIT3_STORE_DIR
 # @DESCRIPTION:
 # Storage directory for git sources.
@@ -107,6 +120,14 @@ fi
 _git-r3_env_setup() {
        debug-print-function ${FUNCNAME} "$@"
 
+       # check the clone type
+       case "${EGIT_CLONE_TYPE}" in
+               mirror)
+                       ;;
+               *)
+                       die "Invalid EGIT_CLONE_TYPE=${EGIT_CLONE_TYPE}"
+       esac
+
        local esc_pn livevar
        esc_pn=${PN//[-+]/_}
 
-- 
1.8.3.2


Reply via email to