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

Jani Nikula jani.nikula at intel.com
Tue Nov 10 07:30:11 UTC 2020


On Tue, 03 Nov 2020, Rodrigo Vivi <rodrigo.vivi at intel.com> wrote:
> 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.
>> 
>> 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>
>
> Acked-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

Pushed, thanks.

BR,
Jani.

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

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the dim-tools mailing list