[Intel-gfx] [maintainer-tools RFC PATCH] dim: add cherry-pick-[next-]fixes subcommands

Jani Nikula jani.nikula at intel.com
Wed Feb 17 12:58:21 UTC 2016


On Wed, 10 Feb 2016, Daniel Vetter <daniel at ffwll.ch> wrote:
> On Fri, Jan 29, 2016 at 09:40:32AM +0200, Jani Nikula wrote:
>> Add two new subcommands for cherry-picking fixes from dinq to
>> drm-intel-fixes and drm-intel-next-fixes. The only difference in the
>> subcommands is the assert branch check to ensure the user is on the
>> right branch.
>> 
>> The commands scan dinq for commits Cc'd to stable or drm-intel-fixes,
>> checks whether they've already been backported, attempts cherry-pick,
>> and asks for directions on failed cherry-pick.
>> 
>> It's still rough around the edges and slow as molasses due to unlimited
>> scan for backports (should just check a release or two back at most),
>> and an aborted run just starts over next time (though it should take the
>> freshly backported commits into account).
>> 
>> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>> 
>> ---
>> 
>> Undecided whether we should apply this already or not. It's crude, but I
>> use it.
>
> Imo add help text and push it. We can prettify later on. Oh and maybe bash
> completion too. Wrt speeding this up, have you looked at gregkh's
> toolchaing for stable kernels? It should be out there somewhere.

Added help and pushed.

BR,
Jani.


> -Daniel
>
>> ---
>>  dim | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 49 insertions(+)
>> 
>> diff --git a/dim b/dim
>> index 203c6b60cf1b..c64f6e86af62 100755
>> --- a/dim
>> +++ b/dim
>> @@ -473,6 +473,55 @@ function dim_cherry_pick
>>  	$DRY git cherry-pick $1
>>  }
>>  
>> +function dim_cherry_pick_branch
>> +{
>> +	for commit in $(git log --reverse --format=format:%h --grep="drm-intel-fixes at lists.freedesktop.org" --grep="stable at vger.kernel.org" origin/master..$DIM_DRM_INTEL_REMOTE/drm-intel-next-queued -- drivers/gpu/drm/i915); do
>> +		echo "Considering $(git --no-pager log --oneline -1 $commit)"
>> +		log=$(mktemp)
>> +		# note *local* branches to account for unpushed ones
>> +		git log drm-intel-fixes --oneline --grep="cherry picked .* $commit" > $log
>> +		git log drm-intel-next-fixes --oneline --grep="cherry picked .* $commit" >> $log
>> +		if [ "$(cat $log)" = "" ]; then
>> +			if ! git cherry-pick -e -x -s $commit; then
>> +				select choice in "Diff" "Resolve" "Skip" "Abort"; do
>> +					case $choice in
>> +						Diff)
>> +							git diff
>> +							;;
>> +						Resolve)
>> +							exit
>> +							;;
>> +						Skip)
>> +							git cherry-pick --abort
>> +							break
>> +							;;
>> +						Abort)
>> +							git cherry-pick --abort
>> +							exit
>> +							;;
>> +					esac
>> +				done
>> +			fi
>> +		else
>> +			echo "Already backported as:"
>> +			sed 's/^/\t/' < $log
>> +		fi
>> +		rm -f $log
>> +	done
>> +}
>> +
>> +function dim_cherry_pick_fixes
>> +{
>> +	assert_branch drm-intel-fixes
>> +	dim_cherry_pick_branch "$@"
>> +}
>> +
>> +function dim_cherry_pick_next_fixes
>> +{
>> +	assert_branch drm-intel-next-fixes
>> +	dim_cherry_pick_branch "$@"
>> +}
>> +
>>  dim_alias_ar=apply-resolved
>>  function dim_apply_resolved
>>  {
>> -- 
>> 2.1.4
>> 

-- 
Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list