From 68232c328fa0f26c6c66c3d1896ce0b9155aeb06 Mon Sep 17 00:00:00 2001 From: Christoph Blecker Date: Fri, 25 Aug 2017 16:51:51 -0700 Subject: [PATCH] Create kube::util::create-fake-git-tree function --- hack/lib/util.sh | 19 ++++++++++++++++++- hack/update-staging-godeps-dockerized.sh | 23 +++++++---------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/hack/lib/util.sh b/hack/lib/util.sh index ab27382c56e..8e96ad462b1 100755 --- a/hack/lib/util.sh +++ b/hack/lib/util.sh @@ -331,7 +331,7 @@ kube::util::group-version-to-pkg-path() { return fi - # "v1" is the API GroupVersion + # "v1" is the API GroupVersion if [[ "${group_version}" == "v1" ]]; then echo "vendor/k8s.io/api/core/v1" return @@ -437,6 +437,23 @@ kube::util::git_upstream_remote_name() { head -n 1 | awk '{print $1}' } +# Ensures the current directory is a git tree for doing things like restoring or +# validating godeps +kube::util::create-fake-git-tree() { + local -r target_dir=${1:-$(pwd)} + + pushd "${target_dir}" >/dev/null + git init >/dev/null + git config --local user.email "nobody@k8s.io" + git config --local user.name "$0" + git add . >/dev/null + git commit -q -m "Snapshot" >/dev/null + if (( ${KUBE_VERBOSE:-5} >= 6 )); then + kube::log::status "${target_dir} is now a git tree." + fi + popd >/dev/null +} + # Checks whether godep restore was run in the current GOPATH, i.e. that all referenced repos exist # and are checked out to the referenced rev. kube::util::godep_restored() { diff --git a/hack/update-staging-godeps-dockerized.sh b/hack/update-staging-godeps-dockerized.sh index 458cbb211f2..bf4bbea8bba 100755 --- a/hack/update-staging-godeps-dockerized.sh +++ b/hack/update-staging-godeps-dockerized.sh @@ -50,11 +50,16 @@ while getopts ":df" opt; do esac done +# Confirm this is running inside a docker container, as this will modify the git tree (unsafe to run outside of container) kube::util::ensure_dockerized kube::golang::setup_env +# Ensure we have a simple gopath so that we can modify it, and that no staging repos have made their way in kube::util::ensure_single_dir_gopath kube::util::ensure_no_staging_repos_in_gopath +# Confirm we have the right godep version installed kube::util::ensure_godep_version v79 +# Create a fake git repo the root of the repo to prevent godeps from complaining +kube::util::create-fake-git-tree "${KUBE_ROOT}" kube::log::status "Checking whether godeps are restored" if ! kube::util::godep_restored 2>&1 | sed 's/^/ /'; then @@ -87,27 +92,13 @@ function diffGodepManifest() { fi } -# Create a fake git repo for staging to prevent godeps from complaining -pushd "${KUBE_ROOT}" >/dev/null - git init >/dev/null - git config --local user.email "nobody@k8s.io" - git config --local user.name "$0" - git add . >/dev/null - git commit -q -m "Snapshot" >/dev/null -popd >/dev/null - # move into staging and save the dependencies for everything in order mkdir -p "${TMP_GOPATH}/src/k8s.io" for repo in $(ls ${KUBE_ROOT}/staging/src/k8s.io); do cp -a "${KUBE_ROOT}/staging/src/k8s.io/${repo}" "${TMP_GOPATH}/src/k8s.io/" - pushd "${TMP_GOPATH}/src/k8s.io/${repo}" >/dev/null - git init >/dev/null - git config --local user.email "nobody@k8s.io" - git config --local user.name "$0" - git add . >/dev/null - git commit -q -m "Snapshot" >/dev/null - popd >/dev/null + # Create a fake git tree for the staging repo to prevent godeps from complaining + kube::util::create-fake-git-tree "${TMP_GOPATH}/src/k8s.io/${repo}" updateGodepManifest diffGodepManifest