From 681c3290e379e61f9dd762039f140296434d1d9f Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Mon, 16 Mar 2009 10:24:40 +0000 Subject: gitk: Handle blobs containing a DOS end-of-file marker If a patchset contains an EOF marker (Ctrl-Z) the blob diff terminates at that point. This permits gitk to ignore the eof and continue to display any subsequent blobs and also displays a sensible representation of the eof char. Signed-off-by: Pat Thoyts Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index 1773ae6..d7de27e 100755 --- a/gitk +++ b/gitk @@ -7216,7 +7216,7 @@ proc getblobdiffs {ids} { set diffnparents 0 set diffinhdr 0 set diffencoding [get_path_encoding {}] - fconfigure $bdf -blocking 0 -encoding binary + fconfigure $bdf -blocking 0 -encoding binary -eofchar {} set blobdifffd($ids) $bdf filerun $bdf [list getblobdiffline $bdf $diffids] } @@ -7367,7 +7367,8 @@ proc getblobdiffline {bdf ids} { $ctext insert end "$line\n" filesep } else { - set line [encoding convertfrom $diffencoding $line] + set line [string map {\x1A ^Z} \ + [encoding convertfrom $diffencoding $line]] # parse the prefix - one ' ', '-' or '+' for each parent set prefix [string range $line 0 [expr {$diffnparents - 1}]] set tag [expr {$diffnparents > 1? "m": "d"}] -- cgit v0.10.2-6-g49f6 From 37871b735aa427c440590966d4cacaf219a21292 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Thu, 19 Mar 2009 01:54:17 -0700 Subject: gitk: Provide a window icon if possible Try to set up a 16x16 Tk photo image (based on the git logo) and use it as window icon. The code is wrapped in a catch because it may fail in earlier Tcl/Tk 8.4 releases that don't provide 'wm iconphoto'. Signed-off-by: Giuseppe Bilotta Signed-off-by: Stephen Boyd Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index d7de27e..82bc2af 100755 --- a/gitk +++ b/gitk @@ -10884,6 +10884,26 @@ set lserial 0 set isworktree [expr {[exec git rev-parse --is-inside-work-tree] == "true"}] setcoords makewindow +catch { + image create photo gitlogo -width 16 -height 16 + + image create photo gitlogominus -width 4 -height 2 + gitlogominus put #C00000 -to 0 0 4 2 + gitlogo copy gitlogominus -to 1 5 + gitlogo copy gitlogominus -to 6 5 + gitlogo copy gitlogominus -to 11 5 + image delete gitlogominus + + image create photo gitlogoplus -width 4 -height 4 + gitlogoplus put #008000 -to 1 0 3 4 + gitlogoplus put #008000 -to 0 1 4 3 + gitlogo copy gitlogoplus -to 1 9 + gitlogo copy gitlogoplus -to 6 9 + gitlogo copy gitlogoplus -to 11 9 + image delete gitlogoplus + + wm iconphoto . -default gitlogo +} # wait for the window to become visible tkwait visibility . wm title . "[file tail $argv0]: [file tail [pwd]]" -- cgit v0.10.2-6-g49f6 From d38d7d4954601966fe86573bf698c5bd4f37cb64 Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Thu, 19 Mar 2009 01:54:18 -0700 Subject: gitk: Provide a 32x32 window icon based on the git logo This simply expands the 16x16 logo image to 32x32 and provides it as an alternative icon image. Signed-off-by: Stephen Boyd Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index 82bc2af..0dcfbf1 100755 --- a/gitk +++ b/gitk @@ -10902,7 +10902,10 @@ catch { gitlogo copy gitlogoplus -to 11 9 image delete gitlogoplus - wm iconphoto . -default gitlogo + image create photo gitlogo32 -width 32 -height 32 + gitlogo32 copy gitlogo -zoom 2 2 + + wm iconphoto . -default gitlogo gitlogo32 } # wait for the window to become visible tkwait visibility . -- cgit v0.10.2-6-g49f6 From 5fdcbb13904e6447cad9611b9c75943bbbcc7db4 Mon Sep 17 00:00:00 2001 From: "Daniel A. Steffen" Date: Mon, 23 Mar 2009 12:17:38 +0100 Subject: gitk: Fixes for Mac OS X TkAqua - middle button is B3 on TkAqua - add horizontal mousehweel scrolling - nicer default fonts - use OSX-specific extdifftool - remove quit menu item, call doquit on quit event - move about & preferences menu items into apple menu - don't set menu font Signed-off-by: Daniel A. Steffen Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index 0dcfbf1..a7294a1 100755 --- a/gitk +++ b/gitk @@ -1830,7 +1830,9 @@ proc setoptions {} { option add *Button.font uifont startupFile option add *Checkbutton.font uifont startupFile option add *Radiobutton.font uifont startupFile - option add *Menu.font uifont startupFile + if {[tk windowingsystem] ne "aqua"} { + option add *Menu.font uifont startupFile + } option add *Menubutton.font uifont startupFile option add *Label.font uifont startupFile option add *Message.font uifont startupFile @@ -1910,8 +1912,8 @@ proc makewindow {} { # The "mc" arguments here are purely so that xgettext # sees the following string as needing to be translated - makemenu .bar { - {mc "File" cascade { + set file { + mc "File" cascade { {mc "Update" command updatecommits -accelerator F5} {mc "Reload" command reloadcommits -accelerator Meta1-F5} {mc "Reread references" command rereadrefs} @@ -1921,21 +1923,41 @@ proc makewindow {} { {xx "" separator} {mc "Quit" command doquit -accelerator Meta1-Q} }} - {mc "Edit" cascade { + set edit { + mc "Edit" cascade { {mc "Preferences" command doprefs} }} - {mc "View" cascade { + set view { + mc "View" cascade { {mc "New view..." command {newview 0} -accelerator Shift-F4} {mc "Edit view..." command editview -state disabled -accelerator F4} {mc "Delete view" command delview -state disabled} {xx "" separator} {mc "All files" radiobutton {selectedview 0} -command {showview 0}} }} - {mc "Help" cascade { + if {[tk windowingsystem] ne "aqua"} { + set help { + mc "Help" cascade { + {mc "About gitk" command about} + {mc "Key bindings" command keys} + }} + set bar [list $file $edit $view $help] + } else { + proc ::tk::mac::ShowPreferences {} {doprefs} + proc ::tk::mac::Quit {} {doquit} + lset file end [lreplace [lindex $file end] end-1 end] + set apple { + xx "Apple" cascade { {mc "About gitk" command about} + {xx "" separator} + }} + set help { + mc "Help" cascade { {mc "Key bindings" command keys} }} + set bar [list $apple $file $view $help] } + makemenu .bar $bar . configure -menu .bar # the gui has upper and lower half, parts of a paned window. @@ -2231,8 +2253,10 @@ proc makewindow {} { if {[tk windowingsystem] eq {aqua}} { set M1B M1 + set ::BM "3" } else { set M1B Control + set ::BM "2" } bind .pwbottom {resizecdetpanes %W %w} @@ -2250,10 +2274,14 @@ proc makewindow {} { set delta [expr {- (%D)}] allcanvs yview scroll $delta units } + bindall { + set delta [expr {- (%D)}] + $canv xview scroll $delta units + } } } - bindall <2> "canvscan mark %W %x %y" - bindall "canvscan dragto %W %x %y" + bindall <$::BM> "canvscan mark %W %x %y" + bindall "canvscan dragto %W %x %y" bindkey selfirstline bindkey sellastline bind . "selnextline -1" @@ -10690,9 +10718,15 @@ catch { } } -set mainfont {Helvetica 9} -set textfont {Courier 9} -set uifont {Helvetica 9 bold} +if {[tk windowingsystem] eq "aqua"} { + set mainfont {{Lucida Grande} 9} + set textfont {Monaco 9} + set uifont {{Lucida Grande} 9 bold} +} else { + set mainfont {Helvetica 9} + set textfont {Courier 9} + set uifont {Helvetica 9 bold} +} set tabstop 8 set findmergefiles 0 set maxgraphpct 50 @@ -10713,7 +10747,11 @@ set datetimeformat "%Y-%m-%d %H:%M:%S" set autoselect 1 set perfile_attrs 0 -set extdifftool "meld" +if {[tk windowingsystem] eq "aqua"} { + set extdifftool "opendiff" +} else { + set extdifftool "meld" +} set colors {green red blue magenta darkgrey brown orange} set bgcolor white -- cgit v0.10.2-6-g49f6 From b9fdba7ff87d2e032df00508d06e586c17ea8216 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Thu, 9 Apr 2009 09:34:46 +1000 Subject: gitk: Add a way to mark a commit, plus a "find descendant" command This adds a context-menu command to put a mark on this commit. There is at most one marked commit at any time, and it is indicated by a box drawn around the headline. Once a commit is marked, two other context-menu commands become available: one to select the marked commit, and another to find the closest common descendant of this commit and the marked commit. The "find common descendant" command uses the displayed parent/child relationships (i.e. the rewritten parent pointers produced by git log), not the real parent/child relationships. Currently the UI will be unresponsive while gitk is working out the nearest common descendant; this should be improved in future. Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index a7294a1..628f6e5 100755 --- a/gitk +++ b/gitk @@ -2359,6 +2359,9 @@ proc makewindow {} { {mc "Create new branch" command mkbranch} {mc "Cherry-pick this commit" command cherrypick} {mc "Reset HEAD branch to here" command resethead} + {mc "Mark this commit" command markhere} + {mc "Return to mark" command gotomark} + {mc "Find descendant of this and mark" command find_common_desc} } $rowctxmenu configure -tearoff 0 @@ -4074,7 +4077,7 @@ proc ishighlighted {id} { } proc bolden {id font} { - global canv linehtag currentid boldids need_redisplay + global canv linehtag currentid boldids need_redisplay markedid # need_redisplay = 1 means the display is stale and about to be redrawn if {$need_redisplay} return @@ -4087,6 +4090,9 @@ proc bolden {id font} { -fill [$canv cget -selectbackground]] $canv lower $t } + if {[info exists markedid] && $id eq $markedid} { + make_idmark $id + } } proc bolden_name {id font} { @@ -5591,7 +5597,7 @@ proc drawcmittext {id row col} { global cmitlisted commitinfo rowidlist parentlist global rowtextx idpos idtags idheads idotherrefs global linehtag linentag linedtag selectedline - global canvxmax boldids boldnameids fgcolor + global canvxmax boldids boldnameids fgcolor markedid global mainheadid nullid nullid2 circleitem circlecolors ctxbut # listed is 0 for boundary, 1 for normal, 2 for negative, 3 for left, 4 for right @@ -5673,6 +5679,9 @@ proc drawcmittext {id row col} { if {$selectedline == $row} { make_secsel $id } + if {[info exists markedid] && $markedid eq $id} { + make_idmark $id + } set xr [expr {$xt + [font measure $font $headline]}] if {$xr > $canvxmax} { set canvxmax $xr @@ -6614,6 +6623,16 @@ proc make_secsel {id} { $canv3 lower $t } +proc make_idmark {id} { + global linehtag canv fgcolor + + if {![info exists linehtag($id)]} return + $canv delete markid + set t [eval $canv create rect [$canv bbox $linehtag($id)] \ + -tags markid -outline $fgcolor] + $canv raise $t +} + proc selectline {l isnew {desired_loc {}}} { global canv ctext commitinfo selectedline global canvy0 linespc parents children curview @@ -7999,7 +8018,7 @@ proc mstime {} { proc rowmenu {x y id} { global rowctxmenu selectedline rowmenuid curview - global nullid nullid2 fakerowmenu mainhead + global nullid nullid2 fakerowmenu mainhead markedid stopfinding set rowmenuid $id @@ -8015,6 +8034,13 @@ proc rowmenu {x y id} { } else { $menu entryconfigure 7 -label [mc "Detached head: can't reset" $mainhead] -state disabled } + if {[info exists markedid] && $markedid ne $id} { + $menu entryconfigure 9 -state normal + $menu entryconfigure 10 -state normal + } else { + $menu entryconfigure 9 -state disabled + $menu entryconfigure 10 -state disabled + } } else { set menu $fakerowmenu } @@ -8024,6 +8050,59 @@ proc rowmenu {x y id} { tk_popup $menu $x $y } +proc markhere {} { + global rowmenuid markedid canv + + set markedid $rowmenuid + make_idmark $markedid +} + +proc gotomark {} { + global markedid + + if {[info exists markedid]} { + selbyid $markedid + } +} + +proc replace_by_kids {l r} { + global curview children + + set id [commitonrow $r] + set l [lreplace $l 0 0] + foreach kid $children($curview,$id) { + lappend l [rowofcommit $kid] + } + return [lsort -integer -decreasing -unique $l] +} + +proc find_common_desc {} { + global markedid rowmenuid curview children + + if {![info exists markedid]} return + if {![commitinview $markedid $curview] || + ![commitinview $rowmenuid $curview]} return + #set t1 [clock clicks -milliseconds] + set l1 [list [rowofcommit $markedid]] + set l2 [list [rowofcommit $rowmenuid]] + while 1 { + set r1 [lindex $l1 0] + set r2 [lindex $l2 0] + if {$r1 eq {} || $r2 eq {}} break + if {$r1 == $r2} { + selectline $r1 1 + break + } + if {$r1 > $r2} { + set l1 [replace_by_kids $l1 $r1] + } else { + set l2 [replace_by_kids $l2 $r2] + } + } + #set t2 [clock clicks -milliseconds] + #puts "took [expr {$t2-$t1}]ms" +} + proc diffvssel {dirn} { global rowmenuid selectedline @@ -8218,7 +8297,7 @@ proc domktag {} { } proc redrawtags {id} { - global canv linehtag idpos currentid curview cmitlisted + global canv linehtag idpos currentid curview cmitlisted markedid global canvxmax iddrawn circleitem mainheadid circlecolors if {![commitinview $id $curview]} return @@ -8243,6 +8322,9 @@ proc redrawtags {id} { if {[info exists currentid] && $currentid == $id} { make_secsel $id } + if {[info exists markedid] && $markedid eq $id} { + make_idmark $id + } } proc mktagcan {} { @@ -10269,6 +10351,7 @@ proc setfg {c} { } allcanvs itemconf text -fill $c $canv itemconf circle -outline $c + $canv itemconf markid -outline $c } proc prefscan {} { -- cgit v0.10.2-6-g49f6 From 010509f2de86d14c1da26eeafffb0864269c1232 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Thu, 9 Apr 2009 22:10:20 +1000 Subject: gitk: Add a command to compare two strings of commits This adds a row context menu command to compare this commit and its descendants with the marked commit and its descendants. The results are shown in the bottom-left pane. Commits are compared by checking whether their headlines are the same and their patches have the same patch ID as generated by git patch-id. Merges are ignored and skipped over (as long as they have one descendant). If two commits have the same patch ID then the process will continue and compare their descendants, as long as they both have exactly one descendant. If either commit has 0 or 2 or more descendants, the comparison stops there. There is currently a limit of 100 comparisons. This can be useful for checking whether one string of commits is just a rebased version of another string of commits. Mark the end of one string (i.e. the oldest commit in the string) and invoke "Compare with marked commit" on the end of the other string. As this is implemented, the UI will be unresponsive while the results are being generated. This should be fixed. Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index 628f6e5..bdd1223 100755 --- a/gitk +++ b/gitk @@ -2362,6 +2362,7 @@ proc makewindow {} { {mc "Mark this commit" command markhere} {mc "Return to mark" command gotomark} {mc "Find descendant of this and mark" command find_common_desc} + {mc "Compare with marked commit" command compare_commits} } $rowctxmenu configure -tearoff 0 @@ -8037,9 +8038,11 @@ proc rowmenu {x y id} { if {[info exists markedid] && $markedid ne $id} { $menu entryconfigure 9 -state normal $menu entryconfigure 10 -state normal + $menu entryconfigure 11 -state normal } else { $menu entryconfigure 9 -state disabled $menu entryconfigure 10 -state disabled + $menu entryconfigure 11 -state disabled } } else { set menu $fakerowmenu @@ -8103,6 +8106,92 @@ proc find_common_desc {} { #puts "took [expr {$t2-$t1}]ms" } +proc compare_commits {} { + global markedid rowmenuid curview children + + if {![info exists markedid]} return + if {![commitinview $markedid $curview]} return + addtohistory [list do_cmp_commits $markedid $rowmenuid] + do_cmp_commits $markedid $rowmenuid +} + +proc getpatchid {id} { + global patchids + + if {![info exists patchids($id)]} { + set x [exec git diff-tree -p --root $id | git patch-id] + set patchids($id) [lindex $x 0] + } + return $patchids($id) +} + +proc do_cmp_commits {a b} { + global ctext curview parents children patchids commitinfo + + $ctext conf -state normal + clear_ctext + init_flist {} + for {set i 0} {$i < 100} {incr i} { + set shorta [string range $a 0 7] + set shortb [string range $b 0 7] + set skipa 0 + set skipb 0 + if {[llength $parents($curview,$a)] > 1} { + appendwithlinks [mc "Skipping merge commit %s\n" $shorta] {} + set skipa 1 + } else { + set patcha [getpatchid $a] + } + if {[llength $parents($curview,$b)] > 1} { + appendwithlinks [mc "Skipping merge commit %s\n" $shortb] {} + set skipb 1 + } else { + set patchb [getpatchid $b] + } + if {!$skipa && !$skipb} { + set heada [lindex $commitinfo($a) 0] + set headb [lindex $commitinfo($b) 0] + if {$patcha eq $patchb} { + if {$heada eq $headb} { + appendwithlinks [mc "Commit %s == %s %s\n" \ + $shorta $shortb $heada] {} + } else { + appendwithlinks [mc "Commit %s %s\n" $shorta $heada] {} + appendwithlinks [mc " is the same patch as\n"] {} + appendwithlinks [mc " %s %s\n" $shortb $headb] {} + } + set skipa 1 + set skipb 1 + } else { + $ctext insert end "\n" + appendwithlinks [mc "Commit %s %s\n" $shorta $heada] {} + appendwithlinks [mc " differs from\n"] {} + appendwithlinks [mc " %s %s\n" $shortb $headb] {} + appendwithlinks [mc "- stopping\n"] + break + } + } + if {$skipa} { + if {[llength $children($curview,$a)] != 1} { + $ctext insert end "\n" + appendwithlinks [mc "Commit %s has %s children - stopping\n" \ + $shorta [llength $children($curview,$a)]] {} + break + } + set a [lindex $children($curview,$a) 0] + } + if {$skipb} { + if {[llength $children($curview,$b)] != 1} { + appendwithlinks [mc "Commit %s has %s children - stopping\n" \ + $shortb [llength $children($curview,$b)]] {} + break + } + set b [lindex $children($curview,$b) 0] + } + } + $ctext conf -state disabled +} + proc diffvssel {dirn} { global rowmenuid selectedline -- cgit v0.10.2-6-g49f6 From 9832e4f29b82e0072f40ef73279da3cd09e4a75c Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Mon, 23 Mar 2009 21:37:51 +1100 Subject: gitk: Make .gitk a hidden file under windows This sets the hidden attribute on the ~/.gitk file so it doesn't appear in the windows user profile. Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index bdd1223..0bc2f30 100755 --- a/gitk +++ b/gitk @@ -2519,6 +2519,9 @@ proc savestuff {w} { if {![winfo viewable .]} return catch { set f [open "~/.gitk-new" w] + if {$::tcl_platform(platform) eq {windows}} { + file attributes "~/.gitk-new" -hidden true + } puts $f [list set mainfont $mainfont] puts $f [list set textfont $textfont] puts $f [list set uifont $uifont] -- cgit v0.10.2-6-g49f6 From 84b4b832eb39aaf85f9363405123afbaeb1ecb49 Mon Sep 17 00:00:00 2001 From: Christian Stimming Date: Thu, 26 Mar 2009 21:13:45 +0100 Subject: gitk: Mark forgotten string for translation Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index 0bc2f30..d151ddb 100755 --- a/gitk +++ b/gitk @@ -6540,7 +6540,7 @@ proc appendrefs {pos ids var} { } } if {[llength $tags] > $maxrefs} { - $ctext insert $pos "many ([llength $tags])" + $ctext insert $pos "[mc "many"] ([llength $tags])" } else { set tags [lsort -index 0 -decreasing $tags] set sep {} -- cgit v0.10.2-6-g49f6 From b56e0a9afd63a54e2c51fba56a79b136a4e978f3 Mon Sep 17 00:00:00 2001 From: Michele Ballabio Date: Mon, 30 Mar 2009 21:17:25 +0200 Subject: gitk: Mark some more strings for translation Signed-off-by: Michele Ballabio Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index d151ddb..afb2241 100755 --- a/gitk +++ b/gitk @@ -521,7 +521,7 @@ proc updatecommits {} { incr viewactive($view) set viewcomplete($view) 0 reset_pending_select {} - nowbusy $view "Reading" + nowbusy $view [mc "Reading"] if {$showneartags} { getallcommits } @@ -3772,7 +3772,7 @@ proc editview {} { set newviewopts($curview,perm) $viewperm($curview) set newviewopts($curview,cmd) $viewargscmd($curview) decode_view_opts $curview $viewargs($curview) - vieweditor $top $curview "Gitk: edit view $viewname($curview)" + vieweditor $top $curview "[mc "Gitk: edit view"] $viewname($curview)" } proc vieweditor {top n title} { @@ -10400,7 +10400,7 @@ proc doprefs {} { proc choose_extdiff {} { global extdifftool - set prog [tk_getOpenFile -title "External diff tool" -multiple false] + set prog [tk_getOpenFile -title [mc "External diff tool"] -multiple false] if {$prog ne {}} { set extdifftool $prog } -- cgit v0.10.2-6-g49f6 From b6e192dbf73397da0f76252b7e39770150a8763f Mon Sep 17 00:00:00 2001 From: Michele Ballabio Date: Mon, 30 Mar 2009 14:55:21 +0200 Subject: gitk: Map KP_Divide to focus the search box Commit 97bed034 changed the behavior of the '/' key on the keyboard, but the '/' on the keypad was left unused. They now both do the same thing. Signed-off-by: Michele Ballabio Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index afb2241..a65d961 100755 --- a/gitk +++ b/gitk @@ -2313,6 +2313,7 @@ proc makewindow {} { bindkey d "$ctext yview scroll 18 units" bindkey u "$ctext yview scroll -18 units" bindkey / {focus $fstring} + bindkey {focus $fstring} bindkey {dofind 1 1} bindkey ? {dofind -1 1} bindkey f nextfile -- cgit v0.10.2-6-g49f6 From c876dbadc2d44386962296f09a060c3ae69e2029 Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Tue, 14 Apr 2009 22:09:53 +0100 Subject: gitk: Remember and restore the window state with the geometry This records the window state in ~/.gitk. On startup, if the gitk window was previously maximized (zoomed), then we restore that state. Signed-off-by: Pat Thoyts Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index a65d961..045e4ab 100755 --- a/gitk +++ b/gitk @@ -2251,6 +2251,10 @@ proc makewindow {} { } } + if {[info exists geometry(state)] && $geometry(state) eq "zoomed"} { + wm state . $geometry(state) + } + if {[tk windowingsystem] eq {aqua}} { set M1B M1 set ::BM "3" @@ -2548,6 +2552,7 @@ proc savestuff {w} { puts $f [list set perfile_attrs $perfile_attrs] puts $f "set geometry(main) [wm geometry .]" + puts $f "set geometry(state) [wm state .]" puts $f "set geometry(topwidth) [winfo width .tf]" puts $f "set geometry(topheight) [winfo height .tf]" puts $f "set geometry(pwsash0) \"[.tf.histframe.pwclist sash coord 0]\"" -- cgit v0.10.2-6-g49f6 From b575b2f1f420bf82557beab0f4ec12e5aa832bea Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Wed, 15 Apr 2009 16:54:19 +0100 Subject: gitk: Handle external diff tool with spaces in the path This fixes the launching of external diff to handle a diff tool that has spaces in the path. This ensures a correctly formed tcl list is passed to the open command with a single pipe character prefixing the list (as per the tcl manual page for open). The specific fault observed was that selecting WinMerge as the diff tool from the default installed location in Program Files failed to be launched from the context menu. Signed-off-by: Pat Thoyts Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index 045e4ab..488286f 100755 --- a/gitk +++ b/gitk @@ -3245,9 +3245,8 @@ proc external_diff {} { set difftofile [external_diff_get_one_file $diffidto $flist_menu_file $diffdir] if {$difffromfile ne {} && $difftofile ne {}} { - set cmd [concat | [shellsplit $extdifftool] \ - [list $difffromfile $difftofile]] - if {[catch {set fl [open $cmd r]} err]} { + set cmd [list [shellsplit $extdifftool] $difffromfile $difftofile] + if {[catch {set fl [open |$cmd r]} err]} { file delete -force $diffdir error_popup "$extdifftool: [mc "command failed:"] $err" } else { -- cgit v0.10.2-6-g49f6 From 478afad697e58433f34d69b5fe08511405f23506 Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Wed, 15 Apr 2009 17:14:03 +0100 Subject: gitk: Avoid crash if closed while reading references As recorded in msysGit issue 125, if the user closes gitk while it reports itself as still reading references then Tk will crash in the geometry management code. This has been fixed for Tk 8.5.7 and above. This patch avoids the problem by flushing outstanding geometry events before calling the readrefs procedure. See also http://code.google.com/p/msysgit/issues/detail?id=125 Signed-off-by: Pat Thoyts Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index 488286f..dca1741 100755 --- a/gitk +++ b/gitk @@ -11128,6 +11128,7 @@ catch { # wait for the window to become visible tkwait visibility . wm title . "[file tail $argv0]: [file tail [pwd]]" +update readrefs if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} { -- cgit v0.10.2-6-g49f6 From 6f63fc18b6197f9a582fbfe23a5c7938fe593951 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Tue, 21 Apr 2009 22:22:31 +1000 Subject: gitk: Fix compare-commits function when we have local changes This fixes a bug in the compare-commits function added in commit 010509f2 ("gitk: Add a command to compare two strings of commits") where gitk would show an error dialog if the comparison of commits got to a fake commit (one showing local changes). It extends getpatchid to handle these fake commits by using [diffcmd] to get the git diff command variant to use, and also handles the situation where an error occurs. Now that we can have the fake commit IDs showing up, which are 00..00 and 00..01, the short ID is ambiguous. To make sure the links point to the right commit, this adds a new [appendshortlink] procedure which takes the full link destination, and uses that rather than appendwithlinks. Signed-off-by: Paul Mackerras diff --git a/gitk b/gitk index dca1741..1a7887b 100755 --- a/gitk +++ b/gitk @@ -6489,6 +6489,17 @@ proc setlink {id lk} { } } +proc appendshortlink {id {pre {}} {post {}}} { + global ctext linknum + + $ctext insert end $pre + $ctext tag delete link$linknum + $ctext insert end [string range $id 0 7] link$linknum + $ctext insert end $post + setlink $id link$linknum + incr linknum +} + proc makelink {id} { global pendinglinks @@ -8127,8 +8138,15 @@ proc getpatchid {id} { global patchids if {![info exists patchids($id)]} { - set x [exec git diff-tree -p --root $id | git patch-id] - set patchids($id) [lindex $x 0] + set cmd [diffcmd [list $id] {-p --root}] + # trim off the initial "|" + set cmd [lrange $cmd 1 end] + if {[catch { + set x [eval exec $cmd | git patch-id] + set patchids($id) [lindex $x 0] + }]} { + set patchids($id) "error" + } } return $patchids($id) } @@ -8140,18 +8158,16 @@ proc do_cmp_commits {a b} { clear_ctext init_flist {} for {set i 0} {$i < 100} {incr i} { - set shorta [string range $a 0 7] - set shortb [string range $b 0 7] set skipa 0 set skipb 0 if {[llength $parents($curview,$a)] > 1} { - appendwithlinks [mc "Skipping merge commit %s\n" $shorta] {} + appendshortlink $a [mc "Skipping merge commit "] "\n" set skipa 1 } else { set patcha [getpatchid $a] } if {[llength $parents($curview,$b)] > 1} { - appendwithlinks [mc "Skipping merge commit %s\n" $shortb] {} + appendshortlink $b [mc "Skipping merge commit "] "\n" set skipb 1 } else { set patchb [getpatchid $b] @@ -8159,39 +8175,51 @@ proc do_cmp_commits {a b} { if {!$skipa && !$skipb} { set heada [lindex $commitinfo($a) 0] set headb [lindex $commitinfo($b) 0] + if {$patcha eq "error"} { + appendshortlink $a [mc "Error getting patch ID for "] \ + [mc " - stopping\n"] + break + } + if {$patchb eq "error"} { + appendshortlink $b [mc "Error getting patch ID for "] \ + [mc " - stopping\n"] + break + } if {$patcha eq $patchb} { if {$heada eq $headb} { - appendwithlinks [mc "Commit %s == %s %s\n" \ - $shorta $shortb $heada] {} + appendshortlink $a [mc "Commit "] + appendshortlink $b " == " " $heada\n" } else { - appendwithlinks [mc "Commit %s %s\n" $shorta $heada] {} - appendwithlinks [mc " is the same patch as\n"] {} - appendwithlinks [mc " %s %s\n" $shortb $headb] {} + appendshortlink $a [mc "Commit "] " $heada\n" + appendshortlink $b [mc " is the same patch as\n "] \ + " $headb\n" } set skipa 1 set skipb 1 } else { $ctext insert end "\n" - appendwithlinks [mc "Commit %s %s\n" $shorta $heada] {} - appendwithlinks [mc " differs from\n"] {} - appendwithlinks [mc " %s %s\n" $shortb $headb] {} - appendwithlinks [mc "- stopping\n"] + appendshortlink $a [mc "Commit "] " $heada\n" + appendshortlink $b [mc " differs from\n "] \ + " $headb\n" + $ctext insert end [mc "- stopping\n"] break } } if {$skipa} { if {[llength $children($curview,$a)] != 1} { $ctext insert end "\n" - appendwithlinks [mc "Commit %s has %s children - stopping\n" \ - $shorta [llength $children($curview,$a)]] {} + appendshortlink $a [mc "Commit "] \ + [mc " has %s children - stopping\n" \ + [llength $children($curview,$a)]] break } set a [lindex $children($curview,$a) 0] } if {$skipb} { if {[llength $children($curview,$b)] != 1} { - appendwithlinks [mc "Commit %s has %s children - stopping\n" \ - $shortb [llength $children($curview,$b)]] {} + appendshortlink $b [mc "Commit "] \ + [mc " has %s children - stopping\n" \ + [llength $children($curview,$b)]] break } set b [lindex $children($curview,$b) 0] -- cgit v0.10.2-6-g49f6 From ad7ef5b88d5d8ce4434a7df7aa658b451867eec3 Mon Sep 17 00:00:00 2001 From: Alex Riesen Date: Mon, 27 Apr 2009 20:04:27 +0200 Subject: gitk: Add Russian translation Thanks go to Dmitry Potapov for proofreading and suggested translation of the word 'merge'. Signed-off-by: Alex Riesen Signed-off-by: Paul Mackerras diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..704eba8 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,1085 @@ +# +# Translation of gitk to Russian. +# +msgid "" +msgstr "" +"Project-Id-Version: gitk\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-04-24 16:00+0200\n" +"PO-Revision-Date: 2009-04-24 16:00+0200\n" +"Last-Translator: Alex Riesen \n" +"Language-Team: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: gitk:113 +msgid "Couldn't get list of unmerged files:" +msgstr "" +"Невозможно получить список файлов незавершённой операции слияния:" + +#: gitk:268 +msgid "Error parsing revisions:" +msgstr "Ошибка в идентификаторе версии:" + +#: gitk:323 +msgid "Error executing --argscmd command:" +msgstr "Ошибка выполнения команды заданой --argscmd:" + +#: gitk:336 +msgid "No files selected: --merge specified but no files are unmerged." +msgstr "" +"Файлы не выбраны: указан --merge, но не было найдено ни одного файла " +"где эта операция должна быть завершена." + +#: gitk:339 +msgid "" +"No files selected: --merge specified but no unmerged files are within file " +"limit." +msgstr "" +"Файлы не выбраны: указан --merge, но в рамках указаного " +"ограничения на имена файлов нет ни одного " +"где эта операция должна быть завершена." + +#: gitk:361 gitk:508 +msgid "Error executing git log:" +msgstr "Ошибка запуска git log:" + +#: gitk:379 +msgid "Reading" +msgstr "Чтение" + +#: gitk:439 gitk:4021 +msgid "Reading commits..." +msgstr "Чтение версий..." + +#: gitk:442 gitk:1560 gitk:4024 +msgid "No commits selected" +msgstr "Ничего не выбрано" + +#: gitk:1436 +msgid "Can't parse git log output:" +msgstr "Ошибка обработки вывода команды git log:" + +#: gitk:1656 +msgid "No commit information available" +msgstr "Нет информации о состоянии" + +#: gitk:1791 gitk:1815 gitk:3814 gitk:8478 gitk:10014 gitk:10186 +msgid "OK" +msgstr "Ok" + +#: gitk:1817 gitk:3816 gitk:8078 gitk:8152 gitk:8259 gitk:8308 gitk:8480 +#: gitk:10015 gitk:10187 +msgid "Cancel" +msgstr "Отмена" + +#: gitk:1915 +msgid "Update" +msgstr "Обновить" + +#: gitk:1916 +msgid "Reload" +msgstr "Перечитать" + +#: gitk:1917 +msgid "Reread references" +msgstr "Обновить список ссылок" + +#: gitk:1918 +msgid "List references" +msgstr "Список ссылок" + +#: gitk:1920 +msgid "Start git gui" +msgstr "Запустить git gui" + +#: gitk:1922 +msgid "Quit" +msgstr "Завершить" + +#: gitk:1914 +msgid "File" +msgstr "Файл" + +#: gitk:1925 +msgid "Preferences" +msgstr "Настройки" + +#: gitk:1924 +msgid "Edit" +msgstr "Редактировать" + +#: gitk:1928 +msgid "New view..." +msgstr "Новое представление..." + +#: gitk:1929 +msgid "Edit view..." +msgstr "Редактировать представление..." + +#: gitk:1930 +msgid "Delete view" +msgstr "Удалить представление" + +#: gitk:1932 +msgid "All files" +msgstr "Все файлы" + +#: gitk:1927 gitk:3626 +msgid "View" +msgstr "Представление" + +#: gitk:1935 gitk:2609 +msgid "About gitk" +msgstr "О gitk" + +#: gitk:1936 +msgid "Key bindings" +msgstr "Назначения клавиатуры" + +#: gitk:1934 +msgid "Help" +msgstr "Подсказка" + +#: gitk:1994 +msgid "SHA1 ID: " +msgstr "SHA1:" + +#: gitk:2025 +msgid "Row" +msgstr "Строка" + +#: gitk:2056 +msgid "Find" +msgstr "Поиск" + +#: gitk:2057 +msgid "next" +msgstr "След." + +#: gitk:2058 +msgid "prev" +msgstr "Пред." + +#: gitk:2059 +msgid "commit" +msgstr "состояние" + +#: gitk:2062 gitk:2064 gitk:4179 gitk:4202 gitk:4226 gitk:6164 gitk:6236 +#: gitk:6320 +msgid "containing:" +msgstr "содержащее:" + +#: gitk:2065 gitk:3117 gitk:3122 gitk:4254 +msgid "touching paths:" +msgstr "касательно файлов:" + +#: gitk:2066 gitk:4259 +msgid "adding/removing string:" +msgstr "добавив/удалив строку:" + +#: gitk:2075 gitk:2077 +msgid "Exact" +msgstr "Точно" + +#: gitk:2077 gitk:4334 gitk:6132 +msgid "IgnCase" +msgstr "Игнорировать большие/маленькие" + +#: gitk:2077 gitk:4228 gitk:4332 gitk:6128 +msgid "Regexp" +msgstr "Регулярные выражения" + +#: gitk:2079 gitk:2080 gitk:4353 gitk:4383 gitk:4390 gitk:6256 gitk:6324 +msgid "All fields" +msgstr "Во всех полях" + +#: gitk:2080 gitk:4351 gitk:4383 gitk:6195 +msgid "Headline" +msgstr "Заголовок" + +#: gitk:2081 gitk:4351 gitk:6195 gitk:6324 gitk:6737 +msgid "Comments" +msgstr "Комментарии" + +#: gitk:2081 gitk:4351 gitk:4355 gitk:4390 gitk:6195 gitk:6672 gitk:7923 +#: gitk:7938 +msgid "Author" +msgstr "Автор" + +#: gitk:2081 gitk:4351 gitk:6195 gitk:6674 +msgid "Committer" +msgstr "Сохранивший состояние" + +#: gitk:2110 +msgid "Search" +msgstr "Найти" + +#: gitk:2117 +msgid "Diff" +msgstr "Сравнить" + +#: gitk:2119 +msgid "Old version" +msgstr "Старая версия" + +#: gitk:2121 +msgid "New version" +msgstr "Новая версия" + +#: gitk:2123 +msgid "Lines of context" +msgstr "Строк контекста" + +#: gitk:2133 +msgid "Ignore space change" +msgstr "Игнорировать пробелы" + +#: gitk:2191 +msgid "Patch" +msgstr "Патч" + +#: gitk:2193 +msgid "Tree" +msgstr "Файлы" + +#: gitk:2326 gitk:2339 +msgid "Diff this -> selected" +msgstr "Сравнить это состояние с выделеным" + +#: gitk:2327 gitk:2340 +msgid "Diff selected -> this" +msgstr "Сравнить выделеное с этим состоянием" + +#: gitk:2328 gitk:2341 +msgid "Make patch" +msgstr "Создать патч" + +#: gitk:2329 gitk:8136 +msgid "Create tag" +msgstr "Создать метку" + +#: gitk:2330 gitk:8239 +msgid "Write commit to file" +msgstr "Сохранить изменения в файл" + +#: gitk:2331 gitk:8296 +msgid "Create new branch" +msgstr "Создать ветвь" + +#: gitk:2332 +msgid "Cherry-pick this commit" +msgstr "Скопировать это состояние" + +#: gitk:2333 +msgid "Reset HEAD branch to here" +msgstr "Установить HEAD на это состояние" + +#: gitk:2347 +msgid "Check out this branch" +msgstr "Перейти на эту ветвь" + +#: gitk:2348 +msgid "Remove this branch" +msgstr "Удалить эту ветвь" + +#: gitk:2355 +msgid "Highlight this too" +msgstr "Подсветить этот тоже" + +#: gitk:2356 +msgid "Highlight this only" +msgstr "Подсветить только этот" + +#: gitk:2357 +msgid "External diff" +msgstr "Программа сравнения" + +#: gitk:2358 +msgid "Blame parent commit" +msgstr "Аннотировать родительское состояние" + +#: gitk:2365 +msgid "Show origin of this line" +msgstr "Показать источник этой строки" + +#: gitk:2366 +msgid "Run git gui blame on this line" +msgstr "Запустить git gui blame для этой строки" + +#: gitk:2611 +msgid "" +"\n" +"Gitk - a commit viewer for git\n" +"\n" +"Copyright © 2005-2008 Paul Mackerras\n" +"\n" +"Use and redistribute under the terms of the GNU General Public License" +msgstr "" +"\n" +"Gitk - программа просмотра истории репозиториев Git\n" +"\n" +"Copyright (c) 2005-2008 Paul Mackerras\n" +"\n" +"Использование и распространение согласно условиям GNU General Public License" + +#: gitk:2619 gitk:2681 gitk:8661 +msgid "Close" +msgstr "Закрыть" + +#: gitk:2638 +msgid "Gitk key bindings" +msgstr "Назначения клавиатуры в Gitk" + +#: gitk:2641 +msgid "Gitk key bindings:" +msgstr "Назначения клавиатуры в Gitk:" + +#: gitk:2643 +#, tcl-format +msgid "<%s-Q>\t\tQuit" +msgstr "<%s-Q>\t\tЗавершить" + +#: gitk:2644 +msgid "\t\tMove to first commit" +msgstr "\t\tПерейти к первому состоянию" + +#: gitk:2645 +msgid "\t\tMove to last commit" +msgstr "\t\tПерейти к последнему состоянию" + +#: gitk:2646 +msgid ", p, i\tMove up one commit" +msgstr ", p, i\tПерейти к следующему состоянию" + +#: gitk:2647 +msgid ", n, k\tMove down one commit" +msgstr ", n, k\tПерейти к предыдущему состоянию" + +#: gitk:2648 +msgid ", z, j\tGo back in history list" +msgstr ", z, j\tПоказать ранее посещённое состояние" + +#: gitk:2649 +msgid ", x, l\tGo forward in history list" +msgstr ", x, l\tПоказать следующее посещённое состояние" + +#: gitk:2650 +msgid "\tMove up one page in commit list" +msgstr "\tПерейти на страницу выше в списке состояний" + +#: gitk:2651 +msgid "\tMove down one page in commit list" +msgstr "\tПерейти на страницу ниже в списке состояний" + +#: gitk:2652 +#, tcl-format +msgid "<%s-Home>\tScroll to top of commit list" +msgstr "<%s-Home>\tПоказать начало списка состояний" + +#: gitk:2653 +#, tcl-format +msgid "<%s-End>\tScroll to bottom of commit list" +msgstr "<%s-End>\tПоказать конец списка состояний" + +#: gitk:2654 +#, tcl-format +msgid "<%s-Up>\tScroll commit list up one line" +msgstr "<%s-Up>\tПровернуть список состояний вверх" + +#: gitk:2655 +#, tcl-format +msgid "<%s-Down>\tScroll commit list down one line" +msgstr "<%s-Down>\tПровернуть список состояний вниз" + +#: gitk:2656 +#, tcl-format +msgid "<%s-PageUp>\tScroll commit list up one page" +msgstr "<%s-PageUp>\tПровернуть список состояний на страницу вверх" + +#: gitk:2657 +#, tcl-format +msgid "<%s-PageDown>\tScroll commit list down one page" +msgstr "<%s-PageDown>\tПровернуть список состояний на страницу вниз" + +#: gitk:2658 +msgid "\tFind backwards (upwards, later commits)" +msgstr "" +"\tПоиск в обратном порядке (вверх, среди новых состояний)" + +#: gitk:2659 +msgid "\tFind forwards (downwards, earlier commits)" +msgstr "\tПоиск (вниз, среди старых состояний)" + +#: gitk:2660 +msgid ", b\tScroll diff view up one page" +msgstr ", b\tПрокрутить список изменений на страницу выше" + +#: gitk:2661 +msgid "\tScroll diff view up one page" +msgstr "\tПрокрутить список изменений на страницу выше" + +#: gitk:2662 +msgid "\t\tScroll diff view down one page" +msgstr "\t\tПрокрутить список изменений на страницу ниже" + +#: gitk:2663 +msgid "u\t\tScroll diff view up 18 lines" +msgstr "u\t\tПрокрутить список изменений на 18 строк вверх" + +#: gitk:2664 +msgid "d\t\tScroll diff view down 18 lines" +msgstr "d\t\tПрокрутить список изменений на 18 строк вниз" + +#: gitk:2665 +#, tcl-format +msgid "<%s-F>\t\tFind" +msgstr "<%s-F>\t\tПоиск" + +#: gitk:2666 +#, tcl-format +msgid "<%s-G>\t\tMove to next find hit" +msgstr "<%s-G>\t\tПерейти к следующему найденому состоянию" + +#: gitk:2667 +msgid "\tMove to next find hit" +msgstr "\tПерейти к следующему найденому состоянию" + +#: gitk:2668 +msgid "/\t\tFocus the search box" +msgstr "/\t\tПерейти к полю поиска" + +#: gitk:2669 +msgid "?\t\tMove to previous find hit" +msgstr "?\t\tПерейти к предыдущему найденому состоянию" + +#: gitk:2670 +msgid "f\t\tScroll diff view to next file" +msgstr "f\t\tПрокрутить список изменений к следующему файлу" + +#: gitk:2671 +#, tcl-format +msgid "<%s-S>\t\tSearch for next hit in diff view" +msgstr "<%s-S>\t\tПродолжить поиск в списке изменений" + +#: gitk:2672 +#, tcl-format +msgid "<%s-R>\t\tSearch for previous hit in diff view" +msgstr "<%s-R>\t\tПерейти к предыдущему найденому тексту в списке изменений" + +#: gitk:2673 +#, tcl-format +msgid "<%s-KP+>\tIncrease font size" +msgstr "<%s-KP+>\tУвеличить размер шрифта" + +#: gitk:2674 +#, tcl-format +msgid "<%s-plus>\tIncrease font size" +msgstr "<%s-plus>\tУвеличить размер шрифта" + +#: gitk:2675 +#, tcl-format +msgid "<%s-KP->\tDecrease font size" +msgstr "<%s-KP->\tУменьшить размер шрифта" + +#: gitk:2676 +#, tcl-format +msgid "<%s-minus>\tDecrease font size" +msgstr "<%s-minus>\tУменьшить размер шрифта" + +#: gitk:2677 +msgid "\t\tUpdate" +msgstr "\t\tОбновить" + +#: gitk:3132 +#, tcl-format +msgid "Error getting \"%s\" from %s:" +msgstr "Ошибка получения \"%s\" из %s:" + +#: gitk:3189 gitk:3198 +#, tcl-format +msgid "Error creating temporary directory %s:" +msgstr "Ошибка создания временного каталога %s:" + +#: gitk:3211 +msgid "command failed:" +msgstr "ошибка выполнения команды:" + +#: gitk:3357 +msgid "No such commit" +msgstr "Состояние не найдено" + +#: gitk:3371 +msgid "git gui blame: command failed:" +msgstr "git gui blame: ошибка выполнения команды:" + +#: gitk:3402 +#, tcl-format +msgid "Couldn't read merge head: %s" +msgstr "Ошибка чтения MERGE_HEAD: %s" + +#: gitk:3410 +#, tcl-format +msgid "Error reading index: %s" +msgstr "Ошибка чтения индекса: %s" + +#: gitk:3435 +#, tcl-format +msgid "Couldn't start git blame: %s" +msgstr "Ошибка запуска git blame: %s" + +#: gitk:3438 gitk:6163 +msgid "Searching" +msgstr "Поиск" + +#: gitk:3470 +#, tcl-format +msgid "Error running git blame: %s" +msgstr "Ошибка выполнения git blame: %s" + +#: gitk:3498 +#, tcl-format +msgid "That line comes from commit %s, which is not in this view" +msgstr "" +"Эта строка принадлежит состоянию %s, которое не показано в этом " +"представлении" + +#: gitk:3512 +msgid "External diff viewer failed:" +msgstr "Ошибка выполнения программы сравнения:" + +#: gitk:3630 +msgid "Gitk view definition" +msgstr "Gitk определение представлений" + +#: gitk:3634 +msgid "Remember this view" +msgstr "Запомнить представление" + +#: gitk:3635 +msgid "Commits to include (arguments to git log):" +msgstr "Включить состояния (аргументы для git-log):" + +#: gitk:3636 +msgid "Use all refs" +msgstr "Использовать все ветви" + +#: gitk:3637 +msgid "Strictly sort by date" +msgstr "Строгая сортировка по дате" + +#: gitk:3638 +msgid "Mark branch sides" +msgstr "Отметить стороны ветвей" + +#: gitk:3639 +msgid "Since date:" +msgstr "С даты:" + +#: gitk:3640 +msgid "Until date:" +msgstr "По дату:" + +#: gitk:3641 +msgid "Max count:" +msgstr "Макс. количество:" + +#: gitk:3642 +msgid "Skip:" +msgstr "Пропустить:" + +#: gitk:3643 +msgid "Limit to first parent" +msgstr "Ограничить первым предком" + +#: gitk:3644 +msgid "Command to generate more commits to include:" +msgstr "Дополнительная команда для списка состояний:" + +#: gitk:3753 +msgid "Name" +msgstr "Имя" + +#: gitk:3801 +msgid "Enter files and directories to include, one per line:" +msgstr "Файлы и каталоги для ограничения истории, по одному на строку:" + +#: gitk:3815 +msgid "Apply (F5)" +msgstr "Применить (F5)" + +#: gitk:3853 +msgid "Error in commit selection arguments:" +msgstr "Ошибка в параметрах выбора состояний:" + +#: gitk:3906 gitk:3958 gitk:4403 gitk:4417 gitk:5675 gitk:10867 gitk:10868 +msgid "None" +msgstr "Ни одного" + +#: gitk:4351 gitk:6195 gitk:7925 gitk:7940 +msgid "Date" +msgstr "Дата" + +#: gitk:4351 gitk:6195 +msgid "CDate" +msgstr "Дата ввода" + +#: gitk:4500 gitk:4505 +msgid "Descendant" +msgstr "Порождённое" + +#: gitk:4501 +msgid "Not descendant" +msgstr "Не порождённое" + +#: gitk:4508 gitk:4513 +msgid "Ancestor" +msgstr "Предок" + +#: gitk:4509 +msgid "Not ancestor" +msgstr "Не предок" + +#: gitk:4799 +msgid "Local changes checked in to index but not committed" +msgstr "Изменения зарегистрированные в индексе, но не сохранённые" + +#: gitk:4835 +msgid "Local uncommitted changes, not checked in to index" +msgstr "Изменения в рабочем каталоге, не зарегистрированные в индексе" + +#: gitk:6676 +msgid "Tags:" +msgstr "Таги:" + +#: gitk:6693 gitk:6699 gitk:7918 +msgid "Parent" +msgstr "Предок" + +#: gitk:6704 +msgid "Child" +msgstr "Потомок" + +#: gitk:6713 +msgid "Branch" +msgstr "Ветвь" + +#: gitk:6716 +msgid "Follows" +msgstr "Следует за" + +#: gitk:6719 +msgid "Precedes" +msgstr "Предшествует" + +#: gitk:7212 +#, tcl-format +msgid "Error getting diffs: %s" +msgstr "Ошибка получения изменений: %s" + +#: gitk:7751 +msgid "Goto:" +msgstr "Перейти к:" + +#: gitk:7753 +msgid "SHA1 ID:" +msgstr "SHA1 ID:" + +#: gitk:7772 +#, tcl-format +msgid "Short SHA1 id %s is ambiguous" +msgstr "Сокращённый SHA1 идентификатор %s неоднозначен" + +#: gitk:7784 +#, tcl-format +msgid "SHA1 id %s is not known" +msgstr "SHA1 идентификатор %s не найден" + +#: gitk:7786 +#, tcl-format +msgid "Tag/Head %s is not known" +msgstr "Метка или ветвь %s не найдена" + +#: gitk:7928 +msgid "Children" +msgstr "Потомки" + +#: gitk:7985 +#, tcl-format +msgid "Reset %s branch to here" +msgstr "Установить ветвь %s на это состояние" + +#: gitk:7987 +msgid "Detached head: can't reset" +msgstr "Состояние не принадлежит ни одной ветви, переход невозможен" + +#: gitk:8019 +msgid "Top" +msgstr "Верх" + +#: gitk:8020 +msgid "From" +msgstr "От" + +#: gitk:8025 +msgid "To" +msgstr "До" + +#: gitk:8049 +msgid "Generate patch" +msgstr "Создать патч" + +#: gitk:8051 +msgid "From:" +msgstr "От:" + +#: gitk:8060 +msgid "To:" +msgstr "До:" + +#: gitk:8069 +msgid "Reverse" +msgstr "В обратном порядке" + +#: gitk:8071 gitk:8253 +msgid "Output file:" +msgstr "Файл для сохранения:" + +#: gitk:8077 +msgid "Generate" +msgstr "Создать" + +#: gitk:8115 +msgid "Error creating patch:" +msgstr "Ошибка создания патча:" + +#: gitk:8138 gitk:8241 gitk:8298 +msgid "ID:" +msgstr "ID:" + +#: gitk:8147 +msgid "Tag name:" +msgstr "Имя метки:" + +#: gitk:8151 gitk:8307 +msgid "Create" +msgstr "Создать" + +#: gitk:8168 +msgid "No tag name specified" +msgstr "Не задано имя метки" + +#: gitk:8172 +#, tcl-format +msgid "Tag \"%s\" already exists" +msgstr "Метка \"%s\" уже существует" + +#: gitk:8178 +msgid "Error creating tag:" +msgstr "Ошибка создания метки:" + +#: gitk:8250 +msgid "Command:" +msgstr "Команда:" + +#: gitk:8258 +msgid "Write" +msgstr "Запись" + +#: gitk:8276 +msgid "Error writing commit:" +msgstr "Ошибка сохранения состояния:" + +#: gitk:8303 +msgid "Name:" +msgstr "Имя:" + +#: gitk:8326 +msgid "Please specify a name for the new branch" +msgstr "Укажите имя для новой ветви" + +#: gitk:8331 +#, tcl-format +msgid "Branch '%s' already exists. Overwrite?" +msgstr "Ветвь '%s' уже существует. Переписать?" + +#: gitk:8397 +#, tcl-format +msgid "Commit %s is already included in branch %s -- really re-apply it?" +msgstr "" +"Состояние %s уже принадлежит ветви %s. Продолжить операцию?" + +#: gitk:8402 +msgid "Cherry-picking" +msgstr "Копирование изменений" + +#: gitk:8411 +#, tcl-format +msgid "" +"Cherry-pick failed because of local changes to file '%s'.\n" +"Please commit, reset or stash your changes and try again." +msgstr "" +"Копирование невозможно из-за изменений в файле '%s'.\n" +"Сохраните или отмените изменения и повторите операцию." + +#: gitk:8417 +msgid "" +"Cherry-pick failed because of merge conflict.\n" +"Do you wish to run git citool to resolve it?" +msgstr "" +"Копирование изменений невозможно из-за незавершённой операции " +"слияния.\nЗапустить git citool для завершения этой операции?" + +#: gitk:8433 +msgid "No changes committed" +msgstr "Изменения не сохранены" + +#: gitk:8459 +msgid "Confirm reset" +msgstr "Подтвердите операцию перехода" + +#: gitk:8461 +#, tcl-format +msgid "Reset branch %s to %s?" +msgstr "Установить ветвь %s на состояние %s?" + +#: gitk:8465 +msgid "Reset type:" +msgstr "Тип операции перехода:" + +#: gitk:8469 +msgid "Soft: Leave working tree and index untouched" +msgstr "Лёгкий: оставить рабочий каталог и индекс неизменными" + +#: gitk:8472 +msgid "Mixed: Leave working tree untouched, reset index" +msgstr "" +"Смешаный: оставить рабочий каталог неизменным, установить индекс" + +#: gitk:8475 +msgid "" +"Hard: Reset working tree and index\n" +"(discard ALL local changes)" +msgstr "" +"Жесткий: переписать индекс и рабочий каталог\n" +"(все изменения в рабочем каталоги будут потеряны)" + +#: gitk:8492 +msgid "Resetting" +msgstr "Установка" + +#: gitk:8549 +msgid "Checking out" +msgstr "Переход" + +#: gitk:8602 +msgid "Cannot delete the currently checked-out branch" +msgstr "Активная ветвь не может быть удалена" + +#: gitk:8608 +#, tcl-format +msgid "" +"The commits on branch %s aren't on any other branch.\n" +"Really delete branch %s?" +msgstr "" +"Состояния ветви %s больше не принадлежат никакой другой ветви.\n" +"Действительно удалить ветвь %s?" + +#: gitk:8639 +#, tcl-format +msgid "Tags and heads: %s" +msgstr "Метки и ветви: %s" + +#: gitk:8654 +msgid "Filter" +msgstr "Фильтровать" + +#: gitk:8949 +msgid "" +"Error reading commit topology information; branch and preceding/following " +"tag information will be incomplete." +msgstr "" +"Ошибка чтения истории проекта; информация о ветвях и состояниях " +"вокруг меток (до/после) может быть неполной." + +#: gitk:9935 +msgid "Tag" +msgstr "Метка" + +#: gitk:9935 +msgid "Id" +msgstr "Id" + +#: gitk:9983 +msgid "Gitk font chooser" +msgstr "Шрифт Gitk" + +#: gitk:10000 +msgid "B" +msgstr "Ж" + +#: gitk:10003 +msgid "I" +msgstr "К" + +#: gitk:10098 +msgid "Gitk preferences" +msgstr "Настройки Gitk" + +#: gitk:10100 +msgid "Commit list display options" +msgstr "Параметры показа списка состояний" + +#: gitk:10103 +msgid "Maximum graph width (lines)" +msgstr "Макс. ширина графа (строк)" + +#: gitk:10107 +#, tcl-format +msgid "Maximum graph width (% of pane)" +msgstr "Макс. ширина графа (% ширины панели)" + +#: gitk:10111 +msgid "Show local changes" +msgstr "Показывать изменения в рабочем каталоге" + +#: gitk:10114 +msgid "Auto-select SHA1" +msgstr "Выделить SHA1" + +#: gitk:10118 +msgid "Diff display options" +msgstr "Параметры показа изменений" + +#: gitk:10120 +msgid "Tab spacing" +msgstr "Ширина табуляции" + +#: gitk:10123 +msgid "Display nearby tags" +msgstr "Показывать близкие метки" + +#: gitk:10126 +msgid "Limit diffs to listed paths" +msgstr "Ограничить показ изменений выбраными файлами" + +#: gitk:10129 +msgid "Support per-file encodings" +msgstr "Поддержка кодировок в отдельных файлах" + +#: gitk:10135 +msgid "External diff tool" +msgstr "Программа для показа изменений" + +#: gitk:10137 +msgid "Choose..." +msgstr "Выберите..." + +#: gitk:10142 +msgid "Colors: press to choose" +msgstr "Цвета: нажмите для выбора" + +#: gitk:10145 +msgid "Background" +msgstr "Фон" + +#: gitk:10146 gitk:10176 +msgid "background" +msgstr "фон" + +#: gitk:10149 +msgid "Foreground" +msgstr "Передний план" + +#: gitk:10150 +msgid "foreground" +msgstr "передний план" + +#: gitk:10153 +msgid "Diff: old lines" +msgstr "Изменения: старый текст" + +#: gitk:10154 +msgid "diff old lines" +msgstr "старый текст изменения" + +#: gitk:10158 +msgid "Diff: new lines" +msgstr "Изменения: новый текст" + +#: gitk:10159 +msgid "diff new lines" +msgstr "новый текст изменения" + +#: gitk:10163 +msgid "Diff: hunk header" +msgstr "Изменения: заголовок блока" + +#: gitk:10165 +msgid "diff hunk header" +msgstr "заголовок блока изменений" + +#: gitk:10169 +msgid "Marked line bg" +msgstr "Фон выбраной строки" + +#: gitk:10171 +msgid "marked line background" +msgstr "фон выбраной строки" + +#: gitk:10175 +msgid "Select bg" +msgstr "Выберите фон" + +#: gitk:10179 +msgid "Fonts: press to choose" +msgstr "Шрифт: нажмите для выбора" + +#: gitk:10181 +msgid "Main font" +msgstr "Основной шрифт" + +#: gitk:10182 +msgid "Diff display font" +msgstr "Шрифт показа изменений" + +#: gitk:10183 +msgid "User interface font" +msgstr "Шрифт интерфейса" + +#: gitk:10210 +#, tcl-format +msgid "Gitk: choose color for %s" +msgstr "Gitk: выберите цвет для %s" + +#: gitk:10656 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" +"К сожалению gitk не может работать с этой версий Tcl/Tk.\n" +"Требуется как минимум Tcl/Tk 8.4." + +#: gitk:10773 +msgid "Cannot find a git repository here." +msgstr "Git-репозитарий не найден в текущем каталоге." + +#: gitk:10777 +#, tcl-format +msgid "Cannot find the git directory \"%s\"." +msgstr "Git-репозитарий \"%s\" не найден." + +#: gitk:10824 +#, tcl-format +msgid "Ambiguous argument '%s': both revision and filename" +msgstr "Неоднозначный аргумент '%s': существует как версия и имя файла" + +#: gitk:10836 +msgid "Bad arguments to gitk:" +msgstr "Неправильные аргументы для gitk:" + +#: gitk:10896 +msgid "Command line" +msgstr "Командная строка" + -- cgit v0.10.2-6-g49f6