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,
  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 <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
---
 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

_______________________________________________
dim-tools mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dim-tools

Reply via email to