On Tue, Oct 03, 2017 at 09:15:46AM +0300, Jani Nikula wrote:
> On Thu, 28 Sep 2017, Jani Nikula <jani.nik...@intel.com> wrote:
> > This lets us configure a space separated list of URLs for each repo in
> > drm_tip_repos, with all accepted protocols and sources, and the first
> > one found gets picked. This way we don't have to have a complicated set
> > of rules for converting between ssh, git and https protocol URLs.
> 
> I merged this last week with Daniel's IRC ack. We'll need to give people
> a little bit of time before updating nightly.conf. Sorry for the
> inconvenience in the mean time.
> 
> We should probably think about adding some real versioning to dim to be
> able to handle this kind of stuff more systematically.

We update dim in dim update-branches, and we complain about old dim. I
think a few days of update time is plenty enough, at least it seems to
have been for adding the drm-amd remote.
-Daniel

> 
> BR,
> Jani.
> 
> 
> 
> >
> > Signed-off-by: Jani Nikula <jani.nik...@intel.com>
> >
> > ---
> >
> > !!! UNTESTED !!!
> > ---
> >  dim | 97 
> > +++++++++++++++++++++++++++++++++++++++++++++------------------------
> >  1 file changed, 63 insertions(+), 34 deletions(-)
> >
> > diff --git a/dim b/dim
> > index c6c746cdb154..d2f165893161 100755
> > --- a/dim
> > +++ b/dim
> > @@ -255,44 +255,73 @@ fi
> >  # The below functions map between these.
> >  #
> >  
> > -function url_to_remote # url
> > +function url_to_remote # url [url ...]
> >  {
> >     local url remote
> >  
> > -   url="$1"
> > -
> > -   if [[ -z "$url" ]]; then
> > -           echoerr "$0 without url"
> > +   if [[ "$#" = "0" ]]; then
> > +           echoerr "url_to_remote without URLs"
> >             return 1
> >     fi
> >  
> > -   remote=$(git remote -v | grep -m 1 "$url" | cut -f 1)
> > -
> > -   if [[ -z "$remote" ]]; then
> > -           git_url=$(echo $url | sed -e 's/git\./anongit./' -e 
> > 's/ssh:/git:/')
> > -           remote=$(git remote -v | grep -m 1 "$git_url" | cut -f 1)
> > +   for url; do
> > +           remote=$(git remote -v | grep -m 1 "$url" | cut -f 1)
> > +           if [[ -n "$remote" ]]; then
> > +                   echo "$remote"
> > +                   return 0
> > +           fi
> > +   done
> >  
> > -           if [[ -z "$remote" ]]; then
> > -                   echoerr "No git remote for url $url or $git_url found 
> > in $(pwd)"
> > -                   remote=${url%.git}
> > -                   remote=${remote##*/}
> > -                   read -r -i "$remote" -e -p "Enter a name to auto-add 
> > this remote, leave blank to abort: " || true
> > -                   if [[ "$REPLY" == "" ]] ; then
> > -                           echoerr "Please set it up yourself using:"
> > -                           echoerr "    $ git remote add <name> $url"
> > -                           echoerr "with a name of your choice."
> > -                           exit 1
> > -                   fi
> > +   echoerr "No git remote for any of the URLs $* found in $(pwd)"
> >  
> > -                   git remote add $remote $url
> > -           fi
> > +   url=$1
> > +   remote=${url%.git}
> > +   remote=${remote##*/}
> > +   read -r -i "$remote" -e -p "Enter a name to auto-add this remote, leave 
> > blank to abort: " || true
> > +   if [[ "$REPLY" == "" ]] ; then
> > +           echoerr "Please set it up yourself using:"
> > +           echoerr "    $ git remote add <name> $url"
> > +           echoerr "with a name of your choice."
> > +           exit 1
> >     fi
> >  
> > +   git remote add $remote $url
> > +
> >     echo $remote
> >  
> >     return 0
> >  }
> >  
> > +function url_to_git_url # url [url ...]
> > +{
> > +   local url git_url
> > +
> > +   if [[ "$#" = "0" ]]; then
> > +           echoerr "url_to_git_url without URLs"
> > +           return 1
> > +   fi
> > +
> > +   # Find the git:// URL, converting from ssh:// URL as fallback
> > +   for url; do
> > +           case $url in
> > +                   git://*)
> > +                           git_url=$url
> > +                           break
> > +                           ;;
> > +                   ssh://*)
> > +                           git_url=$(echo $url | sed -e 
> > 's/git\./anongit./' -e 's/ssh:/git:/')
> > +                           ;;
> > +           esac
> > +   done
> > +
> > +   if [[ -z "$git_url" ]]; then
> > +           echoerr "No git or ssh URL in any of the URLs $*"
> > +           return 1
> > +   fi
> > +
> > +   echo $git_url
> > +}
> > +
> >  function branch_to_remote # branch
> >  {
> >     local branch remote
> > @@ -595,7 +624,7 @@ function commit_rerere_cache
> >  
> >  function dim_rebuild_tip
> >  {
> > -   local integration_branch specfile time first rerere repo url remote
> > +   local integration_branch specfile time first rerere repo url_list remote
> >  
> >     integration_branch=drm-tip
> >     specfile=$(mktemp)
> > @@ -627,8 +656,8 @@ function dim_rebuild_tip
> >     echo "Done."
> >  
> >     for repo in "${!drm_tip_repos[@]}"; do
> > -           url=${drm_tip_repos[$repo]}
> > -           remote=$(url_to_remote $url)
> > +           url_list=${drm_tip_repos[$repo]}
> > +           remote=$(url_to_remote $url_list)
> >             echo -n "Fetching $repo (local remote $remote)... "
> >             git_fetch_helper $remote
> >             echo "Done."
> > @@ -639,8 +668,8 @@ function dim_rebuild_tip
> >             local branch override sha1 fixup_file
> >  
> >             read -r repo branch override <<< $conf
> > -           url=${drm_tip_repos[$repo]}
> > -           remote=$(url_to_remote $url)
> > +           url_list=${drm_tip_repos[$repo]}
> > +           remote=$(url_to_remote $url_list)
> >             sha1=$remote/$branch
> >  
> >             echo -n "Merging $repo (local remote $remote) $branch... "
> > @@ -1641,7 +1670,7 @@ function prep_pull_tag_summary
> >  # dim_pull_request branch upstream
> >  function dim_pull_request
> >  {
> > -   local branch upstream remote repo req_file url git_url suffix tag
> > +   local branch upstream remote repo req_file url_list git_url suffix tag
> >  
> >     branch=${1:?$usage}
> >     upstream=${2:?$usage}
> > @@ -1679,8 +1708,8 @@ function dim_pull_request
> >             repo=$(branch_to_repo $branch)
> >     fi
> >  
> > -   url=${drm_tip_repos[$repo]}
> > -   git_url=$(echo $url | sed -e 's/git\./anongit./' -e 's/ssh:/git:/')
> > +   url_list=${drm_tip_repos[$repo]}
> > +   git_url=$(url_to_git_url $url_list)
> >  
> >     git request-pull $upstream $git_url $tag >> $req_file
> >     $DRY $DIM_MUA -s "[PULL] $branch" \
> > @@ -1729,7 +1758,7 @@ function dim_list_branches
> >  dim_alias_ub=update-branches
> >  function dim_update_branches
> >  {
> > -   local repo remote
> > +   local repo remote url_list
> >  
> >     cd $DIM_PREFIX/$DIM_DRM_INTEL
> >  
> > @@ -1740,8 +1769,8 @@ function dim_update_branches
> >     fi
> >  
> >     for repo in "${!drm_tip_repos[@]}"; do
> > -           url=${drm_tip_repos[$repo]}
> > -           if ! remote=$(url_to_remote $url 2>/dev/null); then
> > +           url_list=${drm_tip_repos[$repo]}
> > +           if ! remote=$(url_to_remote $url_list 2>/dev/null); then
> >                     continue
> >             fi
> >             echo -n "Fetching $repo (local remote $remote)... "
> 
> -- 
> Jani Nikula, Intel Open Source Technology Center

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to