summaryrefslogtreecommitdiff
path: root/gitk-git
diff options
context:
space:
mode:
Diffstat (limited to 'gitk-git')
-rw-r--r--gitk-git/gitk1854
-rw-r--r--gitk-git/po/de.po637
-rw-r--r--gitk-git/po/es.po507
-rw-r--r--gitk-git/po/it.po500
-rw-r--r--gitk-git/po/sv.po448
5 files changed, 2548 insertions, 1398 deletions
diff --git a/gitk-git/gitk b/gitk-git/gitk
index 087c4ac733..dc2a439618 100644
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -155,18 +155,16 @@ proc parseviewargs {n arglist} {
set origargs [lreplace $origargs $i $i]
incr i -1
}
- # These request or affect diff output, which we don't want.
- # Some could be used to set our defaults for diff display.
"-[puabwcrRBMC]" -
"--no-renames" - "--full-index" - "--binary" - "--abbrev=*" -
"--find-copies-harder" - "-l*" - "--ext-diff" - "--no-ext-diff" -
"--src-prefix=*" - "--dst-prefix=*" - "--no-prefix" -
"-O*" - "--text" - "--full-diff" - "--ignore-space-at-eol" -
"--ignore-space-change" - "-U*" - "--unified=*" {
+ # These request or affect diff output, which we don't want.
+ # Some could be used to set our defaults for diff display.
lappend diffargs $arg
}
- # These cause our parsing of git log's output to fail, or else
- # they're options we want to set ourselves, so ignore them.
"--raw" - "--patch-with-raw" - "--patch-with-stat" -
"--name-only" - "--name-status" - "--color" - "--color-words" -
"--log-size" - "--pretty=*" - "--decorate" - "--abbrev-commit" -
@@ -174,36 +172,34 @@ proc parseviewargs {n arglist} {
"--no-color" - "-g" - "--walk-reflogs" - "--no-walk" -
"--timestamp" - "relative-date" - "--date=*" - "--stdin" -
"--objects" - "--objects-edge" - "--reverse" {
+ # These cause our parsing of git log's output to fail, or else
+ # they're options we want to set ourselves, so ignore them.
}
- # These are harmless, and some are even useful
"--stat=*" - "--numstat" - "--shortstat" - "--summary" -
"--check" - "--exit-code" - "--quiet" - "--topo-order" -
"--full-history" - "--dense" - "--sparse" -
"--follow" - "--left-right" - "--encoding=*" {
+ # These are harmless, and some are even useful
lappend glflags $arg
}
- # These mean that we get a subset of the commits
"--diff-filter=*" - "--no-merges" - "--unpacked" -
"--max-count=*" - "--skip=*" - "--since=*" - "--after=*" -
"--until=*" - "--before=*" - "--max-age=*" - "--min-age=*" -
"--author=*" - "--committer=*" - "--grep=*" - "-[iE]" -
"--remove-empty" - "--first-parent" - "--cherry-pick" -
- "-S*" - "--pickaxe-all" - "--pickaxe-regex" - {
+ "-S*" - "--pickaxe-all" - "--pickaxe-regex" {
+ # These mean that we get a subset of the commits
set filtered 1
lappend glflags $arg
}
- # This appears to be the only one that has a value as a
- # separate word following it
"-n" {
+ # This appears to be the only one that has a value as a
+ # separate word following it
set filtered 1
set nextisval 1
lappend glflags $arg
}
- "--not" {
- set notflag [expr {!$notflag}]
- lappend revargs $arg
- }
- "--all" {
+ "--not" - "--all" {
lappend revargs $arg
}
"--merge" {
@@ -211,8 +207,8 @@ proc parseviewargs {n arglist} {
# git rev-parse doesn't understand --merge
lappend revargs --gitk-symmetric-diff-marker MERGE_HEAD...HEAD
}
- # Other flag arguments including -<n>
"-*" {
+ # Other flag arguments including -<n>
if {[string is digit -strict [string range $arg 1 end]]} {
set filtered 1
} else {
@@ -222,8 +218,8 @@ proc parseviewargs {n arglist} {
}
lappend glflags $arg
}
- # Non-flag arguments specify commits or ranges of commits
default {
+ # Non-flag arguments specify commits or ranges of commits
if {[string match "*...*" $arg]} {
lappend revargs --gitk-symmetric-diff-marker
}
@@ -269,7 +265,7 @@ proc parseviewrevs {view revs} {
lappend badrev $line
}
}
- error_popup "Error parsing revisions: $err"
+ error_popup "[mc "Error parsing revisions:"] $err"
return {}
}
set ret {}
@@ -307,9 +303,9 @@ proc start_rev_list {view} {
global startmsecs commitidx viewcomplete curview
global tclencoding
global viewargs viewargscmd viewfiles vfilelimit
- global showlocalchanges commitinterest
+ global showlocalchanges
global viewactive viewinstances vmergeonly
- global mainheadid
+ global mainheadid viewmainheadid viewmainheadid_orig
global vcanopt vflags vrevs vorigargs
set startmsecs [clock clicks -milliseconds]
@@ -324,7 +320,7 @@ proc start_rev_list {view} {
if {[catch {
set str [exec sh -c $viewargscmd($view)]
} err]} {
- error_popup "Error executing --argscmd command: $err"
+ error_popup "[mc "Error executing --argscmd command:"] $err"
return 0
}
set args [concat $args [split $str "\n"]]
@@ -367,8 +363,13 @@ proc start_rev_list {view} {
}
set i [reg_instance $fd]
set viewinstances($view) [list $i]
- if {$showlocalchanges && $mainheadid ne {}} {
- lappend commitinterest($mainheadid) {dodiffindex}
+ set viewmainheadid($view) $mainheadid
+ set viewmainheadid_orig($view) $mainheadid
+ if {$files ne {} && $mainheadid ne {}} {
+ get_viewmainhead $view
+ }
+ if {$showlocalchanges && $viewmainheadid($view) ne {}} {
+ interestedin $viewmainheadid($view) dodiffindex
}
fconfigure $fd -blocking 0 -translation lf -eofchar {}
if {$tclencoding != {}} {
@@ -418,10 +419,12 @@ proc stop_rev_list {view} {
}
proc reset_pending_select {selid} {
- global pending_select mainheadid
+ global pending_select mainheadid selectheadid
if {$selid ne {}} {
set pending_select $selid
+ } elseif {$selectheadid ne {}} {
+ set pending_select $selectheadid
} else {
set pending_select $mainheadid
}
@@ -444,22 +447,26 @@ proc updatecommits {} {
global curview vcanopt vorigargs vfilelimit viewinstances
global viewactive viewcomplete tclencoding
global startmsecs showneartags showlocalchanges
- global mainheadid pending_select
+ global mainheadid viewmainheadid viewmainheadid_orig pending_select
global isworktree
global varcid vposids vnegids vflags vrevs
set isworktree [expr {[exec git rev-parse --is-inside-work-tree] == "true"}]
- set oldmainid $mainheadid
rereadrefs
- if {$showlocalchanges} {
- if {$mainheadid ne $oldmainid} {
+ set view $curview
+ if {$mainheadid ne $viewmainheadid_orig($view)} {
+ if {$showlocalchanges} {
dohidelocalchanges
}
- if {[commitinview $mainheadid $curview]} {
- dodiffindex
+ set viewmainheadid($view) $mainheadid
+ set viewmainheadid_orig($view) $mainheadid
+ if {$vfilelimit($view) ne {}} {
+ get_viewmainhead $view
}
}
- set view $curview
+ if {$showlocalchanges} {
+ doshowlocalchanges
+ }
if {$vcanopt($view)} {
set oldpos $vposids($view)
set oldneg $vnegids($view)
@@ -498,7 +505,7 @@ proc updatecommits {} {
set fd [open [concat | git log --no-color -z --pretty=raw --parents \
--boundary $args "--" $vfilelimit($view)] r]
} err]} {
- error_popup "Error executing git log: $err"
+ error_popup "[mc "Error executing git log:"] $err"
return
}
if {$viewactive($view) == 0} {
@@ -1229,7 +1236,7 @@ proc commitonrow {row} {
proc closevarcs {v} {
global varctok varccommits varcid parents children
- global cmitlisted commitidx commitinterest vtokmod
+ global cmitlisted commitidx vtokmod
set missing_parents 0
set scripts {}
@@ -1254,12 +1261,7 @@ proc closevarcs {v} {
}
lappend varccommits($v,$b) $p
incr commitidx($v)
- if {[info exists commitinterest($p)]} {
- foreach script $commitinterest($p) {
- lappend scripts [string map [list "%I" $p] $script]
- }
- unset commitinterest($id)
- }
+ set scripts [check_interest $p $scripts]
}
}
if {$missing_parents > 0} {
@@ -1295,8 +1297,41 @@ proc rewrite_commit {v id rwid} {
}
}
+# Mechanism for registering a command to be executed when we come
+# across a particular commit. To handle the case when only the
+# prefix of the commit is known, the commitinterest array is now
+# indexed by the first 4 characters of the ID. Each element is a
+# list of id, cmd pairs.
+proc interestedin {id cmd} {
+ global commitinterest
+
+ lappend commitinterest([string range $id 0 3]) $id $cmd
+}
+
+proc check_interest {id scripts} {
+ global commitinterest
+
+ set prefix [string range $id 0 3]
+ if {[info exists commitinterest($prefix)]} {
+ set newlist {}
+ foreach {i script} $commitinterest($prefix) {
+ if {[string match "$i*" $id]} {
+ lappend scripts [string map [list "%I" $id "%P" $i] $script]
+ } else {
+ lappend newlist $i $script
+ }
+ }
+ if {$newlist ne {}} {
+ set commitinterest($prefix) $newlist
+ } else {
+ unset commitinterest($prefix)
+ }
+ }
+ return $scripts
+}
+
proc getcommitlines {fd inst view updating} {
- global cmitlisted commitinterest leftover
+ global cmitlisted leftover
global commitidx commitdata vdatemode
global parents children curview hlview
global idpending ordertok
@@ -1472,12 +1507,7 @@ proc getcommitlines {fd inst view updating} {
incr i
}
- if {[info exists commitinterest($id)]} {
- foreach script $commitinterest($id) {
- lappend scripts [string map [list "%I" $id] $script]
- }
- unset commitinterest($id)
- }
+ set scripts [check_interest $id $scripts]
set gotsome 1
}
if {$gotsome} {
@@ -1530,9 +1560,27 @@ proc chewcommits {} {
return 0
}
+proc do_readcommit {id} {
+ global tclencoding
+
+ # Invoke git-log to handle automatic encoding conversion
+ set fd [open [concat | git log --no-color --pretty=raw -1 $id] r]
+ # Read the results using i18n.logoutputencoding
+ fconfigure $fd -translation lf -eofchar {}
+ if {$tclencoding != {}} {
+ fconfigure $fd -encoding $tclencoding
+ }
+ set contents [read $fd]
+ close $fd
+ # Remove the heading line
+ regsub {^commit [0-9a-f]+\n} $contents {} contents
+
+ return $contents
+}
+
proc readcommit {id} {
- if {[catch {set contents [exec git cat-file commit $id]}]} return
- parsecommit $id $contents 0
+ if {[catch {set contents [do_readcommit $id]}]} return
+ parsecommit $id $contents 1
}
proc parsecommit {id contents listed} {
@@ -1553,13 +1601,14 @@ proc parsecommit {id contents listed} {
set header [string range $contents 0 [expr {$hdrend - 1}]]
set comment [string range $contents [expr {$hdrend + 2}] end]
foreach line [split $header "\n"] {
+ set line [split $line " "]
set tag [lindex $line 0]
if {$tag == "author"} {
set audate [lindex $line end-1]
- set auname [lrange $line 1 end-2]
+ set auname [join [lrange $line 1 end-2] " "]
} elseif {$tag == "committer"} {
set comdate [lindex $line end-1]
- set comname [lrange $line 1 end-2]
+ set comname [join [lrange $line 1 end-2] " "]
}
}
set headline {}
@@ -1606,9 +1655,23 @@ proc getcommit {id} {
return 1
}
+# Expand an abbreviated commit ID to a list of full 40-char IDs that match
+# and are present in the current view.
+# This is fairly slow...
+proc longid {prefix} {
+ global varcid curview
+
+ set ids {}
+ foreach match [array names varcid "$curview,$prefix*"] {
+ lappend ids [lindex [split $match ","] 1]
+ }
+ return $ids
+}
+
proc readrefs {} {
global tagids idtags headids idheads tagobjid
global otherrefids idotherrefs mainhead mainheadid
+ global selecthead selectheadid
foreach v {tagids idtags headids idheads otherrefids idotherrefs} {
catch {unset $v}
@@ -1655,6 +1718,12 @@ proc readrefs {} {
set mainhead [string range $thehead 11 end]
}
}
+ set selectheadid {}
+ if {$selecthead ne {}} {
+ catch {
+ set selectheadid [exec git rev-parse --verify $selecthead]
+ }
+ }
}
# skip over fake commits
@@ -1694,6 +1763,24 @@ proc removehead {id name} {
unset headids($name)
}
+proc make_transient {window origin} {
+ global have_tk85
+
+ # In MacOS Tk 8.4 transient appears to work by setting
+ # overrideredirect, which is utterly useless, since the
+ # windows get no border, and are not even kept above
+ # the parent.
+ if {!$have_tk85 && [tk windowingsystem] eq {aqua}} return
+
+ wm transient $window $origin
+
+ # Windows fails to place transient windows normally, so
+ # schedule a callback to center them on the parent.
+ if {[tk windowingsystem] eq {win32}} {
+ after idle [list tk::PlaceWindow $window widget $origin]
+ }
+}
+
proc show_error {w top msg} {
message $w.m -text $msg -justify center -aspect 400
pack $w.m -side top -fill x -padx 20 -pady 20
@@ -1701,22 +1788,24 @@ proc show_error {w top msg} {
pack $w.ok -side bottom -fill x
bind $top <Visibility> "grab $top; focus $top"
bind $top <Key-Return> "destroy $top"
+ bind $top <Key-space> "destroy $top"
+ bind $top <Key-Escape> "destroy $top"
tkwait window $top
}
-proc error_popup msg {
+proc error_popup {msg {owner .}} {
set w .error
toplevel $w
- wm transient $w .
+ make_transient $w $owner
show_error $w $w $msg
}
-proc confirm_popup msg {
+proc confirm_popup {msg {owner .}} {
global confirm_ok
set confirm_ok 0
set w .confirm
toplevel $w
- wm transient $w .
+ make_transient $w $owner
message $w.m -text $msg -justify center -aspect 400
pack $w.m -side top -fill x -padx 20 -pady 20
button $w.ok -text [mc OK] -command "set confirm_ok 1; destroy $w"
@@ -1724,6 +1813,9 @@ proc confirm_popup msg {
button $w.cancel -text [mc Cancel] -command "destroy $w"
pack $w.cancel -side right -fill x
bind $w <Visibility> "grab $w; focus $w"
+ bind $w <Key-Return> "set confirm_ok 1; destroy $w"
+ bind $w <Key-space> "set confirm_ok 1; destroy $w"
+ bind $w <Key-Escape> "destroy $w"
tkwait window $w
return $confirm_ok
}
@@ -1741,6 +1833,60 @@ proc setoptions {} {
option add *Entry.font uifont startupFile
}
+# Make a menu and submenus.
+# m is the window name for the menu, items is the list of menu items to add.
+# Each item is a list {mc label type description options...}
+# mc is ignored; it's so we can put mc there to alert xgettext
+# label is the string that appears in the menu
+# type is cascade, command or radiobutton (should add checkbutton)
+# description depends on type; it's the sublist for cascade, the
+# command to invoke for command, or {variable value} for radiobutton
+proc makemenu {m items} {
+ menu $m
+ if {[tk windowingsystem] eq {aqua}} {
+ set Meta1 Cmd
+ } else {
+ set Meta1 Ctrl
+ }
+ foreach i $items {
+ set name [mc [lindex $i 1]]
+ set type [lindex $i 2]
+ set thing [lindex $i 3]
+ set params [list $type]
+ if {$name ne {}} {
+ set u [string first "&" [string map {&& x} $name]]
+ lappend params -label [string map {&& & & {}} $name]
+ if {$u >= 0} {
+ lappend params -underline $u
+ }
+ }
+ switch -- $type {
+ "cascade" {
+ set submenu [string tolower [string map {& ""} [lindex $i 1]]]
+ lappend params -menu $m.$submenu
+ }
+ "command" {
+ lappend params -command $thing
+ }
+ "radiobutton" {
+ lappend params -variable [lindex $thing 0] \
+ -value [lindex $thing 1]
+ }
+ }
+ set tail [lrange $i 4 end]
+ regsub -all {\yMeta1\y} $tail $Meta1 tail
+ eval $m add $params $tail
+ if {$type eq "cascade"} {
+ makemenu $m.$submenu $thing
+ }
+ }
+}
+
+# translate string and remove ampersands
+proc mca {str} {
+ return [string map {&& & & {}} [mc $str]]
+}
+
proc makewindow {} {
global canv canv2 canv3 linespc charspc ctext cflist cscroll
global tabstop
@@ -1758,33 +1904,34 @@ proc makewindow {} {
global rprogitem rprogcoord rownumsel numcommits
global have_tk85
- menu .bar
- .bar add cascade -label [mc "File"] -menu .bar.file
- menu .bar.file
- .bar.file add command -label [mc "Update"] -command updatecommits
- .bar.file add command -label [mc "Reload"] -command reloadcommits
- .bar.file add command -label [mc "Reread references"] -command rereadrefs
- .bar.file add command -label [mc "List references"] -command showrefs
- .bar.file add command -label [mc "Quit"] -command doquit
- menu .bar.edit
- .bar add cascade -label [mc "Edit"] -menu .bar.edit
- .bar.edit add command -label [mc "Preferences"] -command doprefs
-
- menu .bar.view
- .bar add cascade -label [mc "View"] -menu .bar.view
- .bar.view add command -label [mc "New view..."] -command {newview 0}
- .bar.view add command -label [mc "Edit view..."] -command editview \
- -state disabled
- .bar.view add command -label [mc "Delete view"] -command delview -state disabled
- .bar.view add separator
- .bar.view add radiobutton -label [mc "All files"] -command {showview 0} \
- -variable selectedview -value 0
-
- menu .bar.help
- .bar add cascade -label [mc "Help"] -menu .bar.help
- .bar.help add command -label [mc "About gitk"] -command about
- .bar.help add command -label [mc "Key bindings"] -command keys
- .bar.help configure
+ # The "mc" arguments here are purely so that xgettext
+ # sees the following string as needing to be translated
+ makemenu .bar {
+ {mc "File" cascade {
+ {mc "Update" command updatecommits -accelerator F5}
+ {mc "Reload" command reloadcommits -accelerator Meta1-F5}
+ {mc "Reread references" command rereadrefs}
+ {mc "List references" command showrefs -accelerator F2}
+ {xx "" separator}
+ {mc "Start git gui" command {exec git gui &}}
+ {xx "" separator}
+ {mc "Quit" command doquit -accelerator Meta1-Q}
+ }}
+ {mc "Edit" cascade {
+ {mc "Preferences" command doprefs}
+ }}
+ {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 {
+ {mc "About gitk" command about}
+ {mc "Key bindings" command keys}
+ }}
+ }
. configure -menu .bar
# the gui has upper and lower half, parts of a paned window.
@@ -2008,7 +2155,7 @@ proc makewindow {} {
$ctext tag conf filesep -font textfontbold -back "#aaaaaa"
$ctext tag conf hunksep -fore [lindex $diffcolors 2]
$ctext tag conf d0 -fore [lindex $diffcolors 0]
- $ctext tag conf d1 -fore [lindex $diffcolors 1]
+ $ctext tag conf dresult -fore [lindex $diffcolors 1]
$ctext tag conf m0 -fore red
$ctext tag conf m1 -fore blue
$ctext tag conf m2 -fore green
@@ -2133,11 +2280,16 @@ proc makewindow {} {
bindkey b prevfile
bindkey d "$ctext yview scroll 18 units"
bindkey u "$ctext yview scroll -18 units"
- bindkey / {dofind 1 1}
+ bindkey / {focus $fstring}
bindkey <Key-Return> {dofind 1 1}
bindkey ? {dofind -1 1}
bindkey f nextfile
- bindkey <F5> updatecommits
+ bind . <F5> updatecommits
+ bind . <$M1B-F5> reloadcommits
+ bind . <F2> showrefs
+ bind . <Shift-F4> {newview 0}
+ catch { bind . <Shift-Key-XF86_Switch_VT_4> {newview 0} }
+ bind . <F4> edit_or_newview
bind . <$M1B-q> doquit
bind . <$M1B-f> {dofind 1 1}
bind . <$M1B-g> {dofind 1 0}
@@ -2152,59 +2304,64 @@ proc makewindow {} {
bind . <Destroy> {stop_backends}
bind . <Button-1> "click %W"
bind $fstring <Key-Return> {dofind 1 1}
- bind $sha1entry <Key-Return> gotocommit
+ bind $sha1entry <Key-Return> {gotocommit; break}
bind $sha1entry <<PasteSelection>> clearsha1
bind $cflist <1> {sel_flist %W %x %y; break}
bind $cflist <B1-Motion> {sel_flist %W %x %y; break}
bind $cflist <ButtonRelease-1> {treeclick %W %x %y}
- bind $cflist <Button-3> {pop_flist_menu %W %X %Y %x %y}
+ global ctxbut
+ bind $cflist $ctxbut {pop_flist_menu %W %X %Y %x %y}
+ bind $ctext $ctxbut {pop_diff_menu %W %X %Y %x %y}
set maincursor [. cget -cursor]
set textcursor [$ctext cget -cursor]
set curtextcursor $textcursor
set rowctxmenu .rowctxmenu
- menu $rowctxmenu -tearoff 0
- $rowctxmenu add command -label [mc "Diff this -> selected"] \
- -command {diffvssel 0}
- $rowctxmenu add command -label [mc "Diff selected -> this"] \
- -command {diffvssel 1}
- $rowctxmenu add command -label [mc "Make patch"] -command mkpatch
- $rowctxmenu add command -label [mc "Create tag"] -command mktag
- $rowctxmenu add command -label [mc "Write commit to file"] -command writecommit
- $rowctxmenu add command -label [mc "Create new branch"] -command mkbranch
- $rowctxmenu add command -label [mc "Cherry-pick this commit"] \
- -command cherrypick
- $rowctxmenu add command -label [mc "Reset HEAD branch to here"] \
- -command resethead
+ makemenu $rowctxmenu {
+ {mc "Diff this -> selected" command {diffvssel 0}}
+ {mc "Diff selected -> this" command {diffvssel 1}}
+ {mc "Make patch" command mkpatch}
+ {mc "Create tag" command mktag}
+ {mc "Write commit to file" command writecommit}
+ {mc "Create new branch" command mkbranch}
+ {mc "Cherry-pick this commit" command cherrypick}
+ {mc "Reset HEAD branch to here" command resethead}
+ }
+ $rowctxmenu configure -tearoff 0
set fakerowmenu .fakerowmenu
- menu $fakerowmenu -tearoff 0
- $fakerowmenu add command -label [mc "Diff this -> selected"] \
- -command {diffvssel 0}
- $fakerowmenu add command -label [mc "Diff selected -> this"] \
- -command {diffvssel 1}
- $fakerowmenu add command -label [mc "Make patch"] -command mkpatch
-# $fakerowmenu add command -label [mc "Commit"] -command {mkcommit 0}
-# $fakerowmenu add command -label [mc "Commit all"] -command {mkcommit 1}
-# $fakerowmenu add command -label [mc "Revert local changes"] -command revertlocal
+ makemenu $fakerowmenu {
+ {mc "Diff this -> selected" command {diffvssel 0}}
+ {mc "Diff selected -> this" command {diffvssel 1}}
+ {mc "Make patch" command mkpatch}
+ }
+ $fakerowmenu configure -tearoff 0
set headctxmenu .headctxmenu
- menu $headctxmenu -tearoff 0
- $headctxmenu add command -label [mc "Check out this branch"] \
- -command cobranch
- $headctxmenu add command -label [mc "Remove this branch"] \
- -command rmbranch
+ makemenu $headctxmenu {
+ {mc "Check out this branch" command cobranch}
+ {mc "Remove this branch" command rmbranch}
+ }
+ $headctxmenu configure -tearoff 0
global flist_menu
set flist_menu .flistctxmenu
- menu $flist_menu -tearoff 0
- $flist_menu add command -label [mc "Highlight this too"] \
- -command {flist_hl 0}
- $flist_menu add command -label [mc "Highlight this only"] \
- -command {flist_hl 1}
- $flist_menu add command -label [mc "External diff"] \
- -command {external_diff}
+ makemenu $flist_menu {
+ {mc "Highlight this too" command {flist_hl 0}}
+ {mc "Highlight this only" command {flist_hl 1}}
+ {mc "External diff" command {external_diff}}
+ {mc "Blame parent commit" command {external_blame 1}}
+ }
+ $flist_menu configure -tearoff 0
+
+ global diff_menu
+ set diff_menu .diffctxmenu
+ makemenu $diff_menu {
+ {mc "Show origin of this line" command show_line_source}
+ {mc "Run git gui blame on this line" command {external_blame_diff}}
+ }
+ $diff_menu configure -tearoff 0
}
# Windows sends all mouse wheel events to the current focused window, not
@@ -2320,7 +2477,7 @@ proc savestuff {w} {
global viewname viewfiles viewargs viewargscmd viewperm nextviewnum
global cmitmode wrapcomment datetimeformat limitdiffs
global colors bgcolor fgcolor diffcolors diffcontext selectbgcolor
- global autoselect extdifftool
+ global autoselect extdifftool perfile_attrs markbgcolor
if {$stuffsaved} return
if {![winfo viewable .]} return
@@ -2344,9 +2501,11 @@ proc savestuff {w} {
puts $f [list set fgcolor $fgcolor]
puts $f [list set colors $colors]
puts $f [list set diffcolors $diffcolors]
+ puts $f [list set markbgcolor $markbgcolor]
puts $f [list set diffcontext $diffcontext]
puts $f [list set selectbgcolor $selectbgcolor]
puts $f [list set extdifftool $extdifftool]
+ puts $f [list set perfile_attrs $perfile_attrs]
puts $f "set geometry(main) [wm geometry .]"
puts $f "set geometry(topwidth) [winfo width .tf]"
@@ -2444,6 +2603,7 @@ proc about {} {
}
toplevel $w
wm title $w [mc "About gitk"]
+ make_transient $w .
message $w.m -text [mc "
Gitk - a commit viewer for git
@@ -2472,6 +2632,7 @@ proc keys {} {
}
toplevel $w
wm title $w [mc "Gitk key bindings"]
+ make_transient $w .
message $w.m -text "
[mc "Gitk key bindings:"]
@@ -2500,7 +2661,7 @@ proc keys {} {
[mc "<%s-F> Find" $M1T]
[mc "<%s-G> Move to next find hit" $M1T]
[mc "<Return> Move to next find hit"]
-[mc "/ Move to next find hit, or redo find"]
+[mc "/ Focus the search box"]
[mc "? Move to previous find hit"]
[mc "f Scroll diff view to next file"]
[mc "<%s-S> Search for next hit in diff view" $M1T]
@@ -2514,6 +2675,7 @@ proc keys {} {
-justify left -bg white -border 2 -relief groove
pack $w.m -side top -fill both -padx 2 -pady 2
button $w.ok -text [mc "Close"] -command "destroy $w" -default active
+ bind $w <Key-Escape> [list destroy $w]
pack $w.ok -side bottom
bind $w <Visibility> "focus $w.ok"
bind $w <Key-Escape> "destroy $w"
@@ -2694,7 +2856,7 @@ proc treeopendir {w dir} {
$w insert e:$ix $e [highlight_tag $de]
}
}
- $w mark gravity e:$ix left
+ $w mark gravity e:$ix right
$w conf -state disabled
set treediropen($dir) 1
set top [lindex [split [$w index @0,0] .] 0]
@@ -2735,9 +2897,15 @@ proc treeclick {w x y} {
}
proc setfilelist {id} {
- global treefilelist cflist
+ global treefilelist cflist jump_to_here
treeview $cflist $treefilelist($id) 0
+ if {$jump_to_here ne {}} {
+ set f [lindex $jump_to_here 0]
+ if {[lsearch -exact $treefilelist($id) $f] >= 0} {
+ showfile $f
+ }
+ }
}
image create bitmap tri-rt -background black -foreground blue -data {
@@ -2906,6 +3074,38 @@ proc pop_flist_menu {w X Y x y} {
tk_popup $flist_menu $X $Y
}
+proc find_ctext_fileinfo {line} {
+ global ctext_file_names ctext_file_lines
+
+ set ok [bsearch $ctext_file_lines $line]
+ set tline [lindex $ctext_file_lines $ok]
+
+ if {$ok >= [llength $ctext_file_lines] || $line < $tline} {
+ return {}
+ } else {
+ return [list [lindex $ctext_file_names $ok] $tline]
+ }
+}
+
+proc pop_diff_menu {w X Y x y} {
+ global ctext diff_menu flist_menu_file
+ global diff_menu_txtpos diff_menu_line
+ global diff_menu_filebase
+
+ set diff_menu_txtpos [split [$w index "@$x,$y"] "."]
+ set diff_menu_line [lindex $diff_menu_txtpos 0]
+ # don't pop up the menu on hunk-separator or file-separator lines
+ if {[lsearch -glob [$ctext tag names $diff_menu_line.0] "*sep"] >= 0} {
+ return
+ }
+ stopfinding
+ set f [find_ctext_fileinfo $diff_menu_line]
+ if {$f eq {}} return
+ set flist_menu_file [lindex $f 0]
+ set diff_menu_filebase [lindex $f 1]
+ tk_popup $diff_menu $X $Y
+}
+
proc flist_hl {only} {
global flist_menu_file findstring gdttype
@@ -2925,7 +3125,7 @@ proc save_file_from_commit {filename output what} {
if {[string match "fatal: bad revision *" $err]} {
return $nullfile
}
- error_popup "Error getting \"$filename\" from $what: $err"
+ error_popup "[mc "Error getting \"%s\" from %s:" $filename $what] $err"
return {}
}
return $output
@@ -2982,7 +3182,7 @@ proc external_diff {} {
set gitktmpdir [file join [file dirname $gitdir] \
[format ".gitk-tmp.%s" [pid]]]
if {[catch {file mkdir $gitktmpdir} err]} {
- error_popup "Error creating temporary directory $gitktmpdir: $err"
+ error_popup "[mc "Error creating temporary directory %s:" $gitktmpdir] $err"
unset gitktmpdir
return
}
@@ -2991,7 +3191,7 @@ proc external_diff {} {
incr diffnum
set diffdir [file join $gitktmpdir $diffnum]
if {[catch {file mkdir $diffdir} err]} {
- error_popup "Error creating temporary directory $diffdir: $err"
+ error_popup "[mc "Error creating temporary directory %s:" $diffdir] $err"
return
}
@@ -3004,7 +3204,7 @@ proc external_diff {} {
[list $difffromfile $difftofile]]
if {[catch {set fl [open $cmd r]} err]} {
file delete -force $diffdir
- error_popup [mc "$extdifftool: command failed: $err"]
+ error_popup "$extdifftool: [mc "command failed:"] $err"
} else {
fconfigure $fl -blocking 0
filerun $fl [list delete_at_eof $fl $diffdir]
@@ -3012,12 +3212,301 @@ proc external_diff {} {
}
}
+proc find_hunk_blamespec {base line} {
+ global ctext
+
+ # Find and parse the hunk header
+ set s_lix [$ctext search -backwards -regexp ^@@ "$line.0 lineend" $base.0]
+ if {$s_lix eq {}} return
+
+ set s_line [$ctext get $s_lix "$s_lix + 1 lines"]
+ if {![regexp {^@@@*(( -\d+(,\d+)?)+) \+(\d+)(,\d+)? @@} $s_line \
+ s_line old_specs osz osz1 new_line nsz]} {
+ return
+ }
+
+ # base lines for the parents
+ set base_lines [list $new_line]
+ foreach old_spec [lrange [split $old_specs " "] 1 end] {
+ if {![regexp -- {-(\d+)(,\d+)?} $old_spec \
+ old_spec old_line osz]} {
+ return
+ }
+ lappend base_lines $old_line
+ }
+
+ # Now scan the lines to determine offset within the hunk
+ set max_parent [expr {[llength $base_lines]-2}]
+ set dline 0
+ set s_lno [lindex [split $s_lix "."] 0]
+
+ # Determine if the line is removed
+ set chunk [$ctext get $line.0 "$line.1 + $max_parent chars"]
+ if {[string match {[-+ ]*} $chunk]} {
+ set removed_idx [string first "-" $chunk]
+ # Choose a parent index
+ if {$removed_idx >= 0} {
+ set parent $removed_idx
+ } else {
+ set unchanged_idx [string first " " $chunk]
+ if {$unchanged_idx >= 0} {
+ set parent $unchanged_idx
+ } else {
+ # blame the current commit
+ set parent -1
+ }
+ }
+ # then count other lines that belong to it
+ for {set i $line} {[incr i -1] > $s_lno} {} {
+ set chunk [$ctext get $i.0 "$i.1 + $max_parent chars"]
+ # Determine if the line is removed
+ set removed_idx [string first "-" $chunk]
+ if {$parent >= 0} {
+ set code [string index $chunk $parent]
+ if {$code eq "-" || ($removed_idx < 0 && $code ne "+")} {
+ incr dline
+ }
+ } else {
+ if {$removed_idx < 0} {
+ incr dline
+ }
+ }
+ }
+ incr parent
+ } else {
+ set parent 0
+ }
+
+ incr dline [lindex $base_lines $parent]
+ return [list $parent $dline]
+}
+
+proc external_blame_diff {} {
+ global currentid cmitmode
+ global diff_menu_txtpos diff_menu_line
+ global diff_menu_filebase flist_menu_file
+
+ if {$cmitmode eq "tree"} {
+ set parent_idx 0
+ set line [expr {$diff_menu_line - $diff_menu_filebase}]
+ } else {
+ set hinfo [find_hunk_blamespec $diff_menu_filebase $diff_menu_line]
+ if {$hinfo ne {}} {
+ set parent_idx [lindex $hinfo 0]
+ set line [lindex $hinfo 1]
+ } else {
+ set parent_idx 0
+ set line 0
+ }
+ }
+
+ external_blame $parent_idx $line
+}
+
+# Find the SHA1 ID of the blob for file $fname in the index
+# at stage 0 or 2
+proc index_sha1 {fname} {
+ set f [open [list | git ls-files -s $fname] r]
+ while {[gets $f line] >= 0} {
+ set info [lindex [split $line "\t"] 0]
+ set stage [lindex $info 2]
+ if {$stage eq "0" || $stage eq "2"} {
+ close $f
+ return [lindex $info 1]
+ }
+ }
+ close $f
+ return {}
+}
+
+# Turn an absolute path into one relative to the current directory
+proc make_relative {f} {
+ set elts [file split $f]
+ set here [file split [pwd]]
+ set ei 0
+ set hi 0
+ set res {}
+ foreach d $here {
+ if {$ei < $hi || $ei >= [llength $elts] || [lindex $elts $ei] ne $d} {
+ lappend res ".."
+ } else {
+ incr ei
+ }
+ incr hi
+ }
+ set elts [concat $res [lrange $elts $ei end]]
+ return [eval file join $elts]
+}
+
+proc external_blame {parent_idx {line {}}} {
+ global flist_menu_file gitdir
+ global nullid nullid2
+ global parentlist selectedline currentid
+
+ if {$parent_idx > 0} {
+ set base_commit [lindex $parentlist $selectedline [expr {$parent_idx-1}]]
+ } else {
+ set base_commit $currentid
+ }
+
+ if {$base_commit eq {} || $base_commit eq $nullid || $base_commit eq $nullid2} {
+ error_popup [mc "No such commit"]
+ return
+ }
+
+ set cmdline [list git gui blame]
+ if {$line ne {} && $line > 1} {
+ lappend cmdline "--line=$line"
+ }
+ set f [file join [file dirname $gitdir] $flist_menu_file]
+ # Unfortunately it seems git gui blame doesn't like
+ # being given an absolute path...
+ set f [make_relative $f]
+ lappend cmdline $base_commit $f
+ puts "cmdline={$cmdline}"
+ if {[catch {eval exec $cmdline &} err]} {
+ error_popup "[mc "git gui blame: command failed:"] $err"
+ }
+}
+
+proc show_line_source {} {
+ global cmitmode currentid parents curview blamestuff blameinst
+ global diff_menu_line diff_menu_filebase flist_menu_file
+ global nullid nullid2 gitdir
+
+ set from_index {}
+ if {$cmitmode eq "tree"} {
+ set id $currentid
+ set line [expr {$diff_menu_line - $diff_menu_filebase}]
+ } else {
+ set h [find_hunk_blamespec $diff_menu_filebase $diff_menu_line]
+ if {$h eq {}} return
+ set pi [lindex $h 0]
+ if {$pi == 0} {
+ mark_ctext_line $diff_menu_line
+ return
+ }
+ incr pi -1
+ if {$currentid eq $nullid} {
+ if {$pi > 0} {
+ # must be a merge in progress...
+ if {[catch {
+ # get the last line from .git/MERGE_HEAD
+ set f [open [file join $gitdir MERGE_HEAD] r]
+ set id [lindex [split [read $f] "\n"] end-1]
+ close $f
+ } err]} {
+ error_popup [mc "Couldn't read merge head: %s" $err]
+ return
+ }
+ } elseif {$parents($curview,$currentid) eq $nullid2} {
+ # need to do the blame from the index
+ if {[catch {
+ set from_index [index_sha1 $flist_menu_file]
+ } err]} {
+ error_popup [mc "Error reading index: %s" $err]
+ return
+ }
+ } else {
+ set id $parents($curview,$currentid)
+ }
+ } else {
+ set id [lindex $parents($curview,$currentid) $pi]
+ }
+ set line [lindex $h 1]
+ }
+ set blameargs {}
+ if {$from_index ne {}} {
+ lappend blameargs | git cat-file blob $from_index
+ }
+ lappend blameargs | git blame -p -L$line,+1
+ if {$from_index ne {}} {
+ lappend blameargs --contents -
+ } else {
+ lappend blameargs $id
+ }
+ lappend blameargs -- [file join [file dirname $gitdir] $flist_menu_file]
+ if {[catch {
+ set f [open $blameargs r]
+ } err]} {
+ error_popup [mc "Couldn't start git blame: %s" $err]
+ return
+ }
+ nowbusy blaming [mc "Searching"]
+ fconfigure $f -blocking 0
+ set i [reg_instance $f]
+ set blamestuff($i) {}
+ set blameinst $i
+ filerun $f [list read_line_source $f $i]
+}
+
+proc stopblaming {} {
+ global blameinst
+
+ if {[info exists blameinst]} {
+ stop_instance $blameinst
+ unset blameinst
+ notbusy blaming
+ }
+}
+
+proc read_line_source {fd inst} {
+ global blamestuff curview commfd blameinst nullid nullid2
+
+ while {[gets $fd line] >= 0} {
+ lappend blamestuff($inst) $line
+ }
+ if {![eof $fd]} {
+ return 1
+ }
+ unset commfd($inst)
+ unset blameinst
+ notbusy blaming
+ fconfigure $fd -blocking 1
+ if {[catch {close $fd} err]} {
+ error_popup [mc "Error running git blame: %s" $err]
+ return 0
+ }
+
+ set fname {}
+ set line [split [lindex $blamestuff($inst) 0] " "]
+ set id [lindex $line 0]
+ set lnum [lindex $line 1]
+ if {[string length $id] == 40 && [string is xdigit $id] &&
+ [string is digit -strict $lnum]} {
+ # look for "filename" line
+ foreach l $blamestuff($inst) {
+ if {[string match "filename *" $l]} {
+ set fname [string range $l 9 end]
+ break
+ }
+ }
+ }
+ if {$fname ne {}} {
+ # all looks good, select it
+ if {$id eq $nullid} {
+ # blame uses all-zeroes to mean not committed,
+ # which would mean a change in the index
+ set id $nullid2
+ }
+ if {[commitinview $id $curview]} {
+ selectline [rowofcommit $id] 1 [list $fname $lnum]
+ } else {
+ error_popup [mc "That line comes from commit %s, \
+ which is not in this view" [shortids $id]]
+ }
+ } else {
+ puts "oops couldn't parse git blame output"
+ }
+ return 0
+}
+
# delete $dir when we see eof on $f (presumably because the child has exited)
proc delete_at_eof {f dir} {
while {[gets $f line] >= 0} {}
if {[eof $f]} {
if {[catch {close $f} err]} {
- error_popup "External diff viewer failed: $err"
+ error_popup "[mc "External diff viewer failed:"] $err"
}
file delete -force $dir
return 0
@@ -3122,8 +3611,8 @@ proc shellsplit {str} {
# Code to implement multiple views
proc newview {ishighlight} {
- global nextviewnum newviewname newviewperm newishighlight
- global newviewargs revtreeargs viewargscmd newviewargscmd curview
+ global nextviewnum newviewname newishighlight
+ global revtreeargs viewargscmd newviewopts curview
set newishighlight $ishighlight
set top .gitkview
@@ -3132,58 +3621,183 @@ proc newview {ishighlight} {
return
}
set newviewname($nextviewnum) "[mc "View"] $nextviewnum"
- set newviewperm($nextviewnum) 0
- set newviewargs($nextviewnum) [shellarglist $revtreeargs]
- set newviewargscmd($nextviewnum) $viewargscmd($curview)
+ set newviewopts($nextviewnum,perm) 0
+ set newviewopts($nextviewnum,cmd) $viewargscmd($curview)
+ decode_view_opts $nextviewnum $revtreeargs
vieweditor $top $nextviewnum [mc "Gitk view definition"]
}
+set known_view_options {
+ {perm b . {} {mc "Remember this view"}}
+ {args t50= + {} {mc "Commits to include (arguments to git log):"}}
+ {all b * "--all" {mc "Use all refs"}}
+ {dorder b . {"--date-order" "-d"} {mc "Strictly sort by date"}}
+ {lright b . "--left-right" {mc "Mark branch sides"}}
+ {since t15 + {"--since=*" "--after=*"} {mc "Since date:"}}
+ {until t15 . {"--until=*" "--before=*"} {mc "Until date:"}}
+ {limit t10 + "--max-count=*" {mc "Max count:"}}
+ {skip t10 . "--skip=*" {mc "Skip:"}}
+ {first b . "--first-parent" {mc "Limit to first parent"}}
+ {cmd t50= + {} {mc "Command to generate more commits to include:"}}
+ }
+
+proc encode_view_opts {n} {
+ global known_view_options newviewopts
+
+ set rargs [list]
+ foreach opt $known_view_options {
+ set patterns [lindex $opt 3]
+ if {$patterns eq {}} continue
+ set pattern [lindex $patterns 0]
+
+ set val $newviewopts($n,[lindex $opt 0])
+
+ if {[lindex $opt 1] eq "b"} {
+ if {$val} {
+ lappend rargs $pattern
+ }
+ } else {
+ set val [string trim $val]
+ if {$val ne {}} {
+ set pfix [string range $pattern 0 end-1]
+ lappend rargs $pfix$val
+ }
+ }
+ }
+ return [concat $rargs [shellsplit $newviewopts($n,args)]]
+}
+
+proc decode_view_opts {n view_args} {
+ global known_view_options newviewopts
+
+ foreach opt $known_view_options {
+ if {[lindex $opt 1] eq "b"} {
+ set val 0
+ } else {
+ set val {}
+ }
+ set newviewopts($n,[lindex $opt 0]) $val
+ }
+ set oargs [list]
+ foreach arg $view_args {
+ if {[regexp -- {^-([0-9]+)$} $arg arg cnt]
+ && ![info exists found(limit)]} {
+ set newviewopts($n,limit) $cnt
+ set found(limit) 1
+ continue
+ }
+ catch { unset val }
+ foreach opt $known_view_options {
+ set id [lindex $opt 0]
+ if {[info exists found($id)]} continue
+ foreach pattern [lindex $opt 3] {
+ if {![string match $pattern $arg]} continue
+ if {[lindex $opt 1] ne "b"} {
+ set size [string length $pattern]
+ set val [string range $arg [expr {$size-1}] end]
+ } else {
+ set val 1
+ }
+ set newviewopts($n,$id) $val
+ set found($id) 1
+ break
+ }
+ if {[info exists val]} break
+ }
+ if {[info exists val]} continue
+ lappend oargs $arg
+ }
+ set newviewopts($n,args) [shellarglist $oargs]
+}
+
+proc edit_or_newview {} {
+ global curview
+
+ if {$curview > 0} {
+ editview
+ } else {
+ newview 0
+ }
+}
+
proc editview {} {
global curview
- global viewname viewperm newviewname newviewperm
- global viewargs newviewargs viewargscmd newviewargscmd
+ global viewname viewperm newviewname newviewopts
+ global viewargs viewargscmd
set top .gitkvedit-$curview
if {[winfo exists $top]} {
raise $top
return
}
- set newviewname($curview) $viewname($curview)
- set newviewperm($curview) $viewperm($curview)
- set newviewargs($curview) [shellarglist $viewargs($curview)]
- set newviewargscmd($curview) $viewargscmd($curview)
+ set newviewname($curview) $viewname($curview)
+ 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)"
}
proc vieweditor {top n title} {
- global newviewname newviewperm viewfiles bgcolor
+ global newviewname newviewopts viewfiles bgcolor
+ global known_view_options
toplevel $top
wm title $top $title
+ make_transient $top .
+
+ # View name
+ frame $top.nfr
label $top.nl -text [mc "Name"]
entry $top.name -width 20 -textvariable newviewname($n)
- grid $top.nl $top.name -sticky w -pady 5
- checkbutton $top.perm -text [mc "Remember this view"] \
- -variable newviewperm($n)
- grid $top.perm - -pady 5 -sticky w
- message $top.al -aspect 1000 \
- -text [mc "Commits to include (arguments to git log):"]
- grid $top.al - -sticky w -pady 5
- entry $top.args -width 50 -textvariable newviewargs($n) \
- -background $bgcolor
- grid $top.args - -sticky ew -padx 5
-
- message $top.ac -aspect 1000 \
- -text [mc "Command to generate more commits to include:"]
- grid $top.ac - -sticky w -pady 5
- entry $top.argscmd -width 50 -textvariable newviewargscmd($n) \
- -background white
- grid $top.argscmd - -sticky ew -padx 5
-
- message $top.l -aspect 1000 \
+ pack $top.nfr -in $top -fill x -pady 5 -padx 3
+ pack $top.nl -in $top.nfr -side left -padx {0 30}
+ pack $top.name -in $top.nfr -side left
+
+ # View options
+ set cframe $top.nfr
+ set cexpand 0
+ set cnt 0
+ foreach opt $known_view_options {
+ set id [lindex $opt 0]
+ set type [lindex $opt 1]
+ set flags [lindex $opt 2]
+ set title [eval [lindex $opt 4]]
+ set lxpad 0
+
+ if {$flags eq "+" || $flags eq "*"} {
+ set cframe $top.fr$cnt
+ incr cnt
+ frame $cframe
+ pack $cframe -in $top -fill x -pady 3 -padx 3
+ set cexpand [expr {$flags eq "*"}]
+ } else {
+ set lxpad 5
+ }
+
+ if {$type eq "b"} {
+ checkbutton $cframe.c_$id -text $title -variable newviewopts($n,$id)
+ pack $cframe.c_$id -in $cframe -side left \
+ -padx [list $lxpad 0] -expand $cexpand -anchor w
+ } elseif {[regexp {^t(\d+)$} $type type sz]} {
+ message $cframe.l_$id -aspect 1500 -text $title
+ entry $cframe.e_$id -width $sz -background $bgcolor \
+ -textvariable newviewopts($n,$id)
+ pack $cframe.l_$id -in $cframe -side left -padx [list $lxpad 0]
+ pack $cframe.e_$id -in $cframe -side left -expand 1 -fill x
+ } elseif {[regexp {^t(\d+)=$} $type type sz]} {
+ message $cframe.l_$id -aspect 1500 -text $title
+ entry $cframe.e_$id -width $sz -background $bgcolor \
+ -textvariable newviewopts($n,$id)
+ pack $cframe.l_$id -in $cframe -side top -pady [list 3 0] -anchor w
+ pack $cframe.e_$id -in $cframe -side top -fill x
+ }
+ }
+
+ # Path list
+ message $top.l -aspect 1500 \
-text [mc "Enter files and directories to include, one per line:"]
- grid $top.l - -sticky w
- text $top.t -width 40 -height 10 -background $bgcolor -font uifont
+ pack $top.l -in $top -side top -pady [list 7 0] -anchor w -padx 3
+ text $top.t -width 40 -height 5 -background $bgcolor -font uifont
if {[info exists viewfiles($n)]} {
foreach f $viewfiles($n) {
$top.t insert end $f
@@ -3192,14 +3806,19 @@ proc vieweditor {top n title} {
$top.t delete {end - 1c} end
$top.t mark set insert 0.0
}
- grid $top.t - -sticky ew -padx 5
+ pack $top.t -in $top -side top -pady [list 0 5] -fill both -expand 1 -padx 3
frame $top.buts
button $top.buts.ok -text [mc "OK"] -command [list newviewok $top $n]
+ button $top.buts.apply -text [mc "Apply (F5)"] -command [list newviewok $top $n 1]
button $top.buts.can -text [mc "Cancel"] -command [list destroy $top]
- grid $top.buts.ok $top.buts.can
+ bind $top <Control-Return> [list newviewok $top $n]
+ bind $top <F5> [list newviewok $top $n 1]
+ bind $top <Escape> [list destroy $top]
+ grid $top.buts.ok $top.buts.apply $top.buts.can
grid columnconfigure $top.buts 0 -weight 1 -uniform a
grid columnconfigure $top.buts 1 -weight 1 -uniform a
- grid $top.buts - -pady 10 -sticky ew
+ grid columnconfigure $top.buts 2 -weight 1 -uniform a
+ pack $top.buts -in $top -side top -fill x
focus $top.t
}
@@ -3220,17 +3839,15 @@ proc allviewmenus {n op args} {
# doviewmenu $viewhlmenu 1 [list addvhighlight $n] $op $args
}
-proc newviewok {top n} {
+proc newviewok {top n {apply 0}} {
global nextviewnum newviewperm newviewname newishighlight
global viewname viewfiles viewperm selectedview curview
- global viewargs newviewargs viewargscmd newviewargscmd viewhlmenu
+ global viewargs viewargscmd newviewopts viewhlmenu
if {[catch {
- set newargs [shellsplit $newviewargs($n)]
+ set newargs [encode_view_opts $n]
} err]} {
- error_popup "[mc "Error in commit selection arguments:"] $err"
- wm raise $top
- focus $top
+ error_popup "[mc "Error in commit selection arguments:"] $err" $top
return
}
set files {}
@@ -3244,10 +3861,10 @@ proc newviewok {top n} {
# creating a new view
incr nextviewnum
set viewname($n) $newviewname($n)
- set viewperm($n) $newviewperm($n)
+ set viewperm($n) $newviewopts($n,perm)
set viewfiles($n) $files
set viewargs($n) $newargs
- set viewargscmd($n) $newviewargscmd($n)
+ set viewargscmd($n) $newviewopts($n,cmd)
addviewmenu $n
if {!$newishighlight} {
run showview $n
@@ -3256,7 +3873,7 @@ proc newviewok {top n} {
}
} else {
# editing an existing view
- set viewperm($n) $newviewperm($n)
+ set viewperm($n) $newviewopts($n,perm)
if {$newviewname($n) ne $viewname($n)} {
set viewname($n) $newviewname($n)
doviewmenu .bar.view 5 [list showview $n] \
@@ -3265,15 +3882,16 @@ proc newviewok {top n} {
# entryconf [list -label $viewname($n) -value $viewname($n)]
}
if {$files ne $viewfiles($n) || $newargs ne $viewargs($n) || \
- $newviewargscmd($n) ne $viewargscmd($n)} {
+ $newviewopts($n,cmd) ne $viewargscmd($n)} {
set viewfiles($n) $files
set viewargs($n) $newargs
- set viewargscmd($n) $newviewargscmd($n)
+ set viewargscmd($n) $newviewopts($n,cmd)
if {$curview == $n} {
run reloadcommits
}
}
}
+ if {$apply} return
catch {destroy $top}
}
@@ -3342,8 +3960,8 @@ proc showview {n} {
set curview $n
set selectedview $n
- .bar.view entryconf [mc "Edit view..."] -state [expr {$n == 0? "disabled": "normal"}]
- .bar.view entryconf [mc "Delete view"] -state [expr {$n == 0? "disabled": "normal"}]
+ .bar.view entryconf [mca "Edit view..."] -state [expr {$n == 0? "disabled": "normal"}]
+ .bar.view entryconf [mca "Delete view"] -state [expr {$n == 0? "disabled": "normal"}]
run refill_reflist
if {![info exists viewcomplete($n)]} {
@@ -3424,28 +4042,31 @@ proc ishighlighted {id} {
return 0
}
-proc bolden {row font} {
- global canv linehtag selectedline boldrows
+proc bolden {id font} {
+ global canv linehtag currentid boldids need_redisplay
- lappend boldrows $row
- $canv itemconf $linehtag($row) -font $font
- if {$row == $selectedline} {
+ # need_redisplay = 1 means the display is stale and about to be redrawn
+ if {$need_redisplay} return
+ lappend boldids $id
+ $canv itemconf $linehtag($id) -font $font
+ if {[info exists currentid] && $id eq $currentid} {
$canv delete secsel
- set t [eval $canv create rect [$canv bbox $linehtag($row)] \
+ set t [eval $canv create rect [$canv bbox $linehtag($id)] \
-outline {{}} -tags secsel \
-fill [$canv cget -selectbackground]]
$canv lower $t
}
}
-proc bolden_name {row font} {
- global canv2 linentag selectedline boldnamerows
+proc bolden_name {id font} {
+ global canv2 linentag currentid boldnameids need_redisplay
- lappend boldnamerows $row
- $canv2 itemconf $linentag($row) -font $font
- if {$row == $selectedline} {
+ if {$need_redisplay} return
+ lappend boldnameids $id
+ $canv2 itemconf $linentag($id) -font $font
+ if {[info exists currentid] && $id eq $currentid} {
$canv2 delete secsel
- set t [eval $canv2 create rect [$canv2 bbox $linentag($row)] \
+ set t [eval $canv2 create rect [$canv2 bbox $linentag($id)] \
-outline {{}} -tags secsel \
-fill [$canv2 cget -selectbackground]]
$canv2 lower $t
@@ -3453,17 +4074,17 @@ proc bolden_name {row font} {
}
proc unbolden {} {
- global boldrows
+ global boldids
set stillbold {}
- foreach row $boldrows {
- if {![ishighlighted [commitonrow $row]]} {
- bolden $row mainfont
+ foreach id $boldids {
+ if {![ishighlighted $id]} {
+ bolden $id mainfont
} else {
- lappend stillbold $row
+ lappend stillbold $id
}
}
- set boldrows $stillbold
+ set boldids $stillbold
}
proc addvhighlight {n} {
@@ -3504,7 +4125,7 @@ proc vhighlightmore {} {
set row [rowofcommit $id]
if {$r0 <= $row && $row <= $r1} {
if {![highlighted $row]} {
- bolden $row mainfontbold
+ bolden $id mainfontbold
}
set vhighlights($id) 1
}
@@ -3519,7 +4140,7 @@ proc askvhighlight {row id} {
if {[commitinview $id $hlview]} {
if {[info exists iddrawn($id)] && ![ishighlighted $id]} {
- bolden $row mainfontbold
+ bolden $id mainfontbold
}
set vhighlights($id) 1
} else {
@@ -3529,7 +4150,7 @@ proc askvhighlight {row id} {
proc hfiles_change {} {
global highlight_files filehighlight fhighlights fh_serial
- global highlight_paths gdttype
+ global highlight_paths
if {[info exists filehighlight]} {
# delete previous highlights
@@ -3587,15 +4208,15 @@ proc find_change {name ix op} {
}
proc findcom_change args {
- global nhighlights boldnamerows
+ global nhighlights boldnameids
global findpattern findtype findstring gdttype
stopfinding
# delete previous highlights, if any
- foreach row $boldnamerows {
- bolden_name $row mainfont
+ foreach id $boldnameids {
+ bolden_name $id mainfont
}
- set boldnamerows {}
+ set boldnameids {}
catch {unset nhighlights}
unbolden
unmarkmatches
@@ -3684,9 +4305,8 @@ proc readfhighlight {} {
set fhl_list [lrange $fhl_list [expr {$i+1}] end]
if {$line eq {}} continue
if {![commitinview $line $curview]} continue
- set row [rowofcommit $line]
if {[info exists iddrawn($line)] && ![ishighlighted $line]} {
- bolden $row mainfontbold
+ bolden $line mainfontbold
}
set fhighlights($line) 1
}
@@ -3738,9 +4358,9 @@ proc askfindhighlight {row id} {
}
if {$isbold && [info exists iddrawn($id)]} {
if {![ishighlighted $id]} {
- bolden $row mainfontbold
+ bolden $id mainfontbold
if {$isbold > 1} {
- bolden_name $row mainfontbold
+ bolden_name $id mainfontbold
}
}
if {$markingmatches} {
@@ -3760,15 +4380,15 @@ proc markrowmatches {row id} {
if {$findloc eq [mc "All fields"] || $findloc eq [mc "Headline"]} {
set m [findmatches $headline]
if {$m ne {}} {
- markmatches $canv $row $headline $linehtag($row) $m \
- [$canv itemcget $linehtag($row) -font] $row
+ markmatches $canv $row $headline $linehtag($id) $m \
+ [$canv itemcget $linehtag($id) -font] $row
}
}
if {$findloc eq [mc "All fields"] || $findloc eq [mc "Author"]} {
set m [findmatches $author]
if {$m ne {}} {
- markmatches $canv2 $row $author $linentag($row) $m \
- [$canv2 itemcget $linentag($row) -font] $row
+ markmatches $canv2 $row $author $linentag($id) $m \
+ [$canv2 itemcget $linentag($id) -font] $row
}
}
}
@@ -3893,7 +4513,7 @@ proc askrelhighlight {row id} {
}
if {[info exists iddrawn($id)]} {
if {$isbold && ![ishighlighted $id]} {
- bolden $row mainfontbold
+ bolden $id mainfontbold
}
}
set rhighlights($id) $isbold
@@ -4047,7 +4667,7 @@ proc visiblerows {} {
proc layoutmore {} {
global commitidx viewcomplete curview
global numcommits pending_select curview
- global lastscrollset lastscrollrows commitinterest
+ global lastscrollset lastscrollrows
if {$lastscrollrows < 100 || $viewcomplete($curview) ||
[clock clicks -milliseconds] - $lastscrollset > 500} {
@@ -4061,14 +4681,56 @@ proc layoutmore {} {
drawvisible
}
+# With path limiting, we mightn't get the actual HEAD commit,
+# so ask git rev-list what is the first ancestor of HEAD that
+# touches a file in the path limit.
+proc get_viewmainhead {view} {
+ global viewmainheadid vfilelimit viewinstances mainheadid
+
+ catch {
+ set rfd [open [concat | git rev-list -1 $mainheadid \
+ -- $vfilelimit($view)] r]
+ set j [reg_instance $rfd]
+ lappend viewinstances($view) $j
+ fconfigure $rfd -blocking 0
+ filerun $rfd [list getviewhead $rfd $j $view]
+ set viewmainheadid($curview) {}
+ }
+}
+
+# git rev-list should give us just 1 line to use as viewmainheadid($view)
+proc getviewhead {fd inst view} {
+ global viewmainheadid commfd curview viewinstances showlocalchanges
+
+ set id {}
+ if {[gets $fd line] < 0} {
+ if {![eof $fd]} {
+ return 1
+ }
+ } elseif {[string length $line] == 40 && [string is xdigit $line]} {
+ set id $line
+ }
+ set viewmainheadid($view) $id
+ close $fd
+ unset commfd($inst)
+ set i [lsearch -exact $viewinstances($view) $inst]
+ if {$i >= 0} {
+ set viewinstances($view) [lreplace $viewinstances($view) $i $i]
+ }
+ if {$showlocalchanges && $id ne {} && $view == $curview} {
+ doshowlocalchanges
+ }
+ return 0
+}
+
proc doshowlocalchanges {} {
- global curview mainheadid
+ global curview viewmainheadid
- if {$mainheadid eq {}} return
- if {[commitinview $mainheadid $curview]} {
+ if {$viewmainheadid($curview) eq {}} return
+ if {[commitinview $viewmainheadid($curview) $curview]} {
dodiffindex
} else {
- lappend commitinterest($mainheadid) {dodiffindex}
+ interestedin $viewmainheadid($curview) dodiffindex
}
}
@@ -4086,19 +4748,24 @@ proc dohidelocalchanges {} {
# spawn off a process to do git diff-index --cached HEAD
proc dodiffindex {} {
- global lserial showlocalchanges
+ global lserial showlocalchanges vfilelimit curview
global isworktree
if {!$showlocalchanges || !$isworktree} return
incr lserial
- set fd [open "|git diff-index --cached HEAD" r]
+ set cmd "|git diff-index --cached HEAD"
+ if {$vfilelimit($curview) ne {}} {
+ set cmd [concat $cmd -- $vfilelimit($curview)]
+ }
+ set fd [open $cmd r]
fconfigure $fd -blocking 0
set i [reg_instance $fd]
filerun $fd [list readdiffindex $fd $lserial $i]
}
proc readdiffindex {fd serial inst} {
- global mainheadid nullid nullid2 curview commitinfo commitdata lserial
+ global viewmainheadid nullid nullid2 curview commitinfo commitdata lserial
+ global vfilelimit
set isdiff 1
if {[gets $fd line] < 0} {
@@ -4115,7 +4782,11 @@ proc readdiffindex {fd serial inst} {
}
# now see if there are any local changes not checked in to the index
- set fd [open "|git diff-files" r]
+ set cmd "|git diff-files"
+ if {$vfilelimit($curview) ne {}} {
+ set cmd [concat $cmd -- $vfilelimit($curview)]
+ }
+ set fd [open $cmd r]
fconfigure $fd -blocking 0
set i [reg_instance $fd]
filerun $fd [list readdifffiles $fd $serial $i]
@@ -4128,15 +4799,18 @@ proc readdiffindex {fd serial inst} {
if {[commitinview $nullid $curview]} {
removefakerow $nullid
}
- insertfakerow $nullid2 $mainheadid
+ insertfakerow $nullid2 $viewmainheadid($curview)
} elseif {!$isdiff && [commitinview $nullid2 $curview]} {
+ if {[commitinview $nullid $curview]} {
+ removefakerow $nullid
+ }
removefakerow $nullid2
}
return 0
}
proc readdifffiles {fd serial inst} {
- global mainheadid nullid nullid2 curview
+ global viewmainheadid nullid nullid2 curview
global commitinfo commitdata lserial
set isdiff 1
@@ -4161,7 +4835,7 @@ proc readdifffiles {fd serial inst} {
if {[commitinview $nullid2 $curview]} {
set p $nullid2
} else {
- set p $mainheadid
+ set p $viewmainheadid($curview)
}
insertfakerow $nullid $p
} elseif {!$isdiff && [commitinview $nullid $curview]} {
@@ -4886,8 +5560,8 @@ proc drawcmittext {id row col} {
global cmitlisted commitinfo rowidlist parentlist
global rowtextx idpos idtags idheads idotherrefs
global linehtag linentag linedtag selectedline
- global canvxmax boldrows boldnamerows fgcolor
- global mainheadid nullid nullid2 circleitem circlecolors
+ global canvxmax boldids boldnameids fgcolor
+ global mainheadid nullid nullid2 circleitem circlecolors ctxbut
# listed is 0 for boundary, 1 for normal, 2 for negative, 3 for left, 4 for right
set listed $cmitlisted($curview,$id)
@@ -4951,22 +5625,22 @@ proc drawcmittext {id row col} {
set nfont mainfont
set isbold [ishighlighted $id]
if {$isbold > 0} {
- lappend boldrows $row
+ lappend boldids $id
set font mainfontbold
if {$isbold > 1} {
- lappend boldnamerows $row
+ lappend boldnameids $id
set nfont mainfontbold
}
}
- set linehtag($row) [$canv create text $xt $y -anchor w -fill $fgcolor \
- -text $headline -font $font -tags text]
- $canv bind $linehtag($row) <Button-3> "rowmenu %X %Y $id"
- set linentag($row) [$canv2 create text 3 $y -anchor w -fill $fgcolor \
- -text $name -font $nfont -tags text]
- set linedtag($row) [$canv3 create text 3 $y -anchor w -fill $fgcolor \
- -text $date -font mainfont -tags text]
+ set linehtag($id) [$canv create text $xt $y -anchor w -fill $fgcolor \
+ -text $headline -font $font -tags text]
+ $canv bind $linehtag($id) $ctxbut "rowmenu %X %Y $id"
+ set linentag($id) [$canv2 create text 3 $y -anchor w -fill $fgcolor \
+ -text $name -font $nfont -tags text]
+ set linedtag($id) [$canv3 create text 3 $y -anchor w -fill $fgcolor \
+ -text $date -font mainfont -tags text]
if {$selectedline == $row} {
- make_secsel $row
+ make_secsel $id
}
set xr [expr {$xt + [font measure $font $headline]}]
if {$xr > $canvxmax} {
@@ -5174,7 +5848,7 @@ proc drawvisible {} {
proc clear_display {} {
global iddrawn linesegs need_redisplay nrows_drawn
global vhighlights fhighlights nhighlights rhighlights
- global linehtag linentag linedtag boldrows boldnamerows
+ global linehtag linentag linedtag boldids boldnameids
allcanvs delete all
catch {unset iddrawn}
@@ -5182,8 +5856,8 @@ proc clear_display {} {
catch {unset linehtag}
catch {unset linentag}
catch {unset linedtag}
- set boldrows {}
- set boldnamerows {}
+ set boldids {}
+ set boldnameids {}
catch {unset vhighlights}
catch {unset fhighlights}
catch {unset nhighlights}
@@ -5302,7 +5976,7 @@ proc bindline {t id} {
proc drawtags {id x xt y1} {
global idtags idheads idotherrefs mainhead
global linespc lthickness
- global canv rowtextx curview fgcolor bgcolor
+ global canv rowtextx curview fgcolor bgcolor ctxbut
set marks {}
set ntags 0
@@ -5380,7 +6054,7 @@ proc drawtags {id x xt y1} {
if {$ntags >= 0} {
$canv bind $t <1> [list showtag $tag 1]
} elseif {$nheads >= 0} {
- $canv bind $t <Button-3> [list headmenu %X %Y $id $tag]
+ $canv bind $t $ctxbut [list headmenu %X %Y $id $tag]
}
}
return $xt
@@ -5504,6 +6178,7 @@ proc stopfinding {} {
set fprogcoord 0
adjustprogress
}
+ stopblaming
}
proc findmore {} {
@@ -5640,10 +6315,11 @@ proc findmore {} {
proc findselectline {l} {
global findloc commentend ctext findcurline markingmatches gdttype
- set markingmatches 1
+ set markingmatches [expr {$gdttype eq [mc "containing:"]}]
set findcurline $l
selectline $l 1
- if {$findloc == [mc "All fields"] || $findloc == [mc "Comments"]} {
+ if {$markingmatches &&
+ ($findloc eq [mc "All fields"] || $findloc eq [mc "Comments"])} {
# highlight the matches in the comments
set f [$ctext get 1.0 $commentend]
set matches [findmatches $f]
@@ -5723,11 +6399,11 @@ proc commit_descriptor {p} {
# append some text to the ctext widget, and make any SHA1 ID
# that we know about be a clickable link.
proc appendwithlinks {text tags} {
- global ctext linknum curview pendinglinks
+ global ctext linknum curview
set start [$ctext index "end - 1c"]
$ctext insert end $text $tags
- set links [regexp -indices -all -inline {[0-9a-f]{40}} $text]
+ set links [regexp -indices -all -inline {\m[0-9a-f]{6,40}\M} $text]
foreach l $links {
set s [lindex $l 0]
set e [lindex $l 1]
@@ -5741,16 +6417,27 @@ proc appendwithlinks {text tags} {
}
proc setlink {id lk} {
- global curview ctext pendinglinks commitinterest
+ global curview ctext pendinglinks
- if {[commitinview $id $curview]} {
+ set known 0
+ if {[string length $id] < 40} {
+ set matches [longid $id]
+ if {[llength $matches] > 0} {
+ if {[llength $matches] > 1} return
+ set known 1
+ set id [lindex $matches 0]
+ }
+ } else {
+ set known [commitinview $id $curview]
+ }
+ if {$known} {
$ctext tag conf $lk -foreground blue -underline 1
- $ctext tag bind $lk <1> [list selectline [rowofcommit $id] 1]
+ $ctext tag bind $lk <1> [list selbyid $id]
$ctext tag bind $lk <Enter> {linkcursor %W 1}
$ctext tag bind $lk <Leave> {linkcursor %W -1}
} else {
lappend pendinglinks($id) $lk
- lappend commitinterest($id) {makelink %I}
+ interestedin $id {makelink %P}
}
}
@@ -5879,25 +6566,25 @@ proc dispnexttag {} {
}
}
-proc make_secsel {l} {
+proc make_secsel {id} {
global linehtag linentag linedtag canv canv2 canv3
- if {![info exists linehtag($l)]} return
+ if {![info exists linehtag($id)]} return
$canv delete secsel
- set t [eval $canv create rect [$canv bbox $linehtag($l)] -outline {{}} \
+ set t [eval $canv create rect [$canv bbox $linehtag($id)] -outline {{}} \
-tags secsel -fill [$canv cget -selectbackground]]
$canv lower $t
$canv2 delete secsel
- set t [eval $canv2 create rect [$canv2 bbox $linentag($l)] -outline {{}} \
+ set t [eval $canv2 create rect [$canv2 bbox $linentag($id)] -outline {{}} \
-tags secsel -fill [$canv2 cget -selectbackground]]
$canv2 lower $t
$canv3 delete secsel
- set t [eval $canv3 create rect [$canv3 bbox $linedtag($l)] -outline {{}} \
+ set t [eval $canv3 create rect [$canv3 bbox $linedtag($id)] -outline {{}} \
-tags secsel -fill [$canv3 cget -selectbackground]]
$canv3 lower $t
}
-proc selectline {l isnew} {
+proc selectline {l isnew {desired_loc {}}} {
global canv ctext commitinfo selectedline
global canvy0 linespc parents children curview
global currentid sha1entry
@@ -5905,7 +6592,7 @@ proc selectline {l isnew} {
global mergemax numcommits pending_select
global cmitmode showneartags allcommits
global targetrow targetid lastscrollrows
- global autoselect
+ global autoselect jump_to_here
catch {unset pending_select}
$canv delete hover
@@ -5958,7 +6645,7 @@ proc selectline {l isnew} {
drawvisible
}
- make_secsel $l
+ make_secsel $id
if {$isnew} {
addtohistory [list selbyid $id]
@@ -6044,6 +6731,7 @@ proc selectline {l isnew} {
$ctext conf -state disabled
set commentend [$ctext index "end - 1c"]
+ set jump_to_here $desired_loc
init_flist [mc "Comments"]
if {$cmitmode eq "tree"} {
gettree $id
@@ -6196,7 +6884,7 @@ proc gettree {id} {
set treepending $id
set treefilelist($id) {}
set treeidlist($id) {}
- fconfigure $gtf -blocking 0
+ fconfigure $gtf -blocking 0 -encoding binary
filerun $gtf [list gettreeline $gtf $id]
}
} else {
@@ -6218,11 +6906,12 @@ proc gettreeline {gtf id} {
set line [string range $line 0 [expr {$i-1}]]
if {$diffids ne $nullid2 && [lindex $line 1] ne "blob"} continue
set sha1 [lindex $line 2]
- if {[string index $fname 0] eq "\""} {
- set fname [lindex $fname 0]
- }
lappend treeidlist($id) $sha1
}
+ if {[string index $fname 0] eq "\""} {
+ set fname [lindex $fname 0]
+ }
+ set fname [encoding convertfrom $fname]
lappend treefilelist($id) $fname
}
if {![eof $gtf]} {
@@ -6244,6 +6933,7 @@ proc gettreeline {gtf id} {
proc showfile {f} {
global treefilelist treeidlist diffids nullid nullid2
+ global ctext_file_names ctext_file_lines
global ctext commentend
set i [lsearch -exact $treefilelist($diffids) $f]
@@ -6263,10 +6953,12 @@ proc showfile {f} {
return
}
}
- fconfigure $bf -blocking 0
+ fconfigure $bf -blocking 0 -encoding [get_path_encoding $f]
filerun $bf [list getblobline $bf $diffids]
$ctext config -state normal
clear_ctext $commentend
+ lappend ctext_file_names $f
+ lappend ctext_file_lines [lindex [split $commentend "."] 0]
$ctext insert end "\n"
$ctext insert end "$f\n" filesep
$ctext config -state disabled
@@ -6287,109 +6979,43 @@ proc getblobline {bf id} {
$ctext insert end "$line\n"
}
if {[eof $bf]} {
+ global jump_to_here ctext_file_names commentend
+
# delete last newline
$ctext delete "end - 2c" "end - 1c"
close $bf
+ if {$jump_to_here ne {} &&
+ [lindex $jump_to_here 0] eq [lindex $ctext_file_names 0]} {
+ set lnum [expr {[lindex $jump_to_here 1] +
+ [lindex [split $commentend .] 0]}]
+ mark_ctext_line $lnum
+ }
return 0
}
$ctext config -state disabled
return [expr {$nl >= 1000? 2: 1}]
}
+proc mark_ctext_line {lnum} {
+ global ctext markbgcolor
+
+ $ctext tag delete omark
+ $ctext tag add omark $lnum.0 "$lnum.0 + 1 line"
+ $ctext tag conf omark -background $markbgcolor
+ $ctext see $lnum.0
+}
+
proc mergediff {id} {
- global diffmergeid mdifffd
- global diffids
- global parents
- global diffcontext
- global limitdiffs vfilelimit curview
+ global diffmergeid
+ global diffids treediffs
+ global parents curview
set diffmergeid $id
set diffids $id
- # this doesn't seem to actually affect anything...
- set cmd [concat | git diff-tree --no-commit-id --cc -U$diffcontext $id]
- if {$limitdiffs && $vfilelimit($curview) ne {}} {
- set cmd [concat $cmd -- $vfilelimit($curview)]
- }
- if {[catch {set mdf [open $cmd r]} err]} {
- error_popup "[mc "Error getting merge diffs:"] $err"
- return
- }
- fconfigure $mdf -blocking 0
- set mdifffd($id) $mdf
+ set treediffs($id) {}
set np [llength $parents($curview,$id)]
settabs $np
- filerun $mdf [list getmergediffline $mdf $id $np]
-}
-
-proc getmergediffline {mdf id np} {
- global diffmergeid ctext cflist mergemax
- global difffilestart mdifffd
-
- $ctext conf -state normal
- set nr 0
- while {[incr nr] <= 1000 && [gets $mdf line] >= 0} {
- if {![info exists diffmergeid] || $id != $diffmergeid
- || $mdf != $mdifffd($id)} {
- close $mdf
- return 0
- }
- if {[regexp {^diff --cc (.*)} $line match fname]} {
- # start of a new file
- $ctext insert end "\n"
- set here [$ctext index "end - 1c"]
- lappend difffilestart $here
- add_flist [list $fname]
- set l [expr {(78 - [string length $fname]) / 2}]
- set pad [string range "----------------------------------------" 1 $l]
- $ctext insert end "$pad $fname $pad\n" filesep
- } elseif {[regexp {^@@} $line]} {
- $ctext insert end "$line\n" hunksep
- } elseif {[regexp {^[0-9a-f]{40}$} $line] || [regexp {^index} $line]} {
- # do nothing
- } else {
- # parse the prefix - one ' ', '-' or '+' for each parent
- set spaces {}
- set minuses {}
- set pluses {}
- set isbad 0
- for {set j 0} {$j < $np} {incr j} {
- set c [string range $line $j $j]
- if {$c == " "} {
- lappend spaces $j
- } elseif {$c == "-"} {
- lappend minuses $j
- } elseif {$c == "+"} {
- lappend pluses $j
- } else {
- set isbad 1
- break
- }
- }
- set tags {}
- set num {}
- if {!$isbad && $minuses ne {} && $pluses eq {}} {
- # line doesn't appear in result, parents in $minuses have the line
- set num [lindex $minuses 0]
- } elseif {!$isbad && $pluses ne {} && $minuses eq {}} {
- # line appears in result, parents in $pluses don't have the line
- lappend tags mresult
- set num [lindex $spaces 0]
- }
- if {$num ne {}} {
- if {$num >= $mergemax} {
- set num "max"
- }
- lappend tags m$num
- }
- $ctext insert end "$line\n" $tags
- }
- }
- $ctext conf -state disabled
- if {[eof $mdf]} {
- close $mdf
- return 0
- }
- return [expr {$nr >= 1000? 2: 1}]
+ getblobdiffs $id
}
proc startdiff {ids} {
@@ -6481,27 +7107,44 @@ proc gettreediffs {ids} {
set treepending $ids
set treediff {}
- fconfigure $gdtf -blocking 0
+ fconfigure $gdtf -blocking 0 -encoding binary
filerun $gdtf [list gettreediffline $gdtf $ids]
}
proc gettreediffline {gdtf ids} {
global treediff treediffs treepending diffids diffmergeid
- global cmitmode vfilelimit curview limitdiffs
+ global cmitmode vfilelimit curview limitdiffs perfile_attrs
set nr 0
- while {[incr nr] <= 1000 && [gets $gdtf line] >= 0} {
+ set sublist {}
+ set max 1000
+ if {$perfile_attrs} {
+ # cache_gitattr is slow, and even slower on win32 where we
+ # have to invoke it for only about 30 paths at a time
+ set max 500
+ if {[tk windowingsystem] == "win32"} {
+ set max 120
+ }
+ }
+ while {[incr nr] <= $max && [gets $gdtf line] >= 0} {
set i [string first "\t" $line]
if {$i >= 0} {
set file [string range $line [expr {$i+1}] end]
if {[string index $file 0] eq "\""} {
set file [lindex $file 0]
}
- lappend treediff $file
+ set file [encoding convertfrom $file]
+ if {$file ne [lindex $treediff end]} {
+ lappend treediff $file
+ lappend sublist $file
+ }
}
}
+ if {$perfile_attrs} {
+ cache_gitattr encoding $sublist
+ }
if {![eof $gdtf]} {
- return [expr {$nr >= 1000? 2: 1}]
+ return [expr {$nr >= $max? 2: 1}]
}
close $gdtf
if {$limitdiffs && $vfilelimit($curview) ne {}} {
@@ -6516,7 +7159,7 @@ proc gettreediffline {gdtf ids} {
set treediffs($ids) $treediff
}
unset treepending
- if {$cmitmode eq "tree"} {
+ if {$cmitmode eq "tree" && [llength $diffids] == 1} {
gettree $diffids
} elseif {$ids != $diffids} {
if {![info exists diffmergeid]} {
@@ -6554,8 +7197,9 @@ proc getblobdiffs {ids} {
global diffcontext
global ignorespace
global limitdiffs vfilelimit curview
+ global diffencoding targetline diffnparents
- set cmd [diffcmd $ids "-p -C --no-commit-id -U$diffcontext"]
+ set cmd [diffcmd $ids "-p -C --cc --no-commit-id -U$diffcontext"]
if {$ignorespace} {
append cmd " -w"
}
@@ -6563,11 +7207,14 @@ proc getblobdiffs {ids} {
set cmd [concat $cmd -- $vfilelimit($curview)]
}
if {[catch {set bdf [open $cmd r]} err]} {
- puts "error getting diffs: $err"
+ error_popup [mc "Error getting diffs: %s" $err]
return
}
+ set targetline {}
+ set diffnparents 0
set diffinhdr 0
- fconfigure $bdf -blocking 0
+ set diffencoding [get_path_encoding {}]
+ fconfigure $bdf -blocking 0 -encoding binary
set blobdifffd($ids) $bdf
filerun $bdf [list getblobdiffline $bdf $diffids]
}
@@ -6586,21 +7233,32 @@ proc setinlist {var i val} {
}
proc makediffhdr {fname ids} {
- global ctext curdiffstart treediffs
+ global ctext curdiffstart treediffs diffencoding
+ global ctext_file_names jump_to_here targetline diffline
+ set fname [encoding convertfrom $fname]
+ set diffencoding [get_path_encoding $fname]
set i [lsearch -exact $treediffs($ids) $fname]
if {$i >= 0} {
setinlist difffilestart $i $curdiffstart
}
+ lset ctext_file_names end $fname
set l [expr {(78 - [string length $fname]) / 2}]
set pad [string range "----------------------------------------" 1 $l]
$ctext insert $curdiffstart "$pad $fname $pad" filesep
+ set targetline {}
+ if {$jump_to_here ne {} && [lindex $jump_to_here 0] eq $fname} {
+ set targetline [lindex $jump_to_here 1]
+ }
+ set diffline 0
}
proc getblobdiffline {bdf ids} {
global diffids blobdifffd ctext curdiffstart
global diffnexthead diffnextnote difffilestart
- global diffinhdr treediffs
+ global ctext_file_names ctext_file_lines
+ global diffinhdr treediffs mergemax diffnparents
+ global diffencoding jump_to_here targetline diffline
set nr 0
$ctext conf -state normal
@@ -6609,40 +7267,74 @@ proc getblobdiffline {bdf ids} {
close $bdf
return 0
}
- if {![string compare -length 11 "diff --git " $line]} {
- # trim off "diff --git "
- set line [string range $line 11 end]
- set diffinhdr 1
+ if {![string compare -length 5 "diff " $line]} {
+ if {![regexp {^diff (--cc|--git) } $line m type]} {
+ set line [encoding convertfrom $line]
+ $ctext insert end "$line\n" hunksep
+ continue
+ }
# start of a new file
+ set diffinhdr 1
$ctext insert end "\n"
set curdiffstart [$ctext index "end - 1c"]
+ lappend ctext_file_names ""
+ lappend ctext_file_lines [lindex [split $curdiffstart "."] 0]
$ctext insert end "\n" filesep
- # If the name hasn't changed the length will be odd,
- # the middle char will be a space, and the two bits either
- # side will be a/name and b/name, or "a/name" and "b/name".
- # If the name has changed we'll get "rename from" and
- # "rename to" or "copy from" and "copy to" lines following this,
- # and we'll use them to get the filenames.
- # This complexity is necessary because spaces in the filename(s)
- # don't get escaped.
- set l [string length $line]
- set i [expr {$l / 2}]
- if {!(($l & 1) && [string index $line $i] eq " " &&
- [string range $line 2 [expr {$i - 1}]] eq \
- [string range $line [expr {$i + 3}] end])} {
- continue
- }
- # unescape if quoted and chop off the a/ from the front
- if {[string index $line 0] eq "\""} {
- set fname [string range [lindex $line 0] 2 end]
+
+ if {$type eq "--cc"} {
+ # start of a new file in a merge diff
+ set fname [string range $line 10 end]
+ if {[lsearch -exact $treediffs($ids) $fname] < 0} {
+ lappend treediffs($ids) $fname
+ add_flist [list $fname]
+ }
+
} else {
- set fname [string range $line 2 [expr {$i - 1}]]
+ set line [string range $line 11 end]
+ # If the name hasn't changed the length will be odd,
+ # the middle char will be a space, and the two bits either
+ # side will be a/name and b/name, or "a/name" and "b/name".
+ # If the name has changed we'll get "rename from" and
+ # "rename to" or "copy from" and "copy to" lines following
+ # this, and we'll use them to get the filenames.
+ # This complexity is necessary because spaces in the
+ # filename(s) don't get escaped.
+ set l [string length $line]
+ set i [expr {$l / 2}]
+ if {!(($l & 1) && [string index $line $i] eq " " &&
+ [string range $line 2 [expr {$i - 1}]] eq \
+ [string range $line [expr {$i + 3}] end])} {
+ continue
+ }
+ # unescape if quoted and chop off the a/ from the front
+ if {[string index $line 0] eq "\""} {
+ set fname [string range [lindex $line 0] 2 end]
+ } else {
+ set fname [string range $line 2 [expr {$i - 1}]]
+ }
}
makediffhdr $fname $ids
- } elseif {[regexp {^@@ -([0-9]+)(,[0-9]+)? \+([0-9]+)(,[0-9]+)? @@(.*)} \
- $line match f1l f1c f2l f2c rest]} {
+ } elseif {![string compare -length 16 "* Unmerged path " $line]} {
+ set fname [encoding convertfrom [string range $line 16 end]]
+ $ctext insert end "\n"
+ set curdiffstart [$ctext index "end - 1c"]
+ lappend ctext_file_names $fname
+ lappend ctext_file_lines [lindex [split $curdiffstart "."] 0]
+ $ctext insert end "$line\n" filesep
+ set i [lsearch -exact $treediffs($ids) $fname]
+ if {$i >= 0} {
+ setinlist difffilestart $i $curdiffstart
+ }
+
+ } elseif {![string compare -length 2 "@@" $line]} {
+ regexp {^@@+} $line ats
+ set line [encoding convertfrom $diffencoding $line]
$ctext insert end "$line\n" hunksep
+ if {[regexp { \+(\d+),\d+ @@} $line m nl]} {
+ set diffline $nl
+ }
+ set diffnparents [expr {[string length $ats] - 1}]
set diffinhdr 0
} elseif {$diffinhdr} {
@@ -6651,6 +7343,7 @@ proc getblobdiffline {bdf ids} {
if {[string index $fname 0] eq "\""} {
set fname [lindex $fname 0]
}
+ set fname [encoding convertfrom $fname]
set i [lsearch -exact $treediffs($ids) $fname]
if {$i >= 0} {
setinlist difffilestart $i $curdiffstart
@@ -6672,12 +7365,44 @@ proc getblobdiffline {bdf ids} {
$ctext insert end "$line\n" filesep
} else {
- set x [string range $line 0 0]
- if {$x == "-" || $x == "+"} {
- set tag [expr {$x == "+"}]
- $ctext insert end "$line\n" d$tag
- } elseif {$x == " "} {
- $ctext insert end "$line\n"
+ set line [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"}]
+ if {[string trim $prefix " -+"] eq {}} {
+ # prefix only has " ", "-" and "+" in it: normal diff line
+ set num [string first "-" $prefix]
+ if {$num >= 0} {
+ # removed line, first parent with line is $num
+ if {$num >= $mergemax} {
+ set num "max"
+ }
+ $ctext insert end "$line\n" $tag$num
+ } else {
+ set tags {}
+ if {[string first "+" $prefix] >= 0} {
+ # added line
+ lappend tags ${tag}result
+ if {$diffnparents > 1} {
+ set num [string first " " $prefix]
+ if {$num >= 0} {
+ if {$num >= $mergemax} {
+ set num "max"
+ }
+ lappend tags m$num
+ }
+ }
+ }
+ if {$targetline ne {}} {
+ if {$diffline == $targetline} {
+ set seehere [$ctext index "end - 1 chars"]
+ set targetline {}
+ } else {
+ incr diffline
+ }
+ }
+ $ctext insert end "$line\n" $tags
+ }
} else {
# "\ No newline at end of file",
# or something else we don't recognize
@@ -6685,6 +7410,9 @@ proc getblobdiffline {bdf ids} {
}
}
}
+ if {[info exists seehere]} {
+ mark_ctext_line [lindex [split $seehere .] 0]
+ }
$ctext conf -state disabled
if {[eof $bdf]} {
close $bdf
@@ -6697,7 +7425,7 @@ proc changediffdisp {} {
global ctext diffelide
$ctext tag conf d0 -elide [lindex $diffelide 0]
- $ctext tag conf d1 -elide [lindex $diffelide 1]
+ $ctext tag conf dresult -elide [lindex $diffelide 1]
}
proc highlightfile {loc cline} {
@@ -6745,6 +7473,7 @@ proc nextfile {} {
proc clear_ctext {{first 1.0}} {
global ctext smarktop smarkbot
+ global ctext_file_names ctext_file_lines
global pendinglinks
set l [lindex [split $first .] 0]
@@ -6758,6 +7487,8 @@ proc clear_ctext {{first 1.0}} {
if {$first eq "1.0"} {
catch {unset pendinglinks}
}
+ set ctext_file_names {}
+ set ctext_file_lines {}
}
proc settabs {{firstab {}}} {
@@ -7033,13 +7764,13 @@ proc gotocommit {} {
} else {
set id [string tolower $sha1string]
if {[regexp {^[0-9a-f]{4,39}$} $id]} {
- set matches [array names varcid "$curview,$id*"]
+ set matches [longid $id]
if {$matches ne {}} {
if {[llength $matches] > 1} {
error_popup [mc "Short SHA1 id %s is ambiguous" $id]
return
}
- set id [lindex [split [lindex $matches 0] ","] 1]
+ set id [lindex $matches 0]
}
}
}
@@ -7249,16 +7980,16 @@ proc rowmenu {x y id} {
if {$id ne $nullid && $id ne $nullid2} {
set menu $rowctxmenu
if {$mainhead ne {}} {
- $menu entryconfigure 7 -label [mc "Reset %s branch to here" $mainhead]
+ $menu entryconfigure 7 -label [mc "Reset %s branch to here" $mainhead] -state normal
} else {
$menu entryconfigure 7 -label [mc "Detached head: can't reset" $mainhead] -state disabled
}
} else {
set menu $fakerowmenu
}
- $menu entryconfigure [mc "Diff this -> selected"] -state $state
- $menu entryconfigure [mc "Diff selected -> this"] -state $state
- $menu entryconfigure [mc "Make patch"] -state $state
+ $menu entryconfigure [mca "Diff this -> selected"] -state $state
+ $menu entryconfigure [mca "Diff selected -> this"] -state $state
+ $menu entryconfigure [mca "Make patch"] -state $state
tk_popup $menu $x $y
}
@@ -7312,6 +8043,7 @@ proc mkpatch {} {
set patchtop $top
catch {destroy $top}
toplevel $top
+ make_transient $top .
label $top.title -text [mc "Generate patch"]
grid $top.title - -pady 10
label $top.from -text [mc "From:"]
@@ -7342,6 +8074,8 @@ proc mkpatch {} {
frame $top.buts
button $top.buts.gen -text [mc "Generate"] -command mkpatchgo
button $top.buts.can -text [mc "Cancel"] -command mkpatchcan
+ bind $top <Key-Return> mkpatchgo
+ bind $top <Key-Escape> mkpatchcan
grid $top.buts.gen $top.buts.can
grid columnconfigure $top.buts 0 -weight 1 -uniform a
grid columnconfigure $top.buts 1 -weight 1 -uniform a
@@ -7376,7 +8110,7 @@ proc mkpatchgo {} {
set cmd [lrange $cmd 1 end]
lappend cmd >$fname &
if {[catch {eval exec $cmd} err]} {
- error_popup "[mc "Error creating patch:"] $err"
+ error_popup "[mc "Error creating patch:"] $err" $patchtop
}
catch {destroy $patchtop}
unset patchtop
@@ -7396,6 +8130,7 @@ proc mktag {} {
set mktagtop $top
catch {destroy $top}
toplevel $top
+ make_transient $top .
label $top.title -text [mc "Create tag"]
grid $top.title - -pady 10
label $top.id -text [mc "ID:"]
@@ -7413,6 +8148,8 @@ proc mktag {} {
frame $top.buts
button $top.buts.gen -text [mc "Create"] -command mktaggo
button $top.buts.can -text [mc "Cancel"] -command mktagcan
+ bind $top <Key-Return> mktaggo
+ bind $top <Key-Escape> mktagcan
grid $top.buts.gen $top.buts.can
grid columnconfigure $top.buts 0 -weight 1 -uniform a
grid columnconfigure $top.buts 1 -weight 1 -uniform a
@@ -7426,18 +8163,18 @@ proc domktag {} {
set id [$mktagtop.sha1 get]
set tag [$mktagtop.tag get]
if {$tag == {}} {
- error_popup [mc "No tag name specified"]
- return
+ error_popup [mc "No tag name specified"] $mktagtop
+ return 0
}
if {[info exists tagids($tag)]} {
- error_popup [mc "Tag \"%s\" already exists" $tag]
- return
+ error_popup [mc "Tag \"%s\" already exists" $tag] $mktagtop
+ return 0
}
if {[catch {
exec git tag $tag $id
} err]} {
- error_popup "[mc "Error creating tag:"] $err"
- return
+ error_popup "[mc "Error creating tag:"] $err" $mktagtop
+ return 0
}
set tagids($tag) $id
@@ -7446,6 +8183,7 @@ proc domktag {} {
addedtag $id
dispneartags 0
run refill_reflist
+ return 1
}
proc redrawtags {id} {
@@ -7463,16 +8201,16 @@ proc redrawtags {id} {
$canv itemconf $circleitem($row) -fill $ofill
$canv delete tag.$id
set xt [eval drawtags $id $idpos($id)]
- $canv coords $linehtag($row) $xt [lindex $idpos($id) 2]
- set text [$canv itemcget $linehtag($row) -text]
- set font [$canv itemcget $linehtag($row) -font]
+ $canv coords $linehtag($id) $xt [lindex $idpos($id) 2]
+ set text [$canv itemcget $linehtag($id) -text]
+ set font [$canv itemcget $linehtag($id) -font]
set xr [expr {$xt + [font measure $font $text]}]
if {$xr > $canvxmax} {
set canvxmax $xr
setcanvscroll
}
if {[info exists currentid] && $currentid == $id} {
- make_secsel $row
+ make_secsel $id
}
}
@@ -7484,7 +8222,7 @@ proc mktagcan {} {
}
proc mktaggo {} {
- domktag
+ if {![domktag]} return
mktagcan
}
@@ -7495,6 +8233,7 @@ proc writecommit {} {
set wrcomtop $top
catch {destroy $top}
toplevel $top
+ make_transient $top .
label $top.title -text [mc "Write commit to file"]
grid $top.title - -pady 10
label $top.id -text [mc "ID:"]
@@ -7516,6 +8255,8 @@ proc writecommit {} {
frame $top.buts
button $top.buts.gen -text [mc "Write"] -command wrcomgo
button $top.buts.can -text [mc "Cancel"] -command wrcomcan
+ bind $top <Key-Return> wrcomgo
+ bind $top <Key-Escape> wrcomcan
grid $top.buts.gen $top.buts.can
grid columnconfigure $top.buts 0 -weight 1 -uniform a
grid columnconfigure $top.buts 1 -weight 1 -uniform a
@@ -7530,7 +8271,7 @@ proc wrcomgo {} {
set cmd "echo $id | [$wrcomtop.cmd get]"
set fname [$wrcomtop.fname get]
if {[catch {exec sh -c $cmd >$fname &} err]} {
- error_popup "[mc "Error writing commit:"] $err"
+ error_popup "[mc "Error writing commit:"] $err" $wrcomtop
}
catch {destroy $wrcomtop}
unset wrcomtop
@@ -7549,6 +8290,7 @@ proc mkbranch {} {
set top .makebranch
catch {destroy $top}
toplevel $top
+ make_transient $top .
label $top.title -text [mc "Create new branch"]
grid $top.title - -pady 10
label $top.id -text [mc "ID:"]
@@ -7562,6 +8304,8 @@ proc mkbranch {} {
frame $top.buts
button $top.buts.go -text [mc "Create"] -command [list mkbrgo $top]
button $top.buts.can -text [mc "Cancel"] -command "catch {destroy $top}"
+ bind $top <Key-Return> [list mkbrgo $top]
+ bind $top <Key-Escape> "catch {destroy $top}"
grid $top.buts.go $top.buts.can
grid columnconfigure $top.buts 0 -weight 1 -uniform a
grid columnconfigure $top.buts 1 -weight 1 -uniform a
@@ -7574,29 +8318,73 @@ proc mkbrgo {top} {
set name [$top.name get]
set id [$top.sha1 get]
+ set cmdargs {}
+ set old_id {}
if {$name eq {}} {
- error_popup [mc "Please specify a name for the new branch"]
+ error_popup [mc "Please specify a name for the new branch"] $top
return
}
+ if {[info exists headids($name)]} {
+ if {![confirm_popup [mc \
+ "Branch '%s' already exists. Overwrite?" $name] $top]} {
+ return
+ }
+ set old_id $headids($name)
+ lappend cmdargs -f
+ }
catch {destroy $top}
+ lappend cmdargs $name $id
nowbusy newbranch
update
if {[catch {
- exec git branch $name $id
+ eval exec git branch $cmdargs
} err]} {
notbusy newbranch
error_popup $err
} else {
- set headids($name) $id
- lappend idheads($id) $name
- addedhead $id $name
notbusy newbranch
- redrawtags $id
+ if {$old_id ne {}} {
+ movehead $id $name
+ movedhead $id $name
+ redrawtags $old_id
+ redrawtags $id
+ } else {
+ set headids($name) $id
+ lappend idheads($id) $name
+ addedhead $id $name
+ redrawtags $id
+ }
dispneartags 0
run refill_reflist
}
}
+proc exec_citool {tool_args {baseid {}}} {
+ global commitinfo env
+
+ set save_env [array get env GIT_AUTHOR_*]
+
+ if {$baseid ne {}} {
+ if {![info exists commitinfo($baseid)]} {
+ getcommit $baseid
+ }
+ set author [lindex $commitinfo($baseid) 1]
+ set date [lindex $commitinfo($baseid) 2]
+ if {[regexp {^\s*(\S.*\S|\S)\s*<(.*)>\s*$} \
+ $author author name email]
+ && $date ne {}} {
+ set env(GIT_AUTHOR_NAME) $name
+ set env(GIT_AUTHOR_EMAIL) $email
+ set env(GIT_AUTHOR_DATE) $date
+ }
+ }
+
+ eval exec git citool $tool_args &
+
+ array unset env GIT_AUTHOR_*
+ array set env $save_env
+}
+
proc cherrypick {} {
global rowmenuid curview
global mainhead mainheadid
@@ -7615,7 +8403,26 @@ proc cherrypick {} {
# no error occurs, and exec takes that as an indication of error...
if {[catch {exec sh -c "git cherry-pick -r $rowmenuid 2>&1"} err]} {
notbusy cherrypick
- error_popup $err
+ if {[regexp -line \
+ {Entry '(.*)' (would be overwritten by merge|not uptodate)} \
+ $err msg fname]} {
+ error_popup [mc "Cherry-pick failed because of local changes\
+ to file '%s'.\nPlease commit, reset or stash\
+ your changes and try again." $fname]
+ } elseif {[regexp -line \
+ {^(CONFLICT \(.*\):|Automatic cherry-pick failed)} \
+ $err]} {
+ if {[confirm_popup [mc "Cherry-pick failed because of merge\
+ conflict.\nDo you wish to run git citool to\
+ resolve it?"]]} {
+ # Force citool to read MERGE_MSG
+ file delete [file join [gitdir] "GITGUI_MSG"]
+ exec_citool {} $rowmenuid
+ }
+ } else {
+ error_popup $err
+ }
+ run updatecommits
return
}
set newhead [exec git rev-parse HEAD]
@@ -7626,6 +8433,7 @@ proc cherrypick {} {
}
addnewchild $newhead $oldhead
if {[commitinview $oldhead $curview]} {
+ # XXX this isn't right if we have a path limit...
insertrow $newhead $oldhead $curview
if {$mainhead ne {}} {
movehead $newhead $mainhead
@@ -7645,7 +8453,7 @@ proc resethead {} {
set confirm_ok 0
set w ".confirmreset"
toplevel $w
- wm transient $w .
+ make_transient $w .
wm title $w [mc "Confirm reset"]
message $w.m -text \
[mc "Reset branch %s to %s?" $mainhead [string range $rowmenuid 0 7]] \
@@ -7668,6 +8476,7 @@ proc resethead {} {
button $w.ok -text [mc OK] -command "set confirm_ok 1; destroy $w"
pack $w.ok -side left -fill x -padx 20 -pady 20
button $w.cancel -text [mc Cancel] -command "destroy $w"
+ bind $w <Key-Escape> [list destroy $w]
pack $w.cancel -side right -fill x -padx 20 -pady 20
bind $w <Visibility> "grab $w; focus $w"
tkwait window $w
@@ -7732,7 +8541,7 @@ proc headmenu {x y id head} {
proc cobranch {} {
global headmenuid headmenuhead headids
- global showlocalchanges mainheadid
+ global showlocalchanges
# check the tree is clean first??
nowbusy checkout [mc "Checking out"]
@@ -7753,6 +8562,7 @@ proc cobranch {} {
proc readcheckoutstat {fd newhead newheadid} {
global mainhead mainheadid headids showlocalchanges progresscoords
+ global viewmainheadid curview
if {[gets $fd line] >= 0} {
if {[regexp {([0-9]+)% \(([0-9]+)/([0-9]+)\)} $line match p m n]} {
@@ -7770,6 +8580,7 @@ proc readcheckoutstat {fd newhead newheadid} {
set oldmainid $mainheadid
set mainhead $newhead
set mainheadid $newheadid
+ set viewmainheadid($curview) $newheadid
redrawtags $oldmainid
redrawtags $newheadid
selbyid $newheadid
@@ -7824,6 +8635,7 @@ proc showrefs {} {
}
toplevel $top
wm title $top [mc "Tags and heads: %s" [file tail [pwd]]]
+ make_transient $top .
text $top.list -background $bgcolor -foreground $fgcolor \
-selectbackground $selectbgcolor -font mainfont \
-xscrollcommand "$top.xsb set" -yscrollcommand "$top.ysb set" \
@@ -7845,6 +8657,7 @@ proc showrefs {} {
pack $top.f.l -side left
grid $top.f - -sticky ew -pady 2
button $top.close -command [list destroy $top] -text [mc "Close"]
+ bind $top <Key-Escape> [list destroy $top]
grid $top.close -
grid columnconfigure $top 0 -weight 1
grid rowconfigure $top 0 -weight 1
@@ -7886,7 +8699,7 @@ proc reflistfilter_change {n1 n2 op} {
proc refill_reflist {} {
global reflist reflistfilter showrefstop headids tagids otherrefids
- global curview commitinterest
+ global curview
if {![info exists showrefstop] || ![winfo exists $showrefstop]} return
set refs {}
@@ -7895,7 +8708,7 @@ proc refill_reflist {} {
if {[commitinview $headids($n) $curview]} {
lappend refs [list $n H]
} else {
- set commitinterest($headids($n)) {run refill_reflist}
+ interestedin $headids($n) {run refill_reflist}
}
}
}
@@ -7904,7 +8717,7 @@ proc refill_reflist {} {
if {[commitinview $tagids($n) $curview]} {
lappend refs [list $n T]
} else {
- set commitinterest($tagids($n)) {run refill_reflist}
+ interestedin $tagids($n) {run refill_reflist}
}
}
}
@@ -7913,7 +8726,7 @@ proc refill_reflist {} {
if {[commitinview $otherrefids($n) $curview]} {
lappend refs [list $n o]
} else {
- set commitinterest($otherrefids($n)) {run refill_reflist}
+ interestedin $otherrefids($n) {run refill_reflist}
}
}
}
@@ -9150,6 +9963,7 @@ proc mkfontdisp {font top which} {
proc choosefont {font which} {
global fontparam fontlist fonttop fontattr
+ global prefstop
set fontparam(which) $which
set fontparam(font) $font
@@ -9163,6 +9977,7 @@ proc choosefont {font which} {
font create sample
eval font config sample [font actual $font]
toplevel $top
+ make_transient $top $prefstop
wm title $top [mc "Gitk font chooser"]
label $top.l -textvariable fontparam(which)
pack $top.l -side top
@@ -9196,6 +10011,8 @@ proc choosefont {font which} {
frame $top.buts
button $top.buts.ok -text [mc "OK"] -command fontok -default active
button $top.buts.can -text [mc "Cancel"] -command fontcan -default normal
+ bind $top <Key-Return> fontok
+ bind $top <Key-Escape> fontcan
grid $top.buts.ok $top.buts.can
grid columnconfigure $top.buts 0 -weight 1 -uniform a
grid columnconfigure $top.buts 1 -weight 1 -uniform a
@@ -9262,8 +10079,8 @@ proc chg_fontparam {v sub op} {
proc doprefs {} {
global maxwidth maxgraphpct
global oldprefs prefstop showneartags showlocalchanges
- global bgcolor fgcolor ctext diffcolors selectbgcolor
- global tabstop limitdiffs autoselect extdifftool
+ global bgcolor fgcolor ctext diffcolors selectbgcolor markbgcolor
+ global tabstop limitdiffs autoselect extdifftool perfile_attrs
set top .gitkprefs
set prefstop $top
@@ -9272,11 +10089,12 @@ proc doprefs {} {
return
}
foreach v {maxwidth maxgraphpct showneartags showlocalchanges \
- limitdiffs tabstop} {
+ limitdiffs tabstop perfile_attrs} {
set oldprefs($v) [set $v]
}
toplevel $top
wm title $top [mc "Gitk preferences"]
+ make_transient $top .
label $top.ldisp -text [mc "Commit list display options"]
grid $top.ldisp - -sticky w -pady 10
label $top.spacer -text " "
@@ -9288,15 +10106,11 @@ proc doprefs {} {
-font optionfont
spinbox $top.maxpct -from 1 -to 100 -width 4 -textvariable maxgraphpct
grid x $top.maxpctl $top.maxpct -sticky w
- frame $top.showlocal
- label $top.showlocal.l -text [mc "Show local changes"] -font optionfont
- checkbutton $top.showlocal.b -variable showlocalchanges
- pack $top.showlocal.b $top.showlocal.l -side left
+ checkbutton $top.showlocal -text [mc "Show local changes"] \
+ -font optionfont -variable showlocalchanges
grid x $top.showlocal -sticky w
- frame $top.autoselect
- label $top.autoselect.l -text [mc "Auto-select SHA1"] -font optionfont
- checkbutton $top.autoselect.b -variable autoselect
- pack $top.autoselect.b $top.autoselect.l -side left
+ checkbutton $top.autoselect -text [mc "Auto-select SHA1"] \
+ -font optionfont -variable autoselect
grid x $top.autoselect -sticky w
label $top.ddisp -text [mc "Diff display options"]
@@ -9304,16 +10118,15 @@ proc doprefs {} {
label $top.tabstopl -text [mc "Tab spacing"] -font optionfont
spinbox $top.tabstop -from 1 -to 20 -width 4 -textvariable tabstop
grid x $top.tabstopl $top.tabstop -sticky w
- frame $top.ntag
- label $top.ntag.l -text [mc "Display nearby tags"] -font optionfont
- checkbutton $top.ntag.b -variable showneartags
- pack $top.ntag.b $top.ntag.l -side left
+ checkbutton $top.ntag -text [mc "Display nearby tags"] \
+ -font optionfont -variable showneartags
grid x $top.ntag -sticky w
- frame $top.ldiff
- label $top.ldiff.l -text [mc "Limit diffs to listed paths"] -font optionfont
- checkbutton $top.ldiff.b -variable limitdiffs
- pack $top.ldiff.b $top.ldiff.l -side left
+ checkbutton $top.ldiff -text [mc "Limit diffs to listed paths"] \
+ -font optionfont -variable limitdiffs
grid x $top.ldiff -sticky w
+ checkbutton $top.lattr -text [mc "Support per-file encodings"] \
+ -font optionfont -variable perfile_attrs
+ grid x $top.lattr -sticky w
entry $top.extdifft -textvariable extdifftool
frame $top.extdifff
@@ -9328,31 +10141,37 @@ proc doprefs {} {
grid $top.cdisp - -sticky w -pady 10
label $top.bg -padx 40 -relief sunk -background $bgcolor
button $top.bgbut -text [mc "Background"] -font optionfont \
- -command [list choosecolor bgcolor {} $top.bg background setbg]
+ -command [list choosecolor bgcolor {} $top.bg [mc "background"] setbg]
grid x $top.bgbut $top.bg -sticky w
label $top.fg -padx 40 -relief sunk -background $fgcolor
button $top.fgbut -text [mc "Foreground"] -font optionfont \
- -command [list choosecolor fgcolor {} $top.fg foreground setfg]
+ -command [list choosecolor fgcolor {} $top.fg [mc "foreground"] setfg]
grid x $top.fgbut $top.fg -sticky w
label $top.diffold -padx 40 -relief sunk -background [lindex $diffcolors 0]
button $top.diffoldbut -text [mc "Diff: old lines"] -font optionfont \
- -command [list choosecolor diffcolors 0 $top.diffold "diff old lines" \
+ -command [list choosecolor diffcolors 0 $top.diffold [mc "diff old lines"] \
[list $ctext tag conf d0 -foreground]]
grid x $top.diffoldbut $top.diffold -sticky w
label $top.diffnew -padx 40 -relief sunk -background [lindex $diffcolors 1]
button $top.diffnewbut -text [mc "Diff: new lines"] -font optionfont \
- -command [list choosecolor diffcolors 1 $top.diffnew "diff new lines" \
- [list $ctext tag conf d1 -foreground]]
+ -command [list choosecolor diffcolors 1 $top.diffnew [mc "diff new lines"] \
+ [list $ctext tag conf dresult -foreground]]
grid x $top.diffnewbut $top.diffnew -sticky w
label $top.hunksep -padx 40 -relief sunk -background [lindex $diffcolors 2]
button $top.hunksepbut -text [mc "Diff: hunk header"] -font optionfont \
-command [list choosecolor diffcolors 2 $top.hunksep \
- "diff hunk header" \
+ [mc "diff hunk header"] \
[list $ctext tag conf hunksep -foreground]]
grid x $top.hunksepbut $top.hunksep -sticky w
+ label $top.markbgsep -padx 40 -relief sunk -background $markbgcolor
+ button $top.markbgbut -text [mc "Marked line bg"] -font optionfont \
+ -command [list choosecolor markbgcolor {} $top.markbgsep \
+ [mc "marked line background"] \
+ [list $ctext tag conf omark -background]]
+ grid x $top.markbgbut $top.markbgsep -sticky w
label $top.selbgsep -padx 40 -relief sunk -background $selectbgcolor
button $top.selbgbut -text [mc "Select bg"] -font optionfont \
- -command [list choosecolor selectbgcolor {} $top.selbgsep background setselbg]
+ -command [list choosecolor selectbgcolor {} $top.selbgsep [mc "background"] setselbg]
grid x $top.selbgbut $top.selbgsep -sticky w
label $top.cfont -text [mc "Fonts: press to choose"]
@@ -9364,6 +10183,8 @@ proc doprefs {} {
frame $top.buts
button $top.buts.ok -text [mc "OK"] -command prefsok -default active
button $top.buts.can -text [mc "Cancel"] -command prefscan -default normal
+ bind $top <Key-Return> prefsok
+ bind $top <Key-Escape> prefscan
grid $top.buts.ok $top.buts.can
grid columnconfigure $top.buts 0 -weight 1 -uniform a
grid columnconfigure $top.buts 1 -weight 1 -uniform a
@@ -9423,7 +10244,7 @@ proc prefscan {} {
global oldprefs prefstop
foreach v {maxwidth maxgraphpct showneartags showlocalchanges \
- limitdiffs tabstop} {
+ limitdiffs tabstop perfile_attrs} {
global $v
set $v $oldprefs($v)
}
@@ -9436,7 +10257,7 @@ proc prefsok {} {
global maxwidth maxgraphpct
global oldprefs prefstop showneartags showlocalchanges
global fontpref mainfont textfont uifont
- global limitdiffs treediffs
+ global limitdiffs treediffs perfile_attrs
catch {destroy $prefstop}
unset prefstop
@@ -9469,8 +10290,10 @@ proc prefsok {} {
dohidelocalchanges
}
}
- if {$limitdiffs != $oldprefs(limitdiffs)} {
- # treediffs elements are limited by path
+ if {$limitdiffs != $oldprefs(limitdiffs) ||
+ ($perfile_attrs && !$oldprefs(perfile_attrs))} {
+ # treediffs elements are limited by path;
+ # won't have encodings cached if perfile_attrs was just turned on
catch {unset treediffs}
}
if {$fontchanged || $maxwidth != $oldprefs(maxwidth)
@@ -9694,7 +10517,7 @@ set encoding_aliases {
{ ISO-8859-16 iso-ir-226 ISO_8859-16:2001 ISO_8859-16 latin10 l10 }
{ GBK CP936 MS936 windows-936 }
{ JIS_Encoding csJISEncoding }
- { Shift_JIS MS_Kanji csShiftJIS }
+ { Shift_JIS MS_Kanji csShiftJIS ShiftJIS Shift-JIS }
{ Extended_UNIX_Code_Packed_Format_for_Japanese csEUCPkdFmtJapanese
EUC-JP }
{ Extended_UNIX_Code_Fixed_Width_for_Japanese csEUCFixWidJapanese }
@@ -9729,14 +10552,17 @@ set encoding_aliases {
}
proc tcl_encoding {enc} {
- global encoding_aliases
+ global encoding_aliases tcl_encoding_cache
+ if {[info exists tcl_encoding_cache($enc)]} {
+ return $tcl_encoding_cache($enc)
+ }
set names [encoding names]
set lcnames [string tolower $names]
set enc [string tolower $enc]
set i [lsearch -exact $lcnames $enc]
if {$i < 0} {
# look for "isonnn" instead of "iso-nnn" or "iso_nnn"
- if {[regsub {^iso[-_]} $enc iso encx]} {
+ if {[regsub {^(iso|cp|ibm|jis)[-_]} $enc {\1} encx]} {
set i [lsearch -exact $lcnames $encx]
}
}
@@ -9748,7 +10574,7 @@ proc tcl_encoding {enc} {
foreach e $ll {
set i [lsearch -exact $lcnames $e]
if {$i < 0} {
- if {[regsub {^iso[-_]} $e iso ex]} {
+ if {[regsub {^(iso|cp|ibm|jis)[-_]} $e {\1} ex]} {
set i [lsearch -exact $lcnames $ex]
}
}
@@ -9757,10 +10583,70 @@ proc tcl_encoding {enc} {
break
}
}
+ set tclenc {}
if {$i >= 0} {
- return [lindex $names $i]
+ set tclenc [lindex $names $i]
+ }
+ set tcl_encoding_cache($enc) $tclenc
+ return $tclenc
+}
+
+proc gitattr {path attr default} {
+ global path_attr_cache
+ if {[info exists path_attr_cache($attr,$path)]} {
+ set r $path_attr_cache($attr,$path)
+ } else {
+ set r "unspecified"
+ if {![catch {set line [exec git check-attr $attr -- $path]}]} {
+ regexp "(.*): encoding: (.*)" $line m f r
+ }
+ set path_attr_cache($attr,$path) $r
+ }
+ if {$r eq "unspecified"} {
+ return $default
+ }
+ return $r
+}
+
+proc cache_gitattr {attr pathlist} {
+ global path_attr_cache
+ set newlist {}
+ foreach path $pathlist {
+ if {![info exists path_attr_cache($attr,$path)]} {
+ lappend newlist $path
+ }
+ }
+ set lim 1000
+ if {[tk windowingsystem] == "win32"} {
+ # windows has a 32k limit on the arguments to a command...
+ set lim 30
+ }
+ while {$newlist ne {}} {
+ set head [lrange $newlist 0 [expr {$lim - 1}]]
+ set newlist [lrange $newlist $lim end]
+ if {![catch {set rlist [eval exec git check-attr $attr -- $head]}]} {
+ foreach row [split $rlist "\n"] {
+ if {[regexp "(.*): encoding: (.*)" $row m path value]} {
+ if {[string index $path 0] eq "\""} {
+ set path [encoding convertfrom [lindex $path 0]]
+ }
+ set path_attr_cache($attr,$path) $value
+ }
+ }
+ }
}
- return {}
+}
+
+proc get_path_encoding {path} {
+ global gui_encoding perfile_attrs
+ set tcl_enc $gui_encoding
+ if {$path ne {} && $perfile_attrs} {
+ set enc2 [tcl_encoding [gitattr $path encoding $tcl_enc]]
+ if {$enc2 ne {}} {
+ set tcl_enc $enc2
+ }
+ }
+ return $tcl_enc
}
# First check that Tcl/Tk is recent enough
@@ -9777,6 +10663,9 @@ set gitencoding {}
catch {
set gitencoding [exec git config --get i18n.commitencoding]
}
+catch {
+ set gitencoding [exec git config --get i18n.logoutputencoding]
+}
if {$gitencoding == ""} {
set gitencoding "utf-8"
}
@@ -9785,6 +10674,19 @@ if {$tclencoding == {}} {
puts stderr "Warning: encoding $gitencoding is not supported by Tcl/Tk"
}
+set gui_encoding [encoding system]
+catch {
+ set enc [exec git config --get gui.encoding]
+ if {$enc ne {}} {
+ set tclenc [tcl_encoding $enc]
+ if {$tclenc ne {}} {
+ set gui_encoding $tclenc
+ } else {
+ puts stderr "Warning: encoding $enc is not supported by Tcl/Tk"
+ }
+ }
+}
+
set mainfont {Helvetica 9}
set textfont {Courier 9}
set uifont {Helvetica 9 bold}
@@ -9806,6 +10708,7 @@ set showlocalchanges 1
set limitdiffs 1
set datetimeformat "%Y-%m-%d %H:%M:%S"
set autoselect 1
+set perfile_attrs 0
set extdifftool "meld"
@@ -9816,9 +10719,17 @@ set diffcolors {red "#00a000" blue}
set diffcontext 3
set ignorespace 0
set selectbgcolor gray85
+set markbgcolor "#e0e0ff"
set circlecolors {white blue gray blue blue}
+# button for popping up context menus
+if {[tk windowingsystem] eq "aqua"} {
+ set ctxbut <Button-2>
+} else {
+ set ctxbut <Button-3>
+}
+
## For msgcat loading, first locate the installation location.
if { [info exists ::env(GITK_MSGSDIR)] } {
## Msgsdir was manually set in the environment.
@@ -9865,6 +10776,9 @@ if {![file isdirectory $gitdir]} {
exit 1
}
+set selecthead {}
+set selectheadid {}
+
set revtreeargs {}
set cmdline_files {}
set i 0
@@ -9876,6 +10790,9 @@ foreach arg $argv {
set cmdline_files [lrange $argv [expr {$i + 1}] end]
break
}
+ "--select-commit=*" {
+ set selecthead [string range $arg 16 end]
+ }
"--argscmd=*" {
set revtreeargscmd [string range $arg 10 end]
}
@@ -9886,6 +10803,10 @@ foreach arg $argv {
incr i
}
+if {$selecthead eq "HEAD"} {
+ set selecthead {}
+}
+
if {$i >= [llength $argv] && $revtreeargs ne {}} {
# no -- on command line, but some arguments (other than --argscmd)
if {[catch {
@@ -9929,8 +10850,8 @@ set nhl_names {}
set highlight_paths {}
set findpattern {}
set searchdirn -forwards
-set boldrows {}
-set boldnamerows {}
+set boldids {}
+set boldnameids {}
set diffelide {0 0}
set markingmatches 0
set linkentercount 0
@@ -9977,8 +10898,8 @@ if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} {
set viewperm(1) 0
set vdatemode(1) 0
addviewmenu 1
- .bar.view entryconf [mc "Edit view..."] -state normal
- .bar.view entryconf [mc "Delete view"] -state normal
+ .bar.view entryconf [mca "Edit view..."] -state normal
+ .bar.view entryconf [mca "Delete view"] -state normal
}
if {[info exists permviews]} {
@@ -9993,4 +10914,9 @@ if {[info exists permviews]} {
addviewmenu $n
}
}
+
+if {[tk windowingsystem] eq "win32"} {
+ focus -force .
+}
+
getcommits {}
diff --git a/gitk-git/po/de.po b/gitk-git/po/de.po
index 04ee570995..825dc98f74 100644
--- a/gitk-git/po/de.po
+++ b/gitk-git/po/de.po
@@ -7,25 +7,33 @@ msgid ""
msgstr ""
"Project-Id-Version: git-gui\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-05-24 22:32+0200\n"
-"PO-Revision-Date: 2008-05-24 22:40+0200\n"
+"POT-Creation-Date: 2008-12-06 20:40+0100\n"
+"PO-Revision-Date: 2008-12-06 20:45+0100\n"
"Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: gitk:102
+#: gitk:113
msgid "Couldn't get list of unmerged files:"
msgstr "Liste der nicht-zusammengeführten Dateien nicht gefunden:"
-#: gitk:329
+#: gitk:272
+msgid "Error parsing revisions:"
+msgstr "Fehler beim Laden der Versionen:"
+
+#: gitk:327
+msgid "Error executing --argscmd command:"
+msgstr "Fehler beim --argscmd Kommando:"
+
+#: gitk:340
msgid "No files selected: --merge specified but no files are unmerged."
msgstr ""
"Keine Dateien ausgewählt: --merge angegeben, es existieren aber keine nicht-"
"zusammengeführten Dateien."
-#: gitk:332
+#: gitk:343
msgid ""
"No files selected: --merge specified but no unmerged files are within file "
"limit."
@@ -33,257 +41,273 @@ msgstr ""
"Keine Dateien ausgewähle: --merge angegeben, aber keine nicht-"
"zusammengeführten Dateien sind in der Dateiauswahl."
-#: gitk:354
+#: gitk:365 gitk:503
msgid "Error executing git log:"
msgstr "Fehler beim Ausführen von git-log:"
-#: gitk:369
+#: gitk:378
msgid "Reading"
msgstr "Lesen"
-#: gitk:151 gitk:2191
+#: gitk:438 gitk:3462
msgid "Reading commits..."
msgstr "Versionen lesen..."
-#: gitk:275
-msgid "Can't parse git log output:"
-msgstr "Ausgabe von git-log kann nicht erkannt werden:"
-
-#: gitk:386 gitk:2195
+#: gitk:441 gitk:1528 gitk:3465
msgid "No commits selected"
msgstr "Keine Versionen ausgewählt."
-#: gitk:500
+#: gitk:1399
+msgid "Can't parse git log output:"
+msgstr "Ausgabe von git-log kann nicht erkannt werden:"
+
+#: gitk:1605
msgid "No commit information available"
msgstr "Keine Versionsinformation verfügbar"
-#: gitk:599 gitk:621 gitk:1955 gitk:6424 gitk:7924 gitk:8083
+#: gitk:1709 gitk:1731 gitk:3259 gitk:7764 gitk:9293 gitk:9466
msgid "OK"
msgstr "Ok"
-#: gitk:623 gitk:1956 gitk:6108 gitk:6179 gitk:6276 gitk:6322 gitk:6426
-#: gitk:7925 gitk:8084
+#: gitk:1733 gitk:3260 gitk:7439 gitk:7510 gitk:7613 gitk:7660 gitk:7766
+#: gitk:9294 gitk:9467
msgid "Cancel"
msgstr "Abbrechen"
-#: gitk:661
-msgid "File"
-msgstr "Datei"
-
-#: gitk:663
+#: gitk:1811
msgid "Update"
msgstr "Aktualisieren"
-#: gitk:1722
+#: gitk:1812
msgid "Reload"
msgstr "Neu laden"
-#: gitk:1723
+#: gitk:1813
msgid "Reread references"
msgstr "Zweige neu laden"
-#: gitk:665
+#: gitk:1814
msgid "List references"
msgstr "Zweige/Markierungen auflisten"
-#: gitk:666
+#: gitk:1915
+msgid "Start git gui"
+msgstr "»git gui« starten"
+
+#: gitk:1917
msgid "Quit"
msgstr "Beenden"
-#: gitk:668
-msgid "Edit"
-msgstr "Bearbeiten"
+#: gitk:1810
+msgid "File"
+msgstr "Datei"
-#: gitk:669
+#: gitk:1818
msgid "Preferences"
msgstr "Einstellungen"
-#: gitk:672 gitk:1892
-msgid "View"
-msgstr "Ansicht"
+#: gitk:1817
+msgid "Edit"
+msgstr "Bearbeiten"
-#: gitk:673
+#: gitk:1821
msgid "New view..."
msgstr "Neue Ansicht..."
-#: gitk:674 gitk:2133 gitk:8723
+#: gitk:1822
msgid "Edit view..."
msgstr "Ansicht bearbeiten..."
-#: gitk:676 gitk:2134 gitk:8724
+#: gitk:1823
msgid "Delete view"
msgstr "Ansicht löschen"
-#: gitk:678
+#: gitk:1825
msgid "All files"
msgstr "Alle Dateien"
-#: gitk:682
-msgid "Help"
-msgstr "Hilfe"
+#: gitk:1820 gitk:3196
+msgid "View"
+msgstr "Ansicht"
-#: gitk:683 gitk:1317
+#: gitk:1828 gitk:2487
msgid "About gitk"
msgstr "Über gitk"
-#: gitk:684
+#: gitk:1829
msgid "Key bindings"
msgstr "Tastenkürzel"
-#: gitk:741
+#: gitk:1827
+msgid "Help"
+msgstr "Hilfe"
+
+#: gitk:1887
msgid "SHA1 ID: "
msgstr "SHA1:"
-#: gitk:1831
+#: gitk:1918
msgid "Row"
msgstr "Zeile"
-#: gitk:1862
+#: gitk:1949
msgid "Find"
msgstr "Suche"
-#: gitk:792
+#: gitk:1950
msgid "next"
msgstr "nächste"
-#: gitk:793
+#: gitk:1951
msgid "prev"
msgstr "vorige"
-#: gitk:794
+#: gitk:1952
msgid "commit"
msgstr "Version nach"
-#: gitk:797 gitk:799 gitk:2356 gitk:2379 gitk:2403 gitk:4306 gitk:4369
+#: gitk:1955 gitk:1957 gitk:3617 gitk:3640 gitk:3664 gitk:5550 gitk:5621
msgid "containing:"
msgstr "Beschreibung:"
-#: gitk:800 gitk:1778 gitk:1783 gitk:2431
+#: gitk:1958 gitk:2954 gitk:2959 gitk:3692
msgid "touching paths:"
msgstr "Dateien:"
-#: gitk:801 gitk:2436
+#: gitk:1959 gitk:3697
msgid "adding/removing string:"
msgstr "Änderungen:"
-#: gitk:810 gitk:812
+#: gitk:1968 gitk:1970
msgid "Exact"
msgstr "Exakt"
-#: gitk:812 gitk:2514 gitk:4274
+#: gitk:1970 gitk:3773 gitk:5518
msgid "IgnCase"
msgstr "Kein Groß/Klein"
-#: gitk:812 gitk:2405 gitk:2512 gitk:4270
+#: gitk:1970 gitk:3666 gitk:3771 gitk:5514
msgid "Regexp"
msgstr "Regexp"
-#: gitk:814 gitk:815 gitk:2533 gitk:2563 gitk:2570 gitk:4380 gitk:4436
+#: gitk:1972 gitk:1973 gitk:3792 gitk:3822 gitk:3829 gitk:5641 gitk:5708
msgid "All fields"
msgstr "Alle Felder"
-#: gitk:815 gitk:2531 gitk:2563 gitk:4336
+#: gitk:1973 gitk:3790 gitk:3822 gitk:5580
msgid "Headline"
msgstr "Überschrift"
-#: gitk:816 gitk:2531 gitk:4336 gitk:4436 gitk:4827
+#: gitk:1974 gitk:3790 gitk:5580 gitk:5708 gitk:6109
msgid "Comments"
msgstr "Beschreibung"
-#: gitk:816 gitk:2531 gitk:2535 gitk:2570 gitk:4336 gitk:4763 gitk:5957
-#: gitk:5972
+#: gitk:1974 gitk:3790 gitk:3794 gitk:3829 gitk:5580 gitk:6045 gitk:7285
+#: gitk:7300
msgid "Author"
msgstr "Autor"
-#: gitk:816 gitk:2531 gitk:4336 gitk:4765
+#: gitk:1974 gitk:3790 gitk:5580 gitk:6047
msgid "Committer"
msgstr "Eintragender"
-#: gitk:845
+#: gitk:2003
msgid "Search"
msgstr "Suche"
-#: gitk:852
+#: gitk:2010
msgid "Diff"
msgstr "Vergleich"
-#: gitk:854
+#: gitk:2012
msgid "Old version"
msgstr "Alte Version"
-#: gitk:856
+#: gitk:2014
msgid "New version"
msgstr "Neue Version"
-#: gitk:858
+#: gitk:2016
msgid "Lines of context"
msgstr "Kontextzeilen"
-#: gitk:868
+#: gitk:2026
msgid "Ignore space change"
msgstr "Leerzeichenänderungen ignorieren"
-#: gitk:926
+#: gitk:2084
msgid "Patch"
msgstr "Patch"
-#: gitk:928
+#: gitk:2086
msgid "Tree"
msgstr "Baum"
-#: gitk:1053 gitk:1068 gitk:6023
+#: gitk:2213 gitk:2226
msgid "Diff this -> selected"
msgstr "Vergleich diese -> gewählte"
-#: gitk:1055 gitk:1070 gitk:6024
+#: gitk:2214 gitk:2227
msgid "Diff selected -> this"
msgstr "Vergleich gewählte -> diese"
-#: gitk:1057 gitk:1072 gitk:6025
+#: gitk:2215 gitk:2228
msgid "Make patch"
msgstr "Patch erstellen"
-#: gitk:1058 gitk:6163
+#: gitk:2216 gitk:7494
msgid "Create tag"
msgstr "Markierung erstellen"
-#: gitk:1059 gitk:6256
+#: gitk:2217 gitk:7593
msgid "Write commit to file"
msgstr "Version in Datei schreiben"
-#: gitk:1060 gitk:6310
+#: gitk:2218 gitk:7647
msgid "Create new branch"
msgstr "Neuen Zweig erstellen"
-#: gitk:1061
+#: gitk:2219
msgid "Cherry-pick this commit"
msgstr "Diese Version pflücken"
-#: gitk:1063
+#: gitk:2220
msgid "Reset HEAD branch to here"
msgstr "HEAD-Zweig auf diese Version zurücksetzen"
-#: gitk:1079
+#: gitk:2234
msgid "Check out this branch"
msgstr "Auf diesen Zweig umstellen"
-#: gitk:1081
+#: gitk:2235
msgid "Remove this branch"
msgstr "Zweig löschen"
-#: gitk:1087
+#: gitk:2242
msgid "Highlight this too"
msgstr "Diesen auch hervorheben"
-#: gitk:1089
+#: gitk:2243
msgid "Highlight this only"
msgstr "Nur diesen hervorheben"
-#: gitk:2162
+#: gitk:2244
msgid "External diff"
msgstr "Externer Vergleich"
-#: gitk:2403
+#: gitk:2255
+msgid "Blame parent commit"
+msgstr "Annotieren der Elternversion"
+
+#: gitk:2360
+msgid "Show origin of this line"
+msgstr "Herkunft dieser Zeile anzeigen"
+
+#: gitk:2361
+msgid "Run git gui blame on this line"
+msgstr "Annotieren (»git gui blame«) von dieser Zeile"
+
+#: gitk:2606
msgid ""
"\n"
"Gitk - a commit viewer for git\n"
@@ -297,431 +321,546 @@ msgstr ""
"\n"
"Copyright © 2005-2008 Paul Mackerras\n"
"\n"
-"Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public License"
+"Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public "
+"License"
-#: gitk:1326 gitk:1387 gitk:6582
+#: gitk:2496 gitk:2557 gitk:7943
msgid "Close"
msgstr "Schließen"
-#: gitk:1345
+#: gitk:2515
msgid "Gitk key bindings"
msgstr "Gitk Tastaturbelegung"
-#: gitk:1347
+#: gitk:2517
msgid "Gitk key bindings:"
msgstr "Gitk Tastaturbelegung:"
-#: gitk:1349
+#: gitk:2519
#, tcl-format
msgid "<%s-Q>\t\tQuit"
msgstr "<%s-Q>\t\tBeenden"
-#: gitk:1350
+#: gitk:2520
msgid "<Home>\t\tMove to first commit"
msgstr "<Pos1>\t\tZur neuesten Version springen"
-#: gitk:1351
+#: gitk:2521
msgid "<End>\t\tMove to last commit"
msgstr "<Ende>\t\tZur ältesten Version springen"
-#: gitk:1352
+#: gitk:2522
msgid "<Up>, p, i\tMove up one commit"
msgstr "<Hoch>, p, i\tNächste neuere Version"
-#: gitk:1353
+#: gitk:2523
msgid "<Down>, n, k\tMove down one commit"
msgstr "<Runter>, n, k\tNächste ältere Version"
-#: gitk:1354
+#: gitk:2524
msgid "<Left>, z, j\tGo back in history list"
msgstr "<Links>, z, j\tEine Version zurückgehen"
-#: gitk:1355
+#: gitk:2525
msgid "<Right>, x, l\tGo forward in history list"
msgstr "<Rechts>, x, l\tEine Version weitergehen"
-#: gitk:1356
+#: gitk:2526
msgid "<PageUp>\tMove up one page in commit list"
msgstr "<BildHoch>\tEine Seite nach oben blättern"
-#: gitk:1357
+#: gitk:2527
msgid "<PageDown>\tMove down one page in commit list"
msgstr "<BildRunter>\tEine Seite nach unten blättern"
-#: gitk:1358
+#: gitk:2528
#, tcl-format
msgid "<%s-Home>\tScroll to top of commit list"
msgstr "<%s-Pos1>\tZum oberen Ende der Versionsliste blättern"
-#: gitk:1359
+#: gitk:2529
#, tcl-format
msgid "<%s-End>\tScroll to bottom of commit list"
msgstr "<%s-Ende>\tZum unteren Ende der Versionsliste blättern"
-#: gitk:1360
+#: gitk:2530
#, tcl-format
msgid "<%s-Up>\tScroll commit list up one line"
msgstr "<%s-Hoch>\tVersionsliste eine Zeile nach oben blättern"
-#: gitk:1361
+#: gitk:2531
#, tcl-format
msgid "<%s-Down>\tScroll commit list down one line"
msgstr "<%s-Runter>\tVersionsliste eine Zeile nach unten blättern"
-#: gitk:1362
+#: gitk:2532
#, tcl-format
msgid "<%s-PageUp>\tScroll commit list up one page"
msgstr "<%s-BildHoch>\tVersionsliste eine Seite hoch blättern"
-#: gitk:1363
+#: gitk:2533
#, tcl-format
msgid "<%s-PageDown>\tScroll commit list down one page"
msgstr "<%s-BildRunter>\tVersionsliste eine Seite nach unten blättern"
-#: gitk:1364
+#: gitk:2534
msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
msgstr "<Umschalt-Hoch>\tRückwärts suchen (nach oben; neuere Versionen)"
-#: gitk:1365
+#: gitk:2535
msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
msgstr "<Umschalt-Runter> Suchen (nach unten; ältere Versionen)"
-#: gitk:1366
+#: gitk:2536
msgid "<Delete>, b\tScroll diff view up one page"
msgstr "<Entf>, b\t\tVergleich eine Seite nach oben blättern"
-#: gitk:1367
+#: gitk:2537
msgid "<Backspace>\tScroll diff view up one page"
msgstr "<Löschtaste>\tVergleich eine Seite nach oben blättern"
-#: gitk:1368
+#: gitk:2538
msgid "<Space>\t\tScroll diff view down one page"
msgstr "<Leertaste>\tVergleich eine Seite nach unten blättern"
-#: gitk:1369
+#: gitk:2539
msgid "u\t\tScroll diff view up 18 lines"
msgstr "u\t\tVergleich um 18 Zeilen nach oben (»up«) blättern"
-#: gitk:1370
+#: gitk:2540
msgid "d\t\tScroll diff view down 18 lines"
msgstr "d\t\tVergleich um 18 Zeilen nach unten (»down«) blättern"
-#: gitk:1371
+#: gitk:2541
#, tcl-format
msgid "<%s-F>\t\tFind"
msgstr "<%s-F>\t\tSuchen"
-#: gitk:1372
+#: gitk:2542
#, tcl-format
msgid "<%s-G>\t\tMove to next find hit"
msgstr "<%s-G>\t\tWeitersuchen"
-#: gitk:1373
+#: gitk:2543
msgid "<Return>\tMove to next find hit"
msgstr "<Eingabetaste>\tWeitersuchen"
-#: gitk:1374
+#: gitk:2544
msgid "/\t\tMove to next find hit, or redo find"
msgstr "/\t\tWeitersuchen oder neue Suche beginnen"
-#: gitk:1375
+#: gitk:2545
msgid "?\t\tMove to previous find hit"
msgstr "?\t\tRückwärts weitersuchen"
-#: gitk:1376
+#: gitk:2546
msgid "f\t\tScroll diff view to next file"
msgstr "f\t\tVergleich zur nächsten Datei (»file«) blättern"
-#: gitk:1377
+#: gitk:2547
#, tcl-format
msgid "<%s-S>\t\tSearch for next hit in diff view"
msgstr "<%s-S>\t\tWeitersuchen im Vergleich"
-#: gitk:1378
+#: gitk:2548
#, tcl-format
msgid "<%s-R>\t\tSearch for previous hit in diff view"
msgstr "<%s-R>\t\tRückwärts weitersuchen im Vergleich"
-#: gitk:1379
+#: gitk:2549
#, tcl-format
msgid "<%s-KP+>\tIncrease font size"
msgstr "<%s-Nummerblock-Plus>\tSchriftgröße vergrößern"
-#: gitk:1380
+#: gitk:2550
#, tcl-format
msgid "<%s-plus>\tIncrease font size"
msgstr "<%s-Plus>\tSchriftgröße vergrößern"
-#: gitk:1381
+#: gitk:2551
#, tcl-format
msgid "<%s-KP->\tDecrease font size"
msgstr "<%s-Nummernblock-> Schriftgröße verkleinern"
-#: gitk:1382
+#: gitk:2552
#, tcl-format
msgid "<%s-minus>\tDecrease font size"
msgstr "<%s-Minus>\tSchriftgröße verkleinern"
-#: gitk:1383
+#: gitk:2553
msgid "<F5>\t\tUpdate"
msgstr "<F5>\t\tAktualisieren"
-#: gitk:1896
+#: gitk:2979
+#, tcl-format
+msgid "Error getting \"%s\" from %s:"
+msgstr "Fehler beim Holen von »%s« von »%s«:"
+
+#: gitk:3036 gitk:3045
+#, tcl-format
+msgid "Error creating temporary directory %s:"
+msgstr "Fehler beim Erzeugen eines temporären Verzeichnisses »%s«:"
+
+#: gitk:3058
+msgid "command failed:"
+msgstr "Kommando fehlgeschlagen:"
+
+#: gitk:3078
+msgid "No such commit"
+msgstr "Version nicht gefunden"
+
+#: gitk:3083
+msgid "git gui blame: command failed:"
+msgstr "git gui blame: Kommando fehlgeschlagen:"
+
+#: gitk:3398
+#, tcl-format
+msgid "Couldn't read merge head: %s"
+msgstr "Zusammenführungs-Spitze konnte nicht gelesen werden: %s"
+
+#: gitk:3406
+#, tcl-format
+msgid "Error reading index: %s"
+msgstr "Fehler beim Lesen der Bereitstellung (»index«): %s"
+
+#: gitk:3431
+#, tcl-format
+msgid "Couldn't start git blame: %s"
+msgstr "»git blame« konnte nicht gestartet werden: %s"
+
+#: gitk:3434 gitk:6160
+msgid "Searching"
+msgstr "Suchen"
+
+#: gitk:3466
+#, tcl-format
+msgid "Error running git blame: %s"
+msgstr "Fehler beim Ausführen von »git blame«: %s"
+
+#: gitk:3494
+#, tcl-format
+msgid "That line comes from commit %s, which is not in this view"
+msgstr ""
+"Diese Zeile stammt aus Version %s, welche nicht in dieser Ansicht gezeigt "
+"wird."
+
+#: gitk:3508
+msgid "External diff viewer failed:"
+msgstr "Externes Vergleich-(Diff-)Programm fehlgeschlagen:"
+
+#: gitk:3210
msgid "Gitk view definition"
msgstr "Gitk Ansichten"
-#: gitk:1921
-msgid "Name"
-msgstr "Name"
-
-#: gitk:1924
+#: gitk:3630
msgid "Remember this view"
msgstr "Diese Ansicht speichern"
-#: gitk:3126
+#: gitk:3232
msgid "Commits to include (arguments to git log):"
msgstr "Versionen anzeigen (Argumente von git-log):"
-#: gitk:3133
+#: gitk:3632
+msgid "Use all refs"
+msgstr "Alle Zweige verwenden"
+
+#: gitk:3633
+msgid "Strictly sort by date"
+msgstr "Streng nach Datum sortieren"
+
+#: gitk:3634
+msgid "Mark branch sides"
+msgstr "Zweig-Seiten markieren"
+
+#: gitk:3635
+msgid "Since date:"
+msgstr "Von Datum:"
+
+#: gitk:3636
+msgid "Until date:"
+msgstr "Bis Datum:"
+
+#: gitk:3637
+msgid "Max count:"
+msgstr "Max. Anzahl:"
+
+#: gitk:3638
+msgid "Skip:"
+msgstr "Überspringen:"
+
+#: gitk:3639
+msgid "Limit to first parent"
+msgstr "Auf erste Elternversion beschränken"
+
+#: gitk:3640
msgid "Command to generate more commits to include:"
msgstr "Versionsliste durch folgendes Kommando erzeugen lassen:"
-#: gitk:1942
+#: gitk:3749
+msgid "Name"
+msgstr "Name"
+
+#: gitk:3797
msgid "Enter files and directories to include, one per line:"
msgstr "Folgende Dateien und Verzeichnisse anzeigen (eine pro Zeile):"
-#: gitk:1989
+#: gitk:3811
+msgid "Apply (F5)"
+msgstr "Anwenden (F5)"
+
+#: gitk:3849
msgid "Error in commit selection arguments:"
msgstr "Fehler in den ausgewählten Versionen:"
-#: gitk:2043 gitk:2127 gitk:2583 gitk:2597 gitk:3781 gitk:8689 gitk:8690
+#: gitk:3347 gitk:3399 gitk:3842 gitk:3856 gitk:5060 gitk:10141 gitk:10142
msgid "None"
msgstr "Keine"
-#: gitk:2531 gitk:4336 gitk:5959 gitk:5974
+#: gitk:3790 gitk:5580 gitk:7287 gitk:7302
msgid "Date"
msgstr "Datum"
-#: gitk:2531 gitk:4336
+#: gitk:3790 gitk:5580
msgid "CDate"
msgstr "Eintragedatum"
-#: gitk:2680 gitk:2685
+#: gitk:3939 gitk:3944
msgid "Descendant"
msgstr "Abkömmling"
-#: gitk:2681
+#: gitk:3940
msgid "Not descendant"
msgstr "Nicht Abkömmling"
-#: gitk:2688 gitk:2693
+#: gitk:3947 gitk:3952
msgid "Ancestor"
msgstr "Vorgänger"
-#: gitk:2689
+#: gitk:3948
msgid "Not ancestor"
msgstr "Nicht Vorgänger"
-#: gitk:2924
+#: gitk:4187
msgid "Local changes checked in to index but not committed"
msgstr "Lokale Änderungen bereitgestellt, aber nicht eingetragen"
-#: gitk:2954
+#: gitk:4220
msgid "Local uncommitted changes, not checked in to index"
msgstr "Lokale Änderungen, nicht bereitgestellt"
-#: gitk:4305
-msgid "Searching"
-msgstr "Suchen"
-
-#: gitk:4767
+#: gitk:6673
msgid "Tags:"
msgstr "Markierungen:"
-#: gitk:4784 gitk:4790 gitk:5952
+#: gitk:6066 gitk:6072 gitk:7280
msgid "Parent"
msgstr "Eltern"
-#: gitk:4795
+#: gitk:6077
msgid "Child"
msgstr "Kind"
-#: gitk:4804
+#: gitk:6086
msgid "Branch"
msgstr "Zweig"
-#: gitk:4807
+#: gitk:6089
msgid "Follows"
msgstr "Folgt auf"
-#: gitk:4810
+#: gitk:6092
msgid "Precedes"
msgstr "Vorgänger von"
-#: gitk:5094
-msgid "Error getting merge diffs:"
-msgstr "Fehler beim Laden des Vergleichs:"
+#: gitk:7209
+#, tcl-format
+msgid "Error getting diffs: %s"
+msgstr "Fehler beim Laden des Vergleichs: %s"
-#: gitk:5779
+#: gitk:7748
msgid "Goto:"
msgstr "Gehe zu:"
-#: gitk:5781
+#: gitk:7115
msgid "SHA1 ID:"
msgstr "SHA1-Hashwert:"
-#: gitk:5806
+#: gitk:7134
#, tcl-format
msgid "Short SHA1 id %s is ambiguous"
msgstr "Kurzer SHA1-Hashwert »%s« ist mehrdeutig"
-#: gitk:5818
+#: gitk:7146
#, tcl-format
msgid "SHA1 id %s is not known"
msgstr "SHA1-Hashwert »%s« unbekannt"
-#: gitk:5820
+#: gitk:7148
#, tcl-format
msgid "Tag/Head %s is not known"
msgstr "Markierung/Zweig »%s« ist unbekannt"
-#: gitk:5962
+#: gitk:7290
msgid "Children"
msgstr "Kinder"
-#: gitk:6019
+#: gitk:7347
#, tcl-format
msgid "Reset %s branch to here"
msgstr "Zweig »%s« hierher zurücksetzen"
-#: gitk:7204
+#: gitk:7349
msgid "Detached head: can't reset"
msgstr "Zweigspitze ist abgetrennt: Zurücksetzen nicht möglich"
-#: gitk:7236
+#: gitk:7381
msgid "Top"
msgstr "Oben"
-#: gitk:6051
+#: gitk:7382
msgid "From"
msgstr "Von"
-#: gitk:6056
+#: gitk:7387
msgid "To"
msgstr "bis"
-#: gitk:6079
+#: gitk:7410
msgid "Generate patch"
msgstr "Patch erstellen"
-#: gitk:6081
+#: gitk:7412
msgid "From:"
msgstr "Von:"
-#: gitk:6090
+#: gitk:7421
msgid "To:"
msgstr "bis:"
-#: gitk:6099
+#: gitk:7430
msgid "Reverse"
msgstr "Umgekehrt"
-#: gitk:6101 gitk:6270
+#: gitk:7432 gitk:7607
msgid "Output file:"
msgstr "Ausgabedatei:"
-#: gitk:6107
+#: gitk:7438
msgid "Generate"
msgstr "Erzeugen"
-#: gitk:6143
+#: gitk:7474
msgid "Error creating patch:"
msgstr "Fehler beim Patch erzeugen:"
-#: gitk:6165 gitk:6258 gitk:6312
+#: gitk:7496 gitk:7595 gitk:7649
msgid "ID:"
msgstr "ID:"
-#: gitk:6174
+#: gitk:7505
msgid "Tag name:"
msgstr "Markierungsname:"
-#: gitk:6178 gitk:6321
+#: gitk:7509 gitk:7659
msgid "Create"
msgstr "Erstellen"
-#: gitk:6193
+#: gitk:7524
msgid "No tag name specified"
msgstr "Kein Markierungsname angegeben"
-#: gitk:6197
+#: gitk:7528
#, tcl-format
msgid "Tag \"%s\" already exists"
msgstr "Markierung »%s« existiert bereits."
-#: gitk:6203
+#: gitk:7534
msgid "Error creating tag:"
msgstr "Fehler bei Markierung erstellen:"
-#: gitk:6267
+#: gitk:7604
msgid "Command:"
msgstr "Kommando:"
-#: gitk:6275
+#: gitk:7612
msgid "Write"
msgstr "Schreiben"
-#: gitk:6291
+#: gitk:7628
msgid "Error writing commit:"
msgstr "Fehler beim Schreiben der Version:"
-#: gitk:6317
+#: gitk:7654
msgid "Name:"
msgstr "Name:"
-#: gitk:6336
+#: gitk:7674
msgid "Please specify a name for the new branch"
msgstr "Bitte geben Sie einen Namen für den neuen Zweig an."
-#: gitk:6365
+#: gitk:8328
+#, tcl-format
+msgid "Branch '%s' already exists. Overwrite?"
+msgstr "Zweig »%s« existiert bereits. Soll er überschrieben werden?"
+
+#: gitk:8394
#, tcl-format
msgid "Commit %s is already included in branch %s -- really re-apply it?"
msgstr ""
"Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut "
"eintragen?"
-#: gitk:6370
+#: gitk:7718
msgid "Cherry-picking"
msgstr "Version pflücken"
-#: gitk:6382
+#: gitk:8408
+#, 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 ""
+"Pflücken fehlgeschlagen, da noch lokale Änderungen in Datei »%s«\n"
+"vorliegen. Bitte diese Änderungen eintragen, zurücksetzen oder\n"
+"zwischenspeichern (»git stash») und dann erneut versuchen."
+
+#: gitk:8414
+msgid ""
+"Cherry-pick failed because of merge conflict.\n"
+"Do you wish to run git citool to resolve it?"
+msgstr ""
+"Pflücken fehlgeschlagen, da ein Zusammenführungs-Konflikt aufgetreten\n"
+"ist. Soll das »git citool« (Zusammenführungs-Werkzeug) aufgerufen\n"
+"werden, um diesen Konflikt aufzulösen?"
+
+#: gitk:8430
msgid "No changes committed"
msgstr "Keine Änderungen eingetragen"
-#: gitk:6405
+#: gitk:7745
msgid "Confirm reset"
msgstr "Zurücksetzen bestätigen"
-#: gitk:6407
+#: gitk:7747
#, tcl-format
msgid "Reset branch %s to %s?"
msgstr "Zweig »%s« auf »%s« zurücksetzen?"
-#: gitk:6411
+#: gitk:7751
msgid "Reset type:"
msgstr "Art des Zurücksetzens:"
-#: gitk:6415
+#: gitk:7755
msgid "Soft: Leave working tree and index untouched"
msgstr "Harmlos: Arbeitskopie und Bereitstellung unverändert"
-#: gitk:6418
+#: gitk:7758
msgid "Mixed: Leave working tree untouched, reset index"
msgstr ""
"Gemischt: Arbeitskopie unverändert,\n"
"Bereitstellung zurückgesetzt"
-#: gitk:6421
+#: gitk:7761
msgid ""
"Hard: Reset working tree and index\n"
"(discard ALL local changes)"
@@ -729,21 +868,21 @@ msgstr ""
"Hart: Arbeitskopie und Bereitstellung\n"
"(Alle lokalen Änderungen werden gelöscht)"
-#: gitk:6437
+#: gitk:7777
msgid "Resetting"
msgstr "Zurücksetzen"
-#: gitk:6494
+#: gitk:7834
msgid "Checking out"
msgstr "Umstellen"
-#: gitk:6524
+#: gitk:7885
msgid "Cannot delete the currently checked-out branch"
msgstr ""
"Der Zweig, auf den die Arbeitskopie momentan umgestellt ist, kann nicht "
"gelöscht werden."
-#: gitk:6530
+#: gitk:7891
#, tcl-format
msgid ""
"The commits on branch %s aren't on any other branch.\n"
@@ -752,16 +891,16 @@ msgstr ""
"Die Versionen auf Zweig »%s« existieren auf keinem anderen Zweig.\n"
"Zweig »%s« trotzdem löschen?"
-#: gitk:6561
+#: gitk:7922
#, tcl-format
msgid "Tags and heads: %s"
msgstr "Markierungen und Zweige: %s"
-#: gitk:6575
+#: gitk:7936
msgid "Filter"
msgstr "Filtern"
-#: gitk:6869
+#: gitk:8230
msgid ""
"Error reading commit topology information; branch and preceding/following "
"tag information will be incomplete."
@@ -769,125 +908,157 @@ msgstr ""
"Fehler beim Lesen der Strukturinformationen; Zweige und Vorgänger/Nachfolger "
"Informationen werden unvollständig sein."
-#: gitk:7853
+#: gitk:9216
msgid "Tag"
msgstr "Markierung"
-#: gitk:7853
+#: gitk:9216
msgid "Id"
msgstr "Id"
-#: gitk:7893
+#: gitk:9262
msgid "Gitk font chooser"
msgstr "Gitk Schriften wählen"
-#: gitk:7910
+#: gitk:9279
msgid "B"
msgstr "F"
-#: gitk:7913
+#: gitk:9282
msgid "I"
msgstr "K"
-#: gitk:8006
+#: gitk:9375
msgid "Gitk preferences"
msgstr "Gitk Einstellungen"
-#: gitk:8007
+#: gitk:9376
msgid "Commit list display options"
msgstr "Anzeige Versionsliste"
-#: gitk:8010
+#: gitk:9379
msgid "Maximum graph width (lines)"
msgstr "Maximale Graphenbreite (Zeilen)"
-#: gitk:8014
+#: gitk:9383
#, tcl-format
msgid "Maximum graph width (% of pane)"
msgstr "Maximale Graphenbreite (% des Fensters)"
-#: gitk:8019
+#: gitk:9388
msgid "Show local changes"
msgstr "Lokale Änderungen anzeigen"
-#: gitk:8024
+#: gitk:9393
msgid "Auto-select SHA1"
msgstr "SHA1-Hashwert automatisch markieren"
-#: gitk:8029
+#: gitk:9398
msgid "Diff display options"
msgstr "Anzeige Vergleich"
-#: gitk:8031
+#: gitk:9400
msgid "Tab spacing"
msgstr "Tabulatorbreite"
-#: gitk:8035
+#: gitk:9404
msgid "Display nearby tags"
msgstr "Naheliegende Überschriften anzeigen"
-#: gitk:8040
+#: gitk:9409
msgid "Limit diffs to listed paths"
msgstr "Vergleich nur für angezeigte Pfade"
-#: gitk:9264
+#: gitk:9414
+msgid "Support per-file encodings"
+msgstr "Zeichenkodierung pro Datei ermitteln"
+
+#: gitk:9421
msgid "External diff tool"
msgstr "Externes Vergleich-(Diff-)Programm"
-#: gitk:9266
+#: gitk:9423
msgid "Choose..."
msgstr "Wählen..."
-#: gitk:9271
+#: gitk:9428
msgid "Colors: press to choose"
msgstr "Farben: Klicken zum Wählen"
-#: gitk:8048
+#: gitk:9431
msgid "Background"
msgstr "Hintergrund"
-#: gitk:8052
+#: gitk:10153 gitk:10183
+msgid "background"
+msgstr "Hintergrund"
+
+#: gitk:10156
msgid "Foreground"
msgstr "Vordergrund"
-#: gitk:8056
+#: gitk:10157
+msgid "foreground"
+msgstr "Vordergrund"
+
+#: gitk:10160
msgid "Diff: old lines"
msgstr "Vergleich: Alte Zeilen"
-#: gitk:8061
+#: gitk:10161
+msgid "diff old lines"
+msgstr "Vergleich - Alte Zeilen"
+
+#: gitk:10165
msgid "Diff: new lines"
msgstr "Vergleich: Neue Zeilen"
-#: gitk:8066
+#: gitk:10166
+msgid "diff new lines"
+msgstr "Vergleich - Neue Zeilen"
+
+#: gitk:10170
msgid "Diff: hunk header"
msgstr "Vergleich: Änderungstitel"
-#: gitk:8072
+#: gitk:10172
+msgid "diff hunk header"
+msgstr "Vergleich - Änderungstitel"
+
+#: gitk:10176
+msgid "Marked line bg"
+msgstr "Markierte Zeile Hintergrund"
+
+#: gitk:10178
+msgid "marked line background"
+msgstr "markierte Zeile Hintergrund"
+
+#: gitk:10182
msgid "Select bg"
msgstr "Hintergrundfarbe Auswählen"
-#: gitk:8076
+#: gitk:9459
msgid "Fonts: press to choose"
msgstr "Schriftart: Klicken zum Wählen"
-#: gitk:8078
+#: gitk:9461
msgid "Main font"
msgstr "Programmschriftart"
-#: gitk:8079
+#: gitk:9462
msgid "Diff display font"
msgstr "Vergleich"
-#: gitk:8080
+#: gitk:9463
msgid "User interface font"
msgstr "Beschriftungen"
-#: gitk:8096
+#: gitk:9488
#, tcl-format
msgid "Gitk: choose color for %s"
msgstr "Gitk: Farbe wählen für %s"
-#: gitk:8477
+#: gitk:9934
msgid ""
"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
" Gitk requires at least Tcl/Tk 8.4."
@@ -895,24 +1066,24 @@ msgstr ""
"Gitk läuft nicht mit dieser Version von Tcl/Tk.\n"
"Gitk benötigt mindestens Tcl/Tk 8.4."
-#: gitk:8566
+#: gitk:10047
msgid "Cannot find a git repository here."
msgstr "Kein Git-Projektarchiv gefunden."
-#: gitk:8570
+#: gitk:10051
#, tcl-format
msgid "Cannot find the git directory \"%s\"."
msgstr "Git-Verzeichnis »%s« wurde nicht gefunden."
-#: gitk:8613
+#: gitk:10098
#, tcl-format
msgid "Ambiguous argument '%s': both revision and filename"
msgstr "Mehrdeutige Angabe »%s«: Sowohl Version als auch Dateiname existiert."
-#: gitk:8625
+#: gitk:10110
msgid "Bad arguments to gitk:"
msgstr "Falsche Kommandozeilen-Parameter für gitk:"
-#: gitk:9915
+#: gitk:10170
msgid "Command line"
msgstr "Kommandozeile"
diff --git a/gitk-git/po/es.po b/gitk-git/po/es.po
index 2cb1486247..0e19b5eae2 100644
--- a/gitk-git/po/es.po
+++ b/gitk-git/po/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gitk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-13 17:29+0100\n"
+"POT-Creation-Date: 2008-10-18 22:03+1100\n"
"PO-Revision-Date: 2008-03-25 11:20+0100\n"
"Last-Translator: Santiago Gala <santiago.gala@gmail.com>\n"
"Language-Team: Spanish\n"
@@ -16,676 +16,702 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: gitk:111
-msgid "Error executing git rev-list:"
-msgstr "Error al ejecutar git rev-list:"
+#: gitk:113
+msgid "Couldn't get list of unmerged files:"
+msgstr "Imposible obtener la lista de archivos pendientes de fusión:"
-#: gitk:124
+#: gitk:340
+msgid "No files selected: --merge specified but no files are unmerged."
+msgstr ""
+"No hay archivos seleccionados: se seleccionó la opción --merge pero no hay "
+"archivos pendientes de fusión."
+
+#: gitk:343
+msgid ""
+"No files selected: --merge specified but no unmerged files are within file "
+"limit."
+msgstr ""
+"No hay archivos seleccionados: se seleccionó la opción --merge pero los "
+"archivos especificados no necesitan fusión."
+
+#: gitk:378
msgid "Reading"
msgstr "Leyendo"
-#: gitk:151 gitk:2191
+#: gitk:438 gitk:3462
msgid "Reading commits..."
msgstr "Leyendo revisiones..."
-#: gitk:275
-msgid "Can't parse git log output:"
-msgstr "Error analizando la salida de git log:"
-
-#: gitk:386 gitk:2195
+#: gitk:441 gitk:1528 gitk:3465
msgid "No commits selected"
msgstr "No se seleccionaron revisiones"
-#: gitk:500
+#: gitk:1399
+msgid "Can't parse git log output:"
+msgstr "Error analizando la salida de git log:"
+
+#: gitk:1605
msgid "No commit information available"
msgstr "Falta información sobre las revisiones"
-#: gitk:599 gitk:621 gitk:1955 gitk:6423 gitk:7923 gitk:8082
+#: gitk:1709 gitk:1731 gitk:3259 gitk:7764 gitk:9293 gitk:9466
msgid "OK"
msgstr "Aceptar"
-#: gitk:623 gitk:1956 gitk:6107 gitk:6178 gitk:6275 gitk:6321 gitk:6425
-#: gitk:7924 gitk:8083
+#: gitk:1733 gitk:3260 gitk:7439 gitk:7510 gitk:7613 gitk:7660 gitk:7766
+#: gitk:9294 gitk:9467
msgid "Cancel"
msgstr "Cancelar"
-#: gitk:661
-msgid "File"
-msgstr "Archivo"
-
-#: gitk:663
+#: gitk:1811
msgid "Update"
msgstr "Actualizar"
-#: gitk:664
+#: gitk:1813
msgid "Reread references"
msgstr "Releer referencias"
-#: gitk:665
+#: gitk:1814
msgid "List references"
msgstr "Lista de referencias"
-#: gitk:666
+#: gitk:1815
msgid "Quit"
msgstr "Salir"
-#: gitk:668
-msgid "Edit"
-msgstr "Editar"
+#: gitk:1810
+msgid "File"
+msgstr "Archivo"
-#: gitk:669
+#: gitk:1818
msgid "Preferences"
msgstr "Preferencias"
-#: gitk:672 gitk:1892
-msgid "View"
-msgstr "Vista"
+#: gitk:1817
+msgid "Edit"
+msgstr "Editar"
-#: gitk:673
+#: gitk:1821
msgid "New view..."
msgstr "Nueva vista..."
-#: gitk:674 gitk:2133 gitk:8722
+#: gitk:1822
msgid "Edit view..."
msgstr "Modificar vista..."
-#: gitk:676 gitk:2134 gitk:8723
+#: gitk:1823
msgid "Delete view"
msgstr "Eliminar vista"
-#: gitk:678
+#: gitk:1825
msgid "All files"
msgstr "Todos los archivos"
-#: gitk:682
-msgid "Help"
-msgstr "Ayuda"
+#: gitk:1820 gitk:3196
+msgid "View"
+msgstr "Vista"
-#: gitk:683 gitk:1317
+#: gitk:1828 gitk:2487
msgid "About gitk"
msgstr "Acerca de gitk"
-#: gitk:684
+#: gitk:1829
msgid "Key bindings"
msgstr "Combinaciones de teclas"
-#: gitk:741
+#: gitk:1827
+msgid "Help"
+msgstr "Ayuda"
+
+#: gitk:1887
msgid "SHA1 ID: "
msgstr "SHA1 ID: "
-#: gitk:791
+#: gitk:1918
+msgid "Row"
+msgstr ""
+
+#: gitk:1949
msgid "Find"
msgstr "Buscar"
-#: gitk:792
+#: gitk:1950
msgid "next"
msgstr "<<"
-#: gitk:793
+#: gitk:1951
msgid "prev"
msgstr ">>"
-#: gitk:794
+#: gitk:1952
msgid "commit"
msgstr "revisión"
-#: gitk:797 gitk:799 gitk:2356 gitk:2379 gitk:2403 gitk:4306 gitk:4369
+#: gitk:1955 gitk:1957 gitk:3617 gitk:3640 gitk:3664 gitk:5550 gitk:5621
msgid "containing:"
msgstr "que contiene:"
-#: gitk:800 gitk:1778 gitk:1783 gitk:2431
+#: gitk:1958 gitk:2954 gitk:2959 gitk:3692
msgid "touching paths:"
msgstr "que modifica la ruta:"
-#: gitk:801 gitk:2436
+#: gitk:1959 gitk:3697
msgid "adding/removing string:"
msgstr "que añade/elimina cadena:"
-#: gitk:810 gitk:812
+#: gitk:1968 gitk:1970
msgid "Exact"
msgstr "Exacto"
-#: gitk:812 gitk:2514 gitk:4274
+#: gitk:1970 gitk:3773 gitk:5518
msgid "IgnCase"
msgstr "NoMayús"
-#: gitk:812 gitk:2405 gitk:2512 gitk:4270
+#: gitk:1970 gitk:3666 gitk:3771 gitk:5514
msgid "Regexp"
msgstr "Regex"
-#: gitk:814 gitk:815 gitk:2533 gitk:2563 gitk:2570 gitk:4380 gitk:4436
+#: gitk:1972 gitk:1973 gitk:3792 gitk:3822 gitk:3829 gitk:5641 gitk:5708
msgid "All fields"
msgstr "Todos los campos"
-#: gitk:815 gitk:2531 gitk:2563 gitk:4336
+#: gitk:1973 gitk:3790 gitk:3822 gitk:5580
msgid "Headline"
msgstr "Título"
-#: gitk:816 gitk:2531 gitk:4336 gitk:4436 gitk:4827
+#: gitk:1974 gitk:3790 gitk:5580 gitk:5708 gitk:6109
msgid "Comments"
msgstr "Comentarios"
-#: gitk:816 gitk:2531 gitk:2535 gitk:2570 gitk:4336 gitk:4763 gitk:5956
-#: gitk:5971
+#: gitk:1974 gitk:3790 gitk:3794 gitk:3829 gitk:5580 gitk:6045 gitk:7285
+#: gitk:7300
msgid "Author"
msgstr "Autor"
-#: gitk:816 gitk:2531 gitk:4336 gitk:4765
+#: gitk:1974 gitk:3790 gitk:5580 gitk:6047
msgid "Committer"
msgstr ""
-#: gitk:845
+#: gitk:2003
msgid "Search"
msgstr "Buscar"
-#: gitk:852
+#: gitk:2010
msgid "Diff"
msgstr "Diferencia"
-#: gitk:854
+#: gitk:2012
msgid "Old version"
msgstr "Versión antigua"
-#: gitk:856
+#: gitk:2014
msgid "New version"
msgstr "Versión nueva"
-#: gitk:858
+#: gitk:2016
msgid "Lines of context"
msgstr "Líneas de contexto"
-#: gitk:868
+#: gitk:2026
msgid "Ignore space change"
msgstr "Ignora cambios de espaciado"
-#: gitk:926
+#: gitk:2084
msgid "Patch"
msgstr "Parche"
-#: gitk:928
+#: gitk:2086
msgid "Tree"
msgstr "Árbol"
-#: gitk:1053 gitk:1068 gitk:6022
+#: gitk:2213 gitk:2226
msgid "Diff this -> selected"
msgstr "Diferencia de esta -> seleccionada"
-#: gitk:1055 gitk:1070 gitk:6023
+#: gitk:2214 gitk:2227
msgid "Diff selected -> this"
msgstr "Diferencia de seleccionada -> esta"
-#: gitk:1057 gitk:1072 gitk:6024
+#: gitk:2215 gitk:2228
msgid "Make patch"
msgstr "Crear patch"
-#: gitk:1058 gitk:6162
+#: gitk:2216 gitk:7494
msgid "Create tag"
msgstr "Crear etiqueta"
-#: gitk:1059 gitk:6255
+#: gitk:2217 gitk:7593
msgid "Write commit to file"
msgstr "Escribir revisiones a archivo"
-#: gitk:1060 gitk:6309
+#: gitk:2218 gitk:7647
msgid "Create new branch"
msgstr "Crear nueva rama"
-#: gitk:1061
+#: gitk:2219
msgid "Cherry-pick this commit"
msgstr "Añadir esta revisión a la rama actual (cherry-pick)"
-#: gitk:1063
+#: gitk:2220
msgid "Reset HEAD branch to here"
msgstr "Traer la rama HEAD aquí"
-#: gitk:1079
+#: gitk:2234
msgid "Check out this branch"
msgstr "Cambiar a esta rama"
-#: gitk:1081
+#: gitk:2235
msgid "Remove this branch"
msgstr "Eliminar esta rama"
-#: gitk:1087
+#: gitk:2242
msgid "Highlight this too"
msgstr "Seleccionar también"
-#: gitk:1089
+#: gitk:2243
msgid "Highlight this only"
msgstr "Seleccionar sólo"
-#: gitk:1318
+#: gitk:2245
+msgid "Blame parent commit"
+msgstr ""
+
+#: gitk:2488
msgid ""
"\n"
"Gitk - a commit viewer for git\n"
"\n"
-"Copyright © 2005-2006 Paul Mackerras\n"
+"Copyright © 2005-2008 Paul Mackerras\n"
"\n"
"Use and redistribute under the terms of the GNU General Public License"
msgstr ""
"\n"
"Gitk - un visualizador de revisiones para git\n"
"\n"
-"Copyright © 2005-2006 Paul Mackerras\n"
+"Copyright © 2005-2008 Paul Mackerras\n"
"\n"
-"Uso y redistribución permitidos según los términos de la Licencia Pública General de "
-"GNU (GNU GPL)"
+"Uso y redistribución permitidos según los términos de la Licencia Pública "
+"General de GNU (GNU GPL)"
-#: gitk:1326 gitk:1387 gitk:6581
+#: gitk:2496 gitk:2557 gitk:7943
msgid "Close"
msgstr "Cerrar"
-#: gitk:1345
+#: gitk:2515
msgid "Gitk key bindings"
msgstr "Combinaciones de tecla de Gitk"
-#: gitk:1347
+#: gitk:2517
msgid "Gitk key bindings:"
msgstr "Combinaciones de tecla de Gitk:"
-#: gitk:1349
+#: gitk:2519
#, tcl-format
msgid "<%s-Q>\t\tQuit"
msgstr "<%s-Q>\t\tSalir"
-#: gitk:1350
+#: gitk:2520
msgid "<Home>\t\tMove to first commit"
msgstr "<Home>\t\tIr a la primera revisión"
-#: gitk:1351
+#: gitk:2521
msgid "<End>\t\tMove to last commit"
msgstr "<End>\t\tIr a la última revisión"
-#: gitk:1352
+#: gitk:2522
msgid "<Up>, p, i\tMove up one commit"
msgstr "<Up>, p, i\tSubir una revisión"
-#: gitk:1353
+#: gitk:2523
msgid "<Down>, n, k\tMove down one commit"
msgstr "<Down>, n, k\tBajar una revisión"
-#: gitk:1354
+#: gitk:2524
msgid "<Left>, z, j\tGo back in history list"
msgstr "<Left>, z, j\tRetroceder en la historia"
-#: gitk:1355
+#: gitk:2525
msgid "<Right>, x, l\tGo forward in history list"
msgstr "<Right>, x, l\tAvanzar en la historia"
-#: gitk:1356
+#: gitk:2526
msgid "<PageUp>\tMove up one page in commit list"
msgstr "<PageUp>\tSubir una página en la lista de revisiones"
-#: gitk:1357
+#: gitk:2527
msgid "<PageDown>\tMove down one page in commit list"
msgstr "<PageDown>\tBajar una página en la lista de revisiones"
-#: gitk:1358
+#: gitk:2528
#, tcl-format
msgid "<%s-Home>\tScroll to top of commit list"
msgstr "<%s-Home>\tDesplazarse al inicio de la lista de revisiones"
-#: gitk:1359
+#: gitk:2529
#, tcl-format
msgid "<%s-End>\tScroll to bottom of commit list"
msgstr "<%s-End>\tDesplazarse al final de la lista de revisiones"
-#: gitk:1360
+#: gitk:2530
#, tcl-format
msgid "<%s-Up>\tScroll commit list up one line"
msgstr "<%s-Up>\tDesplazar una línea hacia arriba la lista de revisiones"
-#: gitk:1361
+#: gitk:2531
#, tcl-format
msgid "<%s-Down>\tScroll commit list down one line"
msgstr "<%s-Down>\tDesplazar una línea hacia abajo la lista de revisiones"
-#: gitk:1362
+#: gitk:2532
#, tcl-format
msgid "<%s-PageUp>\tScroll commit list up one page"
msgstr "<%s-PageUp>\tDesplazar una página hacia arriba la lista de revisiones"
-#: gitk:1363
+#: gitk:2533
#, tcl-format
msgid "<%s-PageDown>\tScroll commit list down one page"
msgstr "<%s-PageDown>\tDesplazar una página hacia abajo la lista de revisiones"
-#: gitk:1364
+#: gitk:2534
msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
msgstr "<Shift-Up>\tBuscar hacia atrás (arriba, revisiones siguientes)"
-#: gitk:1365
+#: gitk:2535
msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
msgstr "<Shift-Down>\tBuscar hacia adelante (abajo, revisiones anteriores)"
-#: gitk:1366
+#: gitk:2536
msgid "<Delete>, b\tScroll diff view up one page"
msgstr "<Delete>, b\tDesplaza hacia arriba una página la vista de diferencias"
-#: gitk:1367
+#: gitk:2537
msgid "<Backspace>\tScroll diff view up one page"
msgstr "<Backspace>\tDesplaza hacia arriba una página la vista de diferencias"
-#: gitk:1368
+#: gitk:2538
msgid "<Space>\t\tScroll diff view down one page"
msgstr "<Space>\t\tDesplaza hacia abajo una página la vista de diferencias"
-#: gitk:1369
+#: gitk:2539
msgid "u\t\tScroll diff view up 18 lines"
msgstr "u\t\tDesplaza hacia arriba 18 líneas la vista de diferencias"
-#: gitk:1370
+#: gitk:2540
msgid "d\t\tScroll diff view down 18 lines"
msgstr "d\t\tDesplaza hacia abajo 18 líneas la vista de diferencias"
-#: gitk:1371
+#: gitk:2541
#, tcl-format
msgid "<%s-F>\t\tFind"
msgstr "<%s-F>\t\tBuscar"
-#: gitk:1372
+#: gitk:2542
#, tcl-format
msgid "<%s-G>\t\tMove to next find hit"
msgstr "<%s-G>\t\tBuscar el siguiente"
-#: gitk:1373
+#: gitk:2543
msgid "<Return>\tMove to next find hit"
msgstr "<Return>\tBuscar el siguiente"
-#: gitk:1374
+#: gitk:2544
msgid "/\t\tMove to next find hit, or redo find"
msgstr "/\t\tBuscar el siguiente, o reiniciar la búsqueda"
-#: gitk:1375
+#: gitk:2545
msgid "?\t\tMove to previous find hit"
msgstr "?\t\tBuscar el anterior"
-#: gitk:1376
+#: gitk:2546
msgid "f\t\tScroll diff view to next file"
msgstr "f\t\tDesplazar la vista de diferencias al archivo siguiente"
-#: gitk:1377
+#: gitk:2547
#, tcl-format
msgid "<%s-S>\t\tSearch for next hit in diff view"
msgstr "<%s-S>\t\tBuscar siguiente en la vista de diferencias"
-#: gitk:1378
+#: gitk:2548
#, tcl-format
msgid "<%s-R>\t\tSearch for previous hit in diff view"
msgstr "<%s-R>\t\tBuscar anterior en la vista de diferencias"
-#: gitk:1379
+#: gitk:2549
#, tcl-format
msgid "<%s-KP+>\tIncrease font size"
msgstr "<%s-KP+>\tAumentar tamaño del texto"
-#: gitk:1380
+#: gitk:2550
#, tcl-format
msgid "<%s-plus>\tIncrease font size"
msgstr "<%s-plus>\tAumentar tamaño del texto"
-#: gitk:1381
+#: gitk:2551
#, tcl-format
msgid "<%s-KP->\tDecrease font size"
msgstr "<%s-KP->\tDisminuir tamaño del texto"
-#: gitk:1382
+#: gitk:2552
#, tcl-format
msgid "<%s-minus>\tDecrease font size"
msgstr "<%s-minus>\tDisminuir tamaño del texto"
-#: gitk:1383
+#: gitk:2553
msgid "<F5>\t\tUpdate"
msgstr "<F5>\t\tActualizar"
-#: gitk:1896
+#: gitk:3200
msgid "Gitk view definition"
msgstr "Definición de vistas de Gitk"
-#: gitk:1921
+#: gitk:3225
msgid "Name"
msgstr "Nombre"
-#: gitk:1924
+#: gitk:3228
msgid "Remember this view"
msgstr "Recordar esta vista"
-#: gitk:1928
-msgid "Commits to include (arguments to git rev-list):"
-msgstr "Revisiones a incluir (argumentos a git rev-list):"
+#: gitk:3232
+msgid "Commits to include (arguments to git log):"
+msgstr "Revisiones a incluir (argumentos a git log):"
-#: gitk:1935
+#: gitk:3239
msgid "Command to generate more commits to include:"
msgstr "Comando que genera más revisiones a incluir:"
-#: gitk:1942
+#: gitk:3246
msgid "Enter files and directories to include, one per line:"
msgstr "Introducir archivos y directorios a incluir, uno por línea:"
-#: gitk:1989
+#: gitk:3293
msgid "Error in commit selection arguments:"
msgstr "Error en los argumentos de selección de las revisiones:"
-#: gitk:2043 gitk:2127 gitk:2583 gitk:2597 gitk:3781 gitk:8688 gitk:8689
+#: gitk:3347 gitk:3399 gitk:3842 gitk:3856 gitk:5060 gitk:10141 gitk:10142
msgid "None"
msgstr "Ninguno"
-#: gitk:2531 gitk:4336 gitk:5958 gitk:5973
+#: gitk:3790 gitk:5580 gitk:7287 gitk:7302
msgid "Date"
msgstr "Fecha"
-#: gitk:2531 gitk:4336
+#: gitk:3790 gitk:5580
msgid "CDate"
msgstr "Fecha de creación"
-#: gitk:2680 gitk:2685
+#: gitk:3939 gitk:3944
msgid "Descendant"
msgstr "Descendiente"
-#: gitk:2681
+#: gitk:3940
msgid "Not descendant"
msgstr "No descendiente"
-#: gitk:2688 gitk:2693
+#: gitk:3947 gitk:3952
msgid "Ancestor"
msgstr "Antepasado"
-#: gitk:2689
+#: gitk:3948
msgid "Not ancestor"
msgstr "No antepasado"
-#: gitk:2924
+#: gitk:4187
msgid "Local changes checked in to index but not committed"
msgstr "Cambios locales añadidos al índice pero sin completar revisión"
-#: gitk:2954
+#: gitk:4220
msgid "Local uncommitted changes, not checked in to index"
msgstr "Cambios locales sin añadir al índice"
-#: gitk:4305
+#: gitk:5549
msgid "Searching"
msgstr "Buscando"
-#: gitk:4767
+#: gitk:6049
msgid "Tags:"
msgstr "Etiquetas:"
-#: gitk:4784 gitk:4790 gitk:5951
+#: gitk:6066 gitk:6072 gitk:7280
msgid "Parent"
msgstr "Padre"
-#: gitk:4795
+#: gitk:6077
msgid "Child"
msgstr "Hija"
-#: gitk:4804
+#: gitk:6086
msgid "Branch"
msgstr "Rama"
-#: gitk:4807
+#: gitk:6089
msgid "Follows"
msgstr "Sigue-a"
-#: gitk:4810
+#: gitk:6092
msgid "Precedes"
msgstr "Precede-a"
-#: gitk:5093
+#: gitk:6378
msgid "Error getting merge diffs:"
msgstr "Error al leer las diferencias de fusión:"
-#: gitk:5778
+#: gitk:7113
msgid "Goto:"
msgstr "Ir a:"
-#: gitk:5780
+#: gitk:7115
msgid "SHA1 ID:"
msgstr "SHA1 ID:"
-#: gitk:5805
+#: gitk:7134
#, tcl-format
msgid "Short SHA1 id %s is ambiguous"
msgstr "La id SHA1 abreviada %s es ambigua"
-#: gitk:5817
+#: gitk:7146
#, tcl-format
msgid "SHA1 id %s is not known"
msgstr "La id SHA1 %s es desconocida"
-#: gitk:5819
+#: gitk:7148
#, tcl-format
msgid "Tag/Head %s is not known"
msgstr "La etiqueta/rama %s es deconocida"
-#: gitk:5961
+#: gitk:7290
msgid "Children"
msgstr "Hijas"
-#: gitk:6018
+#: gitk:7347
#, tcl-format
msgid "Reset %s branch to here"
msgstr "Poner la rama %s en esta revisión"
-#: gitk:6049
+#: gitk:7349
+msgid "Detached head: can't reset"
+msgstr ""
+
+#: gitk:7381
msgid "Top"
msgstr "Origen"
-#: gitk:6050
+#: gitk:7382
msgid "From"
msgstr "De"
-#: gitk:6055
+#: gitk:7387
msgid "To"
msgstr "A"
-#: gitk:6078
+#: gitk:7410
msgid "Generate patch"
msgstr "Generar parche"
-#: gitk:6080
+#: gitk:7412
msgid "From:"
msgstr "De:"
-#: gitk:6089
+#: gitk:7421
msgid "To:"
msgstr "Para:"
-#: gitk:6098
+#: gitk:7430
msgid "Reverse"
msgstr "Invertir"
-#: gitk:6100 gitk:6269
+#: gitk:7432 gitk:7607
msgid "Output file:"
msgstr "Escribir a archivo:"
-#: gitk:6106
+#: gitk:7438
msgid "Generate"
msgstr "Generar"
-#: gitk:6142
+#: gitk:7474
msgid "Error creating patch:"
msgstr "Error en la creación del parche:"
-#: gitk:6164 gitk:6257 gitk:6311
+#: gitk:7496 gitk:7595 gitk:7649
msgid "ID:"
msgstr "ID:"
-#: gitk:6173
+#: gitk:7505
msgid "Tag name:"
msgstr "Nombre de etiqueta:"
-#: gitk:6177 gitk:6320
+#: gitk:7509 gitk:7659
msgid "Create"
msgstr "Crear"
-#: gitk:6192
+#: gitk:7524
msgid "No tag name specified"
msgstr "No se ha especificado etiqueta"
-#: gitk:6196
+#: gitk:7528
#, tcl-format
msgid "Tag \"%s\" already exists"
msgstr "La etiqueta \"%s\" ya existe"
-#: gitk:6202
+#: gitk:7534
msgid "Error creating tag:"
msgstr "Error al crear la etiqueta:"
-#: gitk:6266
+#: gitk:7604
msgid "Command:"
msgstr "Comando:"
-#: gitk:6274
+#: gitk:7612
msgid "Write"
msgstr "Escribir"
-#: gitk:6290
+#: gitk:7628
msgid "Error writing commit:"
msgstr "Error al escribir revisión:"
-#: gitk:6316
+#: gitk:7654
msgid "Name:"
msgstr "Nombre:"
-#: gitk:6335
+#: gitk:7674
msgid "Please specify a name for the new branch"
msgstr "Especifique un nombre para la nueva rama"
-#: gitk:6364
+#: gitk:7703
#, tcl-format
msgid "Commit %s is already included in branch %s -- really re-apply it?"
msgstr "La revisión %s ya está incluida en la rama %s -- ¿Volver a aplicarla?"
-#: gitk:6369
+#: gitk:7708
msgid "Cherry-picking"
msgstr "Eligiendo revisiones (cherry-picking)"
-#: gitk:6381
+#: gitk:7720
msgid "No changes committed"
msgstr "No se han guardado cambios"
-#: gitk:6404
+#: gitk:7745
msgid "Confirm reset"
msgstr "Confirmar git reset"
-#: gitk:6406
+#: gitk:7747
#, tcl-format
msgid "Reset branch %s to %s?"
msgstr "¿Reponer la rama %s a %s?"
-#: gitk:6410
+#: gitk:7751
msgid "Reset type:"
msgstr "Tipo de reposición:"
-#: gitk:6414
+#: gitk:7755
msgid "Soft: Leave working tree and index untouched"
msgstr "Suave: No altera la copia de trabajo ni el índice"
-#: gitk:6417
+#: gitk:7758
msgid "Mixed: Leave working tree untouched, reset index"
msgstr "Mixta: Actualiza el índice, no altera la copia de trabajo"
-#: gitk:6420
+#: gitk:7761
msgid ""
"Hard: Reset working tree and index\n"
"(discard ALL local changes)"
@@ -693,19 +719,19 @@ msgstr ""
"Dura: Actualiza el índice y la copia de trabajo\n"
"(abandona TODAS las modificaciones locales)"
-#: gitk:6436
+#: gitk:7777
msgid "Resetting"
msgstr "Reponiendo"
-#: gitk:6493
+#: gitk:7834
msgid "Checking out"
msgstr "Creando copia de trabajo"
-#: gitk:6523
+#: gitk:7885
msgid "Cannot delete the currently checked-out branch"
msgstr "No se puede borrar la rama actual"
-#: gitk:6529
+#: gitk:7891
#, tcl-format
msgid ""
"The commits on branch %s aren't on any other branch.\n"
@@ -714,134 +740,146 @@ msgstr ""
"Las revisiones de la rama %s no están presentes en otras ramas.\n"
"¿Borrar la rama %s?"
-#: gitk:6560
+#: gitk:7922
#, tcl-format
msgid "Tags and heads: %s"
msgstr "Etiquetas y ramas: %s"
-#: gitk:6574
+#: gitk:7936
msgid "Filter"
msgstr "Filtro"
-#: gitk:6868
+#: gitk:8230
msgid ""
"Error reading commit topology information; branch and preceding/following "
"tag information will be incomplete."
msgstr ""
-"Error al leer la topología de revisiones: la información sobre "
-"las ramas y etiquetas precedentes y siguientes será incompleta."
+"Error al leer la topología de revisiones: la información sobre las ramas y "
+"etiquetas precedentes y siguientes será incompleta."
-#: gitk:7852
+#: gitk:9216
msgid "Tag"
msgstr "Etiqueta"
-#: gitk:7852
+#: gitk:9216
msgid "Id"
msgstr "Id"
-#: gitk:7892
+#: gitk:9262
msgid "Gitk font chooser"
msgstr "Selector de tipografías gitk"
-#: gitk:7909
+#: gitk:9279
msgid "B"
msgstr "B"
-#: gitk:7912
+#: gitk:9282
msgid "I"
msgstr "I"
-#: gitk:8005
+#: gitk:9375
msgid "Gitk preferences"
msgstr "Preferencias de gitk"
-#: gitk:8006
+#: gitk:9376
msgid "Commit list display options"
msgstr "Opciones de visualización de la lista de revisiones"
-#: gitk:8009
+#: gitk:9379
msgid "Maximum graph width (lines)"
msgstr "Ancho máximo del gráfico (en líneas)"
-#: gitk:8013
+#: gitk:9383
#, tcl-format
msgid "Maximum graph width (% of pane)"
msgstr "Ancho máximo del gráfico (en % del panel)"
-#: gitk:8018
+#: gitk:9388
msgid "Show local changes"
msgstr "Mostrar cambios locales"
-#: gitk:8023
+#: gitk:9393
msgid "Auto-select SHA1"
msgstr "Seleccionar automáticamente SHA1 hash"
-#: gitk:8028
+#: gitk:9398
msgid "Diff display options"
msgstr "Opciones de visualización de diferencias"
-#: gitk:8030
+#: gitk:9400
msgid "Tab spacing"
msgstr "Espaciado de tabulador"
-#: gitk:8034
+#: gitk:9404
msgid "Display nearby tags"
msgstr "Mostrar etiquetas cercanas"
-#: gitk:8039
+#: gitk:9409
msgid "Limit diffs to listed paths"
msgstr "Limitar las diferencias a las rutas seleccionadas"
-#: gitk:8044
+#: gitk:9414
+msgid "Support per-file encodings"
+msgstr ""
+
+#: gitk:9421
+msgid "External diff tool"
+msgstr ""
+
+#: gitk:9423
+msgid "Choose..."
+msgstr ""
+
+#: gitk:9428
msgid "Colors: press to choose"
msgstr "Colores: pulse para seleccionar"
-#: gitk:8047
+#: gitk:9431
msgid "Background"
msgstr "Fondo"
-#: gitk:8051
+#: gitk:9435
msgid "Foreground"
msgstr "Primer plano"
-#: gitk:8055
+#: gitk:9439
msgid "Diff: old lines"
msgstr "Diff: líneas viejas"
-#: gitk:8060
+#: gitk:9444
msgid "Diff: new lines"
msgstr "Diff: líneas nuevas"
-#: gitk:8065
+#: gitk:9449
msgid "Diff: hunk header"
msgstr "Diff: cabecera de fragmento"
-#: gitk:8071
+#: gitk:9455
msgid "Select bg"
msgstr "Color de fondo de la selección"
-#: gitk:8075
+#: gitk:9459
msgid "Fonts: press to choose"
msgstr "Tipografías: pulse para elegir"
-#: gitk:8077
+#: gitk:9461
msgid "Main font"
msgstr "Tipografía principal"
-#: gitk:8078
+#: gitk:9462
msgid "Diff display font"
msgstr "Tipografía para diferencias"
-#: gitk:8079
+#: gitk:9463
msgid "User interface font"
msgstr "Tipografía para interfaz de usuario"
-#: gitk:8095
+#: gitk:9488
#, tcl-format
msgid "Gitk: choose color for %s"
msgstr "Gitk: elegir color para %s"
-#: gitk:8476
+#: gitk:9934
msgid ""
"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
" Gitk requires at least Tcl/Tk 8.4."
@@ -849,42 +887,25 @@ msgstr ""
"Esta versión de Tcl/Tk es demasiado antigua.\n"
" Gitk requiere Tcl/Tk versión 8.4 o superior."
-#: gitk:8565
+#: gitk:10047
msgid "Cannot find a git repository here."
msgstr "No hay un repositorio git aquí."
-#: gitk:8569
+#: gitk:10051
#, tcl-format
msgid "Cannot find the git directory \"%s\"."
msgstr "No hay directorio git \"%s\"."
-#: gitk:8612
+#: gitk:10098
#, tcl-format
msgid "Ambiguous argument '%s': both revision and filename"
-msgstr "Argumento ambiguo: '%s' es tanto una revisión como un nombre de archivo"
+msgstr ""
+"Argumento ambiguo: '%s' es tanto una revisión como un nombre de archivo"
-#: gitk:8624
+#: gitk:10110
msgid "Bad arguments to gitk:"
msgstr "Argumentos incorrectos a Gitk:"
-#: gitk:8636
-msgid "Couldn't get list of unmerged files:"
-msgstr "Imposible obtener la lista de archivos pendientes de fusión:"
-
-#: gitk:8652
-msgid "No files selected: --merge specified but no files are unmerged."
-msgstr ""
-"No hay archivos seleccionados: se seleccionó la opción --merge pero no hay "
-"archivos pendientes de fusión."
-
-#: gitk:8655
-msgid ""
-"No files selected: --merge specified but no unmerged files are within file "
-"limit."
-msgstr ""
-"No hay archivos seleccionados: se seleccionó la opción --merge pero los archivos "
-"especificados no necesitan fusión."
-
-#: gitk:8716
+#: gitk:10170
msgid "Command line"
msgstr "Línea de comandos"
diff --git a/gitk-git/po/it.po b/gitk-git/po/it.po
index d0f4c2e19a..e89c95702c 100644
--- a/gitk-git/po/it.po
+++ b/gitk-git/po/it.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gitk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-13 17:29+0100\n"
+"POT-Creation-Date: 2008-10-18 22:03+1100\n"
"PO-Revision-Date: 2008-03-13 17:34+0100\n"
"Last-Translator: Michele Ballabio <barra_cuda@katamail.com>\n"
"Language-Team: Italian\n"
@@ -16,676 +16,706 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: gitk:111
-msgid "Error executing git rev-list:"
-msgstr "Errore nell'esecuzione di git rev-list:"
+#: gitk:113
+msgid "Couldn't get list of unmerged files:"
+msgstr "Impossibile ottenere l'elenco dei file in attesa di fusione:"
+
+#: gitk:340
+msgid "No files selected: --merge specified but no files are unmerged."
+msgstr ""
+"Nessun file selezionato: è stata specificata l'opzione --merge ma non ci "
+"sono file in attesa di fusione."
+
+#: gitk:343
+msgid ""
+"No files selected: --merge specified but no unmerged files are within file "
+"limit."
+msgstr ""
+"Nessun file selezionato: è stata specificata l'opzione --merge ma i file "
+"specificati non sono in attesa di fusione."
-#: gitk:124
+#: gitk:365 gitk:503
+msgid "Error executing git log:"
+msgstr "Errore nell'esecuzione di git log:"
+
+#: gitk:378
msgid "Reading"
msgstr "Lettura in corso"
-#: gitk:151 gitk:2191
+#: gitk:438 gitk:3462
msgid "Reading commits..."
msgstr "Lettura delle revisioni in corso..."
-#: gitk:275
-msgid "Can't parse git log output:"
-msgstr "Impossibile elaborare i dati di git log:"
-
-#: gitk:386 gitk:2195
+#: gitk:441 gitk:1528 gitk:3465
msgid "No commits selected"
msgstr "Nessuna revisione selezionata"
-#: gitk:500
+#: gitk:1399
+msgid "Can't parse git log output:"
+msgstr "Impossibile elaborare i dati di git log:"
+
+#: gitk:1605
msgid "No commit information available"
msgstr "Nessuna informazione disponibile sulle revisioni"
-#: gitk:599 gitk:621 gitk:1955 gitk:6423 gitk:7923 gitk:8082
+#: gitk:1709 gitk:1731 gitk:3259 gitk:7764 gitk:9293 gitk:9466
msgid "OK"
msgstr "OK"
-#: gitk:623 gitk:1956 gitk:6107 gitk:6178 gitk:6275 gitk:6321 gitk:6425
-#: gitk:7924 gitk:8083
+#: gitk:1733 gitk:3260 gitk:7439 gitk:7510 gitk:7613 gitk:7660 gitk:7766
+#: gitk:9294 gitk:9467
msgid "Cancel"
msgstr "Annulla"
-#: gitk:661
-msgid "File"
-msgstr "File"
-
-#: gitk:663
+#: gitk:1811
msgid "Update"
msgstr "Aggiorna"
-#: gitk:664
+#: gitk:1813
msgid "Reread references"
msgstr "Rileggi riferimenti"
-#: gitk:665
+#: gitk:1814
msgid "List references"
msgstr "Elenca riferimenti"
-#: gitk:666
+#: gitk:1815
msgid "Quit"
msgstr "Esci"
-#: gitk:668
-msgid "Edit"
-msgstr "Modifica"
+#: gitk:1810
+msgid "File"
+msgstr "File"
-#: gitk:669
+#: gitk:1818
msgid "Preferences"
msgstr "Preferenze"
-#: gitk:672 gitk:1892
-msgid "View"
-msgstr "Vista"
+#: gitk:1817
+msgid "Edit"
+msgstr "Modifica"
-#: gitk:673
+#: gitk:1821
msgid "New view..."
msgstr "Nuova vista..."
-#: gitk:674 gitk:2133 gitk:8722
+#: gitk:1822
msgid "Edit view..."
msgstr "Modifica vista..."
-#: gitk:676 gitk:2134 gitk:8723
+#: gitk:1823
msgid "Delete view"
msgstr "Elimina vista"
-#: gitk:678
+#: gitk:1825
msgid "All files"
msgstr "Tutti i file"
-#: gitk:682
-msgid "Help"
-msgstr "Aiuto"
+#: gitk:1820 gitk:3196
+msgid "View"
+msgstr "Vista"
-#: gitk:683 gitk:1317
+#: gitk:1828 gitk:2487
msgid "About gitk"
msgstr "Informazioni su gitk"
-#: gitk:684
+#: gitk:1829
msgid "Key bindings"
msgstr "Scorciatoie da tastiera"
-#: gitk:741
+#: gitk:1827
+msgid "Help"
+msgstr "Aiuto"
+
+#: gitk:1887
msgid "SHA1 ID: "
msgstr "SHA1 ID: "
-#: gitk:791
+#: gitk:1918
+msgid "Row"
+msgstr ""
+
+#: gitk:1949
msgid "Find"
msgstr "Trova"
-#: gitk:792
+#: gitk:1950
msgid "next"
msgstr "succ"
-#: gitk:793
+#: gitk:1951
msgid "prev"
msgstr "prec"
-#: gitk:794
+#: gitk:1952
msgid "commit"
msgstr "revisione"
-#: gitk:797 gitk:799 gitk:2356 gitk:2379 gitk:2403 gitk:4306 gitk:4369
+#: gitk:1955 gitk:1957 gitk:3617 gitk:3640 gitk:3664 gitk:5550 gitk:5621
msgid "containing:"
msgstr "contenente:"
-#: gitk:800 gitk:1778 gitk:1783 gitk:2431
+#: gitk:1958 gitk:2954 gitk:2959 gitk:3692
msgid "touching paths:"
msgstr "che riguarda i percorsi:"
-#: gitk:801 gitk:2436
+#: gitk:1959 gitk:3697
msgid "adding/removing string:"
msgstr "che aggiunge/rimuove la stringa:"
-#: gitk:810 gitk:812
+#: gitk:1968 gitk:1970
msgid "Exact"
msgstr "Esatto"
-#: gitk:812 gitk:2514 gitk:4274
+#: gitk:1970 gitk:3773 gitk:5518
msgid "IgnCase"
msgstr ""
-#: gitk:812 gitk:2405 gitk:2512 gitk:4270
+#: gitk:1970 gitk:3666 gitk:3771 gitk:5514
msgid "Regexp"
msgstr ""
-#: gitk:814 gitk:815 gitk:2533 gitk:2563 gitk:2570 gitk:4380 gitk:4436
+#: gitk:1972 gitk:1973 gitk:3792 gitk:3822 gitk:3829 gitk:5641 gitk:5708
msgid "All fields"
msgstr "Tutti i campi"
-#: gitk:815 gitk:2531 gitk:2563 gitk:4336
+#: gitk:1973 gitk:3790 gitk:3822 gitk:5580
msgid "Headline"
msgstr "Titolo"
-#: gitk:816 gitk:2531 gitk:4336 gitk:4436 gitk:4827
+#: gitk:1974 gitk:3790 gitk:5580 gitk:5708 gitk:6109
msgid "Comments"
msgstr "Commenti"
-#: gitk:816 gitk:2531 gitk:2535 gitk:2570 gitk:4336 gitk:4763 gitk:5956
-#: gitk:5971
+#: gitk:1974 gitk:3790 gitk:3794 gitk:3829 gitk:5580 gitk:6045 gitk:7285
+#: gitk:7300
msgid "Author"
msgstr "Autore"
-#: gitk:816 gitk:2531 gitk:4336 gitk:4765
+#: gitk:1974 gitk:3790 gitk:5580 gitk:6047
msgid "Committer"
msgstr "Revisione creata da"
-#: gitk:845
+#: gitk:2003
msgid "Search"
msgstr "Cerca"
-#: gitk:852
+#: gitk:2010
msgid "Diff"
msgstr ""
-#: gitk:854
+#: gitk:2012
msgid "Old version"
msgstr "Vecchia versione"
-#: gitk:856
+#: gitk:2014
msgid "New version"
msgstr "Nuova versione"
-#: gitk:858
+#: gitk:2016
msgid "Lines of context"
msgstr "Linee di contesto"
-#: gitk:868
+#: gitk:2026
msgid "Ignore space change"
msgstr "Ignora modifiche agli spazi"
-#: gitk:926
+#: gitk:2084
msgid "Patch"
msgstr "Modifiche"
-#: gitk:928
+#: gitk:2086
msgid "Tree"
msgstr "Directory"
-#: gitk:1053 gitk:1068 gitk:6022
+#: gitk:2213 gitk:2226
msgid "Diff this -> selected"
msgstr "Diff questo -> selezionato"
-#: gitk:1055 gitk:1070 gitk:6023
+#: gitk:2214 gitk:2227
msgid "Diff selected -> this"
msgstr "Diff selezionato -> questo"
-#: gitk:1057 gitk:1072 gitk:6024
+#: gitk:2215 gitk:2228
msgid "Make patch"
msgstr "Crea patch"
-#: gitk:1058 gitk:6162
+#: gitk:2216 gitk:7494
msgid "Create tag"
msgstr "Crea etichetta"
-#: gitk:1059 gitk:6255
+#: gitk:2217 gitk:7593
msgid "Write commit to file"
msgstr "Scrivi revisione in un file"
-#: gitk:1060 gitk:6309
+#: gitk:2218 gitk:7647
msgid "Create new branch"
msgstr "Crea un nuovo ramo"
-#: gitk:1061
+#: gitk:2219
msgid "Cherry-pick this commit"
msgstr "Porta questa revisione in cima al ramo attuale"
-#: gitk:1063
+#: gitk:2220
msgid "Reset HEAD branch to here"
msgstr "Aggiorna il ramo HEAD a questa revisione"
-#: gitk:1079
+#: gitk:2234
msgid "Check out this branch"
msgstr "Attiva questo ramo"
-#: gitk:1081
+#: gitk:2235
msgid "Remove this branch"
msgstr "Elimina questo ramo"
-#: gitk:1087
+#: gitk:2242
msgid "Highlight this too"
msgstr "Evidenzia anche questo"
-#: gitk:1089
+#: gitk:2243
msgid "Highlight this only"
msgstr "Evidenzia solo questo"
-#: gitk:1318
+#: gitk:2245
+msgid "Blame parent commit"
+msgstr ""
+
+#: gitk:2488
msgid ""
"\n"
"Gitk - a commit viewer for git\n"
"\n"
-"Copyright © 2005-2006 Paul Mackerras\n"
+"Copyright © 2005-2008 Paul Mackerras\n"
"\n"
"Use and redistribute under the terms of the GNU General Public License"
msgstr ""
"\n"
"Gitk - un visualizzatore di revisioni per git\n"
"\n"
-"Copyright © 2005-2006 Paul Mackerras\n"
+"Copyright © 2005-2008 Paul Mackerras\n"
"\n"
"Utilizzo e redistribuzione permessi sotto i termini della GNU General Public "
"License"
-#: gitk:1326 gitk:1387 gitk:6581
+#: gitk:2496 gitk:2557 gitk:7943
msgid "Close"
msgstr "Chiudi"
-#: gitk:1345
+#: gitk:2515
msgid "Gitk key bindings"
msgstr "Scorciatoie da tastiera di Gitk"
-#: gitk:1347
+#: gitk:2517
msgid "Gitk key bindings:"
msgstr "Scorciatoie da tastiera di Gitk:"
-#: gitk:1349
+#: gitk:2519
#, tcl-format
msgid "<%s-Q>\t\tQuit"
msgstr "<%s-Q>\t\tEsci"
-#: gitk:1350
+#: gitk:2520
msgid "<Home>\t\tMove to first commit"
msgstr "<Home>\t\tVai alla prima revisione"
-#: gitk:1351
+#: gitk:2521
msgid "<End>\t\tMove to last commit"
msgstr "<End>\t\tVai all'ultima revisione"
-#: gitk:1352
+#: gitk:2522
msgid "<Up>, p, i\tMove up one commit"
msgstr "<Up>, p, i\tVai più in alto di una revisione"
-#: gitk:1353
+#: gitk:2523
msgid "<Down>, n, k\tMove down one commit"
msgstr "<Down>, n, k\tVai più in basso di una revisione"
-#: gitk:1354
+#: gitk:2524
msgid "<Left>, z, j\tGo back in history list"
msgstr "<Left>, z, j\tTorna indietro nella cronologia"
-#: gitk:1355
+#: gitk:2525
msgid "<Right>, x, l\tGo forward in history list"
msgstr "<Right>, x, l\tVai avanti nella cronologia"
-#: gitk:1356
+#: gitk:2526
msgid "<PageUp>\tMove up one page in commit list"
msgstr "<PageUp>\tVai più in alto di una pagina nella lista delle revisioni"
-#: gitk:1357
+#: gitk:2527
msgid "<PageDown>\tMove down one page in commit list"
msgstr "<PageDown>\tVai più in basso di una pagina nella lista delle revisioni"
-#: gitk:1358
+#: gitk:2528
#, tcl-format
msgid "<%s-Home>\tScroll to top of commit list"
msgstr "<%s-Home>\tScorri alla cima della lista delle revisioni"
-#: gitk:1359
+#: gitk:2529
#, tcl-format
msgid "<%s-End>\tScroll to bottom of commit list"
msgstr "<%s-End>\tScorri alla fine della lista delle revisioni"
-#: gitk:1360
+#: gitk:2530
#, tcl-format
msgid "<%s-Up>\tScroll commit list up one line"
msgstr "<%s-Up>\tScorri la lista delle revisioni in alto di una riga"
-#: gitk:1361
+#: gitk:2531
#, tcl-format
msgid "<%s-Down>\tScroll commit list down one line"
msgstr "<%s-Down>\tScorri la lista delle revisioni in basso di una riga"
-#: gitk:1362
+#: gitk:2532
#, tcl-format
msgid "<%s-PageUp>\tScroll commit list up one page"
msgstr "<%s-PageUp>\tScorri la lista delle revisioni in alto di una pagina"
-#: gitk:1363
+#: gitk:2533
#, tcl-format
msgid "<%s-PageDown>\tScroll commit list down one page"
msgstr "<%s-PageDown>\tScorri la lista delle revisioni in basso di una pagina"
-#: gitk:1364
+#: gitk:2534
msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
msgstr "<Shift-Up>\tTrova all'indietro (verso l'alto, revisioni successive)"
-#: gitk:1365
+#: gitk:2535
msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
msgstr "<Shift-Down>\tTrova in avanti (verso il basso, revisioni precedenti)"
-#: gitk:1366
+#: gitk:2536
msgid "<Delete>, b\tScroll diff view up one page"
msgstr "<Delete>, b\tScorri la vista delle differenze in alto di una pagina"
-#: gitk:1367
+#: gitk:2537
msgid "<Backspace>\tScroll diff view up one page"
msgstr "<Backspace>\tScorri la vista delle differenze in alto di una pagina"
-#: gitk:1368
+#: gitk:2538
msgid "<Space>\t\tScroll diff view down one page"
msgstr "<Space>\t\tScorri la vista delle differenze in basso di una pagina"
-#: gitk:1369
+#: gitk:2539
msgid "u\t\tScroll diff view up 18 lines"
msgstr "u\t\tScorri la vista delle differenze in alto di 18 linee"
-#: gitk:1370
+#: gitk:2540
msgid "d\t\tScroll diff view down 18 lines"
msgstr "d\t\tScorri la vista delle differenze in basso di 18 linee"
-#: gitk:1371
+#: gitk:2541
#, tcl-format
msgid "<%s-F>\t\tFind"
msgstr "<%s-F>\t\tTrova"
-#: gitk:1372
+#: gitk:2542
#, tcl-format
msgid "<%s-G>\t\tMove to next find hit"
msgstr "<%s-G>\t\tTrova in avanti"
-#: gitk:1373
+#: gitk:2543
msgid "<Return>\tMove to next find hit"
msgstr "<Return>\tTrova in avanti"
-#: gitk:1374
+#: gitk:2544
msgid "/\t\tMove to next find hit, or redo find"
msgstr "/\t\tTrova in avanti, o cerca di nuovo"
-#: gitk:1375
+#: gitk:2545
msgid "?\t\tMove to previous find hit"
msgstr "?\t\tTrova all'indietro"
-#: gitk:1376
+#: gitk:2546
msgid "f\t\tScroll diff view to next file"
msgstr "f\t\tScorri la vista delle differenze al file successivo"
-#: gitk:1377
+#: gitk:2547
#, tcl-format
msgid "<%s-S>\t\tSearch for next hit in diff view"
msgstr "<%s-S>\t\tCerca in avanti nella vista delle differenze"
-#: gitk:1378
+#: gitk:2548
#, tcl-format
msgid "<%s-R>\t\tSearch for previous hit in diff view"
msgstr "<%s-R>\t\tCerca all'indietro nella vista delle differenze"
-#: gitk:1379
+#: gitk:2549
#, tcl-format
msgid "<%s-KP+>\tIncrease font size"
msgstr "<%s-KP+>\tAumenta grandezza carattere"
-#: gitk:1380
+#: gitk:2550
#, tcl-format
msgid "<%s-plus>\tIncrease font size"
msgstr "<%s-plus>\tAumenta grandezza carattere"
-#: gitk:1381
+#: gitk:2551
#, tcl-format
msgid "<%s-KP->\tDecrease font size"
msgstr "<%s-KP->\tDiminuisci grandezza carattere"
-#: gitk:1382
+#: gitk:2552
#, tcl-format
msgid "<%s-minus>\tDecrease font size"
msgstr "<%s-minus>\tDiminuisci grandezza carattere"
-#: gitk:1383
+#: gitk:2553
msgid "<F5>\t\tUpdate"
msgstr "<F5>\t\tAggiorna"
-#: gitk:1896
+#: gitk:3200
msgid "Gitk view definition"
msgstr "Scelta vista Gitk"
-#: gitk:1921
+#: gitk:3225
msgid "Name"
msgstr "Nome"
-#: gitk:1924
+#: gitk:3228
msgid "Remember this view"
msgstr "Ricorda questa vista"
-#: gitk:1928
-msgid "Commits to include (arguments to git rev-list):"
-msgstr "Revisioni da includere (argomenti di git rev-list):"
+#: gitk:3232
+msgid "Commits to include (arguments to git log):"
+msgstr "Revisioni da includere (argomenti di git log):"
-#: gitk:1935
+#: gitk:3239
msgid "Command to generate more commits to include:"
msgstr "Comando che genera altre revisioni da visualizzare:"
-#: gitk:1942
+#: gitk:3246
msgid "Enter files and directories to include, one per line:"
msgstr "Inserire file e directory da includere, uno per riga:"
-#: gitk:1989
+#: gitk:3293
msgid "Error in commit selection arguments:"
msgstr "Errore negli argomenti di selezione delle revisioni:"
-#: gitk:2043 gitk:2127 gitk:2583 gitk:2597 gitk:3781 gitk:8688 gitk:8689
+#: gitk:3347 gitk:3399 gitk:3842 gitk:3856 gitk:5060 gitk:10141 gitk:10142
msgid "None"
msgstr "Nessuno"
-#: gitk:2531 gitk:4336 gitk:5958 gitk:5973
+#: gitk:3790 gitk:5580 gitk:7287 gitk:7302
msgid "Date"
msgstr "Data"
-#: gitk:2531 gitk:4336
+#: gitk:3790 gitk:5580
msgid "CDate"
msgstr ""
-#: gitk:2680 gitk:2685
+#: gitk:3939 gitk:3944
msgid "Descendant"
msgstr "Discendente"
-#: gitk:2681
+#: gitk:3940
msgid "Not descendant"
msgstr "Non discendente"
-#: gitk:2688 gitk:2693
+#: gitk:3947 gitk:3952
msgid "Ancestor"
msgstr "Ascendente"
-#: gitk:2689
+#: gitk:3948
msgid "Not ancestor"
msgstr "Non ascendente"
-#: gitk:2924
+#: gitk:4187
msgid "Local changes checked in to index but not committed"
msgstr "Modifiche locali presenti nell'indice ma non nell'archivio"
-#: gitk:2954
+#: gitk:4220
msgid "Local uncommitted changes, not checked in to index"
msgstr "Modifiche locali non presenti né nell'archivio né nell'indice"
-#: gitk:4305
+#: gitk:5549
msgid "Searching"
msgstr "Ricerca in corso"
-#: gitk:4767
+#: gitk:6049
msgid "Tags:"
msgstr "Etichette:"
-#: gitk:4784 gitk:4790 gitk:5951
+#: gitk:6066 gitk:6072 gitk:7280
msgid "Parent"
msgstr "Genitore"
-#: gitk:4795
+#: gitk:6077
msgid "Child"
msgstr "Figlio"
-#: gitk:4804
+#: gitk:6086
msgid "Branch"
msgstr "Ramo"
-#: gitk:4807
+#: gitk:6089
msgid "Follows"
msgstr "Segue"
-#: gitk:4810
+#: gitk:6092
msgid "Precedes"
msgstr "Precede"
-#: gitk:5093
+#: gitk:6378
msgid "Error getting merge diffs:"
msgstr "Errore nella lettura delle differenze di fusione:"
-#: gitk:5778
+#: gitk:7113
msgid "Goto:"
msgstr "Vai a:"
-#: gitk:5780
+#: gitk:7115
msgid "SHA1 ID:"
msgstr "SHA1 ID:"
-#: gitk:5805
+#: gitk:7134
#, tcl-format
msgid "Short SHA1 id %s is ambiguous"
msgstr "La SHA1 id abbreviata %s è ambigua"
-#: gitk:5817
+#: gitk:7146
#, tcl-format
msgid "SHA1 id %s is not known"
msgstr "La SHA1 id %s è sconosciuta"
-#: gitk:5819
+#: gitk:7148
#, tcl-format
msgid "Tag/Head %s is not known"
msgstr "L'etichetta/ramo %s è sconosciuto"
-#: gitk:5961
+#: gitk:7290
msgid "Children"
msgstr "Figli"
-#: gitk:6018
+#: gitk:7347
#, tcl-format
msgid "Reset %s branch to here"
msgstr "Aggiorna il ramo %s a questa revisione"
-#: gitk:6049
+#: gitk:7349
+msgid "Detached head: can't reset"
+msgstr ""
+
+#: gitk:7381
msgid "Top"
msgstr "Inizio"
-#: gitk:6050
+#: gitk:7382
msgid "From"
msgstr "Da"
-#: gitk:6055
+#: gitk:7387
msgid "To"
msgstr "A"
-#: gitk:6078
+#: gitk:7410
msgid "Generate patch"
msgstr "Genera patch"
-#: gitk:6080
+#: gitk:7412
msgid "From:"
msgstr "Da:"
-#: gitk:6089
+#: gitk:7421
msgid "To:"
msgstr "A:"
-#: gitk:6098
+#: gitk:7430
msgid "Reverse"
msgstr "Inverti"
-#: gitk:6100 gitk:6269
+#: gitk:7432 gitk:7607
msgid "Output file:"
msgstr "Scrivi sul file:"
-#: gitk:6106
+#: gitk:7438
msgid "Generate"
msgstr "Genera"
-#: gitk:6142
+#: gitk:7474
msgid "Error creating patch:"
msgstr "Errore nella creazione della patch:"
-#: gitk:6164 gitk:6257 gitk:6311
+#: gitk:7496 gitk:7595 gitk:7649
msgid "ID:"
msgstr "ID:"
-#: gitk:6173
+#: gitk:7505
msgid "Tag name:"
msgstr "Nome etichetta:"
-#: gitk:6177 gitk:6320
+#: gitk:7509 gitk:7659
msgid "Create"
msgstr "Crea"
-#: gitk:6192
+#: gitk:7524
msgid "No tag name specified"
msgstr "Nessuna etichetta specificata"
-#: gitk:6196
+#: gitk:7528
#, tcl-format
msgid "Tag \"%s\" already exists"
msgstr "L'etichetta \"%s\" esiste già"
-#: gitk:6202
+#: gitk:7534
msgid "Error creating tag:"
msgstr "Errore nella creazione dell'etichetta:"
-#: gitk:6266
+#: gitk:7604
msgid "Command:"
msgstr "Comando:"
-#: gitk:6274
+#: gitk:7612
msgid "Write"
msgstr "Scrivi"
-#: gitk:6290
+#: gitk:7628
msgid "Error writing commit:"
msgstr "Errore nella scrittura della revisione:"
-#: gitk:6316
+#: gitk:7654
msgid "Name:"
msgstr "Nome:"
-#: gitk:6335
+#: gitk:7674
msgid "Please specify a name for the new branch"
msgstr "Specificare un nome per il nuovo ramo"
-#: gitk:6364
+#: gitk:7703
#, tcl-format
msgid "Commit %s is already included in branch %s -- really re-apply it?"
msgstr "La revisione %s è già inclusa nel ramo %s -- applicarla di nuovo?"
-#: gitk:6369
+#: gitk:7708
msgid "Cherry-picking"
msgstr ""
-#: gitk:6381
+#: gitk:7720
msgid "No changes committed"
msgstr "Nessuna modifica archiviata"
-#: gitk:6404
+#: gitk:7745
msgid "Confirm reset"
msgstr "Conferma git reset"
-#: gitk:6406
+#: gitk:7747
#, tcl-format
msgid "Reset branch %s to %s?"
msgstr "Aggiornare il ramo %s a %s?"
-#: gitk:6410
+#: gitk:7751
msgid "Reset type:"
msgstr "Tipo di aggiornamento:"
-#: gitk:6414
+#: gitk:7755
msgid "Soft: Leave working tree and index untouched"
msgstr "Soft: Lascia la direcory di lavoro e l'indice come sono"
-#: gitk:6417
+#: gitk:7758
msgid "Mixed: Leave working tree untouched, reset index"
msgstr "Mixed: Lascia la directory di lavoro come è, aggiorna l'indice"
-#: gitk:6420
+#: gitk:7761
msgid ""
"Hard: Reset working tree and index\n"
"(discard ALL local changes)"
@@ -693,19 +723,19 @@ msgstr ""
"Hard: Aggiorna la directory di lavoro e l'indice\n"
"(abbandona TUTTE le modifiche locali)"
-#: gitk:6436
+#: gitk:7777
msgid "Resetting"
msgstr "git reset in corso"
-#: gitk:6493
+#: gitk:7834
msgid "Checking out"
msgstr "Attivazione in corso"
-#: gitk:6523
+#: gitk:7885
msgid "Cannot delete the currently checked-out branch"
msgstr "Impossibile cancellare il ramo attualmente attivo"
-#: gitk:6529
+#: gitk:7891
#, tcl-format
msgid ""
"The commits on branch %s aren't on any other branch.\n"
@@ -714,16 +744,16 @@ msgstr ""
"Le revisioni nel ramo %s non sono presenti su altri rami.\n"
"Cancellare il ramo %s?"
-#: gitk:6560
+#: gitk:7922
#, tcl-format
msgid "Tags and heads: %s"
msgstr "Etichette e rami: %s"
-#: gitk:6574
+#: gitk:7936
msgid "Filter"
msgstr "Filtro"
-#: gitk:6868
+#: gitk:8230
msgid ""
"Error reading commit topology information; branch and preceding/following "
"tag information will be incomplete."
@@ -731,117 +761,129 @@ msgstr ""
"Errore nella lettura della topologia delle revisioni: le informazioni sul "
"ramo e le etichette precedenti e seguenti saranno incomplete."
-#: gitk:7852
+#: gitk:9216
msgid "Tag"
msgstr "Etichetta"
-#: gitk:7852
+#: gitk:9216
msgid "Id"
msgstr "Id"
-#: gitk:7892
+#: gitk:9262
msgid "Gitk font chooser"
msgstr "Scelta caratteri gitk"
-#: gitk:7909
+#: gitk:9279
msgid "B"
msgstr "B"
-#: gitk:7912
+#: gitk:9282
msgid "I"
msgstr "I"
-#: gitk:8005
+#: gitk:9375
msgid "Gitk preferences"
msgstr "Preferenze gitk"
-#: gitk:8006
+#: gitk:9376
msgid "Commit list display options"
msgstr "Opzioni visualizzazione dell'elenco revisioni"
-#: gitk:8009
+#: gitk:9379
msgid "Maximum graph width (lines)"
msgstr "Larghezza massima del grafico (in linee)"
-#: gitk:8013
+#: gitk:9383
#, tcl-format
msgid "Maximum graph width (% of pane)"
msgstr "Larghezza massima del grafico (% del pannello)"
-#: gitk:8018
+#: gitk:9388
msgid "Show local changes"
msgstr "Mostra modifiche locali"
-#: gitk:8023
+#: gitk:9393
msgid "Auto-select SHA1"
msgstr "Seleziona automaticamente SHA1 hash"
-#: gitk:8028
+#: gitk:9398
msgid "Diff display options"
msgstr "Opzioni di visualizzazione delle differenze"
-#: gitk:8030
+#: gitk:9400
msgid "Tab spacing"
msgstr "Spaziatura tabulazioni"
-#: gitk:8034
+#: gitk:9404
msgid "Display nearby tags"
msgstr "Mostra etichette vicine"
-#: gitk:8039
+#: gitk:9409
msgid "Limit diffs to listed paths"
msgstr "Limita le differenze ai percorsi elencati"
-#: gitk:8044
+#: gitk:9414
+msgid "Support per-file encodings"
+msgstr ""
+
+#: gitk:9421
+msgid "External diff tool"
+msgstr ""
+
+#: gitk:9423
+msgid "Choose..."
+msgstr ""
+
+#: gitk:9428
msgid "Colors: press to choose"
msgstr "Colori: premere per scegliere"
-#: gitk:8047
+#: gitk:9431
msgid "Background"
msgstr "Sfondo"
-#: gitk:8051
+#: gitk:9435
msgid "Foreground"
msgstr "Primo piano"
-#: gitk:8055
+#: gitk:9439
msgid "Diff: old lines"
msgstr "Diff: vecchie linee"
-#: gitk:8060
+#: gitk:9444
msgid "Diff: new lines"
msgstr "Diff: nuove linee"
-#: gitk:8065
+#: gitk:9449
msgid "Diff: hunk header"
msgstr "Diff: intestazione della sezione"
-#: gitk:8071
+#: gitk:9455
msgid "Select bg"
msgstr "Sfondo selezione"
-#: gitk:8075
+#: gitk:9459
msgid "Fonts: press to choose"
msgstr "Carattere: premere per scegliere"
-#: gitk:8077
+#: gitk:9461
msgid "Main font"
msgstr "Carattere principale"
-#: gitk:8078
+#: gitk:9462
msgid "Diff display font"
msgstr "Carattere per differenze"
-#: gitk:8079
+#: gitk:9463
msgid "User interface font"
msgstr "Carattere per interfaccia utente"
-#: gitk:8095
+#: gitk:9488
#, tcl-format
msgid "Gitk: choose color for %s"
msgstr "Gitk: scegliere un colore per %s"
-#: gitk:8476
+#: gitk:9934
msgid ""
"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
" Gitk requires at least Tcl/Tk 8.4."
@@ -849,42 +891,24 @@ msgstr ""
"Questa versione di Tcl/Tk non può avviare gitk.\n"
" Gitk richiede Tcl/Tk versione 8.4 o superiore."
-#: gitk:8565
+#: gitk:10047
msgid "Cannot find a git repository here."
msgstr "Archivio git non trovato."
-#: gitk:8569
+#: gitk:10051
#, tcl-format
msgid "Cannot find the git directory \"%s\"."
msgstr "Directory git \"%s\" non trovata."
-#: gitk:8612
+#: gitk:10098
#, tcl-format
msgid "Ambiguous argument '%s': both revision and filename"
msgstr "Argomento ambiguo: '%s' è sia revisione che nome di file"
-#: gitk:8624
+#: gitk:10110
msgid "Bad arguments to gitk:"
msgstr "Gitk: argomenti errati:"
-#: gitk:8636
-msgid "Couldn't get list of unmerged files:"
-msgstr "Impossibile ottenere l'elenco dei file in attesa di fusione:"
-
-#: gitk:8652
-msgid "No files selected: --merge specified but no files are unmerged."
-msgstr ""
-"Nessun file selezionato: è stata specificata l'opzione --merge ma non ci "
-"sono file in attesa di fusione."
-
-#: gitk:8655
-msgid ""
-"No files selected: --merge specified but no unmerged files are within file "
-"limit."
-msgstr ""
-"Nessun file selezionato: è stata specificata l'opzione --merge ma i file "
-"specificati non sono in attesa di fusione."
-
-#: gitk:8716
+#: gitk:10170
msgid "Command line"
msgstr "Linea di comando"
diff --git a/gitk-git/po/sv.po b/gitk-git/po/sv.po
index e1ecfb7586..947b53f6b0 100644
--- a/gitk-git/po/sv.po
+++ b/gitk-git/po/sv.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sv\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-03 18:58+0200\n"
+"POT-Creation-Date: 2008-10-18 22:03+1100\n"
"PO-Revision-Date: 2008-08-03 19:03+0200\n"
"Last-Translator: Mikael Magnusson <mikachu@gmail.com>\n"
"Language-Team: Swedish <sv@li.org>\n"
@@ -16,17 +16,17 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: gitk:102
+#: gitk:113
msgid "Couldn't get list of unmerged files:"
msgstr "Kunde inta hämta lista över ej sammanslagna filer:"
-#: gitk:329
+#: gitk:340
msgid "No files selected: --merge specified but no files are unmerged."
msgstr ""
"Inga filer valdes: --merge angavs men det finns inga filer som inte har "
"slagits samman."
-#: gitk:332
+#: gitk:343
msgid ""
"No files selected: --merge specified but no unmerged files are within file "
"limit."
@@ -34,257 +34,261 @@ msgstr ""
"Inga filer valdes: --merge angavs men det finns inga filer inom "
"filbegränsningen."
-#: gitk:354
+#: gitk:365 gitk:503
msgid "Error executing git log:"
msgstr "Fel vid körning av git log:"
-#: gitk:369
+#: gitk:378
msgid "Reading"
msgstr "Läser"
-#: gitk:400 gitk:3356
+#: gitk:438 gitk:3462
msgid "Reading commits..."
msgstr "Läser incheckningar..."
-#: gitk:403 gitk:1480 gitk:3359
+#: gitk:441 gitk:1528 gitk:3465
msgid "No commits selected"
msgstr "Inga incheckningar markerade"
-#: gitk:1358
+#: gitk:1399
msgid "Can't parse git log output:"
msgstr "Kan inte tolka utdata från git log:"
-#: gitk:1557
+#: gitk:1605
msgid "No commit information available"
msgstr "Ingen incheckningsinformation är tillgänglig"
-#: gitk:1654 gitk:1676 gitk:3150 gitk:7620 gitk:9149 gitk:9317
+#: gitk:1709 gitk:1731 gitk:3259 gitk:7764 gitk:9293 gitk:9466
msgid "OK"
msgstr "OK"
-#: gitk:1678 gitk:3151 gitk:7296 gitk:7367 gitk:7470 gitk:7516 gitk:7622
-#: gitk:9150 gitk:9318
+#: gitk:1733 gitk:3260 gitk:7439 gitk:7510 gitk:7613 gitk:7660 gitk:7766
+#: gitk:9294 gitk:9467
msgid "Cancel"
msgstr "Avbryt"
-#: gitk:1716
-msgid "File"
-msgstr "Arkiv"
-
-#: gitk:1718
+#: gitk:1811
msgid "Update"
msgstr "Uppdatera"
-#: gitk:1719
+#: gitk:1812
msgid "Reload"
msgstr "Ladda om"
-#: gitk:1720
+#: gitk:1813
msgid "Reread references"
msgstr "Läs om referenser"
-#: gitk:1721
+#: gitk:1814
msgid "List references"
msgstr "Visa referenser"
-#: gitk:1722
+#: gitk:1815
msgid "Quit"
msgstr "Avsluta"
-#: gitk:1724
-msgid "Edit"
-msgstr "Redigera"
+#: gitk:1810
+msgid "File"
+msgstr "Arkiv"
-#: gitk:1725
+#: gitk:1818
msgid "Preferences"
msgstr "Inställningar"
-#: gitk:1728 gitk:3087
-msgid "View"
-msgstr "Visa"
+#: gitk:1817
+msgid "Edit"
+msgstr "Redigera"
-#: gitk:1729
+#: gitk:1821
msgid "New view..."
msgstr "Ny vy..."
-#: gitk:1730 gitk:3298 gitk:9932
+#: gitk:1822
msgid "Edit view..."
msgstr "Ändra vy..."
-#: gitk:1732 gitk:3299 gitk:9933
+#: gitk:1823
msgid "Delete view"
msgstr "Ta bort vy"
-#: gitk:1734
+#: gitk:1825
msgid "All files"
msgstr "Alla filer"
-#: gitk:1738
-msgid "Help"
-msgstr "Hjälp"
+#: gitk:1820 gitk:3196
+msgid "View"
+msgstr "Visa"
-#: gitk:1739 gitk:2399
+#: gitk:1828 gitk:2487
msgid "About gitk"
msgstr "Om gitk"
-#: gitk:1740
+#: gitk:1829
msgid "Key bindings"
msgstr "Tangentbordsbindningar"
-#: gitk:1797
+#: gitk:1827
+msgid "Help"
+msgstr "Hjälp"
+
+#: gitk:1887
msgid "SHA1 ID: "
msgstr "SHA1-id: "
-#: gitk:1828
+#: gitk:1918
msgid "Row"
msgstr "Rad"
-#: gitk:1859
+#: gitk:1949
msgid "Find"
msgstr "Sök"
-#: gitk:1860
+#: gitk:1950
msgid "next"
msgstr "nästa"
-#: gitk:1861
+#: gitk:1951
msgid "prev"
msgstr "föreg"
-#: gitk:1862
+#: gitk:1952
msgid "commit"
msgstr "incheckning"
-#: gitk:1865 gitk:1867 gitk:3511 gitk:3534 gitk:3558 gitk:5441 gitk:5512
+#: gitk:1955 gitk:1957 gitk:3617 gitk:3640 gitk:3664 gitk:5550 gitk:5621
msgid "containing:"
msgstr "som innehåller:"
-#: gitk:1868 gitk:2866 gitk:2871 gitk:3586
+#: gitk:1958 gitk:2954 gitk:2959 gitk:3692
msgid "touching paths:"
msgstr "som rör sökväg:"
-#: gitk:1869 gitk:3591
+#: gitk:1959 gitk:3697
msgid "adding/removing string:"
msgstr "som lägger/till tar bort sträng:"
-#: gitk:1878 gitk:1880
+#: gitk:1968 gitk:1970
msgid "Exact"
msgstr "Exakt"
-#: gitk:1880 gitk:3667 gitk:5409
+#: gitk:1970 gitk:3773 gitk:5518
msgid "IgnCase"
msgstr "IgnVersaler"
-#: gitk:1880 gitk:3560 gitk:3665 gitk:5405
+#: gitk:1970 gitk:3666 gitk:3771 gitk:5514
msgid "Regexp"
msgstr "Reg.uttr."
-#: gitk:1882 gitk:1883 gitk:3686 gitk:3716 gitk:3723 gitk:5532 gitk:5599
+#: gitk:1972 gitk:1973 gitk:3792 gitk:3822 gitk:3829 gitk:5641 gitk:5708
msgid "All fields"
msgstr "Alla fält"
-#: gitk:1883 gitk:3684 gitk:3716 gitk:5471
+#: gitk:1973 gitk:3790 gitk:3822 gitk:5580
msgid "Headline"
msgstr "Rubrik"
-#: gitk:1884 gitk:3684 gitk:5471 gitk:5599 gitk:6000
+#: gitk:1974 gitk:3790 gitk:5580 gitk:5708 gitk:6109
msgid "Comments"
msgstr "Kommentarer"
-#: gitk:1884 gitk:3684 gitk:3688 gitk:3723 gitk:5471 gitk:5936 gitk:7142
-#: gitk:7157
+#: gitk:1974 gitk:3790 gitk:3794 gitk:3829 gitk:5580 gitk:6045 gitk:7285
+#: gitk:7300
msgid "Author"
msgstr "Författare"
-#: gitk:1884 gitk:3684 gitk:5471 gitk:5938
+#: gitk:1974 gitk:3790 gitk:5580 gitk:6047
msgid "Committer"
msgstr "Incheckare"
-#: gitk:1913
+#: gitk:2003
msgid "Search"
msgstr "Sök"
-#: gitk:1920
+#: gitk:2010
msgid "Diff"
msgstr "Diff"
-#: gitk:1922
+#: gitk:2012
msgid "Old version"
msgstr "Gammal version"
-#: gitk:1924
+#: gitk:2014
msgid "New version"
msgstr "Ny version"
-#: gitk:1926
+#: gitk:2016
msgid "Lines of context"
msgstr "Rader sammanhang"
-#: gitk:1936
+#: gitk:2026
msgid "Ignore space change"
msgstr "Ignorera ändringar i blanksteg"
-#: gitk:1994
+#: gitk:2084
msgid "Patch"
msgstr "Patch"
-#: gitk:1996
+#: gitk:2086
msgid "Tree"
msgstr "Träd"
-#: gitk:2121 gitk:2136 gitk:7211
+#: gitk:2213 gitk:2226
msgid "Diff this -> selected"
msgstr "Diff denna -> markerad"
-#: gitk:2123 gitk:2138 gitk:7212
+#: gitk:2214 gitk:2227
msgid "Diff selected -> this"
msgstr "Diff markerad -> denna"
-#: gitk:2125 gitk:2140 gitk:7213
+#: gitk:2215 gitk:2228
msgid "Make patch"
msgstr "Skapa patch"
-#: gitk:2126 gitk:7351
+#: gitk:2216 gitk:7494
msgid "Create tag"
msgstr "Skapa tagg"
-#: gitk:2127 gitk:7450
+#: gitk:2217 gitk:7593
msgid "Write commit to file"
msgstr "Skriv incheckning till fil"
-#: gitk:2128 gitk:7504
+#: gitk:2218 gitk:7647
msgid "Create new branch"
msgstr "Skapa ny gren"
-#: gitk:2129
+#: gitk:2219
msgid "Cherry-pick this commit"
msgstr "Plocka denna incheckning"
-#: gitk:2131
+#: gitk:2220
msgid "Reset HEAD branch to here"
msgstr "Återställ HEAD-grenen hit"
-#: gitk:2147
+#: gitk:2234
msgid "Check out this branch"
msgstr "Checka ut denna gren"
-#: gitk:2149
+#: gitk:2235
msgid "Remove this branch"
msgstr "Ta bort denna gren"
-#: gitk:2155
+#: gitk:2242
msgid "Highlight this too"
msgstr "Markera även detta"
-#: gitk:2157
+#: gitk:2243
msgid "Highlight this only"
msgstr "Markera bara detta"
-#: gitk:2159
+#: gitk:2244
msgid "External diff"
msgstr "Extern diff"
-#: gitk:2400
+#: gitk:2245
+msgid "Blame parent commit"
+msgstr ""
+
+#: gitk:2488
msgid ""
"\n"
"Gitk - a commit viewer for git\n"
@@ -300,427 +304,427 @@ msgstr ""
"\n"
"Använd och vidareförmedla enligt villkoren i GNU General Public License"
-#: gitk:2408 gitk:2469 gitk:7799
+#: gitk:2496 gitk:2557 gitk:7943
msgid "Close"
msgstr "Stäng"
-#: gitk:2427
+#: gitk:2515
msgid "Gitk key bindings"
msgstr "Tangentbordsbindningar för Gitk"
-#: gitk:2429
+#: gitk:2517
msgid "Gitk key bindings:"
msgstr "Tangentbordsbindningar för Gitk:"
-#: gitk:2431
+#: gitk:2519
#, tcl-format
msgid "<%s-Q>\t\tQuit"
msgstr "<%s-Q>\t\tAvsluta"
-#: gitk:2432
+#: gitk:2520
msgid "<Home>\t\tMove to first commit"
msgstr "<Home>\t\tGå till första incheckning"
-#: gitk:2433
+#: gitk:2521
msgid "<End>\t\tMove to last commit"
msgstr "<End>\t\tGå till sista incheckning"
-#: gitk:2434
+#: gitk:2522
msgid "<Up>, p, i\tMove up one commit"
msgstr "<Upp>, p, i\tGå en incheckning upp"
-#: gitk:2435
+#: gitk:2523
msgid "<Down>, n, k\tMove down one commit"
msgstr "<Ned>, n, k\tGå en incheckning ned"
-#: gitk:2436
+#: gitk:2524
msgid "<Left>, z, j\tGo back in history list"
msgstr "<Vänster>, z, j\tGå bakåt i historiken"
-#: gitk:2437
+#: gitk:2525
msgid "<Right>, x, l\tGo forward in history list"
msgstr "<Höger>, x, l\tGå framåt i historiken"
-#: gitk:2438
+#: gitk:2526
msgid "<PageUp>\tMove up one page in commit list"
msgstr "<PageUp>\tGå upp en sida i incheckningslistan"
-#: gitk:2439
+#: gitk:2527
msgid "<PageDown>\tMove down one page in commit list"
msgstr "<PageDown>\tGå ned en sida i incheckningslistan"
-#: gitk:2440
+#: gitk:2528
#, tcl-format
msgid "<%s-Home>\tScroll to top of commit list"
msgstr "<%s-Home>\tRulla till början av incheckningslistan"
-#: gitk:2441
+#: gitk:2529
#, tcl-format
msgid "<%s-End>\tScroll to bottom of commit list"
msgstr "<%s-End>\tRulla till slutet av incheckningslistan"
-#: gitk:2442
+#: gitk:2530
#, tcl-format
msgid "<%s-Up>\tScroll commit list up one line"
msgstr "<%s-Upp>\tRulla incheckningslistan upp ett steg"
-#: gitk:2443
+#: gitk:2531
#, tcl-format
msgid "<%s-Down>\tScroll commit list down one line"
msgstr "<%s-Ned>\tRulla incheckningslistan ned ett steg"
-#: gitk:2444
+#: gitk:2532
#, tcl-format
msgid "<%s-PageUp>\tScroll commit list up one page"
msgstr "<%s-PageUp>\tRulla incheckningslistan upp en sida"
-#: gitk:2445
+#: gitk:2533
#, tcl-format
msgid "<%s-PageDown>\tScroll commit list down one page"
msgstr "<%s-PageDown>\tRulla incheckningslistan ned en sida"
-#: gitk:2446
+#: gitk:2534
msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
msgstr "<Skift-Upp>\tSök bakåt (uppåt, senare incheckningar)"
-#: gitk:2447
+#: gitk:2535
msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
msgstr "<Skift-Ned>\tSök framåt (nedåt, tidigare incheckningar)"
-#: gitk:2448
+#: gitk:2536
msgid "<Delete>, b\tScroll diff view up one page"
msgstr "<Delete>, b\tRulla diffvisningen upp en sida"
-#: gitk:2449
+#: gitk:2537
msgid "<Backspace>\tScroll diff view up one page"
msgstr "<Baksteg>\tRulla diffvisningen upp en sida"
-#: gitk:2450
+#: gitk:2538
msgid "<Space>\t\tScroll diff view down one page"
msgstr "<Blanksteg>\tRulla diffvisningen ned en sida"
-#: gitk:2451
+#: gitk:2539
msgid "u\t\tScroll diff view up 18 lines"
msgstr "u\t\tRulla diffvisningen upp 18 rader"
-#: gitk:2452
+#: gitk:2540
msgid "d\t\tScroll diff view down 18 lines"
msgstr "d\t\tRulla diffvisningen ned 18 rader"
-#: gitk:2453
+#: gitk:2541
#, tcl-format
msgid "<%s-F>\t\tFind"
msgstr "<%s-F>\t\tSök"
-#: gitk:2454
+#: gitk:2542
#, tcl-format
msgid "<%s-G>\t\tMove to next find hit"
msgstr "<%s-G>\t\tGå till nästa sökträff"
-#: gitk:2455
+#: gitk:2543
msgid "<Return>\tMove to next find hit"
msgstr "<Return>\t\tGå till nästa sökträff"
-#: gitk:2456
+#: gitk:2544
msgid "/\t\tMove to next find hit, or redo find"
msgstr "/\t\tGå till nästa sökträff, eller sök på nytt"
-#: gitk:2457
+#: gitk:2545
msgid "?\t\tMove to previous find hit"
msgstr "?\t\tGå till föregående sökträff"
-#: gitk:2458
+#: gitk:2546
msgid "f\t\tScroll diff view to next file"
msgstr "f\t\tRulla diffvisningen till nästa fil"
-#: gitk:2459
+#: gitk:2547
#, tcl-format
msgid "<%s-S>\t\tSearch for next hit in diff view"
msgstr "<%s-S>\t\tGå till nästa sökträff i diffvisningen"
-#: gitk:2460
+#: gitk:2548
#, tcl-format
msgid "<%s-R>\t\tSearch for previous hit in diff view"
msgstr "<%s-R>\t\tGå till föregående sökträff i diffvisningen"
-#: gitk:2461
+#: gitk:2549
#, tcl-format
msgid "<%s-KP+>\tIncrease font size"
msgstr "<%s-Num+>\tÖka teckenstorlek"
-#: gitk:2462
+#: gitk:2550
#, tcl-format
msgid "<%s-plus>\tIncrease font size"
msgstr "<%s-plus>\tÖka teckenstorlek"
-#: gitk:2463
+#: gitk:2551
#, tcl-format
msgid "<%s-KP->\tDecrease font size"
msgstr "<%s-Num->\tMinska teckenstorlek"
-#: gitk:2464
+#: gitk:2552
#, tcl-format
msgid "<%s-minus>\tDecrease font size"
msgstr "<%s-minus>\tMinska teckenstorlek"
-#: gitk:2465
+#: gitk:2553
msgid "<F5>\t\tUpdate"
msgstr "<F5>\t\tUppdatera"
-#: gitk:3091
+#: gitk:3200
msgid "Gitk view definition"
msgstr "Definition av Gitk-vy"
-#: gitk:3116
+#: gitk:3225
msgid "Name"
msgstr "Namn"
-#: gitk:3119
+#: gitk:3228
msgid "Remember this view"
msgstr "Spara denna vy"
-#: gitk:3123
+#: gitk:3232
msgid "Commits to include (arguments to git log):"
msgstr "Incheckningar att ta med (argument till git log):"
-#: gitk:3130
+#: gitk:3239
msgid "Command to generate more commits to include:"
msgstr "Kommando för att generera fler incheckningar att ta med:"
-#: gitk:3137
+#: gitk:3246
msgid "Enter files and directories to include, one per line:"
msgstr "Ange filer och kataloger att ta med, en per rad:"
-#: gitk:3184
+#: gitk:3293
msgid "Error in commit selection arguments:"
msgstr "Fel i argument för val av incheckningar:"
-#: gitk:3238 gitk:3290 gitk:3736 gitk:3750 gitk:4951 gitk:9896 gitk:9897
+#: gitk:3347 gitk:3399 gitk:3842 gitk:3856 gitk:5060 gitk:10141 gitk:10142
msgid "None"
msgstr "Inget"
-#: gitk:3684 gitk:5471 gitk:7144 gitk:7159
+#: gitk:3790 gitk:5580 gitk:7287 gitk:7302
msgid "Date"
msgstr "Datum"
-#: gitk:3684 gitk:5471
+#: gitk:3790 gitk:5580
msgid "CDate"
msgstr "Skapat datum"
-#: gitk:3833 gitk:3838
+#: gitk:3939 gitk:3944
msgid "Descendant"
msgstr "Avkomling"
-#: gitk:3834
+#: gitk:3940
msgid "Not descendant"
msgstr "Inte avkomling"
-#: gitk:3841 gitk:3846
+#: gitk:3947 gitk:3952
msgid "Ancestor"
msgstr "Förfader"
-#: gitk:3842
+#: gitk:3948
msgid "Not ancestor"
msgstr "Inte förfader"
-#: gitk:4078
+#: gitk:4187
msgid "Local changes checked in to index but not committed"
msgstr "Lokala ändringar sparade i indexet men inte incheckade"
-#: gitk:4111
+#: gitk:4220
msgid "Local uncommitted changes, not checked in to index"
msgstr "Lokala ändringar, ej sparade i indexet"
-#: gitk:5440
+#: gitk:5549
msgid "Searching"
msgstr "Söker"
-#: gitk:5940
+#: gitk:6049
msgid "Tags:"
msgstr "Taggar:"
-#: gitk:5957 gitk:5963 gitk:7137
+#: gitk:6066 gitk:6072 gitk:7280
msgid "Parent"
msgstr "Förälder"
-#: gitk:5968
+#: gitk:6077
msgid "Child"
msgstr "Barn"
-#: gitk:5977
+#: gitk:6086
msgid "Branch"
msgstr "Gren"
-#: gitk:5980
+#: gitk:6089
msgid "Follows"
msgstr "Följer"
-#: gitk:5983
+#: gitk:6092
msgid "Precedes"
msgstr "Föregår"
-#: gitk:6267
+#: gitk:6378
msgid "Error getting merge diffs:"
msgstr "Fel vid hämtning av sammanslagningsdiff:"
-#: gitk:6970
+#: gitk:7113
msgid "Goto:"
msgstr "Gå till:"
-#: gitk:6972
+#: gitk:7115
msgid "SHA1 ID:"
msgstr "SHA1-id:"
-#: gitk:6991
+#: gitk:7134
#, tcl-format
msgid "Short SHA1 id %s is ambiguous"
msgstr "Förkortat SHA1-id %s är tvetydigt"
-#: gitk:7003
+#: gitk:7146
#, tcl-format
msgid "SHA1 id %s is not known"
msgstr "SHA-id:t %s är inte känt"
-#: gitk:7005
+#: gitk:7148
#, tcl-format
msgid "Tag/Head %s is not known"
msgstr "Tagg/huvud %s är okänt"
-#: gitk:7147
+#: gitk:7290
msgid "Children"
msgstr "Barn"
-#: gitk:7204
+#: gitk:7347
#, tcl-format
msgid "Reset %s branch to here"
msgstr "Återställ grenen %s hit"
-#: gitk:7206
+#: gitk:7349
msgid "Detached head: can't reset"
msgstr "Frånkopplad head: kan inte återställa"
-#: gitk:7238
+#: gitk:7381
msgid "Top"
msgstr "Topp"
-#: gitk:7239
+#: gitk:7382
msgid "From"
msgstr "Från"
-#: gitk:7244
+#: gitk:7387
msgid "To"
msgstr "Till"
-#: gitk:7267
+#: gitk:7410
msgid "Generate patch"
msgstr "Generera patch"
-#: gitk:7269
+#: gitk:7412
msgid "From:"
msgstr "Från:"
-#: gitk:7278
+#: gitk:7421
msgid "To:"
msgstr "Till:"
-#: gitk:7287
+#: gitk:7430
msgid "Reverse"
msgstr "Vänd"
-#: gitk:7289 gitk:7464
+#: gitk:7432 gitk:7607
msgid "Output file:"
msgstr "Utdatafil:"
-#: gitk:7295
+#: gitk:7438
msgid "Generate"
msgstr "Generera"
-#: gitk:7331
+#: gitk:7474
msgid "Error creating patch:"
msgstr "Fel vid generering av patch:"
-#: gitk:7353 gitk:7452 gitk:7506
+#: gitk:7496 gitk:7595 gitk:7649
msgid "ID:"
msgstr "Id:"
-#: gitk:7362
+#: gitk:7505
msgid "Tag name:"
msgstr "Taggnamn:"
-#: gitk:7366 gitk:7515
+#: gitk:7509 gitk:7659
msgid "Create"
msgstr "Skapa"
-#: gitk:7381
+#: gitk:7524
msgid "No tag name specified"
msgstr "Inget taggnamn angavs"
-#: gitk:7385
+#: gitk:7528
#, tcl-format
msgid "Tag \"%s\" already exists"
msgstr "Taggen \"%s\" finns redan"
-#: gitk:7391
+#: gitk:7534
msgid "Error creating tag:"
msgstr "Fel vid skapande av tagg:"
-#: gitk:7461
+#: gitk:7604
msgid "Command:"
msgstr "Kommando:"
-#: gitk:7469
+#: gitk:7612
msgid "Write"
msgstr "Skriv"
-#: gitk:7485
+#: gitk:7628
msgid "Error writing commit:"
msgstr "Fel vid skrivning av incheckning:"
-#: gitk:7511
+#: gitk:7654
msgid "Name:"
msgstr "Namn:"
-#: gitk:7530
+#: gitk:7674
msgid "Please specify a name for the new branch"
msgstr "Ange ett namn för den nya grenen"
-#: gitk:7559
+#: gitk:7703
#, tcl-format
msgid "Commit %s is already included in branch %s -- really re-apply it?"
msgstr ""
"Incheckningen %s finns redan på grenen %s -- skall den verkligen appliceras "
"på nytt?"
-#: gitk:7564
+#: gitk:7708
msgid "Cherry-picking"
msgstr "Plockar"
-#: gitk:7576
+#: gitk:7720
msgid "No changes committed"
msgstr "Inga ändringar incheckade"
-#: gitk:7601
+#: gitk:7745
msgid "Confirm reset"
msgstr "Bekräfta återställning"
-#: gitk:7603
+#: gitk:7747
#, tcl-format
msgid "Reset branch %s to %s?"
msgstr "Återställa grenen %s till %s?"
-#: gitk:7607
+#: gitk:7751
msgid "Reset type:"
msgstr "Typ av återställning:"
-#: gitk:7611
+#: gitk:7755
msgid "Soft: Leave working tree and index untouched"
msgstr "Mjuk: Rör inte utcheckning och index"
-#: gitk:7614
+#: gitk:7758
msgid "Mixed: Leave working tree untouched, reset index"
msgstr "Blandad: Rör inte utcheckning, återställ index"
-#: gitk:7617
+#: gitk:7761
msgid ""
"Hard: Reset working tree and index\n"
"(discard ALL local changes)"
@@ -728,19 +732,19 @@ msgstr ""
"Hård: Återställ utcheckning och index\n"
"(förkastar ALLA lokala ändringar)"
-#: gitk:7633
+#: gitk:7777
msgid "Resetting"
msgstr "Återställer"
-#: gitk:7690
+#: gitk:7834
msgid "Checking out"
msgstr "Checkar ut"
-#: gitk:7741
+#: gitk:7885
msgid "Cannot delete the currently checked-out branch"
msgstr "Kan inte ta bort den just nu utcheckade grenen"
-#: gitk:7747
+#: gitk:7891
#, tcl-format
msgid ""
"The commits on branch %s aren't on any other branch.\n"
@@ -749,16 +753,16 @@ msgstr ""
"Incheckningarna på grenen %s existerar inte på någon annan gren.\n"
"Vill du verkligen ta bort grenen %s?"
-#: gitk:7778
+#: gitk:7922
#, tcl-format
msgid "Tags and heads: %s"
msgstr "Taggar och huvuden: %s"
-#: gitk:7792
+#: gitk:7936
msgid "Filter"
msgstr "Filter"
-#: gitk:8086
+#: gitk:8230
msgid ""
"Error reading commit topology information; branch and preceding/following "
"tag information will be incomplete."
@@ -766,125 +770,129 @@ msgstr ""
"Fel vid läsning av information om incheckningstopologi; information om "
"grenar och föregående/senare taggar kommer inte vara komplett."
-#: gitk:9072
+#: gitk:9216
msgid "Tag"
msgstr "Tagg"
-#: gitk:9072
+#: gitk:9216
msgid "Id"
msgstr "Id"
-#: gitk:9118
+#: gitk:9262
msgid "Gitk font chooser"
msgstr "Teckensnittsväljare för Gitk"
-#: gitk:9135
+#: gitk:9279
msgid "B"
msgstr "F"
-#: gitk:9138
+#: gitk:9282
msgid "I"
msgstr "K"
-#: gitk:9231
+#: gitk:9375
msgid "Gitk preferences"
msgstr "Inställningar för Gitk"
-#: gitk:9232
+#: gitk:9376
msgid "Commit list display options"
msgstr "Alternativ för incheckningslistvy"
-#: gitk:9235
+#: gitk:9379
msgid "Maximum graph width (lines)"
msgstr "Maximal grafbredd (rader)"
-#: gitk:9239
+#: gitk:9383
#, tcl-format
msgid "Maximum graph width (% of pane)"
msgstr "Maximal grafbredd (% av ruta)"
-#: gitk:9244
+#: gitk:9388
msgid "Show local changes"
msgstr "Visa lokala ändringar"
-#: gitk:9249
+#: gitk:9393
msgid "Auto-select SHA1"
msgstr "Välj SHA1 automatiskt"
-#: gitk:9254
+#: gitk:9398
msgid "Diff display options"
msgstr "Alternativ för diffvy"
-#: gitk:9256
+#: gitk:9400
msgid "Tab spacing"
msgstr "Blanksteg för tabulatortecken"
-#: gitk:9260
+#: gitk:9404
msgid "Display nearby tags"
msgstr "Visa närliggande taggar"
-#: gitk:9265
+#: gitk:9409
msgid "Limit diffs to listed paths"
msgstr "Begränsa diff till listade sökvägar"
-#: gitk:9272
+#: gitk:9414
+msgid "Support per-file encodings"
+msgstr ""
+
+#: gitk:9421
msgid "External diff tool"
msgstr "Externt diff-verktyg"
-#: gitk:9274
+#: gitk:9423
msgid "Choose..."
msgstr "Välj..."
-#: gitk:9279
+#: gitk:9428
msgid "Colors: press to choose"
msgstr "Färger: tryck för att välja"
-#: gitk:9282
+#: gitk:9431
msgid "Background"
msgstr "Bakgrund"
-#: gitk:9286
+#: gitk:9435
msgid "Foreground"
msgstr "Förgrund"
-#: gitk:9290
+#: gitk:9439
msgid "Diff: old lines"
msgstr "Diff: gamla rader"
-#: gitk:9295
+#: gitk:9444
msgid "Diff: new lines"
msgstr "Diff: nya rader"
-#: gitk:9300
+#: gitk:9449
msgid "Diff: hunk header"
msgstr "Diff: delhuvud"
-#: gitk:9306
+#: gitk:9455
msgid "Select bg"
msgstr "Markerad bakgrund"
-#: gitk:9310
+#: gitk:9459
msgid "Fonts: press to choose"
msgstr "Teckensnitt: tryck för att välja"
-#: gitk:9312
+#: gitk:9461
msgid "Main font"
msgstr "Huvudteckensnitt"
-#: gitk:9313
+#: gitk:9462
msgid "Diff display font"
msgstr "Teckensnitt för diffvisning"
-#: gitk:9314
+#: gitk:9463
msgid "User interface font"
msgstr "Teckensnitt för användargränssnitt"
-#: gitk:9339
+#: gitk:9488
#, tcl-format
msgid "Gitk: choose color for %s"
msgstr "Gitk: välj färg för %s"
-#: gitk:9720
+#: gitk:9934
msgid ""
"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
" Gitk requires at least Tcl/Tk 8.4."
@@ -892,24 +900,24 @@ msgstr ""
"Gitk kan tyvärr inte köra med denna version av Tcl/Tk.\n"
" Gitk kräver åtminstone Tcl/Tk 8.4."
-#: gitk:9812
+#: gitk:10047
msgid "Cannot find a git repository here."
msgstr "Hittar inget gitk-arkiv här."
-#: gitk:9816
+#: gitk:10051
#, tcl-format
msgid "Cannot find the git directory \"%s\"."
msgstr "Hittar inte git-katalogen \"%s\"."
-#: gitk:9853
+#: gitk:10098
#, tcl-format
msgid "Ambiguous argument '%s': both revision and filename"
msgstr "Tvetydigt argument \"%s\": både revision och filnamn"
-#: gitk:9865
+#: gitk:10110
msgid "Bad arguments to gitk:"
msgstr "Felaktiga argument till gitk:"
-#: gitk:9925
+#: gitk:10170
msgid "Command line"
msgstr "Kommandorad"