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@xxxxxxxxx> --- dim | 54 +++++++++++++++++++++++++++++++++++++++++++++--------- dim.rst | 5 ++++- 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/dim b/dim index 1ab86d5a4ee9..f42b1eebf48b 100755 --- a/dim +++ b/dim @@ -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" diff --git a/dim.rst b/dim.rst index 171c71bfdb6d..886d94f9231c 100644 --- a/dim.rst +++ b/dim.rst @@ -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* ---------------------- -- 2.9.3 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel