[PATCH] dim: Add range-diff convenience wrapper

Lucas De Marchi lucas.de.marchi at gmail.com
Fri Oct 5 20:39:23 UTC 2018


On Fri, Oct 5, 2018 at 12:11 PM Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
>
> range-diff is awesome, but the interface is a bit silly. Add a bunch
> of shortcuts, inspired by what git diff does.
>
> v2: Add it to the developer commmands list. With this dim range-diff
> is useable on any git repo, not just a dim managed one.
>
> v3: Comments from Lucas:
> - Forward additional arguments. There's no --no-patch in upstream git,

There is (at least in the 2.19.0 final release), it's just not
documented... like in other
git commands, these option are forwarded to the command below, which in this
case is git-diff.

$ git range-diff --no-patch 0cb02867d768...f2fcb2af4be0
1:  0cb02867d768 ! 1:  f2fcb2af4be0 untested crap

I discovered this while trying to figure out why range-diff was not
working for me:

$ git range-diff 0cb02867d768...f2fcb2af4be0
1:  0cb02867d768 ! 1:  f2fcb2af4be0 untested crap
    Submodule a 000000000000...000000000000 (new submodule)

And it still isn't, not sure why.

But I'm digressing.

Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>

Lucas De Marchi

>   but I tested this with --no-color and --no-dual-color. Slightly a
>   hack since detecting whether it's a branch or not became even more
>   fun, but works in all cases.
> - Remove impossible "$branch" == "" check - I added a default.
>
> v4: Update docs.
>
> Cc: Lucas De Marchi <lucas.de.marchi at gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> ---
>  dim     | 19 +++++++++++++++++++
>  dim.rst | 10 ++++++++++
>  2 files changed, 29 insertions(+)
>
> diff --git a/dim b/dim
> index 72c86db560a7..aeaea05dac4b 100755
> --- a/dim
> +++ b/dim
> @@ -475,6 +475,24 @@ function dim_retip
>         git rebase --onto $new_upstream $upstream $branch "$@"
>  }
>
> +function dim_range_diff
> +{
> +       local branch
> +
> +       branch=${1:-@\{1\}}
> +
> +       if [[ $(git rev-parse $branch | wc -l) -eq 1 ]] ; then
> +               if [[ $(git rev-parse $branch) == "$branch" ]] ; then
> +                       branch="@{1}"
> +               else
> +                       shift || true
> +               fi
> +               git range-diff $branch...HEAD "$@"
> +       else
> +               git range-diff "$@"
> +       fi
> +}
> +
>  # update for-linux-next and for-linux-next-fixes branches
>  function update_linux_next # branch next next-fixes fixes
>  {
> @@ -2190,6 +2208,7 @@ function list_developer_commands
>                 "cite"
>                 "fixes"
>                 "retip"
> +               "range-diff"
>                 "sparse"
>                 "tc"
>                 # help commands
> diff --git a/dim.rst b/dim.rst
> index b149fa39445e..5a093b03c24a 100644
> --- a/dim.rst
> +++ b/dim.rst
> @@ -95,6 +95,16 @@ retip [*branch*] [*git-rebase option* ...]
>  Rebase the given local branch, current branch by default, onto drm-tip. Options
>  after the branch will be passed to **git-rebase**.
>
> +range-diff [ *commit-ish* ] [ *git-range-diff options* ]
> +-------------------------------------------------------------------------------------
> +
> +Convenience wrapper around the git range-diff command which automatically
> +compares against HEAD if you only specify a commit-ish. In all other cases
> +forwards to git range-diff. Defaults to @{1}, which is very useful for reviewing
> +rebases. Additional options after the commit-ish will be passed to
> +**git-range-diff**. Anything that can't be parsed as a commit-ish will also be
> +forward in its entirety.
> +
>  COMMANDS FOR COMMITTERS AND MAINTAINERS
>  =======================================
>
> --
> 2.19.0.rc2
>


-- 
Lucas De Marchi


More information about the dim-tools mailing list