Thread (309 messages) 309 messages, 17 authors, 2018-10-02

Re: [PATCH v2 02/18] Add a new builtin: branch-diff

From: Igor Djordjevic <hidden>
Date: 2018-05-07 23:39:32

Hi Stefan,

On 08/05/2018 00:24, Stefan Beller wrote:
quoted
List, rename, delete -- all these seem more as basic CRUD operations,
where comparison is a more complex one. And not to get me wrong - I
could see "branch diff" being part of "branch", but not really when
"diff" already exists as a separate thing, already doing quite some
(but still diff related, and configurable) stuff.
If we go with "branch --diff", because it has the CRUD operations already
there for branches, I might ask for "remote --diff" to diff two remotes. ;)
(That command "remote --diff" would not make any sense, would it?)
I`m not sure if this is a reply to me or in general, and whether you 
support what I sad, or argue against it...? Because what you`re 
saying was (or at least should have been) my exact point there :)
quoted
Basically, what you (conceptually) call "two versions of the same
branch", I simply call "two branches" (from usage standpoint).
If I diff 2 (topic) branches, which are based on a different version
from upstream, then I see changes from commits that I don't care
about, but this tool explicitly excludes them. Instead it includes
the ordering of the commits as well as its commit messages to
the diff.
Here, I was merely pointing out that you still need to provide two 
branch heads - which might be expected to resemble "two versions of 
the same topic", but they are still (just) "two branches" in Git world.
quoted
And you may have a branch that got split, or more of them that got
unified, so defining "previous branch version" may not be that
straightforward - it`s really just "two commit ranges" (as man page
defines it in general), with "two versions of a patch series" only
being the most common/expected use case of the former.

Finally, if user picks two totally unrelated "branches" to compare,
he won`t get a really useful diff - but it`s the same as if he would
compare two totally unrelated commits (where tree state massively
changed in between, or having unrelated histories, even).
I used just that, but narrowed down the comparison to one file
instead of the whole tree.
Again, not sure if this should support the argument, or argue against 
it? :) My point was that there might be other use cases (as you seem 
to have supported now), and as "diff" is pretty forgiving, might be 
"diff branch" should be as well.
quoted
With something like `git diff --branch <commit1>...<commit2>` you
would get yet another "diff look", useful for use case in question
here.
Personally I think this patch series should neither extend git-diff
nor git-branch.

It should not extend git-diff, because currently git-diff can diff
tree-ishs (and does that very well) and comparing to
worktree/index.
Hmm, are you saying that `git diff` actually has a too generic name 
for its (more specific) purpose?
It should also not extend git-branch, as that command is for
CRUD operations that you hinted at earlier (Earlier I proposed
git-remote --diff for diffing two remote, which makes no sense,
another one might be git-worktree, which also just does CRUD
for worktrees. It would be a bad idea to have "git worktree --diff")
Agreed here.
Hence I propose "git range-diff", similar to topic-diff, that
was proposed earlier.
I find it strange that we already have both "diff" and "diff-something" 
commands, and yet you still propose "something-diff" naming pattern 
instead (but I guess it`s mainly because of auto-complete concerns).

Please forgive my lack of code base familiarity, but from what I`ve 
seen so far, and at least from end-user perspective, I may rather expect 
`git diff-range` as low level implementation, and possibly exposed 
through `git diff --range` (with a nice single letter abbreviation?).
* it "diffs ranges" of commits.
Thus "diff-range", as your description says itself :) ("range-diff" 
might sound like it "ranges diffs"...?)
* it can also deal with out-of-git things like patch series,
  but that is a mere by product and may not be desired.
  Just like git-diff can also compare two files outside a git
  repo, that would not be a good use case.
Hmm, so still follows `git diff` in general... `git diff --range`? :D
* it autocompletes well.
Only here I`m not sure if something like `git diff --range` (with 
accompanying single letter option) would be considered "auto-complete 
friendly", or not?

Regards, Buga
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help