* new features in gitk @ 2005-06-27 22:22 Paul Mackerras 2005-06-27 22:49 ` Luc Van Oostenryck ` (3 more replies) 0 siblings, 4 replies; 33+ messages in thread From: Paul Mackerras @ 2005-06-27 22:22 UTC (permalink / raw) To: git New features that I have added recently to the gitk repository at rsync://rsync.kernel.org/pub/scm/gitk/gitk.git include: * Added a right-click context menu on the headlines displayed in the top-left pane with the following entries: - Display diff between two commits - Generate a patch file containing the diff between two commits - Create a local direct tag for a commit * Left-click on a graph line now displays the parent and the children connected by that line in the bottom-left pane, with buttons allowing you to jump to the parent or a child. * Pasting into the SHA1 ID field clears it first if it already contains a SHA1 ID. * Checks for a .git (or $GIT_DIR) directory at startup. I'm interested to know if people find the diff/patch generation options useful. Paul. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: new features in gitk 2005-06-27 22:22 new features in gitk Paul Mackerras @ 2005-06-27 22:49 ` Luc Van Oostenryck 2005-06-27 23:36 ` Paul Mackerras 2005-06-28 1:21 ` Linus Torvalds ` (2 subsequent siblings) 3 siblings, 1 reply; 33+ messages in thread From: Luc Van Oostenryck @ 2005-06-27 22:49 UTC (permalink / raw) To: Paul Mackerras; +Cc: git Paul Mackerras wrote: > > I'm interested to know if people find the diff/patch generation > options useful. > > Paul. I find the patch generation very usefull (when I've seen the tool a few days ago, I've said to myself: "what a wonderfull tool, if only I could create a patch from this") but it doesn't work for me (the first three entries stay always in grey, only the last one "Create tag" is in black). I'm missing something ? Luc ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: new features in gitk 2005-06-27 22:49 ` Luc Van Oostenryck @ 2005-06-27 23:36 ` Paul Mackerras 2005-06-28 20:24 ` Luc Van Oostenryck 0 siblings, 1 reply; 33+ messages in thread From: Paul Mackerras @ 2005-06-27 23:36 UTC (permalink / raw) To: Luc Van Oostenryck; +Cc: git Luc Van Oostenryck writes: > I find the patch generation very usefull (when I've seen the tool a few days ago, I've said to myself: > "what a wonderfull tool, if only I could create a patch from this") > but it doesn't work for me (the first three entries stay always in grey, only the last one "Create tag" is in black). > I'm missing something ? The diffs and patches are between the selected commit (one that you clicked on with the left button and which is shown with a grey background) and the commit where you click the right button. That was the best way I could think of to indicate which were the two commits to diff. If you (or anyone) has a better suggestion, let me know. Paul. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: new features in gitk 2005-06-27 23:36 ` Paul Mackerras @ 2005-06-28 20:24 ` Luc Van Oostenryck 0 siblings, 0 replies; 33+ messages in thread From: Luc Van Oostenryck @ 2005-06-28 20:24 UTC (permalink / raw) To: Paul Mackerras; +Cc: git Paul Mackerras wrote: > Luc Van Oostenryck writes: > > >>I find the patch generation very usefull (when I've seen the tool a few days ago, I've said to myself: >>"what a wonderfull tool, if only I could create a patch from this") >>but it doesn't work for me (the first three entries stay always in grey, only the last one "Create tag" is in black). >>I'm missing something ? > > > The diffs and patches are between the selected commit (one that you > clicked on with the left button and which is shown with a grey > background) and the commit where you click the right button. That was > the best way I could think of to indicate which were the two commits > to diff. If you (or anyone) has a better suggestion, let me know. > > Paul. OK I see it now, it works nicely. I didn't found the tric yesterday because I was thinking: one commit -> one patch, but it's probably more usefull like it is now. Thanks. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: new features in gitk 2005-06-27 22:22 new features in gitk Paul Mackerras 2005-06-27 22:49 ` Luc Van Oostenryck @ 2005-06-28 1:21 ` Linus Torvalds 2005-06-28 23:41 ` Paul Mackerras 2005-06-28 6:22 ` Greg KH 2005-06-30 6:20 ` Junio C Hamano 3 siblings, 1 reply; 33+ messages in thread From: Linus Torvalds @ 2005-06-28 1:21 UTC (permalink / raw) To: Paul Mackerras; +Cc: git On Tue, 28 Jun 2005, Paul Mackerras wrote: > > New features that I have added recently to the gitk repository at Hey, cool, the automatic merge actually worked. I knew it would, of course, but still.. It's nice when theory and practice end up matching. Linus ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: new features in gitk 2005-06-28 1:21 ` Linus Torvalds @ 2005-06-28 23:41 ` Paul Mackerras 0 siblings, 0 replies; 33+ messages in thread From: Paul Mackerras @ 2005-06-28 23:41 UTC (permalink / raw) To: Linus Torvalds; +Cc: git Linus Torvalds writes: > Hey, cool, the automatic merge actually worked. Yes, very cool. It'll get more interesting if you make changes to gitk in your repository, of course. :) Paul. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: new features in gitk 2005-06-27 22:22 new features in gitk Paul Mackerras 2005-06-27 22:49 ` Luc Van Oostenryck 2005-06-28 1:21 ` Linus Torvalds @ 2005-06-28 6:22 ` Greg KH 2005-06-30 6:20 ` Junio C Hamano 3 siblings, 0 replies; 33+ messages in thread From: Greg KH @ 2005-06-28 6:22 UTC (permalink / raw) To: Paul Mackerras; +Cc: git On Tue, Jun 28, 2005 at 08:22:46AM +1000, Paul Mackerras wrote: > I'm interested to know if people find the diff/patch generation > options useful. Well, I find them nice to have, in case I need to generate a real patch. Nice job. thanks, greg k-h ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: new features in gitk 2005-06-27 22:22 new features in gitk Paul Mackerras ` (2 preceding siblings ...) 2005-06-28 6:22 ` Greg KH @ 2005-06-30 6:20 ` Junio C Hamano 3 siblings, 0 replies; 33+ messages in thread From: Junio C Hamano @ 2005-06-30 6:20 UTC (permalink / raw) To: Paul Mackerras; +Cc: git Finally I started converting my workflow of day-job I do on my home machine from darcs to git, so I started running cvs2git over ssh slurping from my office environment (sloooooooooow). While I was watching the import going, I started up gitk on the halfway imported repository, and it showed Japanese characters in the source correctly without any special configuration (the only thing I have is LC_CTYPE=ja_JP). Very often GUIish software would not work properly for me with Japanese characters, and this was a pleasant surprise. The credit is probably owed more to tk, not something you do special in gitk, but nevertheless I am impressed and happy ;-). ^ permalink raw reply [flat|nested] 33+ messages in thread
* New features in gitk @ 2007-10-28 1:39 Paul Mackerras 2007-10-28 5:34 ` Linus Torvalds ` (3 more replies) 0 siblings, 4 replies; 33+ messages in thread From: Paul Mackerras @ 2007-10-28 1:39 UTC (permalink / raw) To: git I just pulled the dev branch of gitk into the master branch, so the master branch now has the new features and improvements that I have been working on, namely: * The find and highlight functions have been combined into a single function, and there is now a button for finding backwards as well as a find forwards button. Thus you can now search for commits that modify certain files or directories, or commits that add/remove a given string, as well as searching for commits by commit message, author, committer or headline. * Combining the find and highlight functions freed up space that is now used for a progress bar and a status window. * There is now a font chooser accessible from the edit/preferences window. * Gitk now uses a new graph layout algorithm, which means it doesn't have to generate the whole layout from top to bottom at startup time, making startup faster. Gitk also uses a new style for drawing short diagonal line segments that join an existing vertical line, which is visually clearer when the segment crosses another line. * Gitk caches the topology information used for the previous/next tag and branch information, making startup faster. Tk 8.5 is now in beta, meaning that some distros now have it packaged. Gitk looks much nicer in Tk8.5 since it supports anti-aliased fonts, so I strongly suggest that people install and use Tk8.5 if possible. Paul. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 1:39 New " Paul Mackerras @ 2007-10-28 5:34 ` Linus Torvalds 2007-10-28 7:11 ` Paul Mackerras 2007-10-28 18:32 ` Pierre Habouzit ` (2 subsequent siblings) 3 siblings, 1 reply; 33+ messages in thread From: Linus Torvalds @ 2007-10-28 5:34 UTC (permalink / raw) To: Paul Mackerras; +Cc: git On Sun, 28 Oct 2007, Paul Mackerras wrote: > > I just pulled the dev branch of gitk into the master branch, so the > master branch now has the new features and improvements that I have > been working on, namely: *Huge* improvements. It is now really nice to start up gitk even on the full kernel history. However, that crazy green bar chasing back-and-forth int he "reading" phase is really quite visually distracting. Maybe it looks better in Tk8.5, but it does look pretty annoying in the version I have. Can you tone that down a bit? But this has both the layout performance improvements and the fixes to only show selected files in the diff view by default, so I hope this gets merged into standard git soon.. Linus ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 5:34 ` Linus Torvalds @ 2007-10-28 7:11 ` Paul Mackerras 2007-10-28 7:36 ` Steffen Prohaska 2007-10-28 16:50 ` Linus Torvalds 0 siblings, 2 replies; 33+ messages in thread From: Paul Mackerras @ 2007-10-28 7:11 UTC (permalink / raw) To: Linus Torvalds; +Cc: git Linus Torvalds writes: > However, that crazy green bar chasing back-and-forth int he "reading" > phase is really quite visually distracting. Maybe it looks better in > Tk8.5, but it does look pretty annoying in the version I have. Can you > tone that down a bit? Yeah. Actually what I'd like is to know how many commits git log is going to give me, so that I can do a normal progress bar whose length is proportional to commits_read / total_commits. With --topo-order (or --date-order) it has to get to the last commit before it outputs the first commit, doesn't it? So could it print the total number of commits on a line by itself at the start of its output? (Presumably it would need a --commit-count flag to enable that behaviour.) Other than that, I could slow the progress bar down, or do a bar of moving diagonal stripes, or something. Paul. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 7:11 ` Paul Mackerras @ 2007-10-28 7:36 ` Steffen Prohaska 2007-10-28 16:50 ` Linus Torvalds 1 sibling, 0 replies; 33+ messages in thread From: Steffen Prohaska @ 2007-10-28 7:36 UTC (permalink / raw) To: Paul Mackerras; +Cc: Linus Torvalds, git On Oct 28, 2007, at 8:11 AM, Paul Mackerras wrote: > Linus Torvalds writes: > >> However, that crazy green bar chasing back-and-forth int he "reading" >> phase is really quite visually distracting. Maybe it looks better in >> Tk8.5, but it does look pretty annoying in the version I have. Can >> you >> tone that down a bit? I have the same impression. > Yeah. Actually what I'd like is to know how many commits git log is > going to give me, so that I can do a normal progress bar whose length > is proportional to commits_read / total_commits. Can you use something like a rotating wheel, if the total size of the task is unknown. Or if you know an upper bound on the number of expected commits, you could use this as total_commits. And adjust the upper bound if more information becomes available. Or you just print the number of commits already read and the user is happy because something is changing. Steffen ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 7:11 ` Paul Mackerras 2007-10-28 7:36 ` Steffen Prohaska @ 2007-10-28 16:50 ` Linus Torvalds 2007-11-01 10:00 ` Paul Mackerras 2007-11-01 11:37 ` Paul Mackerras 1 sibling, 2 replies; 33+ messages in thread From: Linus Torvalds @ 2007-10-28 16:50 UTC (permalink / raw) To: Paul Mackerras; +Cc: git On Sun, 28 Oct 2007, Paul Mackerras wrote: > > Yeah. Actually what I'd like is to know how many commits git log is > going to give me That's not known until later. > With --topo-order (or --date-order) it has to get to the last commit > before it outputs the first commit, doesn't it? The cost is not generally in outputting the commits. The real cost is in traversing them in the first place. So yes, we could output the number of commits once we know it, but generally, by that time, it's not an interesting number any more! You might as well just read the list, because git is going to feed it to you as fast as it can (which is plenty fast - you'll probably get hundreds of megabytes of SHA1 values per second at that point). So basically, by the time you start getting SHA1's from --topo-order, the best thing you can do is just lay back and think of England. The *last* thing you want to do is bother with any graphics and updates, because it's just going to slow things down. It's before you even start getting the SHA1's, _or_ if you don't use "--date/topo-order" in the first place, that you want to have a "wait, I'm thinking" thing. And at neither time do you know how long it's going to be. (And as mentioned many times earlier - if you can avoid topo-order and date-order entirely, you are going to perform a million times better at startup for the cold-cache case. Since you seem to be doing the graph layout lazily now, maybe you could aim for that some day? It does mean that you might - occasionally - end up having to add a commit to *before* one you already laid out). Linus ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 16:50 ` Linus Torvalds @ 2007-11-01 10:00 ` Paul Mackerras 2007-11-01 15:16 ` Linus Torvalds 2007-11-01 11:37 ` Paul Mackerras 1 sibling, 1 reply; 33+ messages in thread From: Paul Mackerras @ 2007-11-01 10:00 UTC (permalink / raw) To: Linus Torvalds; +Cc: git Linus Torvalds writes: > (And as mentioned many times earlier - if you can avoid topo-order and > date-order entirely, you are going to perform a million times better at > startup for the cold-cache case. Since you seem to be doing the graph > layout lazily now, maybe you could aim for that some day? It does mean > that you might - occasionally - end up having to add a commit to > *before* one you already laid out). The other thing --topo-order does is reorder the commits so that related commits come together. So far, doing that in Tcl has turned out to be much slower than having it done in C (within git log) for the hot-cache case (which I expect is the common case). I'm now thinking that the best approach would be to have gitk cache the topology, and on startup only read in the part of the graph that isn't in the cache. Mostly that will be small and so git log should be fast even in the cold-cache case with --topo-order. Paul. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-01 10:00 ` Paul Mackerras @ 2007-11-01 15:16 ` Linus Torvalds 2007-11-02 10:19 ` Paul Mackerras 0 siblings, 1 reply; 33+ messages in thread From: Linus Torvalds @ 2007-11-01 15:16 UTC (permalink / raw) To: Paul Mackerras; +Cc: git On Thu, 1 Nov 2007, Paul Mackerras wrote: > > The other thing --topo-order does is reorder the commits so that > related commits come together. If that's the only reason for using it, then please stop, and use "--first-parent" instead. Linus ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-01 15:16 ` Linus Torvalds @ 2007-11-02 10:19 ` Paul Mackerras 2007-11-02 12:44 ` Marco Costalba 2007-11-02 15:03 ` Linus Torvalds 0 siblings, 2 replies; 33+ messages in thread From: Paul Mackerras @ 2007-11-02 10:19 UTC (permalink / raw) To: Linus Torvalds; +Cc: git Linus Torvalds writes: > If that's the only reason for using it, then please stop, and use > "--first-parent" instead. How would that help? That doesn't list about 2/3 of the commits at all. In any case, no that's not the only reason. The main reason is that it (i.e. --topo-order) spits out the commits in exactly the order that gitk wants to display them (of which the bit about parents coming after all their children is a part), and thus reduces the amount of processing I need to do in Tcl. Paul. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-02 10:19 ` Paul Mackerras @ 2007-11-02 12:44 ` Marco Costalba 2007-11-02 15:42 ` Linus Torvalds 2007-11-02 15:03 ` Linus Torvalds 1 sibling, 1 reply; 33+ messages in thread From: Marco Costalba @ 2007-11-02 12:44 UTC (permalink / raw) To: Paul Mackerras; +Cc: Linus Torvalds, git On 11/2/07, Paul Mackerras <paulus@samba.org> wrote: > > In any case, no that's not the only reason. The main reason is that > it (i.e. --topo-order) spits out the commits in exactly the order that > gitk wants to display them (of which the bit about parents coming > after all their children is a part), and thus reduces the amount of > processing I need to do in Tcl. > I have tried to overcome --topo-order in qgit but I found it very difficult, too much for me. Lazily drawing the layout it doesn't mean that you lazy load the data from git, indeed you load all the git-log output as soon as it arrives. And if the revisions arrive "in order", i.e. if revision A arrive before revision B it means that A is NOT an ancestor of B, this is of great help. When drawing the graph assuming that the vector/list of the arrived sha is already ordered greatly simplify the whole thing, if we relax this hypothesis then a lot of work should be done before to draw a graph chunk, essentially the GUI tool needs to walk the _entire_ list and reorder it by itself _before_ to draw any graph chunk also if very small. So at the end you end up transferring the complete revision walk from git-log to the GUI tool, and (this is the important thing) to be sure graph is always correct you need to perform the walk _before_ drawing any stuff. The only possible _trick_ I was able to find is to optimistically draw the graph chunk _assuming_ that it is ordered. Then reorder the list in the background and finally check if the graph is correct, if not redraw with correct data. If the out of order revisions are rare you end up mimic a fast correct drawing. If are not user will see some flickering at the end of the load. IMHO the above scheme is very complicated and fragile. Just my two cents. Marco ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-02 12:44 ` Marco Costalba @ 2007-11-02 15:42 ` Linus Torvalds 2007-11-02 16:50 ` Marco Costalba ` (2 more replies) 0 siblings, 3 replies; 33+ messages in thread From: Linus Torvalds @ 2007-11-02 15:42 UTC (permalink / raw) To: Marco Costalba; +Cc: Paul Mackerras, git On Fri, 2 Nov 2007, Marco Costalba wrote: > > I have tried to overcome --topo-order in qgit but I found it very > difficult, too much for me. > > Lazily drawing the layout it doesn't mean that you lazy load the data > from git, indeed you load all the git-log output as soon as it > arrives. Would it be more palatable if I tried to write some visualization-specific front-end that acted kind of like "git rev-list", but would have some way of "resetting" its output? The thing is, I'm pretty sure I can feed you commits really quickly if I don't sort them, and if I don't do the full and careful "oops, this commit was reachable from a commit that was marked uninteresting", but while the fast-and-stupid approach will work well enough for most things, it will occasionally get the wrong answer. But it will *notice* when it gets the wrong answer, though, and can reset and start over! IOW, I might be able to do something that - prints out the commit info per line - prepends each line with a line number - goes back to an earlier line 'n' when it notices that it needs to output a commit before a previous commit (or when it notices that a commit that it had already output was actually not supposed to show up) and with something like that, I could make git give you incremental output. The thing is, any revision information that requires "global knowledge" simply cannot scale. And "git rev-list --topo-order" may be fast as hell, and I can do it in one second on the kernel archive on my machine, but that's really only true when it's all cached. If it's not cached, it will inevitably have to read in every single commit if you want a "final and unchanging ordering". Which inevitably gets you a really irritating startup latency. That's just fundamental. On the other hand, if there is some way to say "oops, restart", I can optimistically give you a list that is always properly sorted on a *local* scale, but then based on later data I might notice that it wasn't right globally and that I need to re-do all or part of it. But as mentioned, that requires that side-band data of "uhhuh, I screwed up, let me go back and fix it". Linus ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-02 15:42 ` Linus Torvalds @ 2007-11-02 16:50 ` Marco Costalba 2007-11-02 18:16 ` Linus Torvalds 2007-11-02 18:17 ` Johannes Schindelin 2 siblings, 0 replies; 33+ messages in thread From: Marco Costalba @ 2007-11-02 16:50 UTC (permalink / raw) To: Linus Torvalds; +Cc: Paul Mackerras, git On 11/2/07, Linus Torvalds <torvalds@linux-foundation.org> wrote: > > But it will *notice* when it gets the wrong answer, though, and can reset > and start over! > > IOW, I might be able to do something that > > - prints out the commit info per line > > - prepends each line with a line number > > - goes back to an earlier line 'n' when it notices that it needs to > output a commit before a previous commit (or when it notices that a > commit that it had already output was actually not supposed to show up) > > and with something like that, I could make git give you incremental > output. > Yes. That's would be easier to implement. Better yet do not give line numbers I already push back each revision sha in a vector according to arrival order. It's a stack like storing. So would be nice if 'git log --restarting' would work like this: - Output the normal stream of commits according to git log arguments. No line numbers, no fancy additional stuff. - If '--topo-order' or something similar was given git log checks if a wrong output occurs, as example because it founds a revisions that should have been already put out say 'n' revisions before the last outputted one. - In the above case git log outputs a side-band data of "uhhuh, I screwed up, I restart from 'n' revisions before the last one outputted". - Then ouput _again_ the stream starting from 'n' revisions earlier. Note that not only the new offending revision is trasmitted but *all the revisions* from the out of order one to the remaining. Given a vector of 'k' arrived revisions, for me it's far easier simply to flush the 'n' tail items in the sha vector and restart again then _insert_ in the vector the new out of order one. This is because parsing alghoritm is based on an 'append new stuff' approach, not 'insert in the middle', so better flush all the tail also if probably the big part of retrasmitted revisions would remain the same. Marco P.S: The out of bound information should be commit data aligned and could take advantage of the fact that an sha always starts with an alphanumeric char value [0..9 a..f] IOW instead of the commit sha this signal could write something like 'Restarting from -12' and parsing knows that an sha cannot start with an 'R'. Please note that 'instead of the commit sha' it means in the _exact_ place where sha is expected and this is not predefined but depends on the git-log arguments, so that as example $git log --with-restart would output: commit 6959893b0b65ebc68ce2fb524a8ec15a26ca4972 Merge: 452b800... d279fc1... Author: Junio C Hamano <gitster@pobox.com> Date: Wed Oct 31 23:53:55 2007 -0700 Merge branch 'sp/mergetool' * sp/mergetool: mergetool: avoid misleading message "Resetting to default..." mergetool: add support for ECMerge mergetool: use path to mergetool in config var mergetool.<tool>.path commit Restart from -7 commit 3e4bb087a18435b12eb82116e93af2887578e816 Merge: 5fb1948... 136e631... Author: Junio C Hamano <gitster@pobox.com> Date: Thu Nov 1 17:09:08 2007 -0700 Merge branch 'maint' while $git log --with-restart --pretty=oneline would output 6959893b0b65ebc68ce2fb524a8ec15a26ca4972 Merge branch 'sp/mergetool' Restart from -7 3e4bb087a18435b12eb82116e93af2887578e816 Merge branch 'maint' 5fb19486e6f4b6d31f33f5a1eab970b244fa2d08 Merge branch 'bk/maint-cvsexportcommit' In this way this side band info became compatible with _any_ git-log output format as long as the format foreseens the output of the revision sha. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-02 15:42 ` Linus Torvalds 2007-11-02 16:50 ` Marco Costalba @ 2007-11-02 18:16 ` Linus Torvalds 2007-11-02 18:17 ` Johannes Schindelin 2 siblings, 0 replies; 33+ messages in thread From: Linus Torvalds @ 2007-11-02 18:16 UTC (permalink / raw) To: Marco Costalba; +Cc: Paul Mackerras, git On Fri, 2 Nov 2007, Linus Torvalds wrote: > > The thing is, I'm pretty sure I can feed you commits really quickly if I > don't sort them, and if I don't do the full and careful "oops, this commit > was reachable from a commit that was marked uninteresting", but while the > fast-and-stupid approach will work well enough for most things, it will > occasionally get the wrong answer. Ok, I have a trial patch that doesn't do the replay yet, but at least notices when it outputs a parent that has already been shown. In the whole git archive, it happens three times. In the kernel archive, it happens twelve times. I'll try to get it into some kind of usable shape, and send out experimental patches for people to play with. Linus ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-02 15:42 ` Linus Torvalds 2007-11-02 16:50 ` Marco Costalba 2007-11-02 18:16 ` Linus Torvalds @ 2007-11-02 18:17 ` Johannes Schindelin 2 siblings, 0 replies; 33+ messages in thread From: Johannes Schindelin @ 2007-11-02 18:17 UTC (permalink / raw) To: Linus Torvalds; +Cc: Marco Costalba, Paul Mackerras, git Hi, On Fri, 2 Nov 2007, Linus Torvalds wrote: > On Fri, 2 Nov 2007, Marco Costalba wrote: > > > > I have tried to overcome --topo-order in qgit but I found it very > > difficult, too much for me. > > > > Lazily drawing the layout it doesn't mean that you lazy load the data > > from git, indeed you load all the git-log output as soon as it > > arrives. > > Would it be more palatable if I tried to write some > visualization-specific front-end that acted kind of like "git rev-list", > but would have some way of "resetting" its output? Heh, Shawn and I were discussing this when we met in San Jose earlier this month. The application we had in mind was a common backend for graphical representation of the commit graph, which could be used by git gui to show (part of) the history. The ultimate goal was a graphical rebase -i. I would have _loved_ to implement this. Alas, as it appears my choice of job was less than brilliant, and even when I have some spare moments at the end of the day, I watch movies to forget the day, instead of implementing this fascinating and useful feature. Ciao, Dscho ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-02 10:19 ` Paul Mackerras 2007-11-02 12:44 ` Marco Costalba @ 2007-11-02 15:03 ` Linus Torvalds 1 sibling, 0 replies; 33+ messages in thread From: Linus Torvalds @ 2007-11-02 15:03 UTC (permalink / raw) To: Paul Mackerras; +Cc: git On Fri, 2 Nov 2007, Paul Mackerras wrote: > > How would that help? That doesn't list about 2/3 of the commits at > all. Yeah, you'd have to do all the parent processing on your own, I guess that would be too slow. > In any case, no that's not the only reason. The main reason is that > it (i.e. --topo-order) spits out the commits in exactly the order that > gitk wants to display them (of which the bit about parents coming > after all their children is a part), and thus reduces the amount of > processing I need to do in Tcl. The thing is, you shouldn't *care* how long it takes to get 50,000+ commits. You're only visualizing ~20 commits at a time. Ignore the rest. THAT is the number that is timing-critical. You're optimizing for the wrong case - the "whole history" thing doesn't matter as much as the "recent history" does. So I bet from a usability standpoint, you'd be *much* better off with something that might take ten times as long for the whole thing, if the first thirty lines show up in a third of the time. In fact, if you want to really optimize parsing and that is a big issue, use git log --left-right --parents --pretty=format:"%m %H %P %an <%ae> %aD" which will give you a single line per commit. I bet tk is good at reading single lines. Don't even read anythign else - until somebody actually *selects* the commit, at which point you do the diff *and* the full thing. Yes, it will make things slower over-all. And no, the above won't work for the "search everywhere", which means that once people start searching for everything, you'll be screwed, but with somethign like the above, you'll get the first commits immediately and can start showing them. And yes, if they come in the wrong order, you'll have to recalculate the display, but I thought you had something incremental already - ie you can always do it for just the current window of 100 commits or whatever. Linus ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 16:50 ` Linus Torvalds 2007-11-01 10:00 ` Paul Mackerras @ 2007-11-01 11:37 ` Paul Mackerras 2007-11-01 15:47 ` Linus Torvalds 1 sibling, 1 reply; 33+ messages in thread From: Paul Mackerras @ 2007-11-01 11:37 UTC (permalink / raw) To: Linus Torvalds; +Cc: git Linus Torvalds writes: > The cost is not generally in outputting the commits. The real cost is in > traversing them in the first place. Actually, the biggest cost is still gitk reading in the commits from git log and doing the processing that gitk needs to do on each commit (which I have tried to minimize, and is way smaller than it used to be, but is still significant). In fact that would go significantly faster if git log could output the data for each commit in a slightly different format. What would be good is to get one header line for each commit in the form: id flag {parent parent parent...} length where: id is the 40-char SHA1 for the commit flag is normally 1, but is 0 for "boundary" commits, 2 for "left-side" commits (with --merge), or 3 for "right-side" commits length is the number of characters of commit data that follow (which may differ from the number of bytes, so there would need to be agreement on the encoding) followed by the body of the commit (with no null or other separator character between commits). That would be easier to parse in Tcl, and looks like it would knock another 1.5 seconds off the gitk startup time (for the kernel repository on my G5). Paul. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-01 11:37 ` Paul Mackerras @ 2007-11-01 15:47 ` Linus Torvalds 2007-11-01 16:21 ` Linus Torvalds 0 siblings, 1 reply; 33+ messages in thread From: Linus Torvalds @ 2007-11-01 15:47 UTC (permalink / raw) To: Paul Mackerras; +Cc: git On Thu, 1 Nov 2007, Paul Mackerras wrote: > > Linus Torvalds writes: > > The cost is not generally in outputting the commits. The real cost is in > > traversing them in the first place. > > Actually, the biggest cost is still gitk reading in the commits from > git log and doing the processing that gitk needs to do on each commit > (which I have tried to minimize, and is way smaller than it used to > be, but is still significant). Umm. I think you're basing all your timings on hot-cache numbers. The hot-cache numbers are already pretty damn good. But try this: echo 3 > /proc/sys/vm/drop_caches gitk on a big repository, _especially_ one that isn't totally packed, or on a machine with a slow laptop disk. Just following the commit history is really quite expensive. THAT is the problem with --topo-order. Linus ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-11-01 15:47 ` Linus Torvalds @ 2007-11-01 16:21 ` Linus Torvalds 0 siblings, 0 replies; 33+ messages in thread From: Linus Torvalds @ 2007-11-01 16:21 UTC (permalink / raw) To: Paul Mackerras; +Cc: git On Thu, 1 Nov 2007, Linus Torvalds wrote: > > The hot-cache numbers are already pretty damn good. But try this: > > echo 3 > /proc/sys/vm/drop_caches > gitk Actually, do the above with a path limiter, to make it more obvious. So try this on the kernel, and you'll see the difference even with a fast disk, and even if it's fully packed: echo 3 > /proc/sys/vm/drop_caches time git rev-list HEAD drivers/scsi | head -10 and now try it with --topo-order. I get ten seconds with --topo-order (because it has to traverse the *whole* history even to just generate the first ten lines), while the non-topo-order case is *three*times* faster. On my laptop, it's even more noticeable. I don't know quite why, but the non-topo-order case is actually faster on my laptop than on my desktop (will have to see what's up, but I suspect it's a result of they being at different points in history, and just bad luck wrt the top-of-history having happened to change drivers/scsi or not): [torvalds@t40 linux]$ time git rev-list HEAD drivers/scsi | head -10 .. real 0m0.688s but with --topo-order it's much slower: [torvalds@t40 linux]$ time git rev-list --topo-order HEAD drivers/scsi | head -10 .. real 0m17.458s See? You shouldn't care about CPU usage, you should care about IO costs! Those are the first-order effects. In other words, if you can be incremental, we're talking about performance differences that are orders-of-magnitude. Not ten percent or something piddling like that! And the performance improvemens come for the cases that are the _problem_, rather than the cases that already work perfectly well. Linus ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 1:39 New " Paul Mackerras 2007-10-28 5:34 ` Linus Torvalds @ 2007-10-28 18:32 ` Pierre Habouzit 2007-10-28 18:38 ` Mike Hommey 2007-10-28 23:13 ` Paul Mackerras 2007-10-29 13:30 ` Han-Wen Nienhuys 2007-10-29 14:04 ` Michele Ballabio 3 siblings, 2 replies; 33+ messages in thread From: Pierre Habouzit @ 2007-10-28 18:32 UTC (permalink / raw) To: Paul Mackerras; +Cc: git [-- Attachment #1: Type: text/plain, Size: 2629 bytes --] On dim, oct 28, 2007 at 01:39:34 +0000, Paul Mackerras wrote: > I just pulled the dev branch of gitk into the master branch, so the > master branch now has the new features and improvements that I have > been working on, namely: [...] As you seem to be the guy to ask for, I've a couple of requests wrt gitk. * the diff window is quite bad with merge commits, the colorization is rather poor, and the last version you just merged isn't especially better. * the 'sha1' input field is a major pain in the UI: the cut&paste interaction is very poor. I don't know why, but it's often very very hard to really copy the sha id, probably because it's selected by default. * hjkl in the history list do very very very curious things, whereas I would expect j/k to do the same as (resp) down/up. Note that in [Help->Key bindings] it's said it should work that way, but it doesn't here at least. A way to customize bindings would be much appreciated (I like vi bindings, and I miss ^U/^D, and ^E/^Y e.g.). * I really really really miss an option to ignore whitespaces in diffs, a small checkbox to view the full blown diff, or the one without spaces changes (-w -b) would be _really_ great. * the fact that it remembers the position where it was in the WM when it was closed is really annoying. the WM is supposed to place the window. With at least ion3 and xinerama it often shows up on the wrong screen. Remembering the window size though is fine. * wrt the layout, when the gitk window is resized, the resizing of the three columns (subjects, commiter, date) is really cumbersome. I would expect that the subject one would be the sole one to be resized. * still wrt the layout, the focus is quite cumbersome. Gitk would be really really really nice to be used only from the keyboard, but because of a very unclear focus policy, it really isn't for me. Maybe it's just me, and I know this may not be 100% helpful, but I never know which part of gitk will receive my keys (history part, diff part, tree, ...). * in the diff [lines of context] input, if you hit "down" it decrements the number of lines which is okay, but _also_ moves the selected history line which is not. This list may sound harsh, I hope not, I love gitk, it's one of the 10 git commands I use the most. Cheers, -- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 18:32 ` Pierre Habouzit @ 2007-10-28 18:38 ` Mike Hommey 2007-10-28 23:13 ` Paul Mackerras 1 sibling, 0 replies; 33+ messages in thread From: Mike Hommey @ 2007-10-28 18:38 UTC (permalink / raw) To: Pierre Habouzit, Paul Mackerras, git On Sun, Oct 28, 2007 at 07:32:16PM +0100, Pierre Habouzit wrote: > On dim, oct 28, 2007 at 01:39:34 +0000, Paul Mackerras wrote: > > I just pulled the dev branch of gitk into the master branch, so the > > master branch now has the new features and improvements that I have > > been working on, namely: [...] > > As you seem to be the guy to ask for, I've a couple of requests wrt > gitk. (...) * When running gitk --all, it would be nice if the current branch was selected, instead of the topmost commit. Mike ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 18:32 ` Pierre Habouzit 2007-10-28 18:38 ` Mike Hommey @ 2007-10-28 23:13 ` Paul Mackerras 2007-10-29 6:20 ` Pierre Habouzit 2007-10-29 6:24 ` Pierre Habouzit 1 sibling, 2 replies; 33+ messages in thread From: Paul Mackerras @ 2007-10-28 23:13 UTC (permalink / raw) To: Pierre Habouzit; +Cc: git Pierre Habouzit writes: > As you seem to be the guy to ask for, I've a couple of requests wrt > gitk. > > * the diff window is quite bad with merge commits, the colorization is > rather poor, and the last version you just merged isn't especially > better. That's not a request, that's a grizzle. :) What would you like it to look like? > * the 'sha1' input field is a major pain in the UI: the cut&paste > interaction is very poor. I don't know why, but it's often very very > hard to really copy the sha id, probably because it's selected by > default. It's selected so that the contents are in the cut buffer and you can paste them in an xterm with middle-button. Possibly I need to check that control-C (or command-C under macos) is properly bound to copy. > * the fact that it remembers the position where it was in the WM when > it was closed is really annoying. the WM is supposed to place the > window. With at least ion3 and xinerama it often shows up on the > wrong screen. Remembering the window size though is fine. That came in with some changes that make gitk start up correctly under windows. I could see about making it set the window position only under windows. > * still wrt the layout, the focus is quite cumbersome. Gitk would be > really really really nice to be used only from the keyboard, but > because of a very unclear focus policy, it really isn't for me. > Maybe it's just me, and I know this may not be 100% helpful, but I > never know which part of gitk will receive my keys (history part, > diff part, tree, ...). What focus policy would you like? Paul. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 23:13 ` Paul Mackerras @ 2007-10-29 6:20 ` Pierre Habouzit 2007-10-29 8:31 ` Jonathan del Strother 2007-10-29 6:24 ` Pierre Habouzit 1 sibling, 1 reply; 33+ messages in thread From: Pierre Habouzit @ 2007-10-29 6:20 UTC (permalink / raw) To: Paul Mackerras; +Cc: git [-- Attachment #1: Type: text/plain, Size: 3758 bytes --] On Sun, Oct 28, 2007 at 11:13:43PM +0000, Paul Mackerras wrote: > Pierre Habouzit writes: > > > As you seem to be the guy to ask for, I've a couple of requests wrt > > gitk. > > > > * the diff window is quite bad with merge commits, the colorization is > > rather poor, and the last version you just merged isn't especially > > better. > > That's not a request, that's a grizzle. :) What would you like it to > look like? I believe that git show/diff has it right: lines with a + should be in the "added" color, and lines with a '-' in the "removed" one. gitk only take the first "column" of +/- into account or sth I find awkward at best, and I often go to the console to see a merge commit because of that. > > * the 'sha1' input field is a major pain in the UI: the cut&paste > > interaction is very poor. I don't know why, but it's often very very > > hard to really copy the sha id, probably because it's selected by > > default. > > It's selected so that the contents are in the cut buffer and you can > paste them in an xterm with middle-button. Possibly I need to check > that control-C (or command-C under macos) is properly bound to copy. Well, doing ^C doesn't always copy it (probably a glitch wrt which input has the focus), and it certainly doesn't synchronize with the cut buffer for me. And it doesn't work for anyone at work either. I use ion with the KDE clipboard manager (klipper -- because I never managed to find a clipboard manager that is as good yet, not depending upon KDE), and at work most people use KDE, with the same klipper. Maybe it's a bad interaction, I should try to use it under gnome or so to see if it is. > > * the fact that it remembers the position where it was in the WM when > > it was closed is really annoying. the WM is supposed to place the > > window. With at least ion3 and xinerama it often shows up on the > > wrong screen. Remembering the window size though is fine. > > That came in with some changes that make gitk start up correctly under > windows. I could see about making it set the window position only > under windows. That'd be really great. > > * still wrt the layout, the focus is quite cumbersome. Gitk would be > > really really really nice to be used only from the keyboard, but > > because of a very unclear focus policy, it really isn't for me. > > Maybe it's just me, and I know this may not be 100% helpful, but I > > never know which part of gitk will receive my keys (history part, > > diff part, tree, ...). > > What focus policy would you like? Well, what would make sense (to _me_ at least) would be some shortcuts to move to the history panel (say e.g. using F1), or to the diff view (using e.g. F2), or in the file list (say F3). That would hilight with a black 1px line (like it does for other inputs fields) to say that this is the primary window part that takes the keyboard inputs atm. And when doing that, if you press 'down' or 'up' it would scroll the adequate panel. It's really confusing that the keyboard (or hjkl) right now always make the history change. This way you can make the difference between the keyboard shortcuts that apply to the focused part of the window (up/down, pgup/pgdown are IMHO of that kind), and the one that the user (or the default gitk) has associated to a specific part, no matter if it has the focus. E.g. J/K (or for emacsish people ^N/^P) could always move the history, that would make sense. Cheers, -- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-29 6:20 ` Pierre Habouzit @ 2007-10-29 8:31 ` Jonathan del Strother 0 siblings, 0 replies; 33+ messages in thread From: Jonathan del Strother @ 2007-10-29 8:31 UTC (permalink / raw) To: Pierre Habouzit; +Cc: Paul Mackerras, git On 29 Oct 2007, at 06:20, Pierre Habouzit wrote: > On Sun, Oct 28, 2007 at 11:13:43PM +0000, Paul Mackerras wrote: >>> * the 'sha1' input field is a major pain in the UI: the cut&paste >>> interaction is very poor. I don't know why, but it's often >>> very very >>> hard to really copy the sha id, probably because it's >>> selected by >>> default. >> >> It's selected so that the contents are in the cut buffer and you can >> paste them in an xterm with middle-button. Possibly I need to check >> that control-C (or command-C under macos) is properly bound to copy. > > Well, doing ^C doesn't always copy it (probably a glitch wrt which > input has the focus), and it certainly doesn't synchronize with the > cut > buffer for me. And it doesn't work for anyone at work either. I use > ion > with the KDE clipboard manager (klipper -- because I never managed to > find a clipboard manager that is as good yet, not depending upon KDE), > and at work most people use KDE, with the same klipper. Maybe it's > a bad > interaction, I should try to use it under gnome or so to see if it is. > FWIW, I have exactly the same problem under OS X. I've never figured out a pattern that gives a guaranteed copy - I'll try playing around today and see what I can find. Actually, while I'm here, gitk semi-regularly ignores ⌘Q, which ought to quit on OS X. ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 23:13 ` Paul Mackerras 2007-10-29 6:20 ` Pierre Habouzit @ 2007-10-29 6:24 ` Pierre Habouzit 1 sibling, 0 replies; 33+ messages in thread From: Pierre Habouzit @ 2007-10-29 6:24 UTC (permalink / raw) To: Paul Mackerras; +Cc: git [-- Attachment #1: Type: text/plain, Size: 698 bytes --] On dim, oct 28, 2007 at 11:13:43 +0000, Paul Mackerras wrote: > Pierre Habouzit writes: > > > As you seem to be the guy to ask for, I've a couple of requests wrt > > gitk. > > > > * the diff window is quite bad with merge commits, the colorization is > > rather poor, and the last version you just merged isn't especially > > better. > > That's not a request, that's a grizzle. :) Right, would have I known a single word of Tcl, I would have provided patches for that long time ago btw :P -- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.org [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 1:39 New " Paul Mackerras 2007-10-28 5:34 ` Linus Torvalds 2007-10-28 18:32 ` Pierre Habouzit @ 2007-10-29 13:30 ` Han-Wen Nienhuys 2007-10-29 14:04 ` Michele Ballabio 3 siblings, 0 replies; 33+ messages in thread From: Han-Wen Nienhuys @ 2007-10-29 13:30 UTC (permalink / raw) To: git Paul Mackerras escreveu: > I just pulled the dev branch of gitk into the master branch, so the > master branch now has the new features and improvements that I have > been working on, namely: > > * The find and highlight functions have been combined into a single sound extremely cool; I didn't know someone was working on it actively. Can I misuse this thread to bring a ancient bug under your attention? It is affecting me regularly; see here for the report: http://article.gmane.org/gmane.comp.version-control.git/48789 -- Han-Wen Nienhuys - hanwen@xs4all.nl - http://www.xs4all.nl/~hanwen ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: New features in gitk 2007-10-28 1:39 New " Paul Mackerras ` (2 preceding siblings ...) 2007-10-29 13:30 ` Han-Wen Nienhuys @ 2007-10-29 14:04 ` Michele Ballabio 3 siblings, 0 replies; 33+ messages in thread From: Michele Ballabio @ 2007-10-29 14:04 UTC (permalink / raw) To: git; +Cc: Paul Mackerras On Sunday 28 October 2007, Paul Mackerras wrote: > * Gitk now uses a new graph layout algorithm, which means it doesn't > have to generate the whole layout from top to bottom at startup > time, making startup faster. This is probably causing gitk to eat my (admittedly old) CPU, sometimes. For example, a gitk --all v1.5.2..v1.5.3 gives me problems when I scroll down to about half of the shown history: that is when I reach the sequence of hundreds of "merge topic branch into next" commits, and gitk tries hard to display the graph as best as it can. It can become unresponsive for one second at every PgDown. Otherwise, gitk is way faster in other (non-pathological) circumstances. ^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2007-11-02 18:18 UTC | newest] Thread overview: 33+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-06-27 22:22 new features in gitk Paul Mackerras 2005-06-27 22:49 ` Luc Van Oostenryck 2005-06-27 23:36 ` Paul Mackerras 2005-06-28 20:24 ` Luc Van Oostenryck 2005-06-28 1:21 ` Linus Torvalds 2005-06-28 23:41 ` Paul Mackerras 2005-06-28 6:22 ` Greg KH 2005-06-30 6:20 ` Junio C Hamano -- strict thread matches above, loose matches on Subject: below -- 2007-10-28 1:39 New " Paul Mackerras 2007-10-28 5:34 ` Linus Torvalds 2007-10-28 7:11 ` Paul Mackerras 2007-10-28 7:36 ` Steffen Prohaska 2007-10-28 16:50 ` Linus Torvalds 2007-11-01 10:00 ` Paul Mackerras 2007-11-01 15:16 ` Linus Torvalds 2007-11-02 10:19 ` Paul Mackerras 2007-11-02 12:44 ` Marco Costalba 2007-11-02 15:42 ` Linus Torvalds 2007-11-02 16:50 ` Marco Costalba 2007-11-02 18:16 ` Linus Torvalds 2007-11-02 18:17 ` Johannes Schindelin 2007-11-02 15:03 ` Linus Torvalds 2007-11-01 11:37 ` Paul Mackerras 2007-11-01 15:47 ` Linus Torvalds 2007-11-01 16:21 ` Linus Torvalds 2007-10-28 18:32 ` Pierre Habouzit 2007-10-28 18:38 ` Mike Hommey 2007-10-28 23:13 ` Paul Mackerras 2007-10-29 6:20 ` Pierre Habouzit 2007-10-29 8:31 ` Jonathan del Strother 2007-10-29 6:24 ` Pierre Habouzit 2007-10-29 13:30 ` Han-Wen Nienhuys 2007-10-29 14:04 ` Michele Ballabio
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).