[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