Still left to do is fixing up create-branch and remove-branch.
Everything else should work here now.

Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
---
 dim | 36 ++++++++++++++++++++++++++----------
 1 file changed, 26 insertions(+), 10 deletions(-)

diff --git a/dim b/dim
index 4d5008ecce11..fc99108b6e55 100755
--- a/dim
+++ b/dim
@@ -163,7 +163,8 @@ if [ "$subcommand" != "setup" -a "$subcommand" != "help" -a 
"$subcommand" != "us
        #

        dim_branches=`(source $DIM_PREFIX/drm-rerere/nightly.conf ; echo 
$nightly_branches) | \
-               xargs -n 1 echo | grep '^origin' | sed -e 's/^origin\///'`
+               xargs -n 1 echo | grep '^\(drm-intel\|drm-misc\)' | \
+               sed -e 's/^\(drm-intel\|drm-misc\)\///'`
 fi

 function dim_uptodate
@@ -209,6 +210,14 @@ function get_remote_name
        echo $remote
 }

+function get_remote_for_branch
+{
+       local remote=`git rev-parse --abbrev-ref --symbolic-full-name 
$1@{upstream}`
+       remote=${remote%%/*}
+
+       echo $remote
+}
+
 # get message id from file
 # $1 = file
 message_get_id ()
@@ -434,12 +443,14 @@ function dim_push_branch
                exit 1
        fi

-       branch=$1
+       local branch=$1
        shift

        assert_branch $branch

-       git push $DRY_RUN $DIM_DRM_INTEL_REMOTE $branch "$@"
+       local remote=`get_remote_for_branch $branch`
+
+       git push $DRY_RUN $remote $branch "$@"

        dim_rebuild_nightly
 }
@@ -715,7 +726,11 @@ function dim_checkout

        dim_cd $1
        if [[ `git branch --list $1` ==  "" ]] ; then
-               git checkout -t $DIM_DRM_INTEL_REMOTE/$1
+               if [[ `git branch --list --remote $1` == "" ]] ; then
+                       git checkout -t $DIM_DRM_INTEL_REMOTE/$1
+               else
+                       git checkout -t $1
+               fi
        else
                git checkout $1
        fi
@@ -999,8 +1014,9 @@ function dim_pull_request
                exit 1
        fi

-       branch=$1
-       upstream=$2
+       local branch=$1
+       local upstream=$2
+       local remote=`get_remote_for_branch $1`

        if [ "$branch" != "drm-intel-next" ]; then
                assert_branch $branch
@@ -1013,13 +1029,13 @@ function dim_pull_request

        if [ "$branch" = "drm-intel-next" ]; then
                # drm-intel-next pulls have been tagged using dim update-next
-               drm_intel_next_tags=`git log 
$DIM_DRM_INTEL_REMOTE/drm-intel-next ^$upstream --decorate | grep "(.*tag: 
drm-intel-next-" | sed -e "s/^.*(.*tag: \(drm-intel-next-[^ ,]*\).*)$/\1/"`
+               drm_intel_next_tags=`git log $branch@{upstream} ^$upstream 
--decorate | grep "(.*tag: drm-intel-next-" | sed -e "s/^.*(.*tag: 
\(drm-intel-next-[^ ,]*\).*)$/\1/"`
                prep_pull_mail $drm_intel_next_tags
-               tag=`git describe --all --exact 
$DIM_DRM_INTEL_REMOTE/drm-intel-next`
+               tag=`git describe --all --exact $branch@{upstream}`
        else
                tag=$branch-$today
-               $DRY git tag -f $tag $DIM_DRM_INTEL_REMOTE/$branch
-               $DRY git push -f $DIM_DRM_INTEL_REMOTE $tag
+               $DRY git tag -f $tag $branch@{upstream}
+               $DRY git push -f $remote $tag
                prep_pull_mail
        fi

-- 
2.9.3

Reply via email to