Extend "Explore changesets on branch" to new command "Explore history" in Items view
When looking at a branch, we find the "Explore changesets on this branch" window to be very useful, more so than the similar "View changesets on this branch".
In the Items view, the command "View history" is similar to "View changesets on this branch" but it is further filtered to cover only the selected subtree or single file. However, there is no equivalent to the "Explore changesets on this branch" window for the Items view.
I propose adding a context command "Explore history" in the Items view, so that the excellent "Explore" window can be similarly filtered to a subtree or file.
I now often use the "View history / as 2D revision tree" commands on a file/folder in the Items view. However, I find it hard to quickly grasp the output since all branches are shown at once. Sure, sometimes I want the big picture of the item's evolution on all branches. But most of the time I really only want to see what's happened on the current branch.
Scaling down my requirements to a bare minimum, I would be quite happy right now with an added command "View history on this branch" in the "Items" / "Repository browser" views. It would work the same as "View history", only filtered to the current branch (so I don't have to filter it manually every time). Following branch-parent links backwards in history would be an extra plus.
I don't believe that this is "very specific to my needs". Why then, was this concept so central in how the TortoiseSVN log window was implemented?
Here is the use case scenario:
* I have a large repository with many levels of directories and many branches from several years of development.
* I want to see how one specific subtree or one specific file has evolved on the branch that I'm interested in.
* I don't want to do a lot of clicking, opening and closing of views just to trace the changes back and forth through time.
* I want to stay inside one view (possibly opening and closing one popup window with very quick key presses)
* Using only the keyboard I should be able to select a changeset, read the comment, then select one of the changed items from that changeset, see the diff from that item, walk the diff, then repeat...
* I also want to be able to see the changes made to my subtree/file in the context of the whole changeset where the changes were made.
It's currently so close, yet just out of reach. Actually, the 2D revision tree would work fine for this with the following modifications:
* Allow pressing Enter/Escape instead of Ctrl+D/Alt+F4 to open/close the Diff Changeset window.
* When opening the Diff Changeset window from the 2D Revision Tree for a single file, pre-select that file in the changelist.
* Add dimming (and optional hiding) of the unrelated items (those outside the subtree/single-file filter) in the changelist inside the Diff Changeset window.
Also, please change the strange error message (in the inline diff for a subtree) into something understandable... ;)
We appreciate your suggestions, what you're asking is very interesting, but also very specific to your needs. We didn't detect such a need so far. We don't use it this way, and it seems others don't either.
Let's give some time for this request to go up and otherwise let's check again whether we should discard or not.
While the History view can become hard to read due to parallel changes on multiple branches being intermingled chronologically, the 2D Revision Tree view is much clearer since the branching is visualized and you can easily follow one branch through time in that view.
For a single file, it makes sense that the 2D Revision Tree displays the diff for that file when I select a changeset.
However, for a subtree the selection of a changeset in the 2D Revision Tree only results in the very strange error message "Filesystem permissions changed from NOT_DEFINED to NOT_DEFINED" in the inline Diff panel. Here, it would be very nice to have instead an inlined changeset-diff viewer. What I mean is a normal inline Diff panel, except with a left sidebar where the changed items (from the selected changeset) can be chosen for the Diff.
Follow-up: Oh wait, I see the difference. When viewing the "History" of a selected file or subtree (in a workspace switched to a task-branch), that history continues into the past (and the future) by following branch creation and merges etc. It also bounces back and forth between branches (in chronological changeset order) if parallel changes were made. The "Explore" window, on the other hand, only views the task branch at hand.
This worries me quite a bit, because it means that the History view is not at all what I want to have! What I really want can be formulated as follows:
* In a workspace switched to A SPECIFIC BRANCH, select a file or subtree root.
* Display a list (in decreasing chronological order) of all the changesets ON THAT BRANCH that are relevant to the selection.
* When the list comes down to the creation point of THAT BRANCH, it should follow history of the selection back to the originating branch. (Since it's a Directed Acyclic Graph, it should always be possible to trace history back onto main (eventually) and back to changeset 0, or at least back to the actual creation of the selected file or subtree.
* There should be no intermixing of changesets from other parallel branches in the list. I want to follow the PARENT LINK of every changeset and exclude the ones where no change was made to the file or subtree.
* When selecting a changeset from the list, there should be an inlined list of changed items from that changeset. Items besides the selected file or subtree should be displayed as dimmed and optionally hidden.
* When selecting one of the changed items, there should be an inlined diff view of the changes in that item.
As you can see, what I want is almost exactly the "Explore changesets" window/view, only:
* filtered to file/subtree
* in descending order
* continuing into the history of the parent branch
Thanks, I understand why you created the Explore window and I appreciate if you would add inline diff to the History view. However, I don't see the big difference between these two.
What I requested here was a filtering of the Explore window just as you filter the History view. If you are on a task branch and filter the Explore window to the workspace root you would get the same exploration-view as by "Explore changesets on this branch" for that same task branch. Am I wrong? Wouldn't that also basically be the same view as "View History" for the workspace root?
All that said, it would be fully OK with me if I could view diffs in "View History" instead. I just think that the "View/Explore" would then become so similar that you could merge them...
Explore changesets was inspired by this - http://codicesoftware.blogspot.com/2012/09/self-documented-development-through.html You checkin often and "telling a story" on each checkin and then you can help reviewers by following your same train of thoughts.
But, the same can't be applied to the full history of a file... because then you're not restricting changes to a file, but extending to the entire repo.
That being said, we should update the history view so that a diff is displayed on the same window.
Also, to indicate (for one of the included changesets) any changed items that fall outside the filter, they could be displayed in a dimmed grey color.
TortoiseSVN does it this way in their log window, when launched on a selected folder or file.
They also have a checkbox "Show only affected paths" that allows you to hide these other changes and focus on the subtree or single file that you had selected initially.