diff mbox

[17/18] dim: Adapat create/remove-branch

Message ID 20161021193700.22100-18-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter Oct. 21, 2016, 7:36 p.m. UTC
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(-)
diff mbox

Patch

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*
 ----------------------