From 9843c3074dfbf57117565f6b7c93e3e6812857ee Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Tue, 30 Aug 2005 10:57:11 +1000 Subject: [PATCH 1/4] Draw selected graph line thicker and make arrowheads active. --- gitk | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 127 insertions(+), 20 deletions(-) diff --git a/gitk b/gitk index a904bab34c..df86dceba0 100755 --- a/gitk +++ b/gitk @@ -775,6 +775,32 @@ proc bindline {t id} { $canv bind $t "lineclick %x %y $id 1" } +proc drawlines {id xtra} { + global mainline mainlinearrow sidelines lthickness colormap canv + + $canv delete lines.$id + if {[info exists mainline($id)]} { + set t [$canv create line $mainline($id) \ + -width [expr {($xtra + 1) * $lthickness}] \ + -fill $colormap($id) -tags lines.$id \ + -arrow $mainlinearrow($id)] + $canv lower $t + bindline $t $id + } + if {[info exists sidelines($id)]} { + foreach ls $sidelines($id) { + set coords [lindex $ls 0] + set thick [lindex $ls 1] + set arrow [lindex $ls 2] + set t [$canv create line $coords -fill $colormap($id) \ + -width [expr {($thick + $xtra) * $lthickness}] \ + -arrow $arrow -tags lines.$id] + $canv lower $t + bindline $t $id + } + } +} + # level here is an index in displist proc drawcommitline {level} { global parents children nparents displist @@ -823,23 +849,8 @@ proc drawcommitline {level} { if {$mainlinearrow($id) ne "none"} { set mainline($id) [trimdiagstart $mainline($id)] } - set t [$canv create line $mainline($id) \ - -width $lthickness -fill $colormap($id) \ - -arrow $mainlinearrow($id)] - $canv lower $t - bindline $t $id - } - if {[info exists sidelines($id)]} { - foreach ls $sidelines($id) { - set coords [lindex $ls 0] - set thick [lindex $ls 1] - set arrow [lindex $ls 2] - set t [$canv create line $coords -fill $colormap($id) \ - -width [expr {$thick * $lthickness}] -arrow $arrow] - $canv lower $t - bindline $t $id - } } + drawlines $id 0 set orad [expr {$linespc / 3}] set t [$canv create oval [expr $x - $orad] [expr $y1 - $orad] \ [expr $x + $orad - 1] [expr $y1 + $orad - 1] \ @@ -2059,6 +2070,7 @@ proc selectline {l isnew} { global commentend idtags idline linknum $canv delete hover + normalline if {![info exists lineid($l)] || ![info exists linehtag($l)]} return $canv delete secsel set t [eval $canv create rect [$canv bbox $linehtag($l)] -outline {{}} \ @@ -3127,15 +3139,102 @@ proc linehover {} { $canv raise $t } +proc clickisonarrow {id y} { + global mainline mainlinearrow sidelines lthickness + + set thresh [expr {2 * $lthickness + 6}] + if {[info exists mainline($id)]} { + if {$mainlinearrow($id) ne "none"} { + if {abs([lindex $mainline($id) 1] - $y) < $thresh} { + return "up" + } + } + } + if {[info exists sidelines($id)]} { + foreach ls $sidelines($id) { + set coords [lindex $ls 0] + set arrow [lindex $ls 2] + if {$arrow eq "first" || $arrow eq "both"} { + if {abs([lindex $coords 1] - $y) < $thresh} { + return "up" + } + } + if {$arrow eq "last" || $arrow eq "both"} { + if {abs([lindex $coords end] - $y) < $thresh} { + return "down" + } + } + } + } + return {} +} + +proc arrowjump {id dirn y} { + global mainline sidelines canv + + set yt {} + if {$dirn eq "down"} { + if {[info exists mainline($id)]} { + set y1 [lindex $mainline($id) 1] + if {$y1 > $y} { + set yt $y1 + } + } + if {[info exists sidelines($id)]} { + foreach ls $sidelines($id) { + set y1 [lindex $ls 0 1] + if {$y1 > $y && ($yt eq {} || $y1 < $yt)} { + set yt $y1 + } + } + } + } else { + if {[info exists sidelines($id)]} { + foreach ls $sidelines($id) { + set y1 [lindex $ls 0 end] + if {$y1 < $y && ($yt eq {} || $y1 > $yt)} { + set yt $y1 + } + } + } + } + if {$yt eq {}} return + set ymax [lindex [$canv cget -scrollregion] 3] + if {$ymax eq {} || $ymax <= 0} return + set view [$canv yview] + set yspan [expr {[lindex $view 1] - [lindex $view 0]}] + set yfrac [expr {$yt / $ymax - $yspan / 2}] + if {$yfrac < 0} { + set yfrac 0 + } + $canv yview moveto $yfrac +} + proc lineclick {x y id isnew} { - global ctext commitinfo children cflist canv + global ctext commitinfo children cflist canv thickerline unmarkmatches unselectline - if {$isnew} { - addtohistory [list lineclick $x $x $id 0] - } + normalline $canv delete hover + # draw this line thicker than normal + drawlines $id 1 + set thickerline $id + if {$isnew} { + set ymax [lindex [$canv cget -scrollregion] 3] + if {$ymax eq {}} return + set yfrac [lindex [$canv yview] 0] + set y [expr {$y + $yfrac * $ymax}] + } + set dirn [clickisonarrow $id $y] + if {$dirn ne {}} { + arrowjump $id $dirn $y + return + } + + if {$isnew} { + addtohistory [list lineclick $x $y $id 0] + } # fill the details pane with info about this line $ctext conf -state normal $ctext delete 0.0 end @@ -3168,6 +3267,14 @@ proc lineclick {x y id isnew} { $cflist delete 0 end } +proc normalline {} { + global thickerline + if {[info exists thickerline]} { + drawlines $thickerline 0 + unset thickerline + } +} + proc selbyid {id} { global idline if {[info exists idline($id)]} { From cdcb0ed411021cf8a8db047667e5ae18c4378ec0 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 29 Aug 2005 22:36:16 -0700 Subject: [PATCH 2/4] [PATCH] Make "git resolve" less scary When we resolve a merge between two branches, and it removes a file in the current branch, we notify the person doing the resolve with a big nice notice like Removing xyzzy which is all well and good. HOWEVER, we also do this when the file was actually removed in the current branch, and we're merging with another branch that didn't have it removed (or, indeed, if the other branch _did_ have it removed, but the common parent was far enough back that the file still existed in there). And that just doesn't make sense. In that case we're not removing anything: the file didn't exist in the branch we're merging into in the first place. So the message just makes people nervous, and makes no sense. This has been around forever, but I never bothered to do anything about it. Until now. The trivial fix is to only talk about removing files if the file existed in the branch we're merging into, but will not exist in the result. Signed-off-by: Linus Torvalds Signed-off-by: Junio C Hamano --- git-merge-one-file-script | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/git-merge-one-file-script b/git-merge-one-file-script index be64c07286..b791107fd7 100755 --- a/git-merge-one-file-script +++ b/git-merge-one-file-script @@ -21,7 +21,9 @@ case "${1:-.}${2:-.}${3:-.}" in # Deleted in both or deleted in one and unchanged in the other # "$1.." | "$1.$1" | "$1$1.") - echo "Removing $4" + if [ "$2" ]; then + echo "Removing $4" + fi if test -f "$4"; then rm -f -- "$4" fi && From 789d577412f6b470fca990ecf770b28570556df8 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 29 Aug 2005 23:09:22 -0700 Subject: [PATCH 3/4] Make sure howto/*.html is built as well. Signed-off-by: Junio C Hamano --- Documentation/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/Makefile b/Documentation/Makefile index cc89174860..aba35d7d53 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -5,6 +5,8 @@ DOC_HTML=$(patsubst %.txt,%.html,$(MAN1_TXT) $(MAN7_TXT)) DOC_HTML += glossary.html DOC_HTML += tutorial.html DOC_HTML += howto-index.html +DOC_HTML += howto/revert-branch-rebase.html + DOC_MAN1=$(patsubst %.txt,%.1,$(MAN1_TXT)) DOC_MAN7=$(patsubst %.txt,%.7,$(MAN7_TXT)) @@ -74,8 +76,6 @@ howto-index.html: howto-index.txt WEBDOC_DEST = /pub/software/scm/git/docs -DOC_HTML += howto/revert-branch-rebase.html - $(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt rm -f $@+ $@ sed -e '1,/^$$/d' $? | asciidoc -b xhtml11 - >$@+ From 61f01a5b773915402da37a34e706db56fe90b776 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 30 Aug 2005 01:08:24 -0700 Subject: [PATCH 4/4] parse-remote: trivial fix to allow refs/{heads,tags}/ spelled easier. Earlier we always prefixed refs/heads to the token given to "git fetch" (and "git pull") as refspec. This was a mistake. Allow them to be spelled like "master:refs/tags/paulus" to mean "I want to fetch the master there and store it as my local "paulus" tag. Signed-off-by: Junio C Hamano --- git-parse-remote-script | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/git-parse-remote-script b/git-parse-remote-script index cf37884256..43b4368034 100755 --- a/git-parse-remote-script +++ b/git-parse-remote-script @@ -81,10 +81,14 @@ canon_refs_list_for_fetch () { local=$(expr "$ref" : '[^:]*:\(.*\)') case "$remote" in '') remote=HEAD ;; + refs/heads/* | refs/tags/*) ;; + heads/* | tags/* ) remote="refs/$remote" ;; *) remote="refs/heads/$remote" ;; esac case "$local" in '') local= ;; + refs/heads/* | refs/tags/*) ;; + heads/* | tags/* ) local="refs/$local" ;; *) local="refs/heads/$local" ;; esac echo "${force}${remote}:${local}"