{"thread":{"id":"1368","subject":"Display of merges in gitk","startedAt":"2005-07-30T01:51:40Z","lastAt":"2005-08-20T19:09:59Z","messageCount":25,"participants":["Paul Mackerras","Junio C Hamano","Sergey Vlasov","Linus Torvalds","jepler@unpythonic.net","Kay Sievers","Johannes Schindelin"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"6621","messageId":"17130.56620.137642.941175@cargo.ozlabs.ibm.com","threadId":"1368","inReplyTo":null,"subject":"Display of merges in gitk","fromName":"Paul Mackerras","fromEmail":"paulus@samba.org","sentAt":"2005-07-30T01:51:40Z","receivedAt":"2005-07-30T01:51:40Z","isPatch":false,"sender":{"key":"paulus@samba.org","avatar":"https://avatars.githubusercontent.com/u/1606439?v=4"},"body":"I have reworked the way gitk displays merges.  Previously it would\ndisplay all the diffs between the child and each parent.  That\ndisplayed a lot of unnecessary stuff; for example, for the famous\noctopus (pentapus?) merge, each diff was shown 4 times.  It also shows\ndiffs when the merge is perfectly straightforward, i.e. when any given\nfile has been modified in at most one of the parents, and the child's\nversion is the same as the parent's.\n\nNow gitk will only list a file as having a difference in a merge if\none or more of the parents has a version of the file that is different\nboth from the child and from the common ancestor of the parents (if a\ncommon ancestor exists).  If there is no common ancestor, then a file\nis listed if it is different in the child from all of the parents.\n\nI now also display the diffs for a file in one unified difference\nlisting.  Lines are color-coded according to which parent they come\nfrom, and are in bold with a + at the start of the line if they ended\nup in the merge result (the child), or in normal font with a - at the\nstart of the line if they didn't.  In the usual case of two parents,\nlines from the first parent are in red and lines from the second\nparent are in blue.  Lines in the result that don't correspond to\neither parent are in bold black.\n\nLinus, could you do a pull from the usual place to pick this up?\n(rsync://rsync.kernel.org/pub/scm/gitk/gitk.git).  I also included a\npatch from Junio.\n\nPaul.\n"},{"id":"6623","messageId":"7vy87o6htm.fsf@assigned-by-dhcp.cox.net","threadId":"1368","inReplyTo":"17130.56620.137642.941175@cargo.ozlabs.ibm.com","subject":"Re: Display of merges in gitk","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-07-30T04:25:41Z","receivedAt":"2005-07-30T04:25:41Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Paul Mackerras <paulus@samba.org> writes:\n\n> Linus, could you do a pull from the usual place to pick this up?\n> (rsync://rsync.kernel.org/pub/scm/gitk/gitk.git).  I also included a\n> patch from Junio.\n\nIn case you did not notice, /pub/scm/git/git.git/ repository is\nunder the care of yours truly starting this week.  I've merged\nfrom your tree up to this commit:\n\n    commit c8a4acbf4a7b0f9da3e320877b2b2d12cd58700b\n    Author: Paul Mackerras <paulus@samba.org>\n    Date:   Fri Jul 29 09:23:03 2005 -0500\n\n      Improve the merge display when the result differs from all parents.\n\n      Now we see if the result is quite similar to one of the parents, and\n      if it is, display the result as a diff from that parent.  If the result\n      is similar to more than one parent, pick the one that it's most\n      similar to.\n\nThanks for the great tool.\n"},{"id":"6634","messageId":"20050730183233.572939be.vsu@altlinux.ru","threadId":"1368","inReplyTo":"17130.56620.137642.941175@cargo.ozlabs.ibm.com","subject":"gitk merge display bugs (was: Re: Display of merges in gitk)","fromName":"Sergey Vlasov","fromEmail":"vsu@altlinux.ru","sentAt":"2005-07-30T14:32:33Z","receivedAt":"2005-07-30T14:32:33Z","isPatch":false,"sender":{"key":"vsu@altlinux.ru","avatar":"https://avatars.githubusercontent.com/u/616082?v=4"},"body":"On Fri, 29 Jul 2005 20:51:40 -0500 Paul Mackerras wrote:\n\n> I have reworked the way gitk displays merges.\n\nI have found a reproducible bug in gitk which seems to be in that new\ncode for merges.  Run\n\n\tgitk f4b3a4c30b5ea3a5de2a2597a3c53266017d02ba\n\non the git or cogito repository (that commit is from 2005-07-05), then\nclick the topmost commit (\"Merge with Linus' current tree\"), then click\nit again - you get an error popup with this trace:\n\ncan't read \"filelines(f13bbe7f56e49a11f6bfc3b73a463c741f969c9c,0,137)\": no such element in array\ncan't read \"filelines(f13bbe7f56e49a11f6bfc3b73a463c741f969c9c,0,137)\": no such element in array\n    while executing\n\"$ctext insert end \"-$filelines($p,$f,$ol)\\n\" m$pnum\"\n    (procedure \"processgroup\" line 143)\n    invoked from within\n\"processgroup\"\n    (procedure \"processhunks\" line 47)\n    invoked from within\n\"processhunks\"\n    (procedure \"getmergediffline\" line 81)\n    invoked from within\n\"getmergediffline file10 {f4b3a4c30b5ea3a5de2a2597a3c53266017d02ba f13bbe7f56e49a11f6bfc3b73a463c741f969c9c} f4b3a4c30b5ea3a5de2a2597a3c53266017d02ba\"\n\nAnother badness which appears with the same repository: run\n\n\tgitk f13bbe7f56e49a11f6bfc3b73a463c741f969c9c\n\nthen repeated clicks on the topmost commit result in a different diff\nshown (no error popups, however).\n\nAlso if I quickly move between commits, sometimes I get error popups\nlike:\n\ncan't unset \"treepending\": no such variable\n    while executing\n\"unset treepending\"\n    (procedure \"gettreediffline\" line 9)\n    invoked from within\n\"gettreediffline file30 {429a9358763dfb98cd063e40dc49cbc049e2a268 154d3d2dd2656c23ea04e9d1c6dd4e576a7af6de}\"\n\nThis error does not happen again if the same commit is selected.\n\nAll this happens both with current cogito\n(134b78a167b5f77725cd8435849de7298b6de477) and git\n(9e44f8980b8f41fbeea0a68035865e5778e4dc7d).\n"},{"id":"6645","messageId":"7vk6j8yo0g.fsf_-_@assigned-by-dhcp.cox.net","threadId":"1368","inReplyTo":"7vy87o6htm.fsf@assigned-by-dhcp.cox.net","subject":"Shipping gitk as part of core git.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-07-30T21:36:47Z","receivedAt":"2005-07-30T21:36:47Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"It appears that gitk gets wider test coverage only after it is\npulled into git.git repository.  I think it would be a good idea\nfor me to pull from you often.\n\nRecently there was a discussion with binary packaging folks.\nWhile I do not mind, and actually I would prefer, shipping gitk\nas part of the core GIT, I have never heard about your\npreference.  As long as gitk is just a single file (or even a\nhandful files in the future) project that does not have a\nfilename that overlaps with core GIT, I can continue pulling\nfrom you and I think the binary packaging folks can produce\nseparate git-core and gitk package out of git.git tree without\nproblems.  However, once you start wanting to have your own\nMakefile and maybe debian/rules file for packaging, for example,\nI suspect the way currently things are set up would break\nmiserably.  It's all Linus' fault to have merged with your tree\nin the first place ;-).\n\nAnyhow, I have one bug to report.  I selected one rev, and then\nsaid \"diff this -> selected\" from right-click menu on an\nadjacent one, and I got this:\n\n    wrong # args: should be \"startdiff ids\"\n    wrong # args: should be \"startdiff ids\"\n        while executing\n    \"startdiff $newid [list $oldid]\"\n        (procedure \"diffvssel\" line 28)\n        invoked from within\n    \"diffvssel 0\"\n        invoked from within\n    \".rowctxmenu invoke active\"\n        (\"uplevel\" body line 1)\n        invoked from within\n    \"uplevel #0 [list $w invoke active]\"\n        (procedure \"tk::MenuInvoke\" line 47)\n        invoked from within\n    \"tk::MenuInvoke .rowctxmenu 1\"\n        (command bound to event)\n\nThe following seems to fix it.\n------------\nFix diff invoked from the right-click menu.\n\nSigned-off-by: Junio C Hamano <junkio@cox.net>\n---\n# - master: [PATCH] Making it easier to find which change introduced a bug\n# + (working tree)\ndiff --git a/gitk b/gitk\n--- a/gitk\n+++ b/gitk\n@@ -2700,7 +2700,7 @@ proc diffvssel {dirn} {\n     $ctext conf -state disabled\n     $ctext tag delete Comments\n     $ctext tag remove found 1.0 end\n-    startdiff $newid [list $oldid]\n+    startdiff [list $newid $oldid]\n }\n \n proc mkpatch {} {\n"},{"id":"6666","messageId":"17132.48473.276198.835869@cargo.ozlabs.ibm.com","threadId":"1368","inReplyTo":"7vk6j8yo0g.fsf_-_@assigned-by-dhcp.cox.net","subject":"Re: Shipping gitk as part of core git.","fromName":"Paul Mackerras","fromEmail":"paulus@samba.org","sentAt":"2005-07-31T12:00:25Z","receivedAt":"2005-07-31T12:00:25Z","isPatch":false,"sender":{"key":"paulus@samba.org","avatar":"https://avatars.githubusercontent.com/u/1606439?v=4"},"body":"Junio C Hamano writes:\n\n> It appears that gitk gets wider test coverage only after it is\n> pulled into git.git repository.  I think it would be a good idea\n> for me to pull from you often.\n\nYes, I agree.  I'm happy to send you an email when I have committed\nchanges to gitk if that will help.\n\n> Recently there was a discussion with binary packaging folks.\n> While I do not mind, and actually I would prefer, shipping gitk\n> as part of the core GIT, I have never heard about your\n> preference.  As long as gitk is just a single file (or even a\n> handful files in the future) project that does not have a\n> filename that overlaps with core GIT, I can continue pulling\n> from you and I think the binary packaging folks can produce\n> separate git-core and gitk package out of git.git tree without\n> problems.  However, once you start wanting to have your own\n> Makefile and maybe debian/rules file for packaging, for example,\n> I suspect the way currently things are set up would break\n> miserably.  It's all Linus' fault to have merged with your tree\n> in the first place ;-).\n\nHe did ask me first, and I said he could :).  It makes things easier\nfor me, having gitk in the core git, because it means that I don't\nhave to worry about making a proper package out of it.  I don't see\nany reason why gitk would grow to be more than just the script.\n\nI am also thinking of doing a \"gitool\", somewhat like bk citool, to\nmake it easier to create commits.  I guess we can decide later whether\nto make it part of the core git, although it seems more like porcelain\nthan gitk.\n\n> Anyhow, I have one bug to report.  I selected one rev, and then\n> said \"diff this -> selected\" from right-click menu on an\n> adjacent one, and I got this:\n\nThanks for the patch.  I have committed that fix plus fixes for some\nother bugs that people have reported, and pushed it to\nmaster.kernel.org.  Could you do another pull please?\n\nRegards,\nPaul.\n"},{"id":"6669","messageId":"7vpssyhkwg.fsf@assigned-by-dhcp.cox.net","threadId":"1368","inReplyTo":"17132.48473.276198.835869@cargo.ozlabs.ibm.com","subject":"Re: Shipping gitk as part of core git.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-07-31T18:48:15Z","receivedAt":"2005-07-31T18:48:15Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Paul Mackerras <paulus@samba.org> writes:\n\n> Yes, I agree.  I'm happy to send you an email when I have committed\n> changes to gitk if that will help.\n\nPlease do not waste your time on that doing it regularly, but do\nnot hesitate to drop me a note if you have something newsworthy.\nI always fetch from (not necessarily merge with) a couple of\nrepositories before starting my git day, in order to sanity\ncheck the status of my private work repository.  Your repository\nis among them, so I'll usually notice.\n\n> He did ask me first, and I said he could :).  It makes things easier\n> for me, having gitk in the core git, because it means that I don't\n> have to worry about making a proper package out of it.  I don't see\n> any reason why gitk would grow to be more than just the script.\n\nUnderstood.  So let's keep the current arrangement.\n\n> I am also thinking of doing a \"gitool\", somewhat like bk citool, to\n> make it easier to create commits.  I guess we can decide later whether\n> to make it part of the core git, although it seems more like porcelain\n> than gitk.\n\nSounds like it.\n\n-jc\n"},{"id":"6849","messageId":"Pine.LNX.4.58.0508050658260.3258@g5.osdl.org","threadId":"1368","inReplyTo":"17130.56620.137642.941175@cargo.ozlabs.ibm.com","subject":"Re: Display of merges in gitk","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-08-05T14:10:39Z","receivedAt":"2005-08-05T14:10:39Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Fri, 29 Jul 2005, Paul Mackerras wrote:\n>\n> I have reworked the way gitk displays merges.\n\nOk, goodie. It works fine in my environment, with most merges showing up \nas not interesting. But a merge like\n\n\t3e0777b8fa96f7073ed5d13d3bc1d573b766bef9\n\nshows an example of where there was actually both real content merges, and \nsome real clashes.\n\nHowever, most of the content merges were trivial, and they often hide the \nreal clashes. For example, if you click on that merge, a _lot_ of it looks \nlike it might be clashes, even though most of it was auto-merged. This is \nnot really a problem, but I get the feeling that it could be improved \nsomehow - maybe a button that hides the parts that don't have clashes? \n\n\n> In the usual case of two parents, lines from the first parent are in red\n> and lines from the second parent are in blue.  Lines in the result that\n> don't correspond to either parent are in bold black.\n\nTo get the alternate output, maybe something like:\n - run \"merge\" on the original/parent1/parent2 (the same way the\n   git-merge-one-file-script does)\n - anything that merged fine is in black (regardless of which parent it \n   came from), and then mark the merge rejects are in red/blue depending \n   on parent?\n\nI don't know how doable that would be.\n\n\t\tLinus\n"},{"id":"6850","messageId":"Pine.LNX.4.58.0508050710460.3258@g5.osdl.org","threadId":"1368","inReplyTo":"Pine.LNX.4.58.0508050658260.3258@g5.osdl.org","subject":"gitk \"hyperlinks\" (was Re: Display of merges in gitk)","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-08-05T14:37:41Z","receivedAt":"2005-08-05T14:37:41Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n[ Also Kay Sievers, because the clickability thing sounds like a \n  potentially good thing for webgit too.. ]\n\nFor 2.6.13 we've been reverting some stuff lately, to make sure we get a \nstable release. That's fine, and when I revert something I try to mention \nthe commit ID of the thing I revert in the message. Apparently others do \ntoo, as indicated by a patch I just got from Petr Vandovec. So we've got \nfor example:\n\n\t889371f61fd5bb914d0331268f12432590cf7e85:\n\tAuthor: Linus Torvalds <torvalds@g5.osdl.org>  2005-07-30 13:41:56\n\tCommitter: Linus Torvalds <torvalds@g5.osdl.org>  2005-07-30 13:41:56\n\n    Revert \"yenta free_irq on suspend\"\n    \n    ACPI is wrong.  Devices should not release their IRQ's on suspend and\n    re-aquire them on resume.  ACPI should just re-init the IRQ controller\n    instead of breaking most drivers very subtly.\n    \n    Breakage reported by Hugh Dickins <hugh@veritas.com>\n    \n    Undo: d8c4b4195c7d664baf296818bf756775149232d3\n    \n    Signed-off-by: Linus Torvalds <torvalds@osdl.org>\n\nand\n\n\t403fe5ae57c831968c3dbbaba291ae825a1c5aaa:\n\tAuthor: Petr Vandrovec <vandrove@vc.cvut.cz>  2005-08-05 06:50:07\n\tCommitter: Linus Torvalds <torvalds@g5.osdl.org>  2005-08-05 06:57:44\n\n    [PATCH] rtc: msleep() cannot be used from interrupt\n    \n    Since the beginning of July my Opteron box was randomly crashing and\n    being rebooted by hardware watchdog.  Today it finally did it in front\n    of me, and this patch will hopefully fix it.\n    \n    The problem is that at the end of June (the 28th, to be exact: commit\n    47f176fdaf8924bc83fddcf9658f2fd3ef60d573, \"[PATCH] Using msleep()\n    instead of HZ\") rtc_get_rtc_time ...\n\nand when I use gitk, it would be just too damn cool for words if I could \neasily follow the SHA1's mentioned in the commit message.\n\nI can just cut-and-paste the SHA1, and I've verified that it works fine. \nHowever, as you'v enoticed, I'm of the whiny kind, and I thought it could \nbe easier. So I'm whining again.\n\n<whine>Mommy, mommy, can you make my life easier</whine>\n\nSo I noticed that I really would like two things:\n\n - \"clickable\" SHA1's in commit messages would be really really cool if \n   something like that is even possible with tcl/tk.\n\n   Now, if you can highlight them when showing the message, that would be \n   extra cool, but even without any highlighing, the thing actually \n   _almost_ works fine already: you can double-click the SHA1, and it will \n   select it. You then have to move the mouse to the \"goto\" window, and \n   paste in the SHA1 there. And this is where it would be good if this \n   sequence could be simplified a bit.\n\n   Even if it's something as simple as accepting the SHA1 paste into the \n   same window (not having to go to the \"goto\" window: just double-click \n   on the SHA1, and then right-click to \"paste it back\").\n\n - I'd like to have a \"back button\". Not just for the above kind of thing, \n   but in general too: when searching for something, it would just be very \n   nice if gitk just kept a list of the <n> last commits that have \n   been selected, and there was a web-browser-like button that went \n   back/forward in history.\n\n   But especially when looking at a revert, I just want to first go to the \n   thing we revert, see what's going on there (get the \"historical \n   perspective\" - commit log for why the original was done etc), and then \n   I'd want to go back (and possibly forth and back again ;). And while \n   the revert mentioned the thing it reverted (so I could cut-and-paste), \n   the thing it reverted obviously does _not_ mention the thing that \n   reverted it, so now I have to manually just scroll back.\n\n   This same thing happens for a failed search (I search for xyz, and it \n   actually finds it, and I realize that that was the wrong search, but\n   now I'm two months back..)\n\n<whine>Mommy, mommy, pleeeease</whine>\n\n\t\t\tLinus\n"},{"id":"6862","messageId":"20050805185056.GF19009@unpythonic.net","threadId":"1368","inReplyTo":"Pine.LNX.4.58.0508050710460.3258@g5.osdl.org","subject":"Re: gitk \"hyperlinks\" (was Re: Display of merges in gitk)","fromName":"","fromEmail":"jepler@unpythonic.net","sentAt":"2005-08-05T18:51:00Z","receivedAt":"2005-08-05T18:51:00Z","isPatch":false,"sender":{"key":"jepler@unpythonic.net","avatar":"https://avatars.githubusercontent.com/u/1517291?v=4"},"body":"On Fri, Aug 05, 2005 at 07:37:41AM -0700, Linus Torvalds wrote:\n> For 2.6.13 we've been reverting some stuff lately, to make sure we get a \n> stable release. That's fine, and when I revert something I try to mention \n> the commit ID of the thing I revert in the message. Apparently others do \n> too, as indicated by a patch I just got from Petr Vandovec. So we've got \n> for example:\n[snipped]\n\nThe following code worked for me on a toy commit.  I'm not sure the regular\nexpression in linkcommits is right if the SHA1 is followed by a colon or a comma,\nas I noticed it was in your examples.  If it doesn, then removing the [[:<:]]\nand [[:>:]] will probably fix it.\n\nThings that look like SHA1s are highlighted even if they don't actually exist.\n\nThere is probably a \"more right\" place to do the '$ctext tag bind Commit' commands\nbut I didn't find it right away.\n\ndiff --git a/gitk b/gitk\n--- a/gitk\n+++ b/gitk\n@@ -1753,6 +1753,11 @@ proc selectline {l} {\n     $ctext conf -state disabled\n     set commentend [$ctext index \"end - 1c\"]\n \n+    linkcommits $ctext 0.0 $commentend\n+    $ctext tag configure Commit -underline yes -foreground blue\n+    $ctext tag bind Commit <Enter> { %W configure -cursor hand2 }\n+    $ctext tag bind Commit <Leave> { %W configure -cursor {} }\n+    $ctext tag bind Commit <Button-1><ButtonRelease-1> { linkclick %W %x %y }\n     $cflist delete 0 end\n     $cflist insert end \"Comments\"\n     if {$nparents($id) == 1} {\n@@ -1762,6 +1767,30 @@ proc selectline {l} {\n     }\n }\n \n+proc linkclick {w x y} {\n+    set index [$w index @$x,$y]\n+    set tags [$w tag names $index]\n+    foreach c $tags {\n+        if {![string match {C_*} $c]} { continue; }\n+        global sha1string\n+        set sha1string [string range $c 2 end]\n+        gotocommit\n+    }\n+}\n+\n+proc linkcommits {w start end} {\n+    while {1} {\n+        set pos [$w search -regexp {[[:<:]][0-9a-fA-F]{40}[[:>:]]} $start $end]\n+        if {$pos == {}} {break}\n+        \n+        set commit [$w get $pos \"$pos+40c\"]\n+\n+        $w tag add Commit $pos \"$pos+40c\"\n+        $w tag add C_$commit $pos \"$pos+40c\"\n+        set start [$w index \"$pos+40c\"]\n+    }\n+}\n+\n proc selnextline {dir} {\n     global selectedline\n     if {![info exists selectedline]} return\n\n"},{"id":"6870","messageId":"20050806033654.GA27953@vrfy.org","threadId":"1368","inReplyTo":"Pine.LNX.4.58.0508050710460.3258@g5.osdl.org","subject":"Re: gitk \"hyperlinks\" (was Re: Display of merges in gitk)","fromName":"Kay Sievers","fromEmail":"kay.sievers@vrfy.org","sentAt":"2005-08-06T03:36:54Z","receivedAt":"2005-08-06T03:36:54Z","isPatch":false,"sender":{"key":"kay.sievers@vrfy.org","avatar":null},"body":"On Fri, Aug 05, 2005 at 07:37:41AM -0700, Linus Torvalds wrote:\n> \n> [ Also Kay Sievers, because the clickability thing sounds like a \n>   potentially good thing for webgit too.. ]\n...\n> For 2.6.13 we've been reverting some stuff lately, to make sure we get a \n> stable release. That's fine, and when I revert something I try to mention \n> the commit ID of the thing I revert in the message. Apparently others do \n> too, as indicated by a patch I just got from Petr Vandovec. So we've got \n> for example:\n> \n>     Undo: d8c4b4195c7d664baf296818bf756775149232d3\n>     \n>     Signed-off-by: Linus Torvalds <torvalds@osdl.org>\n...\n> and when I use gitk, it would be just too damn cool for words if I could \n> easily follow the SHA1's mentioned in the commit message.\n...\n\nDamn cool? No problem. :)\n  http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=403fe5ae57c831968c3dbbaba291ae825a1c5aaa\n\nKay\n"},{"id":"6875","messageId":"17140.47152.672091.474748@cargo.ozlabs.ibm.com","threadId":"1368","inReplyTo":"Pine.LNX.4.58.0508050710460.3258@g5.osdl.org","subject":"Re: gitk \"hyperlinks\" (was Re: Display of merges in gitk)","fromName":"Paul Mackerras","fromEmail":"paulus@samba.org","sentAt":"2005-08-06T13:16:32Z","receivedAt":"2005-08-06T13:16:32Z","isPatch":false,"sender":{"key":"paulus@samba.org","avatar":"https://avatars.githubusercontent.com/u/1606439?v=4"},"body":"Linus Torvalds writes:\n\n>  - \"clickable\" SHA1's in commit messages would be really really cool if \n>    something like that is even possible with tcl/tk.\n\nDone, and it was even pretty easy.  It took only about a dozen lines.\n\n>  - I'd like to have a \"back button\". Not just for the above kind of thing, \n>    but in general too: when searching for something, it would just be very \n>    nice if gitk just kept a list of the <n> last commits that have \n>    been selected, and there was a web-browser-like button that went \n>    back/forward in history.\n\nGood idea.  Also done. :)  It's on master.kernel.org now in my gitk.git\ndirectory.  Hopefully Junio will pull it into git soon.  The current\nversion also squishes the graph horizontally if it gets too wide\n(i.e. more than half the width of the top-left pane).\n\nPaul.\n"},{"id":"6876","messageId":"Pine.LNX.4.58.0508060839500.3258@g5.osdl.org","threadId":"1368","inReplyTo":"20050806033654.GA27953@vrfy.org","subject":"Re: gitk \"hyperlinks\" (was Re: Display of merges in gitk)","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-08-06T15:44:10Z","receivedAt":"2005-08-06T15:44:10Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Sat, 6 Aug 2005, Kay Sievers wrote:\n> \n> Damn cool? No problem. :)\n>   http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=403fe5ae57c831968c3dbbaba291ae825a1c5aaa\n\nGoodie. Although when I looked at it first, it wasn't obvious - the link\nis same font, same color as the rest. Maybe make them stand out a _bit_\nmore?\n\nBut yes, works well. Thanks,\n\n\t\tLinus\n"},{"id":"6877","messageId":"Pine.LNX.4.58.0508060919150.3258@g5.osdl.org","threadId":"1368","inReplyTo":"17140.47152.672091.474748@cargo.ozlabs.ibm.com","subject":"Re: gitk \"hyperlinks\" (was Re: Display of merges in gitk)","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-08-06T16:20:16Z","receivedAt":"2005-08-06T16:20:16Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\n\nOn Sat, 6 Aug 2005, Paul Mackerras wrote:\n> Linus Torvalds writes:\n> > \n> >  - \"clickable\" SHA1's in commit messages would be really really cool if \n> >    something like that is even possible with tcl/tk.\n> \n> Done, and it was even pretty easy.  It took only about a dozen lines.\n\nLooks good also. I assume the mouse can't change when it hovers? \n\n> Good idea.  Also done. :)  It's on master.kernel.org now in my gitk.git\n> directory.  Hopefully Junio will pull it into git soon.  The current\n> version also squishes the graph horizontally if it gets too wide\n> (i.e. more than half the width of the top-left pane).\n\nYeah, that looks weird when the lines start turning soft ans squiggly.\n\n\t\tLinus\n"},{"id":"6878","messageId":"7vpssr9gd1.fsf@assigned-by-dhcp.cox.net","threadId":"1368","inReplyTo":"17140.47152.672091.474748@cargo.ozlabs.ibm.com","subject":"Re: gitk \"hyperlinks\"","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-08-06T16:31:38Z","receivedAt":"2005-08-06T16:31:38Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Paul Mackerras <paulus@samba.org> writes:\n\n> Good idea.  Also done. :)  It's on master.kernel.org now in my gitk.git\n> directory.  Hopefully Junio will pull it into git soon.\n\nI did, and will push it out shortly, but I think you need this\npatch.  To make later merges from you easier, I will not put\nthis in my \"master\" branch.\n\n------------\n[PATCH] gitk proposed fix: handle more than one SHA1 links.\n\nSigned-off-by: Junio C Hamano <junkio@cox.net>\n---\n\n gitk |    1 +\n 1 files changed, 1 insertions(+), 0 deletions(-)\n\nc423b62a66d4c4f2a7856cada507f973e9140590\ndiff --git a/gitk b/gitk\n--- a/gitk\n+++ b/gitk\n@@ -1802,6 +1802,7 @@ proc selectline {l isnew} {\n \tset linkid [string range $comment $s $e]\n \tif {![info exists idline($linkid)]} continue\n \tincr e\n+\tincr i\n \t$ctext tag conf link$i -foreground blue -underline 1\n \t$ctext tag add link$i \"$commentstart + $s c\" \"$commentstart + $e c\"\n \t$ctext tag bind link$i <1> [list selectline $idline($linkid) 1]\n"},{"id":"6880","messageId":"20050806170735.GA18063@unpythonic.net","threadId":"1368","inReplyTo":"Pine.LNX.4.58.0508060919150.3258@g5.osdl.org","subject":"Re: gitk \"hyperlinks\" (was Re: Display of merges in gitk)","fromName":"","fromEmail":"jepler@unpythonic.net","sentAt":"2005-08-06T17:07:39Z","receivedAt":"2005-08-06T17:07:39Z","isPatch":false,"sender":{"key":"jepler@unpythonic.net","avatar":"https://avatars.githubusercontent.com/u/1517291?v=4"},"body":"On Sat, Aug 06, 2005 at 09:20:16AM -0700, Linus Torvalds wrote:\n> Looks good also. I assume the mouse can't change when it hovers? \n\nIn gitk?  This is be possible.  My patch[1] does it.  The way it's done stinks a\nlittle bit, though.  <Enter> and <Leave> are bound on a tag common to all the\n\"hyperlinks\", and change the -cursor of the whole widget---either to hand2 or\nthe empty string.\n\n+    $ctext tag bind Commit <Enter> { %W configure -cursor hand2 }\n+    $ctext tag bind Commit <Leave> { %W configure -cursor {} }\n\nMy patch also underlines links, as requested in a different message in this thread.\n\n+    $ctext tag configure Commit -underline yes -foreground blue\n\nJeff\n[1] http://www.gelato.unsw.edu.au/archives/git/0508/7253.html\n"},{"id":"6884","messageId":"Pine.LNX.4.58.0508061056200.3258@g5.osdl.org","threadId":"1368","inReplyTo":"Pine.LNX.4.58.0508060919150.3258@g5.osdl.org","subject":"gitk SHA link hovers","fromName":"Linus Torvalds","fromEmail":"torvalds@osdl.org","sentAt":"2005-08-06T17:59:46Z","receivedAt":"2005-08-06T17:59:46Z","isPatch":false,"sender":{"key":"torvalds@linux-foundation.org","avatar":"https://avatars.githubusercontent.com/u/1024025?v=4"},"body":"\nThis makes the cursor change when you hover over a SHA1 link with the new \n\"hypertext\" gitk commit ID linking feature.\n\nAll credit goes to Jeff Epler <jepler@unpythonic.net> and bugs are mine. \nI don't actually know any tcl/tk, I'm just acting as a random monkey that \nlooks at what others do and mix it up.\n\nSigned-off-by: Linus Torvalds <torvalds@osdl.org>\n----\ndiff --git a/gitk b/gitk\n--- a/gitk\n+++ b/gitk\n@@ -1802,10 +1802,13 @@ proc selectline {l isnew} {\n \tset linkid [string range $comment $s $e]\n \tif {![info exists idline($linkid)]} continue\n \tincr e\n-\t$ctext tag conf link$i -foreground blue -underline 1\n+\t$ctext tag add link \"$commentstart + $s c\" \"$commentstart + $e c\"\n \t$ctext tag add link$i \"$commentstart + $s c\" \"$commentstart + $e c\"\n \t$ctext tag bind link$i <1> [list selectline $idline($linkid) 1]\n     }\n+    $ctext tag conf link -foreground blue -underline 1\n+    $ctext tag bind link <Enter> { %W configure -cursor hand2 }\n+    $ctext tag bind link <Leave> { %W configure -cursor {} }\n \n     $ctext tag delete Comments\n     $ctext tag remove found 1.0 end\n"},{"id":"6885","messageId":"7vacju9az9.fsf_-_@assigned-by-dhcp.cox.net","threadId":"1368","inReplyTo":"20050806033654.GA27953@vrfy.org","subject":"gitweb \"tag\" display","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-08-06T18:27:54Z","receivedAt":"2005-08-06T18:27:54Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"A git tag object can have its own text contents, but I do not\nsee how I can get to it from gitweb.  \n\nFor example, I have \"junio-gpg-pub\" tag in my git.git\nrepository.  This is a tag to a \"blob\" which is my public GPG\nkey.  The \"tag\" object itself says:\n\n    object b92c9c07fe2d0d89c4f692573583c4753b5355d2\n    type blob\n    tag junio-gpg-pub\n    tagger Junio C Hamano <junkio@cox.net> 1123226972 -0700\n\n    This is the GPG key I use to sign GIT releases.\n    ...\n\nto tell people that they can use it to verify the tags signed by\nme.  I would appreciate that this description is visible\nsomewhere from gitweb.  Clicking on the link just spews out the\nblob contents, which is the ascii armored public key.\n\nOf course I _could_ add textual description outside the ascii\narmor in this particular case, but that approach would not work\nin general --- my next funky tag _could_ point to a JPEG picture\nwith the tag description that says \"my beautiful wife\" ;-).\n\nI realize that I am going tangent, but it would be very cool if\ngitweb understood a tag payload that said something like this:\n\n    object b02c0c07fe2d0d80c4f602573583c4753b5355d2\n    type blob\n    tag my-beautiful-wife\n    tagger Junio C Hamano <junkio@cox.net> 1123226072 -0700\n\n    object-content-type: image/jpeg\n    Here is a textual description of the blob being pointed at\n    by this tag.  For this example, it should say \"this is my\n    wife's picture\" or something like that.\n\nNo, I am not going to create that tag.\n"},{"id":"6887","messageId":"7vpssq7vfa.fsf@assigned-by-dhcp.cox.net","threadId":"1368","inReplyTo":"7vacju9az9.fsf_-_@assigned-by-dhcp.cox.net","subject":"Re: gitweb \"tag\" display","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-08-06T18:49:13Z","receivedAt":"2005-08-06T18:49:13Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <junkio@cox.net> writes:\n\n> A git tag object can have its own text contents, but I do not\n> see how I can get to it from gitweb.  \n\nI just realized that this is also unavailable in gitk, so please\nconsider this as a feature request to gitk as well.\n\nIf you can pop-up a temporary window that shows the tag contents\nwhen I hover over a tag icon for 2 seconds, and remove that\ntemporary window when step outside it would be ideal.  It is up\nto you to implement the part to show my wife's picture, reading\n\"object-content-type: image/jpeg\" thing ;-).  That one was not a\nserious request.\n\nI have two more requests to gitk, which are related to each\nother but not related to the \"tag contents\" one above:\n\n - if \"gitk --all\" slurped not just refs/heads and refs/tags but\n   everything under refs/* recursively, that would help\n   visualizing the bisect status.  bisect creates bunch of\n   commit object names in refs/bisect.\n\n - I have not looked at the code closely enough, but I cannot\n   find how to re-read references.  I would appreciate it if it\n   allowed it.  This relates to the bisect status visualization,\n   where the set of references changes _after_ the user started\n   gitk.\n"},{"id":"6896","messageId":"20050807055005.GA14883@vrfy.org","threadId":"1368","inReplyTo":"7vacju9az9.fsf_-_@assigned-by-dhcp.cox.net","subject":"Re: gitweb \"tag\" display","fromName":"Kay Sievers","fromEmail":"kay.sievers@vrfy.org","sentAt":"2005-08-07T05:50:05Z","receivedAt":"2005-08-07T05:50:05Z","isPatch":false,"sender":{"key":"kay.sievers@vrfy.org","avatar":null},"body":"On Sat, Aug 06, 2005 at 11:27:54AM -0700, Junio C Hamano wrote:\n> A git tag object can have its own text contents, but I do not\n> see how I can get to it from gitweb.  \n> \n> For example, I have \"junio-gpg-pub\" tag in my git.git\n> repository.  This is a tag to a \"blob\" which is my public GPG\n> key.  The \"tag\" object itself says:\n> \n>     object b92c9c07fe2d0d89c4f692573583c4753b5355d2\n>     type blob\n>     tag junio-gpg-pub\n>     tagger Junio C Hamano <junkio@cox.net> 1123226972 -0700\n> \n>     This is the GPG key I use to sign GIT releases.\n\nCheck it out. But it still has no \"picture tag\" support. :)\n\nThanks,\nKay\n"},{"id":"6897","messageId":"20050807055157.GB14883@vrfy.org","threadId":"1368","inReplyTo":"Pine.LNX.4.58.0508060839500.3258@g5.osdl.org","subject":"Re: gitk \"hyperlinks\" (was Re: Display of merges in gitk)","fromName":"Kay Sievers","fromEmail":"kay.sievers@vrfy.org","sentAt":"2005-08-07T05:51:57Z","receivedAt":"2005-08-07T05:51:57Z","isPatch":false,"sender":{"key":"kay.sievers@vrfy.org","avatar":null},"body":"On Sat, Aug 06, 2005 at 08:44:10AM -0700, Linus Torvalds wrote:\n> \n> \n> On Sat, 6 Aug 2005, Kay Sievers wrote:\n> > \n> > Damn cool? No problem. :)\n> >   http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=403fe5ae57c831968c3dbbaba291ae825a1c5aaa\n> \n> Goodie. Although when I looked at it first, it wasn't obvious - the link\n> is same font, same color as the rest. Maybe make them stand out a _bit_\n> more?\n\nIt's blue now, to invite you to click on it. :)\n\nKay\n"},{"id":"6902","messageId":"17141.63678.126439.379030@cargo.ozlabs.ibm.com","threadId":"1368","inReplyTo":"Pine.LNX.4.58.0508061056200.3258@g5.osdl.org","subject":"Re: gitk SHA link hovers","fromName":"Paul Mackerras","fromEmail":"paulus@samba.org","sentAt":"2005-08-07T12:04:14Z","receivedAt":"2005-08-07T12:04:14Z","isPatch":false,"sender":{"key":"paulus@samba.org","avatar":"https://avatars.githubusercontent.com/u/1606439?v=4"},"body":"Linus Torvalds writes:\n\n> This makes the cursor change when you hover over a SHA1 link with the new \n> \"hypertext\" gitk commit ID linking feature.\n\nI committed something based on this but with extra stuff to make the\ncursor changes work with the change from the normal cursor to the\nwatch cursor and back.\n\nPaul.\n"},{"id":"6901","messageId":"17141.63748.734936.78707@cargo.ozlabs.ibm.com","threadId":"1368","inReplyTo":"7vpssr9gd1.fsf@assigned-by-dhcp.cox.net","subject":"Re: gitk \"hyperlinks\"","fromName":"Paul Mackerras","fromEmail":"paulus@samba.org","sentAt":"2005-08-07T12:05:24Z","receivedAt":"2005-08-07T12:05:24Z","isPatch":false,"sender":{"key":"paulus@samba.org","avatar":"https://avatars.githubusercontent.com/u/1606439?v=4"},"body":"Junio C Hamano writes:\n\n> I did, and will push it out shortly, but I think you need this\n> patch.  To make later merges from you easier, I will not put\n> this in my \"master\" branch.\n\nI have committed this plus the hand cursor for the links plus a small\nchange to make gitk display commit messages correctly according to the\ncurrent locale.\n\nPaul.\n"},{"id":"7579","messageId":"17158.27011.7426.577686@cargo.ozlabs.ibm.com","threadId":"1368","inReplyTo":"7vpssq7vfa.fsf@assigned-by-dhcp.cox.net","subject":"Re: gitweb \"tag\" display","fromName":"Paul Mackerras","fromEmail":"paulus@samba.org","sentAt":"2005-08-19T23:21:39Z","receivedAt":"2005-08-19T23:21:39Z","isPatch":false,"sender":{"key":"paulus@samba.org","avatar":"https://avatars.githubusercontent.com/u/1606439?v=4"},"body":"Junio C Hamano writes:\n\n> If you can pop-up a temporary window that shows the tag contents\n> when I hover over a tag icon for 2 seconds, and remove that\n> temporary window when step outside it would be ideal.  It is up\n\nI did something a little easier - if you click on the tag, it now\ndisplays the contents of the tag in the details pane.  Is that good\nenough?\n\n> to you to implement the part to show my wife's picture, reading\n> \"object-content-type: image/jpeg\" thing ;-).  That one was not a\n> serious request.\n\nWell, Tk can display inline images in text widgets... :)\n\n> I have two more requests to gitk, which are related to each\n> other but not related to the \"tag contents\" one above:\n> \n>  - if \"gitk --all\" slurped not just refs/heads and refs/tags but\n>    everything under refs/* recursively, that would help\n>    visualizing the bisect status.  bisect creates bunch of\n>    commit object names in refs/bisect.\n> \n>  - I have not looked at the code closely enough, but I cannot\n>    find how to re-read references.  I would appreciate it if it\n>    allowed it.  This relates to the bisect status visualization,\n>    where the set of references changes _after_ the user started\n>    gitk.\n\nI implemented these two.  There is now a \"Reread references\" button in\nthe File menu.  References other than tags and heads get displayed in\na light blue box.\n\nHmmm... now I suppose we want a way to use gitk to drive the git\nbisection process... :)\n\nPaul.\n"},{"id":"7580","messageId":"Pine.LNX.4.63.0508200142420.11629@wgmdd8.biozentrum.uni-wuerzburg.de","threadId":"1368","inReplyTo":"17158.27011.7426.577686@cargo.ozlabs.ibm.com","subject":"Re: gitweb \"tag\" display","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2005-08-19T23:43:11Z","receivedAt":"2005-08-19T23:43:11Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Sat, 20 Aug 2005, Paul Mackerras wrote:\n\n> Hmmm... now I suppose we want a way to use gitk to drive the git\n> bisection process... :)\n\nSsshh! Let sleeping dogs lie! ;-)\n\nCiao,\nDscho\n"},{"id":"7597","messageId":"7v7jegl914.fsf@assigned-by-dhcp.cox.net","threadId":"1368","inReplyTo":"17158.27011.7426.577686@cargo.ozlabs.ibm.com","subject":"Re: gitweb \"tag\" display","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-08-20T19:09:59Z","receivedAt":"2005-08-20T19:09:59Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Paul Mackerras <paulus@samba.org> writes:\n\n> I did something a little easier - if you click on the tag, it now\n> displays the contents of the tag in the details pane.  Is that good\n> enough?\n\nLooks very nice, and a lot more sensible than those unsolicited\npopups I hate very much.\n\n> I implemented these two.  There is now a \"Reread references\" button in\n> the File menu.  References other than tags and heads get displayed in\n> a light blue box.\n\nWonderful.\n\n> Hmmm... now I suppose we want a way to use gitk to drive the git\n> bisection process... :)\n\nYes!  That was the direction I was implying.\n"}]}