Log: integrate into main window

Marc Strapetz 8 years ago updated 5 years ago 35

To unite Log and "Working Tree" window, there are two options: add Log functionality to the "Working Tree" window or add working tree functionality to the Log window. For conceptual and technical reasons, we opted for the latter optionhttps://smartgit.userecho.com/topics/655

Instead of having a separate Log window, this should be part of the main window in order to have all functionality of SmartGit be available in a single window.

This would mean to add all views of the Log to the main window, duplicating a couple of them with slightly different meaning, e.g. the Changes view in the Log is purely read-only, but can show comments - the one in the repository window can be used to stage/unstage; the Files view in the Log does not allow any of the main window's commands; the Branches view in the Log allows toggling anchor commits for the Commits graph and shows additional items, e.g. recyclable commits. It would be a horrible amount of work and still would require stand-alone Log windows, e.g. for file or subdirectory logs.


To be honest, I don't think it would be usable - I like current approach, because showing history usually needs a lot of space on the screen, thus separate window makes a lot of sense for me.


This problem may be addressed by 'perspective' buttons -- they could resize (or relayout) panels in the same window. And anyway it is as Marc states that separate log windows should still be there.


Yes think the simplest approach could be adding a new perspective, similar to the "Main" and "Review" ones already in the main window. This pattern already exists in the application, it'd be great to expand on it!

It would probably be good if these had an "open in new window' button or similar to allow people to keep current functionality as is clearly important for some users.

Personally I use the log window the most, so I'd prefer if it was visible most of the time, switching to the "commit" (main) window only when I'm ready to make a commit. I used to use Git Extensions a lot and this is it's workflow, "log" is main view and you open the commit dialog to make new commits. Again, I know this isn't everyone's ideal so I wouldn't expect quite this radical a change to ever be made.

This is kind of solution chose in SourceTree indeed : you have 3 different tab on the main window, "file status" (allowing to stage and commit), "log", "search".

Perspectives in SmartGit (with a new "open in new window" option as you pointed out) are indeed certainly a good way to have a very flexible interface, that could fit everyone taste !

It may possible to leverage wide screens. Maybe by letting the user choose whether he wants or not a third column at the right or left of his screen.


Before SmartGit I was using SourceTree, and they do have a very well done interface, with everything immediately available, including the log. Note that local commits, staged files and unstaged files all appears on this log view, very clearly !

SmartGit has other qualities, but having to open the log is really annoying... The journal view is a good start but lacks all functionnality of the log window.

You have read Marc's second paragraph? What would be the advantage if SmartGit would be turned into SourceTree - we could not cope with the free original.

Not sure to understand your answer Thomas ? Reading Marc I understand that in both windows there are indeed lots of views that are similar but with different functionalities, and that merging everything would be a great amount of work. But from my experience, stating this is usually a clear sign of a bad design...

Do not get me wrong, I use SmartGit everyday, but indeed this two windows interface is really annoying, and gives a very bad feeling to first starters : in a versionning product, the log/history should be the center piece, you shouldn't have to open a new window to use it !

With my previous comment I was just adding my 2 cents, saying that for SourceTree Atlassian chose an interface that is much more clearer and usable, and still it provides in one window certainly all of the functionalities SmartGit gives in two windows(? to be confirmed - but at least there is all that I need).

Getting back to the feeling : by default you see all of the previous changes, all of your current changes (commited / staged / unstaged), and all of the remote changes. The minimum anyone would asked to a versioning tool.

As a downside in SourceTree you can't do blame / history of a single file. Not sure this is so much of an important functionality though : for this usage any developper has his IDE that is much more practical ! This is typically a functionality that I wouldn't mind if it opens up a new window.

It might not be easy, but maybe there's an interface to totally rethink, looking at what other products do. I really think this is the worse default of SmartGit right now, and believe me it's hard to find others ;)


I don't think it would turn SmartGit into SourceTree -- they would still be quite different.


For me the main part of main SmartGit window is Changes pane. So it have to be biggest/widest one and in side-by-side-diff mode. Personally I do not like very much SourceTree UI design that is why I pay for SmartGit. :)

I always use auto-hiding panes in Visual Studio so adding them to SmartGit could be more productive than integrating Log window into main one IMHO.

Thanks for your comment, but I don't agree this need should be filled up by a GIT client : what you're trying to see is the differences between the index and your working tree. This is more the job of your IDE or editor, and is indeed implemented in many of them (Eclipse - with its quick diff feature - , Netbeans, WebStorm, ...)

History of a specific file, and blame on one file are already very well handled in so much editorsI don't see the point of exiting your editor, switching to the GIT client and call the corresponding functionnality... when one shortcut can directly give you the information you need.

A graphical GIT client should be "GIT centric", so "log centric" : you want to see list of branches and their different origins, what where the previous changes and what changes they contains, a good view of both the working tree and the staging area, ...

Sorry but I'm quite happy with current SmartGit UI design. If it will be converted to what you describes I will just stop using it.


I heartily agree with that. Log window and main window share too much properties to be [always] separated. The fact that immediately after being committed all my changes just 'disappear' and I have to open a separate window for them is not something I personally like. I often want to look at my previous (committed) changes, then look at current ones, then back... and back again... =) Besides, if the program has gone to background, I have to guess which of two icons I have to click to get me what I want to see now.

We don't have to make it exactly like source-tree does. SourceTree has a special log node for 'uncommitted changes' -- ok, that's not bad, but why couldn't we have two virtual nodes for staged and unstaged changes? That would be different...

Yes, I think that's the one. =) Gonna vote for it. Thanks!

I would be happy with just a Repositories view on the Log window: https://smartgit.userecho.com/topics/620


We consider to implement something like that in the near to mid future.


I would totally second the idea of having the Log & Tree panes in the same window. 

It's pretty annoying to have to switch windows when you have already a bunch of windows in a dev environment.

I don't really mind wether it's added as a perspective or some toggle in the main bar, but making it all in one window would be awesome :)

By design, the main window is for committing (a la "git gui") and the log window is for reviewing (a la "gitk").  While this works, it was an inconvenience with those apps too.

Whether or not merge main and log windows into one window or not, improving the navigability (e.g. repository view) and index use (e.g. index and workspace diffs and actions) of log window will help improve usability by reducing the need to continually switch between windows.

Yes, if moving most/all of main window functionality into log window, then can rely on the main window much less or not at all: 

  1. I love the view layout customization feature - location, widths - allowing each user to prioritize what matters for the way they work.  Adding repository view to log window is the only one missing for me and would enable the navigability (stopping need to use main window or find the open log window to look at the log of another repo).
  2. Adding index usage actions to log window is the next good feature that would further reduce need for main window.

Well I think that one of the issues that people complain about is not to have an handy way to switch from repo view to log view. Repo view has a button to switch to log view, why not having the same kind of button in the bar to get back at least from log view to repo view.

In a dev environment, you tend to have a lot of windows, and searching alt tabbing the log window is a pain, especially if you have several repositories openned :)

Imho any of the solutions proposed would work :

- Integrate log window somehow in repo window or the other way round.

- make a toggle button / keyboard shortcut that allows to switch easilly from one to the other.


Having two tabs in the same window instead of two windows could a solution right ?

Yes, this could be an option, but IMHO a bad one - tabs inside tabs are considered bad UI design.

BTW, how to handle the case where multiple repositories would be opened?

What do you mean by tabs inside tabs ?

I was thinking something like the two levels perspective/view in Eclipse... SmartGit UI is already quite similar to Eclipse's views...

How can multiple repo could be opened at once ? What use case leads to propose such functionality ?

Currently, views are displayed in tabs. And currently, you can open multiple repositories in the same repository window.

I don't understand ? Views in Eclipse can be stacked in tabs, I don't see any differences with the one in SmartGit...

For multiple repositories, I don't have any difficulties to open multiple log windows on different repo, but I don't see how you can open multiple repo in the main window ? And why someone would do so ?


yes. But having 2 windows open is just infuriating. It's probably the only thing I hate in SmartGit, and after so many years being a paying user this is depressing.


Just downloaded and installed. Still I can't find any option to merge the log window into the Working Tree window... Can you give me a hint, please? Thank you!



The 2 window still exists. You'll just have to define the log window as your main window (in preferences / user interface) and use it :)



It does not fix the problem.

I would pay double the license only to have the Log as a different perspective, rather than a different window.

Having 2 different windows is the single most irritating SmartGit's feature ever. Sorry to say that.


What do you mean ? Did you understand the goal of the main window parameter ? With SmartGit 18.2 you can use only the log window.

I'm doing this since some weeks now, and I never had to open again the working tree window. Soooo nice !!

Same here!  Especially now with opening multiple repos on the log window, it's now "the main window".