From b45330910922db679ffb7f5e94814f044f97df89 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 7 Feb 2017 12:12:34 -0500 Subject: [PATCH] repo: make `repo` search more flexible --- .bin/r | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/.bin/r b/.bin/r index 22628b4..24fc5e4 100755 --- a/.bin/r +++ b/.bin/r @@ -87,6 +87,46 @@ process_reviewers() { reviewers=${reviewers%,} } +find_repo() { + # Diff projects have diff versions of repo. Find a compatible one. + local root=$(repo_root) + + # Use the manifest repo URL. + local manifest_dir="${root}/.repo/manifests.git" + local d + + # Default to the local repo if it's there. + local search=( + "${root}/.repo/repo" + ) + + case $(g --git-dir="${manifest_dir}" config remote.origin.url) in + *android*) + search+=( + /usr/local/src/repo + ~/src/repo + ) + ;; + *chromium*|*chrome*) + search+=( + ~/depot_tools + ~/chromiumos/depot_tools + /usr/local/src/depot_tools + ~/src/depot_tools + ) + ;; + esac + for d in "${search[@]}" ; do + if [[ -x ${d}/repo ]] ; then + echo "${d}"/repo + return + fi + done + + # Fallback: use $PATH. + type -P repo +} + case ${acmd:-${cmd}} in rebase) if [[ $1 == "all" ]] ; then @@ -302,9 +342,14 @@ upload) ;; email) email=${1:-${USER}@chromium.org} + + root=$(repo_root) + git --git-dir="${root}/.repo/manifests.git" cfg user.email "${email}" + git --git-dir="${root}/.repo/repo/.git" cfg user.email "${email}" + cmd='forall' - set -- -c "git cfg user.email ${email}" + set -- -c "git cfg user.email '${email}'" ;; esac -exec python2 $(type -P repo) ${acmd:-${cmd}} "$@" +exec python2 $(find_repo) ${acmd:-${cmd}} "$@" -- 2.39.2