[PATCH] dim: change the drm-intel-next and drm-intel-next-queued process

Daniel Vetter daniel at ffwll.ch
Tue Nov 3 16:30:42 UTC 2020


On Tue, Nov 03, 2020 at 04:26:46PM +0200, Jani Nikula wrote:
> Remove the special casing of drm-intel-next/drm-intel-next-queued
> tagging and pull requests. Instead of having a two-step process for
> dinq, follow the same pull request process for all branches. As the
> first step, use drm-intel-next-queued for pull requests, and ignore
> drm-intel-next for now. The change is only relevant for maintainers.
> 
> In the future, we'll want to switch from drm-intel-next-queued to
> drm-intel-next completely. This will need a flag day switch for all
> committers and maintainers.
> 
> We also decouple driver date update from dinq pull requests. We may want
> to apply the driver date update to drm-intel-gt-next branch instead.
> 
> With the change, we also lose the ability to add multiple drm-intel-next
> tags, and create a single pull request for them. In practice, we haven't
> really used this possibility, as it lacks the merging of the annotated
> tag changelogs together, missing information. We may want to resurrect
> the feature in an improved form in the future, generalized for all
> branches.

I think the approach used in drm-misc is to do a culmulative tag.
Essentially just use the tag for note keeping partway through the merge
window.
-Daniel

> 
> Cc: Daniel Vetter <daniel at ffwll.ch>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
>  dim                      | 61 ++++++----------------------------------
>  dim.rst                  | 35 ++++-------------------
>  maintainer-drm-intel.rst | 17 +++--------
>  3 files changed, 19 insertions(+), 94 deletions(-)
> 
> diff --git a/dim b/dim
> index 8f2151365556..640844a93c65 100755
> --- a/dim
> +++ b/dim
> @@ -2027,34 +2027,9 @@ function dim_update_driver_date
>  	git commit $DRY_RUN -sm "$prefix: Update DRIVER_DATE to $driver_date"
>  }
>  
> -function dim_update_next
> +function dim_update_i915_driver_date
>  {
> -	assert_branch drm-intel-next-queued
> -
> -	git pull --ff-only
> -
>  	dim_update_driver_date "drm/i915" "drivers/gpu/drm/i915/i915_drv.h"
> -
> -	gitk --first-parent drm-intel-next-queued ^$(branch_to_remote drm-next)/drm-next &
> -
> -	# try to push dinq first in case someone raced
> -	FORCE=1 dim_push_queued
> -
> -	dim_update_next_continue
> -}
> -
> -function dim_update_next_continue
> -{
> -	local remote tag
> -
> -	assert_branch drm-intel-next-queued
> -
> -	remote=$(repo_to_remote drm-intel)
> -
> -	git_push -f $remote drm-intel-next-queued:drm-intel-next
> -	tag=$(tag_name "drm-intel-next")
> -
> -	tag_branch $tag drm-intel-next
>  }
>  
>  function dim_tag_branch
> @@ -2091,11 +2066,6 @@ function dim_tag_branch
>  	tag_branch $tag $branch
>  }
>  
> -function dim_tag_next
> -{
> -	dim_tag_branch "drm-intel-next"
> -}
> -
>  # dim_pull_request branch upstream
>  function dim_pull_request
>  {
> @@ -2106,31 +2076,18 @@ function dim_pull_request
>  	remote=$(branch_to_remote $branch)
>  	req_file=$(mktemp)
>  
> -	if [ "$branch" != "drm-intel-next" ]; then
> -		assert_branch $branch
> -	else
> -		cd $DIM_PREFIX/$DIM_REPO
> -	fi
> +	assert_branch $branch
>  
>  	git_fetch_helper ${upstream%%/*}
>  	echo "Using $upstream as the upstream"
>  
> -	if [ "$branch" = "drm-intel-next" ]; then
> -		# drm-intel-next pulls have been tagged using dim update-next
> -		drm_intel_next_tags=$(git_unmerged_tags "$branch" "$upstream")
> -		prep_pull_mail $req_file $drm_intel_next_tags
> -		tag=$(git describe --all --exact "$branch@{upstream}")
> -
> -		repo="drm-intel"
> -	else
> -		checkpatch_commit_push_range 1 "$upstream..$branch"
> -		tag=$(tag_name "$branch")
> -		gitk --first-parent "$branch" ^$upstream &
> -		tag_branch $tag $branch
> -		prep_pull_mail $req_file $tag
> +	checkpatch_commit_push_range 1 "$upstream..$branch"
> +	tag=$(tag_name "$branch")
> +	gitk --first-parent "$branch" ^$upstream &
> +	tag_branch $tag $branch
> +	prep_pull_mail $req_file $tag
>  
> -		repo=$(branch_to_repo $branch)
> -	fi
> +	repo=$(branch_to_repo $branch)
>  
>  	url_list=${drm_tip_repos[$repo]}
>  	git_url=$(pick_protocol_url git $url_list)
> @@ -2143,7 +2100,7 @@ function dim_pull_request
>  function dim_pull_request_next
>  {
>  	upstream=${1:-$(branch_to_remote drm-next)/drm-next}
> -	dim_pull_request drm-intel-next $upstream
> +	dim_pull_request drm-intel-next-queued $upstream
>  }
>  
>  function dim_pull_request_fixes
> diff --git a/dim.rst b/dim.rst
> index 22d6f5668571..757f7c7a4f16 100644
> --- a/dim.rst
> +++ b/dim.rst
> @@ -281,6 +281,10 @@ update-driver-date *prefix* *file*
>  Update the the DRIVER_DATE and DRIVER_TIMESTAMP macros in *file* to match
>  current date and time, and commit the change using given subject prefix.
>  
> +update-i915-driver-date
> +-----------------------
> +**update-driver-date** shorthand for i915.
> +
>  COMMANDS FOR MAINTAINERS
>  ========================
>  
> @@ -333,14 +337,8 @@ pull-request-next-fixes [*upstream*]
>  
>  pull-request-next [*upstream*]
>  ------------------------------
> -This is similar to **pull-request**, but for feature pull requests, with
> -*drm-intel-next* as the branch and *\$DRM_UPSTREAM/drm-next* as the default
> -upstream.
> -
> -The difference to **pull-request** is that this command does not generate a
> -tag; this must have been done previously using **update-next**. This also means
> -that the pull request can be regenerated with the same commands if something
> -goes wrong.
> +**pull-request** shorthand for *drm-intel-next-queued* as the branch and
> +*\$DRM_UPSTREAM/drm-next* as the default upstream.
>  
>  apply-pull *branch*
>  -------------------
> @@ -362,20 +360,6 @@ Rebases *branch* onto *upstream*, making a few sanity checks on the way. The
>  using **pull-request**. Alternatively it can also be a tag, which if available
>  should be preferred.
>  
> -update-next
> ------------
> -Pushes out the latest dinq to drm-intel-next and tags it. For an overview a gitk
> -view of the currently unmerged feature pile is opened.
> -
> -The tag will be signed using the key specified by \$DIM_GPG_KEYID, if set.
> -
> -update-next-continue
> ---------------------
> -
> -When **update-next** fails to push the special release commit (because it raced with
> -another committer) rebase and push manually, and then continue using this
> -command.
> -
>  tag-branch *branch* [*upstream*]
>  --------------------------------
>  Pushes a new tag for the specified branch after checking that the remote is 
> @@ -385,13 +369,6 @@ The tag will be signed using the key specified by \$DIM_GPG_KEYID, if set.
>  
>  If upstream is provided, launch gitk to show the changes to be tagged.
>  
> -tag-next
> ---------
> -**tag-branch** shorthand for drm-intel-next.
> -
> -Useful if drm-intel-next has been changed since the last run of the
> -update-next command (e.g. to apply a hotfix before sending out the pull request).
> -
>  
>  DIM HELP COMMANDS
>  =================
> diff --git a/maintainer-drm-intel.rst b/maintainer-drm-intel.rst
> index 5e6f1f0e5eba..853db6b4d018 100644
> --- a/maintainer-drm-intel.rst
> +++ b/maintainer-drm-intel.rst
> @@ -21,19 +21,10 @@ Take over when the last drm-intel feature pull has been sent for an upcoming
>  merge window, and drm-intel-next-queued starts targeting the next merge window
>  after that. This happens around -rc5 of the current development kernel.
>  
> -Tag drm-intel-next-queued periodically, say every 1-2 weeks, depending on the
> -rate of change. Use ``dim update-next``. Write a tag summary detailing the
> -changes since the last tag. Send a testing request.
> -
> -Send drm-intel-next-queued pull requests periodically. Use ``dim
> -pull-request-next``. Pull requests are based on the tags generated above. Don't
> -send a pull request immediately after tagging, leave some time for
> -testing. Typically you would send a pull request for each tag, but the tooling
> -allows for accumulation of several tags into one pull request. Dave usually
> -doesn't start pulling features until the pull requests for the previous release
> -have been merged to Linus' tree, so it's normal to accumulate several tags
> -before and during the merge window. Only send your first pull request after
> --rc1.
> +Start queuing changes for drm-next after the merge window (i.e. after
> +another -rc1 is out). Send drm-intel-next-queued pull requests periodically. Use
> +``dim pull-request-next``. Write a tag summary detailing the changes since the
> +last tag.
>  
>  Do backmerges as needed, but also don't let drm-intel-next-queued fall too much
>  behind from drm-next; use your discretion. Use ``dim backmerge``. Never rebase
> -- 
> 2.20.1
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dim-tools mailing list