@@ -654,7 +654,9 @@ function dim_create_branch
echo "usage: $dim $subcommand branch [commit-ish]"
exit 1
fi
- branch=$1
+ local branch=$1
+ local nightly_remote="drm-intel"
+
if [[ "x$2" = "x" ]]; then
start=HEAD
else
@@ -663,10 +665,19 @@ function dim_create_branch
cd $DIM_PREFIX/$DIM_DRM_INTEL
+ source $DIM_PREFIX/drm-rerere/nightly.conf
+
+ if ( map_nightly_remote ${branch%%/*} ) &> /dev/null ; then
+ nightly_remote=${branch%%/*}
+ branch=${branch#*/}
+ fi
+
+ local remote=`map_nightly_remote $nightly_remote`
+
$DRY git branch $branch $start
- git push $DRY_RUN $DIM_DRM_INTEL_REMOTE +$branch --set-upstream
+ git push $DRY_RUN $remote +$branch --set-upstream
cd $DIM_PREFIX/drm-rerere
- $DRY echo "nightly_branches=\"\$nightly_branches origin/$branch\"" \
+ $DRY echo "nightly_branches=\"\$nightly_branches $nightly_remote/$branch\"" \
>> nightly.conf
$DRY git add nightly.conf
$DRY git commit --quiet -m "Adding $branch to -nightly"
@@ -678,23 +689,48 @@ function dim_remove_branch
echo "usage: $dim $subcommand branch"
exit 1
fi
- branch=$1
+ local branch=$1
cd $DIM_PREFIX/$DIM_DRM_INTEL
- if ! $DRY git branch -d $branch ; then
- warn_or_fail "Can't remove $branch in working repo"
+ if [[ `git branch --list $branch` != "" ]] &&
+ ! $DRY git branch -d $branch ; then
+ warn_or_fail "Can't remove $branch in working repo"
fi
if [[ -d $DIM_PREFIX/$branch ]] ; then
rm -R $DIM_PREFIX/$branch
+ git worktree prune &> /dev/null || true
fi
cd $DIM_PREFIX/drm-tip
- git push $DRY_RUN origin --delete $branch
- $DRY git fetch origin --prune
+
+ source $DIM_PREFIX/drm-rerere/nightly.conf
+
+ local nightly_remote=""
+
+ for tree in $nightly_branches; do
+ local nightly_branch=${tree%:*}
+ local nightly_remote=${nightly_branch%%/*}
+ nightly_branch=${nightly_branch#*/}
+
+ if [[ $nightly_branch == $branch ]] ; then
+ nightly_remote=$nightly_remote
+ break
+ fi
+ done
+
+ if [[ $nightly_remote == "" ]] ; then
+ echoerr "$branch not found in nightly.conf"
+ exit 1
+ fi
+
+ local remote=`map_nightly_remote $nightly_remote`
+
+ git push $DRY_RUN $remote --delete $branch
+ $DRY git fetch $remote --prune
cd $DIM_PREFIX/drm-rerere
- full_branch="origin/$branch"
+ full_branch="$nightly_remote/$branch"
$DRY sed -e "/${full_branch//\//\\\/}/d" -i nightly.conf
$DRY git add nightly.conf
$DRY git commit --quiet -m "Deleted $branch and removed from -nightly"
@@ -283,7 +283,10 @@ create-branch *branch* [*commit-ish*]
-------------------------------------
Create a new topic branch with the given name. Note that topic/ is not
-automatically prepended. The branch starts at HEAD or the given commit-ish.
+automatically prepended. The branch starts at HEAD or the given commit-ish. Note
+that by default the new branch is created in the drm-intel.git repository. If
+you want to create a branch somewhere else, then you need to prepend the remote
+name from nigthly.conf, e.g. "drm-misc/topic/branch".
remove-branch *branch*
----------------------
Looking up the remote for deleting the branch is a bit an exercise. v2: Correctly keep the fake remote name from nightly.conf and the real (local) remote name apart. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> --- dim | 54 +++++++++++++++++++++++++++++++++++++++++++++--------- dim.rst | 5 ++++- 2 files changed, 49 insertions(+), 10 deletions(-)