Apply this patch to add all git remotes with register.

Let me know if there are strict testing or coding standard to conform to.

Thanks and Best, Daniele

``` From 46971cbb17f4c02a281c18ff9fbbf6976c4a5a91 Mon Sep 17 00:00:00 2001 From: Daniele Pizzolli dan@toel.it Date: Sun, 29 May 2016 10:51:05 +0200 Subject: [PATCH] mr register take care of all git remotes


mr | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)

diff --git a/mr b/mr index ad75aa7..a1a1c21 100755 --- a/mr +++ b/mr @@ -2225,12 +2225,31 @@ svn_register = echo "Registering svn url: $url in $MR_CONFIG" mr -c "$MR_CONFIG" config "pwd" checkout="svn co '$url' '$MR_REPO'" git_register = + # TODO: do not assume origin as the only valid name url="LC_ALL=C git config --get remote.origin.url" || true if [ -z "$url" ]; then error "cannot determine git url" fi echo "Registering git url: $url in $MR_CONFIG" mr -c "$MR_CONFIG" config "pwd" checkout="git clone '$url' '$MR_REPO'" + get_remotes() { + LC_ALL=C git config --get-regexp 'remote..url' | sed 's:^remote.([^.]).url (.*):\1 \2:' | while read remote url; do + # TODO: verify the assumption that remotes does not contain . + # TODO: verify the assumption that the remote url is correctly escaped + if [ "origin" != "${remote}" ]; then + echo "Adding remote ${remote} with git url: $url in $MR_CONFIG" >&2 + printf "%s" "&& git remote add '$remote' '$url'" + fi + done + } + ADDITIONAL_REMOTES="$(get_remotes)" + if [ -n "${ADDITIONAL_REMOTES}" ]; then + WRAP_REMOTES="&& cd '$MR_REPO'" + WRAP_REMOTES="${WRAP_REMOTES} ${ADDITIONAL_REMOTES}" + WRAP_REMOTES="${WRAP_REMOTES} && git fetch --all" + mr -c "$MR_CONFIG" config "pwd" checkout="git clone '$url' '$MR_REPO' ${WRAP_REMOTES}" + fi + bzr_register = url="LC_ALL=C bzr info . | egrep -i 'checkout of branch|parent branch' | awk '{print $NF}' | head -n 1"

if [ -z "$url" ]; then

-- 2.1.4 ```

Thanks for the friendly review Joey.

Here is the updated version with the comment addressed:

``` From 693d0c96333581bd83b5e5074b43729b415ae5b1 Mon Sep 17 00:00:00 2001 From: Daniele Pizzolli dan@toel.it Date: Sun, 29 May 2016 10:51:05 +0200 Subject: [PATCH] mr register take care of all git remotes


mr | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)

diff --git a/mr b/mr index ad75aa7..c221ca8 100755 --- a/mr +++ b/mr @@ -2225,12 +2225,32 @@ svn_register = echo "Registering svn url: $url in $MR_CONFIG" mr -c "$MR_CONFIG" config "pwd" checkout="svn co '$url' '$MR_REPO'" git_register = + # NOTE: we assume the presence of a origin, even that can + # not be the case (for example if origin was renamed). + # Dealing with such edge use case is too cumbersome. url="LC_ALL=C git config --get remote.origin.url" || true if [ -z "$url" ]; then error "cannot determine git url" fi echo "Registering git url: $url in $MR_CONFIG" mr -c "$MR_CONFIG" config "pwd" checkout="git clone '$url' '$MR_REPO'" + get_remotes() { + # NOTE: Since only git >= 2.7.0 supports "remote get-url", we wrangle + # with git config and sed + LC_ALL=C git config --get-regexp '^remote...url$' | sed 's:^remote.(.).url (.*):\1 \2:' | while read remote url; do + if [ "origin" != "${remote}" ]; then + echo "Adding remote ${remote} with git url: $url in $MR_CONFIG" >&2 + printf "%s" " && git remote add '$remote' '$url'" + fi + done + } + ADDITIONAL_REMOTES="$(get_remotes)" + if [ -n "${ADDITIONAL_REMOTES}" ]; then + WRAP_REMOTES=" && cd '$MR_REPO'" + WRAP_REMOTES="${WRAP_REMOTES}${ADDITIONAL_REMOTES}" + WRAP_REMOTES="${WRAP_REMOTES} && git fetch --all" + mr -c "$MR_CONFIG" config "pwd" checkout="git clone '$url' '$MR_REPO'${WRAP_REMOTES}" + fi bzr_register = url="LC_ALL=C bzr info . | egrep -i 'checkout of branch|parent branch' | awk '{print $NF}' | head -n 1"

    if [ -z "$url" ]; then

-- 2.8.1 ```

PS: I am not able to see (or add) the comments in this page using the site https://myrepos.branchable.com, instead I have to switch to http://source.myrepos.branchable.com.