From bfacf832b040885f876053244a75491b0dd792b6 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 13 Jul 2025 23:59:38 +0300 Subject: [PATCH 01/21] git-gui: strip the commit message after running commit-msg hook When commit-msg writes the file using CRLF, the lines in the final message include trailing spaces. Postpone stripping until after hooks execute. This aligns with Git's behavior, which passes the original message to commit-msg, then strips comments and whitespace. Signed-off-by: Orgad Shaneh --- lib/commit.tcl | 67 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/lib/commit.tcl b/lib/commit.tcl index 37b3808f7e..ec8dd13726 100644 --- a/lib/commit.tcl +++ b/lib/commit.tcl @@ -208,28 +208,6 @@ You must stage at least 1 file before you can commit. # -- A message is required. # set msg [$ui_comm get 1.0 end] - # Strip trailing whitespace - regsub -all -line {[ \t\r]+$} $msg {} msg - # Strip comment lines - global comment_string - set cmt_rx [strcat {(^|\n)} [regsub -all {\W} $comment_string {\\&}] {[^\n]*}] - regsub -all $cmt_rx $msg {\1} msg - # Strip leading and trailing empty lines (puts adds one \n) - set msg [string trim $msg \n] - # Compress consecutive empty lines - regsub -all {\n{3,}} $msg "\n\n" msg - if {$msg eq {}} { - error_popup [mc "Please supply a commit message. - -A good commit message has the following format: - -- First line: Describe in one sentence what you did. -- Second line: Blank -- Remaining lines: Describe why this change is good. -"] - unlock_index - return - } # -- Build the message file. # @@ -332,7 +310,52 @@ proc commit_commitmsg_wait {fd_ph curHEAD msg_p} { fconfigure $fd_ph -blocking 0 } +proc wash_commit_message {msg} { + # Strip trailing whitespace + regsub -all -line {[ \t\r]+$} $msg {} msg + # Strip comment lines + global comment_string + set cmt_rx [strcat {(^|\n)} [regsub -all {\W} $comment_string {\\&}] {[^\n]*}] + regsub -all $cmt_rx $msg {\1} msg + # Strip leading and trailing empty lines (puts adds one \n) + set msg [string trim $msg \n] + # Compress consecutive empty lines + regsub -all {\n{3,}} $msg \n\n msg + + return $msg +} + proc commit_writetree {curHEAD msg_p} { + # -- Process the commit message after hooks have run. + # + set msg_fd [safe_open_file $msg_p r] + setup_commit_encoding $msg_fd 1 + set msg [read $msg_fd] + close $msg_fd + + # Process the message (strip whitespace, comments, etc.) + set msg [wash_commit_message $msg] + + if {$msg eq {}} { + error_popup [mc "Please supply a commit message. + +A good commit message has the following format: + +- First line: Describe in one sentence what you did. +- Second line: Blank +- Remaining lines: Describe why this change is good. +"] + unlock_index + return + } + + # Write the processed message back to the file + set msg_wt [safe_open_file $msg_p w] + fconfigure $msg_wt -translation lf + setup_commit_encoding $msg_wt + puts $msg_wt $msg + close $msg_wt + ui_status [mc "Committing changes..."] set fd_wt [git_read [list write-tree]] fileevent $fd_wt readable \ From b76a5a854bfae6542eec333365b218c5bc0fdf5b Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Sun, 13 Apr 2025 14:15:08 -0400 Subject: [PATCH 02/21] git-gui: do not add directories to PATH on Windows git-gui on Windows prepends three directories to PATH so does not honor PATH as configured. This can have undesirable consequences, for instance by preventing use of a different git for testing. This also provides at best a subset of the configuration included with Git for Windows (g4w), so is neither necessary nor sufficient there. Since commit be700fe3, git-gui.sh adds its directory to the front of PATH: this is essentially adding $(git --execdir) to the path, this is long deprecated as git moved to using "dashless" subcommands. The windows/git-gui.sh wrapper file, since commit 99fe594d, adds two directories relative to its installed location to PATH, and does so without checking that either exists or is needed. The above modifications were made before the Git For Windows project took responsibility for distributing a working solution on Windows. g4w assures a correct configuration on Windows without these, and doing so requires more than the above modifications. See [1] for a more thorough treatment. git-gui does not modify PATH on any platform except on Windows, and doing so is not needed by g4w. Let's stop modifying PATH on Windows as well. [1] https://gitforwindows.org/git-wrapper.html Signed-off-by: Mark Levedahl --- git-gui.sh | 6 ------ windows/git-gui.sh | 12 ++---------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index c77c05edde..8d97817908 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -87,12 +87,6 @@ if {[is_Windows]} { set _search_exe {} } -if {[is_Windows]} { - set gitguidir [file dirname [info script]] - regsub -all ";" $gitguidir "\\;" gitguidir - set env(PATH) "$gitguidir;$env(PATH)" -} - set _search_path {} set _path_seen [dict create] foreach p [split $env(PATH) $_path_sep] { diff --git a/windows/git-gui.sh b/windows/git-gui.sh index b1845c5055..38debe376c 100755 --- a/windows/git-gui.sh +++ b/windows/git-gui.sh @@ -13,13 +13,5 @@ if { $argc >=2 && [lindex $argv 0] == "--working-dir" } { incr argc -2 } -set basedir [file dirname \ - [file dirname \ - [file dirname [info script]]]] -set bindir [file join $basedir bin] -set bindir "$bindir;[file join $basedir mingw bin]" -regsub -all ";" $bindir "\\;" bindir -set env(PATH) "$bindir;$env(PATH)" -unset bindir - -source [file join [file dirname [info script]] git-gui.tcl] +set thisdir [file normalize [file dirname [info script]]] +source [file join $thisdir git-gui.tcl] From e80065ecd700334fbc9f1de31320b83a894cfa06 Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Tue, 20 May 2025 10:08:44 -0400 Subject: [PATCH 03/21] git-gui: let nice work on Windows git-gui runs blame and diff commands with nice by default. On Unix, nice is accepted if found and it will run git. Commit ff9db6c79d ("On Windows, avoid git-gui to call Cygwin's nice utility", 2010-10-05) rejects nice if not collocated with git. In Git for Windows' (g4w) POSIX path name space, nice and git are found in different directories: $ which git /mingw64/bin/git $ which nice /usr/bin/nice Thus, git-gui will not use nice in the supported Windows configuration. Commit ff9db6c79d justifies the collocation requirement as avoiding problems in a mixed MSYS and Cygwin configuration: such configurations are not supported by either project as they are known to cause many problems. So, let's revert ff9db6c79d and let git-gui work correctly in the supported configuration. Signed-off-by: Mark Levedahl --- git-gui.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 8d97817908..2b5b596400 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -638,8 +638,6 @@ proc _lappend_nice {cmd_var} { set _nice [_which nice] if {[catch {safe_exec [list $_nice git version]}]} { set _nice {} - } elseif {[is_Windows] && [file dirname $_nice] ne [file dirname $::_git]} { - set _nice {} } } if {$_nice ne {}} { From 3c8e1fe0eaaa976aace243680b825099f687a9bd Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Sun, 13 Apr 2025 14:31:52 -0400 Subject: [PATCH 04/21] git-gui: Windows tk_getSaveFile is not useful for shortcuts git-gui invokes the tk_getSaveFile dialog to determine the full path-name of the shortcut file to create. But, on Windows, this dialog always dereferences a shortcut (.lnk) file, as this is essentially a soft-link to its target. If the shortcut file already exists, the dialog returns the path-name of the target (i.e., GIT/cmd/git-gui.exe), and not the desired shortcut file selected by the user. There is no Windows file chooser available in Tcl/Tk that does not dereference .lnk files, so this patch avoids using a dialog: the shortcut to be created is on the desktop and named as "Git + Repository Name". If this .lnk file already exists, the user must give permission to overwrite it or the process terminates. Signed-off-by: Mark Levedahl --- lib/shortcut.tcl | 49 +++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/lib/shortcut.tcl b/lib/shortcut.tcl index 1d01d9cbfa..feaccbdd1d 100644 --- a/lib/shortcut.tcl +++ b/lib/shortcut.tcl @@ -3,27 +3,38 @@ proc do_windows_shortcut {} { global _gitworktree - set fn [tk_getSaveFile \ - -parent . \ - -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \ - -initialfile "Git [reponame].lnk"] - if {$fn != {}} { - if {[file extension $fn] ne {.lnk}} { - set fn ${fn}.lnk - } - # Use git-gui.exe if available (ie: git-for-windows) - set cmdLine [list [_which git-gui]] - if {$cmdLine eq {}} { - set cmdLine [list [info nameofexecutable] \ - [file normalize $::argv0]] - } - if {[catch { - win32_create_lnk $fn $cmdLine \ - [file normalize $_gitworktree] - } err]} { - error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"] + + set desktop [safe_exec [list cygpath -mD]] + set link_file "Git [reponame].lnk" + set link_path [file normalize [file join $desktop $link_file]] + + # on Windows, tk_getSaveFile dereferences .lnk files, so no simple + # filename chooser is available. Use the default or quit. + if {[file exists $link_path]} { + set answer [tk_messageBox \ + -type yesno \ + -title [mc "%s (%s): Create Desktop Icon" [appname] [reponame]] \ + -default yes \ + -message [mc "Replace existing shortcut: %s?" $link_file]] + if {$answer == no} { + return } } + + # Use git-gui.exe if found, fall back to wish + launcher + set link_arguments {} + set link_target [_which git-gui] + if {![file executable $link_target]} { + set link_target [file normalize [info nameofexecutable]] + set link_arguments [file normalize $::argv0] + } + set cmdLine [list $link_target $link_arguments] + if {[catch { + win32_create_lnk $link_path $cmdLine \ + [file normalize $_gitworktree] + } err]} { + error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"] + } } proc do_cygwin_shortcut {} { From 158800ac9c792b875b2cd138a1ecbfb14fa6a71a Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Sun, 13 Apr 2025 14:45:04 -0400 Subject: [PATCH 05/21] git-gui: use /cmd/git-gui.exe for shortcut git-gui on Windows creates a shortcut that presumes the git-gui script will run on the basic Windows environment as configured. But, Git for Windows uses wrapper scripts to launch executables, assuring the environment is correct (see [1] for details). The launcher for git-gui is /cmd/git-gui.exe, is not on PATH, and is not detected or used by the current shortcut code. Let's look for this before trying the existing approaches. [1] https://gitforwindows.org/git-wrapper.html Signed-off-by: Mark Levedahl --- lib/shortcut.tcl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/shortcut.tcl b/lib/shortcut.tcl index feaccbdd1d..431665059e 100644 --- a/lib/shortcut.tcl +++ b/lib/shortcut.tcl @@ -23,7 +23,10 @@ proc do_windows_shortcut {} { # Use git-gui.exe if found, fall back to wish + launcher set link_arguments {} - set link_target [_which git-gui] + set link_target [safe_exec [list cygpath -m /cmd/git-gui.exe]] + if {![file executable $link_target]} { + set link_target [_which git-gui] + } if {![file executable $link_target]} { set link_target [file normalize [info nameofexecutable]] set link_arguments [file normalize $::argv0] From 847c8a2ec4e9504fd112be263c261f2ea2690444 Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Wed, 21 May 2025 17:38:10 -0400 Subject: [PATCH 06/21] git-gui: assure -eofchar {} on all channels Per 6eb420ef61 ("git-gui: Always disable the Tcl EOF character when reading", 2007-07-17), git-gui should disable Tcl's EOF character detection on all files when on Windows: the default is disabled on all other platforms (and with Tcl 9.0, is disabled on Windows too). This EOF character is for compatibility with files / applications written for file systems that know only the disc sectors allocated, and not the number of bytes used. This has nothing to do with git. But, git-gui does not set -eofchar {} on all channels. To avoid any further leakage, let's just add this to the Windows specific override of open. This override is needed only as long as Tcl 8.x is in use (Tcl 9.0 makes -eofchar {} default on all platforms). Signed-off-by: Mark Levedahl --- git-gui.sh | 8 ++++---- lib/blame.tcl | 1 - lib/checkout_op.tcl | 2 +- lib/commit.tcl | 6 +++--- lib/diff.tcl | 1 - lib/spellcheck.tcl | 1 - 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 8bb121db4f..e9c2650bcf 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -183,7 +183,9 @@ if {[is_Windows]} { set command_line [string trim [string range $arg0 1 end]] lset args 0 "| [sanitize_command_line $command_line 0]" } - uplevel 1 real_open $args + set fd [real_open {*}$args] + fconfigure $fd -eofchar {} + return $fd } } else { @@ -607,7 +609,6 @@ proc safe_open_command {cmd {redir {}}} { } err]} { error $err } - fconfigure $fd -eofchar {} return $fd } @@ -1427,7 +1428,6 @@ proc load_message {file {encoding {}}} { if {[catch {set fd [safe_open_file $f r]}]} { return 0 } - fconfigure $fd -eofchar {} if {$encoding ne {}} { fconfigure $fd -encoding $encoding } @@ -1484,7 +1484,7 @@ proc run_prepare_commit_msg_hook {} { ui_status [mc "Calling prepare-commit-msg hook..."] set pch_error {} - fconfigure $fd_ph -blocking 0 -translation binary -eofchar {} + fconfigure $fd_ph -blocking 0 -translation binary fileevent $fd_ph readable \ [list prepare_commit_msg_hook_wait $fd_ph] diff --git a/lib/blame.tcl b/lib/blame.tcl index 9d4d1ac872..63a59fdbb3 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -483,7 +483,6 @@ method _load {jump} { } else { set fd [safe_open_file $path r] } - fconfigure $fd -eofchar {} } else { if {$do_textconv ne 0} { set fd [git_read [list cat-file --textconv "$commit:$path"]] diff --git a/lib/checkout_op.tcl b/lib/checkout_op.tcl index 987486a4b6..449e89e2bc 100644 --- a/lib/checkout_op.tcl +++ b/lib/checkout_op.tcl @@ -462,7 +462,7 @@ If you wanted to be on a branch, create one now starting from 'This Detached Che if {$fd_ph ne {}} { global pch_error set pch_error {} - fconfigure $fd_ph -blocking 0 -translation binary -eofchar {} + fconfigure $fd_ph -blocking 0 -translation binary fileevent $fd_ph readable [cb _postcheckout_wait $fd_ph] } else { _update_repo_state $this diff --git a/lib/commit.tcl b/lib/commit.tcl index 2fd57a51fb..d6313e568b 100644 --- a/lib/commit.tcl +++ b/lib/commit.tcl @@ -252,7 +252,7 @@ A good commit message has the following format: ui_status [mc "Calling pre-commit hook..."] set pch_error {} - fconfigure $fd_ph -blocking 0 -translation binary -eofchar {} + fconfigure $fd_ph -blocking 0 -translation binary fileevent $fd_ph readable \ [list commit_prehook_wait $fd_ph $curHEAD $msg_p] } @@ -307,7 +307,7 @@ Do you really want to proceed with your Commit?"] ui_status [mc "Calling commit-msg hook..."] set pch_error {} - fconfigure $fd_ph -blocking 0 -translation binary -eofchar {} + fconfigure $fd_ph -blocking 0 -translation binary fileevent $fd_ph readable \ [list commit_commitmsg_wait $fd_ph $curHEAD $msg_p] } @@ -460,7 +460,7 @@ A rescan will be automatically started now. if {$fd_ph ne {}} { global pch_error set pch_error {} - fconfigure $fd_ph -blocking 0 -translation binary -eofchar {} + fconfigure $fd_ph -blocking 0 -translation binary fileevent $fd_ph readable \ [list commit_postcommit_wait $fd_ph $cmt_id] } diff --git a/lib/diff.tcl b/lib/diff.tcl index 1acd37bdb4..65d0997b79 100644 --- a/lib/diff.tcl +++ b/lib/diff.tcl @@ -191,7 +191,6 @@ proc show_other_diff {path w m cont_info} { file { set fd [safe_open_file $path r] fconfigure $fd \ - -eofchar {} \ -encoding [get_path_encoding $path] set content [read $fd $max_sz] close $fd diff --git a/lib/spellcheck.tcl b/lib/spellcheck.tcl index 538d61c792..634656820d 100644 --- a/lib/spellcheck.tcl +++ b/lib/spellcheck.tcl @@ -33,7 +33,6 @@ constructor init {pipe_fd ui_text ui_menu} { method _connect {pipe_fd} { fconfigure $pipe_fd \ -encoding utf-8 \ - -eofchar {} \ -translation lf if {[gets $pipe_fd s_version] <= 0} { From f6d3ee2014e4a553ef6b783dc5d6b2d53ee70168 Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Thu, 22 May 2025 13:17:08 -0400 Subject: [PATCH 07/21] git-gui: translation binary defines iso8859-1 git-gui has many cases where -translation binary and -encoding binary are configured on the same channel. But, -translation binary defines a binary channel, which sets up -encoding iso8859-1 as part of its work. Tcl 8.x defines -encoding binary as an alias of -encoding iso8859-1, and this alias is deleted in Tcl 9.0. Let's delete the redundant encoding definition now. Signed-off-by: Mark Levedahl --- git-gui.sh | 6 +++--- lib/blame.tcl | 1 - lib/index.tcl | 3 --- lib/mergetool.tcl | 4 ++-- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index e9c2650bcf..07781e7d90 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -1406,15 +1406,15 @@ proc rescan_stage2 {fd after} { set fd_di [git_read [list diff-index --cached --ignore-submodules=dirty -z [PARENT]]] set fd_df [git_read [list diff-files -z]] - fconfigure $fd_di -blocking 0 -translation binary -encoding binary - fconfigure $fd_df -blocking 0 -translation binary -encoding binary + fconfigure $fd_di -blocking 0 -translation binary + fconfigure $fd_df -blocking 0 -translation binary fileevent $fd_di readable [list read_diff_index $fd_di $after] fileevent $fd_df readable [list read_diff_files $fd_df $after] if {[is_config_true gui.displayuntracked]} { set fd_lo [git_read [concat ls-files --others -z $ls_others]] - fconfigure $fd_lo -blocking 0 -translation binary -encoding binary + fconfigure $fd_lo -blocking 0 -translation binary fileevent $fd_lo readable [list read_ls_others $fd_lo $after] incr rescan_active } diff --git a/lib/blame.tcl b/lib/blame.tcl index 63a59fdbb3..e51a820b12 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -1142,7 +1142,6 @@ method _blameparent {} { fconfigure $fd \ -blocking 0 \ - -encoding binary \ -translation binary fileevent $fd readable [cb _read_diff_load_commit \ $fd $cparent $new_path $r_orig_line] diff --git a/lib/index.tcl b/lib/index.tcl index 377547034b..7aa09c7728 100644 --- a/lib/index.tcl +++ b/lib/index.tcl @@ -78,7 +78,6 @@ proc update_indexinfo {msg path_list after} { -blocking 0 \ -buffering full \ -buffersize 512 \ - -encoding binary \ -translation binary fileevent $fd writable [list \ write_update_indexinfo \ @@ -147,7 +146,6 @@ proc update_index {msg path_list after} { -blocking 0 \ -buffering full \ -buffersize 512 \ - -encoding binary \ -translation binary fileevent $fd writable [list \ write_update_index \ @@ -227,7 +225,6 @@ proc checkout_index {msg path_list after capture_error} { -blocking 0 \ -buffering full \ -buffersize 512 \ - -encoding binary \ -translation binary fileevent $fd writable [list \ write_checkout_index \ diff --git a/lib/mergetool.tcl b/lib/mergetool.tcl index 2c9bb3af40..44be4ed3ff 100644 --- a/lib/mergetool.tcl +++ b/lib/mergetool.tcl @@ -90,7 +90,7 @@ proc merge_load_stages {path cont} { set merge_stages_fd [git_read [list ls-files -u -z -- $path]] - fconfigure $merge_stages_fd -blocking 0 -translation binary -encoding binary + fconfigure $merge_stages_fd -blocking 0 -translation binary fileevent $merge_stages_fd readable [list read_merge_stages $merge_stages_fd $cont] } @@ -370,7 +370,7 @@ proc merge_tool_start {cmdline target backup stages} { ui_status [mc "Running merge tool..."] - fconfigure $mtool_fd -blocking 0 -translation binary -encoding binary + fconfigure $mtool_fd -blocking 0 -translation binary fileevent $mtool_fd readable [list read_mtool_output $mtool_fd] } From 40f54f670a01b6ae4f13e0888796948ddce9104c Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Thu, 22 May 2025 13:33:00 -0400 Subject: [PATCH 08/21] git-gui: replace encoding binary with iso8859-1 git-gui currently configures some channels as '-encoding binary' when the channel is not really binary (e.g, the channel is consumed as lines of text). In 8.6, '-encoding binary' is an alias for '-encoding iso8859), but TIP 699 removes this alias for Tcl 9.0. Let's switch to '-encoding iso8859-1' to be compatible across Tcl versions. Signed-off-by: Mark Levedahl --- lib/blame.tcl | 2 +- lib/commit.tcl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/blame.tcl b/lib/blame.tcl index e51a820b12..bb67b047eb 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -985,7 +985,7 @@ method _showcommit {cur_w lno} { set msg {} catch { set fd [git_read [list cat-file commit $cmit]] - fconfigure $fd -encoding binary -translation lf + fconfigure $fd -encoding iso8859-1 -translation lf # By default commits are assumed to be in utf-8 set enc utf-8 while {[gets $fd line] > 0} { diff --git a/lib/commit.tcl b/lib/commit.tcl index d6313e568b..adde708084 100644 --- a/lib/commit.tcl +++ b/lib/commit.tcl @@ -28,7 +28,7 @@ You are currently in the middle of a merge that has not been fully completed. Y set name "" set email "" set fd [git_read [list cat-file commit $curHEAD]] - fconfigure $fd -encoding binary -translation lf + fconfigure $fd -encoding iso8859-1 -translation lf # By default commits are assumed to be in utf-8 set enc utf-8 while {[gets $fd line] > 0} { @@ -361,7 +361,7 @@ proc commit_committree {fd_wt curHEAD msg_p} { # if {$commit_type eq {normal}} { set fd_ot [git_read [list cat-file commit $PARENT]] - fconfigure $fd_ot -encoding binary -translation lf + fconfigure $fd_ot -encoding iso8859-1 -translation lf set old_tree [gets $fd_ot] close $fd_ot From 07714e220b7ee137f4645ec950383eaaeddf23d5 Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Wed, 21 May 2025 19:18:46 -0400 Subject: [PATCH 09/21] git-gui: do not mix -translation binary and -encoding git-gui has many instances of '-translation binary' and '-encoding $SOMETHING' on the same channel. As eofchar is always null given a prior commit, the net effect of having '-translation binary' in such configuration is only to change how text line endings are handled. For cases where the channel is opened to be consumed via gets, the eol translation is irrelevant because Tcl's gets is documented to recognize any of \n, \r, and \r\n as a line ending. So, keep only the '-encoding $SOMETHING' configuration in these cases, making the configuration more clear. Signed-off-by: Mark Levedahl --- git-gui.sh | 4 ++-- lib/branch.tcl | 4 ++-- lib/browser.tcl | 2 +- lib/choose_rev.tcl | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 07781e7d90..63c2f48f91 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -592,7 +592,7 @@ proc git {args} { proc git_redir {cmd redir} { set fd [git_read $cmd $redir] - fconfigure $fd -translation binary -encoding utf-8 + fconfigure $fd -encoding utf-8 set result [string trimright [read $fd] "\n"] close $fd if {$::_trace} { @@ -1004,7 +1004,7 @@ proc _parse_config {arr_name args} { [concat config \ $args \ --null --list]] - fconfigure $fd_rc -translation binary -encoding utf-8 + fconfigure $fd_rc -encoding utf-8 set buf [read $fd_rc] close $fd_rc } diff --git a/lib/branch.tcl b/lib/branch.tcl index 39e0f2dc98..97c9ec1c00 100644 --- a/lib/branch.tcl +++ b/lib/branch.tcl @@ -8,7 +8,7 @@ proc load_all_heads {} { set rh_len [expr {[string length $rh] + 1}] set all_heads [list] set fd [git_read [list for-each-ref --format=%(refname) $rh]] - fconfigure $fd -translation binary -encoding utf-8 + fconfigure $fd -encoding utf-8 while {[gets $fd line] > 0} { if {!$some_heads_tracking || ![is_tracking_branch $line]} { lappend all_heads [string range $line $rh_len end] @@ -25,7 +25,7 @@ proc load_all_tags {} { --sort=-taggerdate \ --format=%(refname) \ refs/tags]] - fconfigure $fd -translation binary -encoding utf-8 + fconfigure $fd -encoding utf-8 while {[gets $fd line] > 0} { if {![regsub ^refs/tags/ $line {} name]} continue lappend all_tags $name diff --git a/lib/browser.tcl b/lib/browser.tcl index f53eb952cf..fe72de025e 100644 --- a/lib/browser.tcl +++ b/lib/browser.tcl @@ -195,7 +195,7 @@ method _ls {tree_id {name {}}} { $w conf -state disabled set fd [git_read [list ls-tree -z $tree_id]] - fconfigure $fd -blocking 0 -translation binary -encoding utf-8 + fconfigure $fd -blocking 0 -encoding utf-8 fileevent $fd readable [cb _read $fd] } diff --git a/lib/choose_rev.tcl b/lib/choose_rev.tcl index 7a9e3c83bb..4cf6cebac4 100644 --- a/lib/choose_rev.tcl +++ b/lib/choose_rev.tcl @@ -570,7 +570,7 @@ method _reflog_last {name} { set last {} if {[catch {set last [file mtime [gitdir $name]]}] && ![catch {set g [safe_open_file [gitdir logs $name] r]}]} { - fconfigure $g -translation binary + fconfigure $g -encoding iso8859-1 while {[gets $g line] >= 0} { if {[regexp {> ([1-9][0-9]*) } $line line when]} { set last $when From dfd9b38809519bad72dbe6833143c5409165840b Mon Sep 17 00:00:00 2001 From: Alexander Shopov Date: Mon, 28 Jul 2025 13:20:01 +0200 Subject: [PATCH 10/21] git-gui i18n: Update Bulgarian translation (557t) Signed-off-by: Alexander Shopov --- po/bg.po | 913 ++++++++++++++++++++++++------------------------------- 1 file changed, 399 insertions(+), 514 deletions(-) diff --git a/po/bg.po b/po/bg.po index 70ab2b438a..b252c8c3f3 100644 --- a/po/bg.po +++ b/po/bg.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: git-gui master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-20 09:27+0200\n" -"PO-Revision-Date: 2025-05-29 13:37+0200\n" +"POT-Creation-Date: 2025-07-22 17:37+0200\n" +"PO-Revision-Date: 2025-07-28 11:56+0200\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -18,88 +18,77 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: git-gui.sh:861 +#: git-gui.sh:819 #, tcl-format msgid "Invalid font specified in %s:" msgstr "Указан е неправилен шрифт в „%s“:" -#: git-gui.sh:924 +#: git-gui.sh:873 msgid "Main Font" msgstr "Основен шрифт" -#: git-gui.sh:925 +#: git-gui.sh:874 msgid "Diff/Console Font" msgstr "Шрифт за разликите/конзолата" -#: git-gui.sh:940 git-gui.sh:954 git-gui.sh:967 git-gui.sh:1057 git-gui.sh:1076 -#: git-gui.sh:3217 +#: git-gui.sh:889 git-gui.sh:905 git-gui.sh:919 git-gui.sh:948 git-gui.sh:964 +#: git-gui.sh:3061 msgid "git-gui: fatal error" msgstr "git-gui: фатална грешка" -#: git-gui.sh:941 +#: git-gui.sh:890 msgid "Cannot find git in PATH." msgstr "Командата git липсва в пътя (PATH)." -#: git-gui.sh:968 +#: git-gui.sh:920 msgid "Cannot parse Git version string:" msgstr "Низът с версията на Git не може да се анализира:" -#: git-gui.sh:993 -#, tcl-format -msgid "" -"Git version cannot be determined.\n" -"\n" -"%s claims it is version '%s'.\n" -"\n" -"%s requires at least Git 1.5.0 or later.\n" -"\n" -"Assume '%s' is version 1.5.0?\n" -msgstr "" -"Версията на Git не може да се определи.\n" -"\n" -"Версията на „%s“ изглежда, че е „%s“.\n" -"\n" -"„%s“ изисква Git, версия поне 1.5.0.\n" -"\n" -"Да се приеме ли, че „%s“ е версия „1.5.0“?\n" +#: git-gui.sh:941 +msgid "Insufficient git version, require: " +msgstr "Прекалено ниска версия на git, необходима е поне: " -#: git-gui.sh:1287 +#: git-gui.sh:942 +msgid "git returned:" +msgstr "git върна:" + +#: git-gui.sh:1164 msgid "Git directory not found:" msgstr "Директорията на Git не е открита:" -#: git-gui.sh:1317 +#: git-gui.sh:1181 msgid "Cannot move to top of working directory:" msgstr "Не може да се премине към родителската директория." -#: git-gui.sh:1325 +#: git-gui.sh:1189 msgid "Cannot use bare repository:" msgstr "Голо хранилище не може да се използва:" -#: git-gui.sh:1333 +#: git-gui.sh:1197 msgid "No working directory" msgstr "Работната директория липсва" -#: git-gui.sh:1507 lib/checkout_op.tcl:306 +#: git-gui.sh:1371 lib/checkout_op.tcl:306 msgid "Refreshing file status..." msgstr "Обновяване на състоянието на файла…" -#: git-gui.sh:1551 +#: git-gui.sh:1404 msgid "Scanning for modified files ..." msgstr "Проверка за променени файлове…" -#: git-gui.sh:1635 +#: git-gui.sh:1484 msgid "Calling prepare-commit-msg hook..." msgstr "Куката „prepare-commit-msg“ се изпълнява в момента…" -#: git-gui.sh:1652 +#: git-gui.sh:1501 msgid "Commit declined by prepare-commit-msg hook." msgstr "Подаването е отхвърлено от куката „prepare-commit-msg“." -#: git-gui.sh:1810 lib/browser.tcl:252 +#: git-gui.sh:1659 lib/browser.tcl:250 msgid "Ready." msgstr "Готово." -#: git-gui.sh:1974 +#: git-gui.sh:1822 #, tcl-format msgid "" "Display limit (gui.maxfilesdisplayed = %s) reached, not showing all %s files." @@ -108,473 +97,473 @@ msgstr "" "извеждане(gui.maxfilesdisplayed = %s), съответно не са показани всички %s " "файла." -#: git-gui.sh:2097 +#: git-gui.sh:1945 msgid "Unmodified" msgstr "Непроменен" -#: git-gui.sh:2099 +#: git-gui.sh:1947 msgid "Modified, not staged" msgstr "Променен, но не е в индекса" -#: git-gui.sh:2100 git-gui.sh:2112 +#: git-gui.sh:1948 git-gui.sh:1960 msgid "Staged for commit" msgstr "В индекса за подаване" -#: git-gui.sh:2101 git-gui.sh:2113 +#: git-gui.sh:1949 git-gui.sh:1961 msgid "Portions staged for commit" msgstr "Части са в индекса за подаване" -#: git-gui.sh:2102 git-gui.sh:2114 +#: git-gui.sh:1950 git-gui.sh:1962 msgid "Staged for commit, missing" msgstr "В индекса за подаване, но липсва" -#: git-gui.sh:2104 +#: git-gui.sh:1952 msgid "File type changed, not staged" msgstr "Видът на файла е сменен, но не е в индекса" -#: git-gui.sh:2105 git-gui.sh:2106 +#: git-gui.sh:1953 git-gui.sh:1954 msgid "File type changed, old type staged for commit" msgstr "Видът на файла е сменен, но новият вид не е в индекса" -#: git-gui.sh:2107 +#: git-gui.sh:1955 msgid "File type changed, staged" msgstr "Видът на файла е сменен и е в индекса" -#: git-gui.sh:2108 +#: git-gui.sh:1956 msgid "File type change staged, modification not staged" msgstr "Видът на файла е сменен в индекса, но не и съдържанието" -#: git-gui.sh:2109 +#: git-gui.sh:1957 msgid "File type change staged, file missing" msgstr "Видът на файла е сменен в индекса, но файлът липсва" -#: git-gui.sh:2111 +#: git-gui.sh:1959 msgid "Untracked, not staged" msgstr "Неследен" -#: git-gui.sh:2116 +#: git-gui.sh:1964 msgid "Missing" msgstr "Липсващ" -#: git-gui.sh:2117 +#: git-gui.sh:1965 msgid "Staged for removal" msgstr "В индекса за изтриване" -#: git-gui.sh:2118 +#: git-gui.sh:1966 msgid "Staged for removal, still present" msgstr "В индекса за изтриване, но още го има" -#: git-gui.sh:2120 git-gui.sh:2121 git-gui.sh:2122 git-gui.sh:2123 -#: git-gui.sh:2124 git-gui.sh:2125 +#: git-gui.sh:1968 git-gui.sh:1969 git-gui.sh:1970 git-gui.sh:1971 +#: git-gui.sh:1972 git-gui.sh:1973 msgid "Requires merge resolution" msgstr "Изисква коригиране при сливане" -#: git-gui.sh:2170 +#: git-gui.sh:2018 msgid "Couldn't find gitk in PATH" msgstr "Командата „gitk“ липсва в пътищата, определени от променливата PATH." -#: git-gui.sh:2217 git-gui.sh:2253 +#: git-gui.sh:2065 git-gui.sh:2101 #, tcl-format msgid "Starting %s... please wait..." msgstr "Стартиране на „%s“…, изчакайте…" -#: git-gui.sh:2232 +#: git-gui.sh:2080 msgid "Couldn't find git gui in PATH" msgstr "" "Командата „git gui“ липсва в пътищата, определени от променливата PATH." -#: git-gui.sh:2735 lib/choose_repository.tcl:53 +#: git-gui.sh:2580 lib/choose_repository.tcl:43 msgid "Repository" msgstr "Хранилище" -#: git-gui.sh:2736 +#: git-gui.sh:2581 msgid "Edit" msgstr "Редактиране" -#: git-gui.sh:2738 lib/choose_rev.tcl:567 +#: git-gui.sh:2583 lib/choose_rev.tcl:557 msgid "Branch" msgstr "Клон" -#: git-gui.sh:2741 lib/choose_rev.tcl:554 +#: git-gui.sh:2586 lib/choose_rev.tcl:544 msgid "Commit@@noun" msgstr "Подаване" -#: git-gui.sh:2744 lib/merge.tcl:127 lib/merge.tcl:174 +#: git-gui.sh:2589 lib/merge.tcl:118 lib/merge.tcl:165 msgid "Merge" msgstr "Сливане" -#: git-gui.sh:2745 lib/choose_rev.tcl:563 +#: git-gui.sh:2590 lib/choose_rev.tcl:553 msgid "Remote" msgstr "Отдалечено хранилище" -#: git-gui.sh:2748 +#: git-gui.sh:2593 msgid "Tools" msgstr "Команди" -#: git-gui.sh:2757 +#: git-gui.sh:2602 msgid "Explore Working Copy" msgstr "Разглеждане на работното копие" -#: git-gui.sh:2772 +#: git-gui.sh:2615 msgid "Git Bash" msgstr "Bash за Git" -#: git-gui.sh:2781 +#: git-gui.sh:2625 msgid "Browse Current Branch's Files" msgstr "Разглеждане на файловете в текущия клон" -#: git-gui.sh:2785 +#: git-gui.sh:2629 msgid "Browse Branch Files..." msgstr "Разглеждане на текущия клон…" -#: git-gui.sh:2790 +#: git-gui.sh:2634 msgid "Visualize Current Branch's History" msgstr "Визуализация на историята на текущия клон" -#: git-gui.sh:2794 +#: git-gui.sh:2638 msgid "Visualize All Branch History" msgstr "Визуализация на историята на всички клонове" -#: git-gui.sh:2801 +#: git-gui.sh:2645 #, tcl-format msgid "Browse %s's Files" msgstr "Разглеждане на файловете в „%s“" -#: git-gui.sh:2803 +#: git-gui.sh:2647 #, tcl-format msgid "Visualize %s's History" msgstr "Визуализация на историята на „%s“" -#: git-gui.sh:2808 lib/database.tcl:40 +#: git-gui.sh:2652 lib/database.tcl:39 msgid "Database Statistics" msgstr "Статистика на базата от данни" -#: git-gui.sh:2811 lib/database.tcl:33 +#: git-gui.sh:2655 lib/database.tcl:32 msgid "Compress Database" msgstr "Компресиране на базата от данни" -#: git-gui.sh:2814 +#: git-gui.sh:2658 msgid "Verify Database" msgstr "Проверка на базата от данни" -#: git-gui.sh:2821 git-gui.sh:2825 git-gui.sh:2829 +#: git-gui.sh:2665 git-gui.sh:2669 git-gui.sh:2673 msgid "Create Desktop Icon" msgstr "Добавяне на икона на работния плот" -#: git-gui.sh:2837 lib/choose_repository.tcl:206 lib/choose_repository.tcl:214 +#: git-gui.sh:2681 lib/choose_repository.tcl:196 lib/choose_repository.tcl:204 msgid "Quit" msgstr "Спиране на програмата" -#: git-gui.sh:2845 +#: git-gui.sh:2689 msgid "Undo" msgstr "Отмяна" -#: git-gui.sh:2848 +#: git-gui.sh:2692 msgid "Redo" msgstr "Повторение" -#: git-gui.sh:2852 git-gui.sh:3477 +#: git-gui.sh:2696 git-gui.sh:3297 msgid "Cut" msgstr "Отрязване" -#: git-gui.sh:2855 git-gui.sh:3480 git-gui.sh:3556 git-gui.sh:3651 +#: git-gui.sh:2699 git-gui.sh:3300 git-gui.sh:3376 git-gui.sh:3471 #: lib/console.tcl:69 msgid "Copy" msgstr "Копиране" -#: git-gui.sh:2858 git-gui.sh:3483 +#: git-gui.sh:2702 git-gui.sh:3303 msgid "Paste" msgstr "Поставяне" -#: git-gui.sh:2861 git-gui.sh:3486 lib/branch_delete.tcl:28 +#: git-gui.sh:2705 git-gui.sh:3306 lib/branch_delete.tcl:28 #: lib/remote_branch_delete.tcl:39 msgid "Delete" msgstr "Изтриване" -#: git-gui.sh:2865 git-gui.sh:3490 git-gui.sh:3655 lib/console.tcl:71 +#: git-gui.sh:2709 git-gui.sh:3310 git-gui.sh:3475 lib/console.tcl:71 msgid "Select All" msgstr "Избиране на всичко" -#: git-gui.sh:2874 +#: git-gui.sh:2718 msgid "Create..." msgstr "Създаване…" -#: git-gui.sh:2880 +#: git-gui.sh:2724 msgid "Checkout..." msgstr "Изтегляне…" -#: git-gui.sh:2886 +#: git-gui.sh:2730 msgid "Rename..." msgstr "Преименуване…" -#: git-gui.sh:2891 +#: git-gui.sh:2735 msgid "Delete..." msgstr "Изтриване…" -#: git-gui.sh:2896 +#: git-gui.sh:2740 msgid "Reset..." msgstr "Отмяна на промените…" -#: git-gui.sh:2906 +#: git-gui.sh:2750 msgid "Done" msgstr "Готово" -#: git-gui.sh:2908 +#: git-gui.sh:2752 msgid "Commit@@verb" msgstr "Подаване" -#: git-gui.sh:2917 git-gui.sh:3416 +#: git-gui.sh:2761 git-gui.sh:3236 msgid "Amend Last Commit" msgstr "Поправяне на последното подаване" -#: git-gui.sh:2927 git-gui.sh:3377 lib/remote_branch_delete.tcl:101 +#: git-gui.sh:2771 git-gui.sh:3197 lib/remote_branch_delete.tcl:97 msgid "Rescan" msgstr "Обновяване" -#: git-gui.sh:2933 +#: git-gui.sh:2777 msgid "Stage To Commit" msgstr "Към индекса за подаване" -#: git-gui.sh:2939 +#: git-gui.sh:2783 msgid "Stage Changed Files To Commit" msgstr "Всички променени файлове към индекса за подаване" -#: git-gui.sh:2945 +#: git-gui.sh:2789 msgid "Unstage From Commit" msgstr "Изваждане от индекса за подаване" -#: git-gui.sh:2951 lib/index.tcl:521 +#: git-gui.sh:2795 lib/index.tcl:519 msgid "Revert Changes" msgstr "Връщане на оригинала" -#: git-gui.sh:2959 git-gui.sh:3718 git-gui.sh:3749 +#: git-gui.sh:2803 git-gui.sh:3538 git-gui.sh:3569 msgid "Show Less Context" msgstr "По-малко контекст" -#: git-gui.sh:2963 git-gui.sh:3722 git-gui.sh:3753 +#: git-gui.sh:2807 git-gui.sh:3542 git-gui.sh:3573 msgid "Show More Context" msgstr "Повече контекст" -#: git-gui.sh:2970 git-gui.sh:3390 git-gui.sh:3501 +#: git-gui.sh:2814 git-gui.sh:3210 git-gui.sh:3321 msgid "Sign Off" msgstr "Подписване" -#: git-gui.sh:2986 +#: git-gui.sh:2830 msgid "Local Merge..." msgstr "Локално сливане…" -#: git-gui.sh:2991 +#: git-gui.sh:2835 msgid "Abort Merge..." msgstr "Преустановяване на сливане…" -#: git-gui.sh:3003 git-gui.sh:3031 +#: git-gui.sh:2847 git-gui.sh:2875 msgid "Add..." msgstr "Добавяне…" -#: git-gui.sh:3007 +#: git-gui.sh:2851 msgid "Push..." msgstr "Изтласкване…" -#: git-gui.sh:3011 +#: git-gui.sh:2855 msgid "Delete Branch..." msgstr "Изтриване на клон…" -#: git-gui.sh:3021 git-gui.sh:3684 +#: git-gui.sh:2865 git-gui.sh:3504 msgid "Options..." msgstr "Опции…" -#: git-gui.sh:3032 +#: git-gui.sh:2876 msgid "Remove..." msgstr "Премахване…" -#: git-gui.sh:3041 lib/choose_repository.tcl:67 +#: git-gui.sh:2885 lib/choose_repository.tcl:57 msgid "Help" msgstr "Помощ" -#: git-gui.sh:3045 git-gui.sh:3049 lib/about.tcl:14 -#: lib/choose_repository.tcl:61 lib/choose_repository.tcl:70 +#: git-gui.sh:2889 git-gui.sh:2893 lib/about.tcl:14 +#: lib/choose_repository.tcl:51 lib/choose_repository.tcl:60 #, tcl-format msgid "About %s" msgstr "Относно „%s“" -#: git-gui.sh:3069 +#: git-gui.sh:2913 msgid "Online Documentation" msgstr "Документация в Интернет" -#: git-gui.sh:3072 lib/choose_repository.tcl:64 lib/choose_repository.tcl:73 +#: git-gui.sh:2916 lib/choose_repository.tcl:54 lib/choose_repository.tcl:63 msgid "Show SSH Key" msgstr "Показване на ключа за SSH" -#: git-gui.sh:3102 git-gui.sh:3234 +#: git-gui.sh:2946 git-gui.sh:3078 msgid "usage:" msgstr "употреба:" -#: git-gui.sh:3106 git-gui.sh:3238 +#: git-gui.sh:2950 git-gui.sh:3082 msgid "Usage" msgstr "Употреба" -#: git-gui.sh:3187 lib/blame.tcl:576 +#: git-gui.sh:3031 lib/blame.tcl:578 msgid "Error" msgstr "Грешка" -#: git-gui.sh:3218 +#: git-gui.sh:3062 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "ФАТАЛНА ГРЕШКА: пътят „%s“ липсва: такъв файл или директория няма" -#: git-gui.sh:3251 +#: git-gui.sh:3094 msgid "Current Branch:" msgstr "Текущ клон:" -#: git-gui.sh:3276 +#: git-gui.sh:3115 msgid "Unstaged Changes" msgstr "Промени извън индекса" -#: git-gui.sh:3298 +#: git-gui.sh:3137 msgid "Staged Changes (Will Commit)" msgstr "Промени в индекса (за подаване)" -#: git-gui.sh:3383 +#: git-gui.sh:3203 msgid "Stage Changed" msgstr "Индексът е променен" -#: git-gui.sh:3402 lib/transport.tcl:137 +#: git-gui.sh:3222 lib/transport.tcl:137 msgid "Push" msgstr "Изтласкване" -#: git-gui.sh:3429 +#: git-gui.sh:3249 msgid "Initial Commit Message:" msgstr "Първоначално съобщение при подаване:" -#: git-gui.sh:3430 +#: git-gui.sh:3250 msgid "Amended Commit Message:" msgstr "Поправено съобщение при подаване:" -#: git-gui.sh:3431 +#: git-gui.sh:3251 msgid "Amended Initial Commit Message:" msgstr "Поправено първоначално съобщение при подаване:" -#: git-gui.sh:3432 +#: git-gui.sh:3252 msgid "Amended Merge Commit Message:" msgstr "Поправено съобщение при подаване със сливане:" -#: git-gui.sh:3433 +#: git-gui.sh:3253 msgid "Merge Commit Message:" msgstr "Съобщение при подаване със сливане:" -#: git-gui.sh:3434 +#: git-gui.sh:3254 msgid "Commit Message:" msgstr "Съобщение при подаване:" -#: git-gui.sh:3493 git-gui.sh:3659 lib/console.tcl:73 +#: git-gui.sh:3313 git-gui.sh:3479 lib/console.tcl:73 msgid "Copy All" msgstr "Копиране на всичко" -#: git-gui.sh:3517 lib/blame.tcl:106 +#: git-gui.sh:3337 lib/blame.tcl:106 msgid "File:" msgstr "Файл:" -#: git-gui.sh:3565 lib/choose_repository.tcl:1054 +#: git-gui.sh:3385 lib/choose_repository.tcl:659 msgid "Open" msgstr "Отваряне" -#: git-gui.sh:3647 +#: git-gui.sh:3467 msgid "Refresh" msgstr "Обновяване" -#: git-gui.sh:3668 +#: git-gui.sh:3488 msgid "Decrease Font Size" msgstr "По-дребен шрифт" -#: git-gui.sh:3672 +#: git-gui.sh:3492 msgid "Increase Font Size" msgstr "По-едър шрифт" -#: git-gui.sh:3680 lib/blame.tcl:296 +#: git-gui.sh:3500 lib/blame.tcl:295 msgid "Encoding" msgstr "Кодиране" -#: git-gui.sh:3691 +#: git-gui.sh:3511 msgid "Apply/Reverse Hunk" msgstr "Прилагане/връщане на парче" -#: git-gui.sh:3696 +#: git-gui.sh:3516 msgid "Apply/Reverse Line" msgstr "Прилагане/връщане на ред" -#: git-gui.sh:3702 git-gui.sh:3812 git-gui.sh:3823 +#: git-gui.sh:3522 git-gui.sh:3632 git-gui.sh:3643 msgid "Revert Hunk" msgstr "Връщане на парче" -#: git-gui.sh:3707 git-gui.sh:3819 git-gui.sh:3830 +#: git-gui.sh:3527 git-gui.sh:3639 git-gui.sh:3650 msgid "Revert Line" msgstr "Връщане на ред" -#: git-gui.sh:3712 git-gui.sh:3809 +#: git-gui.sh:3532 git-gui.sh:3629 msgid "Undo Last Revert" msgstr "Отмяна на последното връщане" -#: git-gui.sh:3731 +#: git-gui.sh:3551 msgid "Run Merge Tool" msgstr "Изпълнение на програмата за сливане" -#: git-gui.sh:3736 +#: git-gui.sh:3556 msgid "Use Remote Version" msgstr "Версия от отдалеченото хранилище" -#: git-gui.sh:3740 +#: git-gui.sh:3560 msgid "Use Local Version" msgstr "Локална версия" -#: git-gui.sh:3744 +#: git-gui.sh:3564 msgid "Revert To Base" msgstr "Връщане към родителската версия" -#: git-gui.sh:3762 +#: git-gui.sh:3582 msgid "Visualize These Changes In The Submodule" msgstr "Визуализиране на промените в подмодула" -#: git-gui.sh:3766 +#: git-gui.sh:3586 msgid "Visualize Current Branch History In The Submodule" msgstr "Визуализация на историята на текущия клон в историята за подмодула" -#: git-gui.sh:3770 +#: git-gui.sh:3590 msgid "Visualize All Branch History In The Submodule" msgstr "Визуализация на историята на всички клони в историята за подмодула" -#: git-gui.sh:3775 +#: git-gui.sh:3595 msgid "Start git gui In The Submodule" msgstr "Стартиране на „git gui“ за подмодула" -#: git-gui.sh:3811 +#: git-gui.sh:3631 msgid "Unstage Hunk From Commit" msgstr "Изваждане на парчето от подаването" -#: git-gui.sh:3815 +#: git-gui.sh:3635 msgid "Unstage Lines From Commit" msgstr "Изваждане на редовете от подаването" -#: git-gui.sh:3816 git-gui.sh:3827 +#: git-gui.sh:3636 git-gui.sh:3647 msgid "Revert Lines" msgstr "Връщане на редовете" -#: git-gui.sh:3818 +#: git-gui.sh:3638 msgid "Unstage Line From Commit" msgstr "Изваждане на реда от подаването" -#: git-gui.sh:3822 +#: git-gui.sh:3642 msgid "Stage Hunk For Commit" msgstr "Добавяне на парчето за подаване" -#: git-gui.sh:3826 +#: git-gui.sh:3646 msgid "Stage Lines For Commit" msgstr "Добавяне на редовете за подаване" -#: git-gui.sh:3829 +#: git-gui.sh:3649 msgid "Stage Line For Commit" msgstr "Добавяне на реда за подаване" -#: git-gui.sh:3879 +#: git-gui.sh:3699 msgid "Initializing..." msgstr "Инициализиране…" @@ -591,27 +580,27 @@ msgstr "%s (%s): Преглед на файлове" msgid "Commit:" msgstr "Подаване:" -#: lib/blame.tcl:282 +#: lib/blame.tcl:281 msgid "Copy Commit" msgstr "Копиране на подаване" -#: lib/blame.tcl:286 +#: lib/blame.tcl:285 msgid "Find Text..." msgstr "Търсене на текст…" -#: lib/blame.tcl:290 +#: lib/blame.tcl:289 msgid "Goto Line..." msgstr "Към ред…" -#: lib/blame.tcl:299 +#: lib/blame.tcl:298 msgid "Do Full Copy Detection" msgstr "Пълно търсене на копиране" -#: lib/blame.tcl:303 +#: lib/blame.tcl:302 msgid "Show History Context" msgstr "Показване на контекста от историята" -#: lib/blame.tcl:306 +#: lib/blame.tcl:305 msgid "Blame Parent Commit" msgstr "Анотиране на родителското подаване" @@ -620,112 +609,112 @@ msgstr "Анотиране на родителското подаване" msgid "Reading %s..." msgstr "Чете се „%s“…" -#: lib/blame.tcl:597 +#: lib/blame.tcl:599 msgid "Loading copy/move tracking annotations..." msgstr "Зареждане на анотациите за проследяване на копирането/преместването…" -#: lib/blame.tcl:614 +#: lib/blame.tcl:616 msgid "lines annotated" msgstr "реда анотирани" -#: lib/blame.tcl:816 +#: lib/blame.tcl:817 msgid "Loading original location annotations..." msgstr "Зареждане на анотациите за първоначалното местоположение…" -#: lib/blame.tcl:819 +#: lib/blame.tcl:820 msgid "Annotation complete." msgstr "Анотирането завърши." -#: lib/blame.tcl:850 +#: lib/blame.tcl:851 msgid "Busy" msgstr "Операцията не е завършила" -#: lib/blame.tcl:851 +#: lib/blame.tcl:852 msgid "Annotation process is already running." msgstr "В момента тече процес на анотиране." -#: lib/blame.tcl:890 +#: lib/blame.tcl:889 msgid "Running thorough copy detection..." msgstr "Изпълнява се цялостен процес на откриване на копиране…" -#: lib/blame.tcl:958 +#: lib/blame.tcl:957 msgid "Loading annotation..." msgstr "Зареждане на анотации…" -#: lib/blame.tcl:1011 +#: lib/blame.tcl:1010 msgid "Author:" msgstr "Автор:" -#: lib/blame.tcl:1015 +#: lib/blame.tcl:1014 msgid "Committer:" msgstr "Подал:" -#: lib/blame.tcl:1020 +#: lib/blame.tcl:1019 msgid "Original File:" msgstr "Първоначален файл:" -#: lib/blame.tcl:1068 +#: lib/blame.tcl:1067 msgid "Cannot find HEAD commit:" msgstr "Подаването за връх „HEAD“ не може да се открие:" -#: lib/blame.tcl:1123 +#: lib/blame.tcl:1122 msgid "Cannot find parent commit:" msgstr "Родителското подаване не може да се открие" -#: lib/blame.tcl:1138 +#: lib/blame.tcl:1137 msgid "Unable to display parent" msgstr "Родителят не може да се покаже" -#: lib/blame.tcl:1139 lib/diff.tcl:334 +#: lib/blame.tcl:1138 lib/diff.tcl:319 msgid "Error loading diff:" msgstr "Грешка при зареждане на разлика:" -#: lib/blame.tcl:1280 +#: lib/blame.tcl:1279 msgid "Originally By:" msgstr "Първоначално от:" -#: lib/blame.tcl:1286 +#: lib/blame.tcl:1285 msgid "In File:" msgstr "Във файл:" -#: lib/blame.tcl:1291 +#: lib/blame.tcl:1290 msgid "Copied Or Moved Here By:" msgstr "Копирано или преместено тук от:" -#: lib/branch_checkout.tcl:16 +#: lib/branch_checkout.tcl:15 #, tcl-format msgid "%s (%s): Checkout Branch" msgstr "%s (%s): Клон за изтегляне" -#: lib/branch_checkout.tcl:21 +#: lib/branch_checkout.tcl:20 msgid "Checkout Branch" msgstr "Клон за изтегляне" -#: lib/branch_checkout.tcl:26 +#: lib/branch_checkout.tcl:25 msgid "Checkout" msgstr "Изтегляне" -#: lib/branch_checkout.tcl:30 lib/branch_create.tcl:37 lib/branch_delete.tcl:34 -#: lib/branch_rename.tcl:32 lib/browser.tcl:292 lib/checkout_op.tcl:580 -#: lib/choose_font.tcl:45 lib/merge.tcl:178 lib/option.tcl:127 +#: lib/branch_checkout.tcl:29 lib/branch_create.tcl:37 lib/branch_delete.tcl:34 +#: lib/branch_rename.tcl:32 lib/browser.tcl:289 lib/checkout_op.tcl:571 +#: lib/choose_font.tcl:44 lib/merge.tcl:169 lib/option.tcl:127 #: lib/remote_add.tcl:34 lib/remote_branch_delete.tcl:43 lib/tools_dlg.tcl:41 #: lib/tools_dlg.tcl:202 lib/tools_dlg.tcl:345 lib/transport.tcl:141 msgid "Cancel" msgstr "Отказване" -#: lib/branch_checkout.tcl:35 lib/browser.tcl:297 lib/tools_dlg.tcl:321 +#: lib/branch_checkout.tcl:34 lib/browser.tcl:294 lib/tools_dlg.tcl:321 msgid "Revision" msgstr "Версия" -#: lib/branch_checkout.tcl:39 lib/branch_create.tcl:69 lib/option.tcl:310 +#: lib/branch_checkout.tcl:38 lib/branch_create.tcl:67 lib/option.tcl:298 msgid "Options" msgstr "Опции" -#: lib/branch_checkout.tcl:42 lib/branch_create.tcl:92 +#: lib/branch_checkout.tcl:41 lib/branch_create.tcl:90 msgid "Fetch Tracking Branch" msgstr "Изтегляне на промените от следения клон" -#: lib/branch_checkout.tcl:47 +#: lib/branch_checkout.tcl:46 msgid "Detach From Local Branch" msgstr "Изтриване от локалния клон" @@ -738,7 +727,7 @@ msgstr "%s (%s): Създаване на клон" msgid "Create New Branch" msgstr "Създаване на нов клон" -#: lib/branch_create.tcl:33 lib/choose_repository.tcl:386 +#: lib/branch_create.tcl:33 lib/choose_repository.tcl:353 msgid "Create" msgstr "Създаване" @@ -750,48 +739,48 @@ msgstr "Име на клона" msgid "Name:" msgstr "Име:" -#: lib/branch_create.tcl:57 +#: lib/branch_create.tcl:56 msgid "Match Tracking Branch Name" msgstr "Съвпадане по името на следения клон" -#: lib/branch_create.tcl:66 +#: lib/branch_create.tcl:64 msgid "Starting Revision" msgstr "Начална версия" -#: lib/branch_create.tcl:72 +#: lib/branch_create.tcl:70 msgid "Update Existing Branch:" msgstr "Обновяване на съществуващ клон:" -#: lib/branch_create.tcl:75 +#: lib/branch_create.tcl:73 msgid "No" msgstr "Не" -#: lib/branch_create.tcl:80 +#: lib/branch_create.tcl:78 msgid "Fast Forward Only" msgstr "Само тривиално превъртащо сливане" -#: lib/branch_create.tcl:85 lib/checkout_op.tcl:572 +#: lib/branch_create.tcl:83 lib/checkout_op.tcl:563 msgid "Reset" msgstr "Отначало" -#: lib/branch_create.tcl:97 +#: lib/branch_create.tcl:95 msgid "Checkout After Creation" msgstr "Преминаване към клона след създаването му" -#: lib/branch_create.tcl:132 +#: lib/branch_create.tcl:130 msgid "Please select a tracking branch." msgstr "Изберете клон за следени." -#: lib/branch_create.tcl:141 +#: lib/branch_create.tcl:139 #, tcl-format msgid "Tracking branch %s is not a branch in the remote repository." msgstr "Следящият клон — „%s“, не съществува в отдалеченото хранилище." -#: lib/branch_create.tcl:154 lib/branch_rename.tcl:92 +#: lib/branch_create.tcl:152 lib/branch_rename.tcl:88 msgid "Please supply a branch name." msgstr "Дайте име на клона." -#: lib/branch_create.tcl:165 lib/branch_rename.tcl:112 +#: lib/branch_create.tcl:163 lib/branch_rename.tcl:108 #, tcl-format msgid "'%s' is not an acceptable branch name." msgstr "„%s“ не може да се използва за име на клон." @@ -813,7 +802,7 @@ msgstr "Локални клони" msgid "Delete Only If Merged Into" msgstr "Изтриване, само ако промените са слети и другаде" -#: lib/branch_delete.tcl:53 lib/remote_branch_delete.tcl:120 +#: lib/branch_delete.tcl:53 lib/remote_branch_delete.tcl:116 msgid "Always (Do not perform merge checks)" msgstr "Винаги (без проверка за сливане)" @@ -822,7 +811,7 @@ msgstr "Винаги (без проверка за сливане)" msgid "The following branches are not completely merged into %s:" msgstr "Не всички промени в клоните са слети в „%s“:" -#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:218 +#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:214 msgid "" "Recovering deleted branches is difficult.\n" "\n" @@ -863,20 +852,20 @@ msgstr "Преименуване" msgid "Branch:" msgstr "Клон:" -#: lib/branch_rename.tcl:46 +#: lib/branch_rename.tcl:42 msgid "New Name:" msgstr "Ново име:" -#: lib/branch_rename.tcl:81 +#: lib/branch_rename.tcl:77 msgid "Please select a branch to rename." msgstr "Изберете клон за преименуване." -#: lib/branch_rename.tcl:102 lib/checkout_op.tcl:202 +#: lib/branch_rename.tcl:98 lib/checkout_op.tcl:202 #, tcl-format msgid "Branch '%s' already exists." msgstr "Клонът „%s“ вече съществува." -#: lib/branch_rename.tcl:123 +#: lib/branch_rename.tcl:119 #, tcl-format msgid "Failed to rename '%s'." msgstr "Неуспешно преименуване на „%s“." @@ -890,27 +879,27 @@ msgstr "Стартиране…" msgid "%s (%s): File Browser" msgstr "%s (%s): Файлов браузър" -#: lib/browser.tcl:132 lib/browser.tcl:149 +#: lib/browser.tcl:130 lib/browser.tcl:147 #, tcl-format msgid "Loading %s..." msgstr "Зареждане на „%s“…" -#: lib/browser.tcl:193 +#: lib/browser.tcl:191 msgid "[Up To Parent]" msgstr "[Към родителя]" -#: lib/browser.tcl:275 +#: lib/browser.tcl:272 #, tcl-format msgid "%s (%s): Browse Branch Files" msgstr "%s (%s): Разглеждане на файловете в клона" -#: lib/browser.tcl:282 +#: lib/browser.tcl:279 msgid "Browse Branch Files" msgstr "Разглеждане на файловете в клона" -#: lib/browser.tcl:288 lib/choose_repository.tcl:401 -#: lib/choose_repository.tcl:488 lib/choose_repository.tcl:497 -#: lib/choose_repository.tcl:1069 +#: lib/browser.tcl:285 lib/choose_repository.tcl:368 +#: lib/choose_repository.tcl:454 lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:674 msgid "Browse" msgstr "Разглеждане" @@ -924,8 +913,8 @@ msgstr "Доставяне на „%s“ от „%s“" msgid "fatal: Cannot resolve %s" msgstr "фатална грешка: „%s“ не може да се открие" -#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:30 -#: lib/sshkey.tcl:58 +#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:29 +#: lib/sshkey.tcl:55 msgid "Close" msgstr "Затваряне" @@ -992,22 +981,22 @@ msgstr "Работната директория се привежда към „ msgid "files checked out" msgstr "файла са изтеглени" -#: lib/checkout_op.tcl:377 +#: lib/checkout_op.tcl:378 #, tcl-format msgid "Aborted checkout of '%s' (file level merging is required)." msgstr "" "Преустановяване на изтеглянето на „%s“ (необходимо е пофайлово сливане)." -#: lib/checkout_op.tcl:378 +#: lib/checkout_op.tcl:379 msgid "File level merge required." msgstr "Необходимо е пофайлово сливане." -#: lib/checkout_op.tcl:382 +#: lib/checkout_op.tcl:383 #, tcl-format msgid "Staying on branch '%s'." msgstr "Оставане върху клона „%s“." -#: lib/checkout_op.tcl:453 +#: lib/checkout_op.tcl:454 msgid "" "You are no longer on a local branch.\n" "\n" @@ -1018,31 +1007,31 @@ msgstr "" "\n" "Ако искате да сте на клон, създайте базиран на „Това несвързано изтегляне“." -#: lib/checkout_op.tcl:504 lib/checkout_op.tcl:508 +#: lib/checkout_op.tcl:505 lib/checkout_op.tcl:509 #, tcl-format msgid "Checked out '%s'." msgstr "„%s“ е изтеглен." -#: lib/checkout_op.tcl:536 +#: lib/checkout_op.tcl:527 #, tcl-format msgid "Resetting '%s' to '%s' will lose the following commits:" msgstr "" "Зануляването на „%s“ към „%s“ ще доведе до загубването на следните подавания:" -#: lib/checkout_op.tcl:558 +#: lib/checkout_op.tcl:549 msgid "Recovering lost commits may not be easy." msgstr "Възстановяването на загубените подавания може да е трудно." -#: lib/checkout_op.tcl:563 +#: lib/checkout_op.tcl:554 #, tcl-format msgid "Reset '%s'?" msgstr "Зануляване на „%s“?" -#: lib/checkout_op.tcl:568 lib/merge.tcl:170 lib/tools_dlg.tcl:336 +#: lib/checkout_op.tcl:559 lib/merge.tcl:161 lib/tools_dlg.tcl:336 msgid "Visualize" msgstr "Визуализация" -#: lib/checkout_op.tcl:636 +#: lib/checkout_op.tcl:627 #, tcl-format msgid "" "Failed to set current branch.\n" @@ -1060,23 +1049,23 @@ msgstr "" "Това състояние е аварийно и не трябва да се случва. Програмата „%s“ ще " "преустанови работа." -#: lib/choose_font.tcl:41 +#: lib/choose_font.tcl:40 msgid "Select" msgstr "Избор" -#: lib/choose_font.tcl:55 +#: lib/choose_font.tcl:54 msgid "Font Family" msgstr "Шрифт" -#: lib/choose_font.tcl:76 +#: lib/choose_font.tcl:75 msgid "Font Size" msgstr "Размер" -#: lib/choose_font.tcl:93 +#: lib/choose_font.tcl:92 msgid "Font Example" msgstr "Мостра" -#: lib/choose_font.tcl:105 +#: lib/choose_font.tcl:104 msgid "" "This is example text.\n" "If you like this text, it can be your font." @@ -1084,243 +1073,135 @@ msgstr "" "Това е примерен текст.\n" "Ако ви харесва как изглежда, изберете шрифта." -#: lib/choose_repository.tcl:45 +#: lib/choose_repository.tcl:35 msgid "Git Gui" msgstr "ГПИ на Git" -#: lib/choose_repository.tcl:104 lib/choose_repository.tcl:391 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:358 msgid "Create New Repository" msgstr "Създаване на ново хранилище" -#: lib/choose_repository.tcl:110 +#: lib/choose_repository.tcl:100 msgid "New..." msgstr "Ново…" -#: lib/choose_repository.tcl:117 lib/choose_repository.tcl:475 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:441 msgid "Clone Existing Repository" msgstr "Клониране на съществуващо хранилище" -#: lib/choose_repository.tcl:128 +#: lib/choose_repository.tcl:118 msgid "Clone..." msgstr "Клониране…" -#: lib/choose_repository.tcl:135 lib/choose_repository.tcl:1059 +#: lib/choose_repository.tcl:125 lib/choose_repository.tcl:664 msgid "Open Existing Repository" msgstr "Отваряне на съществуващо хранилище" -#: lib/choose_repository.tcl:141 +#: lib/choose_repository.tcl:131 msgid "Open..." msgstr "Отваряне…" -#: lib/choose_repository.tcl:154 +#: lib/choose_repository.tcl:144 msgid "Recent Repositories" msgstr "Скоро ползвани" -#: lib/choose_repository.tcl:164 +#: lib/choose_repository.tcl:154 msgid "Open Recent Repository:" msgstr "Отваряне на хранилище ползвано наскоро:" -#: lib/choose_repository.tcl:328 lib/choose_repository.tcl:335 -#: lib/choose_repository.tcl:342 +#: lib/choose_repository.tcl:317 lib/choose_repository.tcl:324 #, tcl-format msgid "Failed to create repository %s:" msgstr "Неуспешно създаване на хранилището „%s“:" -#: lib/choose_repository.tcl:396 +#: lib/choose_repository.tcl:363 msgid "Directory:" msgstr "Директория:" -#: lib/choose_repository.tcl:426 lib/choose_repository.tcl:552 -#: lib/choose_repository.tcl:1093 +#: lib/choose_repository.tcl:393 lib/choose_repository.tcl:518 +#: lib/choose_repository.tcl:698 msgid "Git Repository" msgstr "Хранилище на Git" -#: lib/choose_repository.tcl:451 +#: lib/choose_repository.tcl:418 #, tcl-format msgid "Directory %s already exists." msgstr "Вече съществува директория „%s“." -#: lib/choose_repository.tcl:455 +#: lib/choose_repository.tcl:422 #, tcl-format msgid "File %s already exists." msgstr "Вече съществува файл „%s“." -#: lib/choose_repository.tcl:470 +#: lib/choose_repository.tcl:436 msgid "Clone" msgstr "Клониране" -#: lib/choose_repository.tcl:483 +#: lib/choose_repository.tcl:449 msgid "Source Location:" msgstr "Адрес на източника:" -#: lib/choose_repository.tcl:492 +#: lib/choose_repository.tcl:458 msgid "Target Directory:" msgstr "Целева директория:" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:468 msgid "Clone Type:" msgstr "Вид клониране:" -#: lib/choose_repository.tcl:507 +#: lib/choose_repository.tcl:473 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Стандартно (бързо, частично споделяне на файлове, твърди връзки)" -#: lib/choose_repository.tcl:512 +#: lib/choose_repository.tcl:478 msgid "Full Copy (Slower, Redundant Backup)" msgstr "Пълно (бавно, пълноценно резервно копие)" -#: lib/choose_repository.tcl:517 +#: lib/choose_repository.tcl:483 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Споделено (най-бързо, не се препоръчва, не прави резервно копие)" -#: lib/choose_repository.tcl:524 +#: lib/choose_repository.tcl:490 msgid "Recursively clone submodules too" msgstr "Рекурсивно клониране и на подмодулите" -#: lib/choose_repository.tcl:558 lib/choose_repository.tcl:605 -#: lib/choose_repository.tcl:744 lib/choose_repository.tcl:818 -#: lib/choose_repository.tcl:1099 lib/choose_repository.tcl:1107 +#: lib/choose_repository.tcl:524 lib/choose_repository.tcl:704 +#: lib/choose_repository.tcl:712 #, tcl-format msgid "Not a Git repository: %s" msgstr "Това не е хранилище на Git: %s" -#: lib/choose_repository.tcl:594 +#: lib/choose_repository.tcl:571 +msgid "Hardlinks are unavailable. Falling back to copying." +msgstr "Не се поддържат твърди връзки. Преминава се към копиране." + +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "Само локални хранилища може да се клонират стандартно" -#: lib/choose_repository.tcl:598 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "Само локални хранилища може да се клонират споделено" -#: lib/choose_repository.tcl:613 +#: lib/choose_repository.tcl:590 #, tcl-format msgid "Location %s already exists." msgstr "Местоположението „%s“ вече съществува." -#: lib/choose_repository.tcl:624 -msgid "Failed to configure origin" -msgstr "Неуспешно настройване на хранилището-източник" - -#: lib/choose_repository.tcl:636 -msgid "Counting objects" -msgstr "Преброяване на обекти" - -#: lib/choose_repository.tcl:637 -msgid "buckets" -msgstr "клетки" - -#: lib/choose_repository.tcl:657 -#, tcl-format -msgid "Unable to copy objects/info/alternates: %s" -msgstr "Обектите/Информацията/Синонимите не може да се копират: %s" - -#: lib/choose_repository.tcl:694 -#, tcl-format -msgid "Nothing to clone from %s." -msgstr "Няма какво да се клонира от „%s“." - -#: lib/choose_repository.tcl:696 lib/choose_repository.tcl:916 -#: lib/choose_repository.tcl:928 -msgid "The 'master' branch has not been initialized." -msgstr "Основният клон — „master“ не е инициализиран." - -#: lib/choose_repository.tcl:709 -msgid "Hardlinks are unavailable. Falling back to copying." -msgstr "Не се поддържат твърди връзки. Преминава се към копиране." - -#: lib/choose_repository.tcl:723 +#: lib/choose_repository.tcl:613 #, tcl-format msgid "Cloning from %s" msgstr "Клониране на „%s“" -#: lib/choose_repository.tcl:754 -msgid "Copying objects" -msgstr "Копиране на обекти" - -#: lib/choose_repository.tcl:755 -msgid "KiB" -msgstr "KiB" - -#: lib/choose_repository.tcl:779 -#, tcl-format -msgid "Unable to copy object: %s" -msgstr "Неуспешно копиране на обект: %s" - -#: lib/choose_repository.tcl:791 -msgid "Linking objects" -msgstr "Създаване на връзки към обектите" - -#: lib/choose_repository.tcl:792 -msgid "objects" -msgstr "обекти" - -#: lib/choose_repository.tcl:800 -#, tcl-format -msgid "Unable to hardlink object: %s" -msgstr "Неуспешно създаване на твърда връзка към обект: %s" - -#: lib/choose_repository.tcl:857 -msgid "Cannot fetch branches and objects. See console output for details." -msgstr "" -"Клоните и обектите не може да се изтеглят. За повече информация погледнете " -"изхода на конзолата." - -#: lib/choose_repository.tcl:868 -msgid "Cannot fetch tags. See console output for details." -msgstr "" -"Етикетите не може да се изтеглят. За повече информация погледнете изхода на " -"конзолата." - -#: lib/choose_repository.tcl:892 -msgid "Cannot determine HEAD. See console output for details." -msgstr "" -"Върхът „HEAD“ не може да се определи. За повече информация погледнете изхода " -"на конзолата." - -#: lib/choose_repository.tcl:901 -#, tcl-format -msgid "Unable to cleanup %s" -msgstr "„%s“ не може да се изчисти" - -#: lib/choose_repository.tcl:907 +#: lib/choose_repository.tcl:619 lib/choose_repository.tcl:625 msgid "Clone failed." msgstr "Неуспешно клониране." -#: lib/choose_repository.tcl:914 -msgid "No default branch obtained." -msgstr "Не е получен клон по подразбиране." - -#: lib/choose_repository.tcl:925 -#, tcl-format -msgid "Cannot resolve %s as a commit." -msgstr "Няма подаване отговарящо на „%s“." - -#: lib/choose_repository.tcl:952 -msgid "Creating working directory" -msgstr "Създаване на работната директория" - -#: lib/choose_repository.tcl:953 lib/index.tcl:77 lib/index.tcl:146 -#: lib/index.tcl:220 lib/index.tcl:589 -msgid "files" -msgstr "файлове" - -#: lib/choose_repository.tcl:982 -msgid "Initial file checkout failed." -msgstr "Неуспешно първоначално изтегляне." - -#: lib/choose_repository.tcl:1026 -msgid "Cloning submodules" -msgstr "Клониране на подмодули" - -#: lib/choose_repository.tcl:1041 -msgid "Cannot clone submodules." -msgstr "Подмодулите не може да се клонират." - -#: lib/choose_repository.tcl:1064 +#: lib/choose_repository.tcl:669 msgid "Repository:" msgstr "Хранилище:" -#: lib/choose_repository.tcl:1113 +#: lib/choose_repository.tcl:718 #, tcl-format msgid "Failed to open repository %s:" msgstr "Неуспешно отваряне на хранилището „%s“:" @@ -1329,40 +1210,40 @@ msgstr "Неуспешно отваряне на хранилището „%s“ msgid "This Detached Checkout" msgstr "Това несвързано изтегляне" -#: lib/choose_rev.tcl:60 +#: lib/choose_rev.tcl:59 msgid "Revision Expression:" msgstr "Израз за версия:" -#: lib/choose_rev.tcl:72 +#: lib/choose_rev.tcl:71 msgid "Local Branch" msgstr "Локален клон" -#: lib/choose_rev.tcl:77 +#: lib/choose_rev.tcl:76 msgid "Tracking Branch" msgstr "Следящ клон" -#: lib/choose_rev.tcl:82 lib/choose_rev.tcl:544 +#: lib/choose_rev.tcl:81 lib/choose_rev.tcl:534 msgid "Tag" msgstr "Етикет" -#: lib/choose_rev.tcl:321 +#: lib/choose_rev.tcl:312 #, tcl-format msgid "Invalid revision: %s" msgstr "Неправилна версия: %s" -#: lib/choose_rev.tcl:342 +#: lib/choose_rev.tcl:333 msgid "No revision selected." msgstr "Не е избрана версия." -#: lib/choose_rev.tcl:350 +#: lib/choose_rev.tcl:341 msgid "Revision expression is empty." msgstr "Изразът за версия е празен." -#: lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:527 msgid "Updated" msgstr "Обновен" -#: lib/choose_rev.tcl:565 +#: lib/choose_rev.tcl:555 msgid "URL" msgstr "Адрес" @@ -1459,7 +1340,7 @@ msgstr "" "\n" "Трябва да добавите поне един файл към индекса, за да подадете.\n" -#: lib/commit.tcl:224 +#: lib/commit.tcl:222 msgid "" "Please supply a commit message.\n" "\n" @@ -1477,15 +1358,15 @@ msgstr "" "● Втори ред: празен.\n" "● Останалите редове: опишете защо се налага тази промяна.\n" -#: lib/commit.tcl:255 +#: lib/commit.tcl:253 msgid "Calling pre-commit hook..." msgstr "Изпълняване на куката преди подаване…" -#: lib/commit.tcl:270 +#: lib/commit.tcl:268 msgid "Commit declined by pre-commit hook." msgstr "Подаването е отхвърлено от куката преди подаване." -#: lib/commit.tcl:289 +#: lib/commit.tcl:287 msgid "" "You are about to commit on a detached head. This is a potentially dangerous " "thing to do because if you switch to another branch you will lose your " @@ -1501,32 +1382,32 @@ msgstr "" " \n" "Сигурни ли сте, че искате да извършите текущото подаване?" -#: lib/commit.tcl:310 +#: lib/commit.tcl:308 msgid "Calling commit-msg hook..." msgstr "Изпълняване на куката за съобщението при подаване…" -#: lib/commit.tcl:325 +#: lib/commit.tcl:323 msgid "Commit declined by commit-msg hook." msgstr "Подаването е отхвърлено от куката за съобщението при подаване." -#: lib/commit.tcl:338 +#: lib/commit.tcl:336 msgid "Committing changes..." msgstr "Подаване на промените…" -#: lib/commit.tcl:355 +#: lib/commit.tcl:354 msgid "write-tree failed:" msgstr "неуспешно запазване на дървото (write-tree):" -#: lib/commit.tcl:356 lib/commit.tcl:406 lib/commit.tcl:433 +#: lib/commit.tcl:355 lib/commit.tcl:405 lib/commit.tcl:432 msgid "Commit failed." msgstr "Неуспешно подаване." -#: lib/commit.tcl:373 +#: lib/commit.tcl:372 #, tcl-format msgid "Commit %s appears to be corrupt" msgstr "Подаването „%s“ изглежда повредено" -#: lib/commit.tcl:378 +#: lib/commit.tcl:377 msgid "" "No changes to commit.\n" "\n" @@ -1541,19 +1422,19 @@ msgstr "" "\n" "Автоматично ще започне нова проверка.\n" -#: lib/commit.tcl:385 +#: lib/commit.tcl:384 msgid "No changes to commit." msgstr "Няма промени за подаване." -#: lib/commit.tcl:405 +#: lib/commit.tcl:404 msgid "commit-tree failed:" msgstr "неуспешно подаване на дървото (commit-tree):" -#: lib/commit.tcl:432 +#: lib/commit.tcl:431 msgid "update-ref failed:" msgstr "неуспешно обновяване на указателите (update-ref):" -#: lib/commit.tcl:526 +#: lib/commit.tcl:525 #, tcl-format msgid "Created commit %s: %s" msgstr "Успешно подаване %s: %s" @@ -1562,62 +1443,62 @@ msgstr "Успешно подаване %s: %s" msgid "Working... please wait..." msgstr "В момента се извършва действие, изчакайте…" -#: lib/console.tcl:186 +#: lib/console.tcl:185 msgid "Success" msgstr "Успех" -#: lib/console.tcl:200 +#: lib/console.tcl:199 msgid "Error: Command Failed" msgstr "Грешка: неуспешно изпълнение на команда" -#: lib/database.tcl:42 +#: lib/database.tcl:41 msgid "Number of loose objects" msgstr "Брой непакетирани обекти" -#: lib/database.tcl:43 +#: lib/database.tcl:42 msgid "Disk space used by loose objects" msgstr "Дисково пространство заето от непакетирани обекти" -#: lib/database.tcl:44 +#: lib/database.tcl:43 msgid "Number of packed objects" msgstr "Брой пакетирани обекти" -#: lib/database.tcl:45 +#: lib/database.tcl:44 msgid "Number of packs" msgstr "Брой пакети" -#: lib/database.tcl:46 +#: lib/database.tcl:45 msgid "Disk space used by packed objects" msgstr "Дисково пространство заето от пакетирани обекти" -#: lib/database.tcl:47 +#: lib/database.tcl:46 msgid "Packed objects waiting for pruning" msgstr "Пакетирани обекти за окастряне" -#: lib/database.tcl:48 +#: lib/database.tcl:47 msgid "Garbage files" msgstr "Файлове за боклука" -#: lib/database.tcl:57 lib/option.tcl:182 lib/option.tcl:197 lib/option.tcl:220 -#: lib/option.tcl:282 +#: lib/database.tcl:56 lib/option.tcl:182 lib/option.tcl:197 lib/option.tcl:220 +#: lib/option.tcl:270 #, tcl-format msgid "%s:" msgstr "%s:" -#: lib/database.tcl:66 +#: lib/database.tcl:65 #, tcl-format msgid "%s (%s): Database Statistics" msgstr "%s (%s): Статистика на базата от данни" -#: lib/database.tcl:72 +#: lib/database.tcl:71 msgid "Compressing the object database" msgstr "Компресиране на базата с данни за обектите" -#: lib/database.tcl:83 +#: lib/database.tcl:82 msgid "Verifying the object database with fsck-objects" msgstr "Проверка на базата с данни за обектите с програмата „fsck-objects“" -#: lib/database.tcl:107 +#: lib/database.tcl:106 #, tcl-format msgid "" "This repository currently has approximately %i loose objects.\n" @@ -1639,7 +1520,7 @@ msgstr "" msgid "Invalid date from Git: %s" msgstr "Неправилни данни от Git: %s" -#: lib/diff.tcl:74 +#: lib/diff.tcl:72 msgid "" "* No differences detected; stage the file to de-list it from Unstaged " "Changes.\n" @@ -1647,16 +1528,16 @@ msgstr "" "● Няма разлики. Добавете файла към индекса, за да се извади от промените " "извън индекса.\n" -#: lib/diff.tcl:75 +#: lib/diff.tcl:73 msgid "* Click to find other files that may have the same state.\n" msgstr "● Натиснете, за да потърсите други файлове в това състояние.\n" -#: lib/diff.tcl:106 +#: lib/diff.tcl:104 #, tcl-format msgid "Loading diff of %s..." msgstr "Зареждане на разликите в „%s“…" -#: lib/diff.tcl:132 +#: lib/diff.tcl:130 msgid "" "LOCAL: deleted\n" "REMOTE:\n" @@ -1664,7 +1545,7 @@ msgstr "" "ЛОКАЛНО: изтрит\n" "ОТДАЛЕЧЕНО:\n" -#: lib/diff.tcl:137 +#: lib/diff.tcl:135 msgid "" "REMOTE: deleted\n" "LOCAL:\n" @@ -1672,32 +1553,32 @@ msgstr "" "ОТДАЛЕЧЕНО: изтрит\n" "ЛОКАЛНО:\n" -#: lib/diff.tcl:144 +#: lib/diff.tcl:142 msgid "LOCAL:\n" msgstr "ЛОКАЛНО:\n" -#: lib/diff.tcl:147 +#: lib/diff.tcl:145 msgid "REMOTE:\n" msgstr "ОТДАЛЕЧЕНО:\n" -#: lib/diff.tcl:209 lib/diff.tcl:333 +#: lib/diff.tcl:207 lib/diff.tcl:318 #, tcl-format msgid "Unable to display %s" msgstr "Файлът „%s“ не може да се покаже" -#: lib/diff.tcl:210 +#: lib/diff.tcl:208 msgid "Error loading file:" msgstr "Грешка при зареждане на файл:" -#: lib/diff.tcl:216 +#: lib/diff.tcl:214 msgid "Git Repository (subproject)" msgstr "Хранилище на Git (подмодул)" -#: lib/diff.tcl:228 +#: lib/diff.tcl:226 msgid "* Binary file (not showing content)." msgstr "● Двоичен файл (съдържанието не се показва)." -#: lib/diff.tcl:233 +#: lib/diff.tcl:231 #, tcl-format msgid "" "* Untracked file is %d bytes.\n" @@ -1706,7 +1587,7 @@ msgstr "" "● Неследеният файл е %d байта.\n" "● Показват се само първите %d байта.\n" -#: lib/diff.tcl:239 +#: lib/diff.tcl:237 #, tcl-format msgid "" "\n" @@ -1717,31 +1598,31 @@ msgstr "" "● Неследеният файл е отрязан дотук от програмата „%s“.\n" "● Използвайте външен редактор, за да видите целия файл.\n" -#: lib/diff.tcl:569 +#: lib/diff.tcl:554 msgid "Failed to unstage selected hunk." msgstr "Избраното парче не може да се извади от индекса." -#: lib/diff.tcl:577 +#: lib/diff.tcl:562 msgid "Failed to revert selected hunk." msgstr "Избраното парче не може да се върне." -#: lib/diff.tcl:580 +#: lib/diff.tcl:565 msgid "Failed to stage selected hunk." msgstr "Избраното парче не може да се добави към индекса." -#: lib/diff.tcl:673 +#: lib/diff.tcl:658 msgid "Failed to unstage selected line." msgstr "Избраният ред не може да се извади от индекса." -#: lib/diff.tcl:682 +#: lib/diff.tcl:667 msgid "Failed to revert selected line." msgstr "Избраният ред не може да се върне." -#: lib/diff.tcl:686 +#: lib/diff.tcl:671 msgid "Failed to stage selected line." msgstr "Избраният ред не може да се добави към индекса." -#: lib/diff.tcl:875 +#: lib/diff.tcl:860 msgid "Failed to undo last revert." msgstr "Неуспешна отмяна на последното връщане." @@ -1768,16 +1649,16 @@ msgstr "%s: грешка" msgid "%s: warning" msgstr "%s: предупреждение" -#: lib/error.tcl:80 +#: lib/error.tcl:79 #, tcl-format msgid "%s hook failed:" msgstr "%s: грешка от куката" -#: lib/error.tcl:96 +#: lib/error.tcl:95 msgid "You must correct the above errors before committing." msgstr "Преди да можете да подадете, коригирайте горните грешки." -#: lib/error.tcl:116 +#: lib/error.tcl:115 #, tcl-format msgid "%s (%s): error" msgstr "%s (%s): грешка" @@ -1786,11 +1667,11 @@ msgstr "%s (%s): грешка" msgid "Unable to unlock the index." msgstr "Индексът не може да се отключи." -#: lib/index.tcl:30 +#: lib/index.tcl:28 msgid "Index Error" msgstr "Грешка в индекса" -#: lib/index.tcl:32 +#: lib/index.tcl:30 msgid "" "Updating the Git index failed. A rescan will be automatically started to " "resynchronize git-gui." @@ -1798,115 +1679,119 @@ msgstr "" "Неуспешно обновяване на индекса на Git. Автоматично ще започне нова проверка " "за синхронизирането на git-gui." -#: lib/index.tcl:43 +#: lib/index.tcl:41 msgid "Continue" msgstr "Продължаване" -#: lib/index.tcl:46 +#: lib/index.tcl:44 msgid "Unlock Index" msgstr "Отключване на индекса" -#: lib/index.tcl:326 +#: lib/index.tcl:75 lib/index.tcl:144 lib/index.tcl:218 lib/index.tcl:587 +msgid "files" +msgstr "файлове" + +#: lib/index.tcl:324 msgid "Unstaging selected files from commit" msgstr "Изваждане на избраните файлове от подаването" -#: lib/index.tcl:330 +#: lib/index.tcl:328 #, tcl-format msgid "Unstaging %s from commit" msgstr "Изваждане на „%s“ от подаването" -#: lib/index.tcl:369 +#: lib/index.tcl:367 msgid "Ready to commit." msgstr "Готовност за подаване." -#: lib/index.tcl:378 +#: lib/index.tcl:376 msgid "Adding selected files" msgstr "Добавяне на избраните файлове" -#: lib/index.tcl:382 +#: lib/index.tcl:380 #, tcl-format msgid "Adding %s" msgstr "Добавяне на „%s“" -#: lib/index.tcl:412 +#: lib/index.tcl:410 #, tcl-format msgid "Stage %d untracked files?" msgstr "Да се добавят ли %d неследени файла към индекса?" -#: lib/index.tcl:420 +#: lib/index.tcl:418 msgid "Adding all changed files" msgstr "Добавяне на всички променени файлове" -#: lib/index.tcl:503 +#: lib/index.tcl:501 #, tcl-format msgid "Revert changes in file %s?" msgstr "Да се махнат ли промените във файла „%s“?" -#: lib/index.tcl:508 +#: lib/index.tcl:506 #, tcl-format msgid "Revert changes in these %i files?" msgstr "Да се махнат ли промените в тези %i файла?" -#: lib/index.tcl:517 +#: lib/index.tcl:515 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" "Всички промени, които не са били добавени в индекса, ще се загубят " "безвъзвратно." -#: lib/index.tcl:520 lib/index.tcl:564 +#: lib/index.tcl:518 lib/index.tcl:562 msgid "Do Nothing" msgstr "Нищо да не се прави" -#: lib/index.tcl:546 +#: lib/index.tcl:544 #, tcl-format msgid "Delete untracked file %s?" msgstr "Да се изтрие ли неследеният файл „%s“?" -#: lib/index.tcl:551 +#: lib/index.tcl:549 #, tcl-format msgid "Delete these %i untracked files?" msgstr "Да се изтрият ли тези %d неследени файла?" -#: lib/index.tcl:561 +#: lib/index.tcl:559 msgid "Files will be permanently deleted." msgstr "Файловете ще се изтрият окончателно." -#: lib/index.tcl:565 +#: lib/index.tcl:563 msgid "Delete Files" msgstr "Изтриване на файлове" -#: lib/index.tcl:588 +#: lib/index.tcl:586 msgid "Deleting" msgstr "Изтриване" -#: lib/index.tcl:667 +#: lib/index.tcl:665 msgid "Encountered errors deleting files:\n" msgstr "Грешки при изтриване на файловете:\n" -#: lib/index.tcl:676 +#: lib/index.tcl:674 #, tcl-format msgid "None of the %d selected files could be deleted." msgstr "Никой от избраните %d файла не бе изтрит." -#: lib/index.tcl:681 +#: lib/index.tcl:679 #, tcl-format msgid "%d of the %d selected files could not be deleted." msgstr "%d от избраните %d файла не бяха изтрити." -#: lib/index.tcl:728 +#: lib/index.tcl:726 msgid "Reverting selected files" msgstr "Махане на промените в избраните файлове" -#: lib/index.tcl:732 +#: lib/index.tcl:730 #, tcl-format msgid "Reverting %s" msgstr "Махане на промените в „%s“" -#: lib/line.tcl:17 +#: lib/line.tcl:16 msgid "Goto Line:" msgstr "Към ред:" -#: lib/line.tcl:23 +#: lib/line.tcl:22 msgid "Go" msgstr "Към" @@ -1978,34 +1863,34 @@ msgstr "" msgid "%s of %s" msgstr "%s от общо %s" -#: lib/merge.tcl:126 +#: lib/merge.tcl:117 #, tcl-format msgid "Merging %s and %s..." msgstr "Сливане на „%s“ и „%s“…" -#: lib/merge.tcl:137 +#: lib/merge.tcl:128 msgid "Merge completed successfully." msgstr "Сливането завърши успешно." -#: lib/merge.tcl:139 +#: lib/merge.tcl:130 msgid "Merge failed. Conflict resolution is required." msgstr "Неуспешно сливане — има конфликти за коригиране." -#: lib/merge.tcl:156 +#: lib/merge.tcl:147 #, tcl-format msgid "%s (%s): Merge" msgstr "%s (%s): Сливане" -#: lib/merge.tcl:164 +#: lib/merge.tcl:155 #, tcl-format msgid "Merge Into %s" msgstr "Сливане в „%s“" -#: lib/merge.tcl:183 +#: lib/merge.tcl:174 msgid "Revision To Merge" msgstr "Версия за сливане" -#: lib/merge.tcl:218 +#: lib/merge.tcl:209 msgid "" "Cannot abort while amending.\n" "\n" @@ -2015,7 +1900,7 @@ msgstr "" "\n" "Трябва да завършите поправката на това подаване.\n" -#: lib/merge.tcl:228 +#: lib/merge.tcl:219 msgid "" "Abort merge?\n" "\n" @@ -2029,7 +1914,7 @@ msgstr "" "\n" "Наистина ли да се преустанови сливането?" -#: lib/merge.tcl:234 +#: lib/merge.tcl:225 msgid "" "Reset changes?\n" "\n" @@ -2043,19 +1928,19 @@ msgstr "" "\n" "Наистина ли да се занулят промените?" -#: lib/merge.tcl:246 +#: lib/merge.tcl:237 msgid "Aborting" msgstr "Преустановяване" -#: lib/merge.tcl:247 +#: lib/merge.tcl:238 msgid "files reset" msgstr "файла със занулени промени" -#: lib/merge.tcl:277 +#: lib/merge.tcl:268 msgid "Abort failed." msgstr "Неуспешно преустановяване." -#: lib/merge.tcl:279 +#: lib/merge.tcl:270 msgid "Abort completed. Ready." msgstr "Успешно преустановяване. Готовност за следващо действие." @@ -2293,28 +2178,28 @@ msgstr "Ширина на табулацията" msgid "Change" msgstr "Смяна" -#: lib/option.tcl:254 +#: lib/option.tcl:248 msgid "Spelling Dictionary:" msgstr "Правописен речник:" -#: lib/option.tcl:284 +#: lib/option.tcl:272 msgid "Change Font" msgstr "Смяна на шрифта" -#: lib/option.tcl:288 +#: lib/option.tcl:276 #, tcl-format msgid "Choose %s" msgstr "Избор на „%s“" -#: lib/option.tcl:294 +#: lib/option.tcl:282 msgid "pt." msgstr "тчк." -#: lib/option.tcl:308 +#: lib/option.tcl:296 msgid "Preferences" msgstr "Настройки" -#: lib/option.tcl:345 +#: lib/option.tcl:333 msgid "Failed to completely save options:" msgstr "Неуспешно запазване на настройките:" @@ -2412,27 +2297,27 @@ msgstr "От хранилище" msgid "Remote:" msgstr "Отдалечено хранилище:" -#: lib/remote_branch_delete.tcl:72 lib/transport.tcl:187 +#: lib/remote_branch_delete.tcl:68 lib/transport.tcl:183 msgid "Arbitrary Location:" msgstr "Произволно местоположение:" -#: lib/remote_branch_delete.tcl:88 +#: lib/remote_branch_delete.tcl:84 msgid "Branches" msgstr "Клони" -#: lib/remote_branch_delete.tcl:110 +#: lib/remote_branch_delete.tcl:106 msgid "Delete Only If" msgstr "Изтриване, само ако" -#: lib/remote_branch_delete.tcl:112 +#: lib/remote_branch_delete.tcl:108 msgid "Merged Into:" msgstr "Слят в:" -#: lib/remote_branch_delete.tcl:153 +#: lib/remote_branch_delete.tcl:149 msgid "A branch is required for 'Merged Into'." msgstr "За данните „Слят в“ е необходимо да зададете клон." -#: lib/remote_branch_delete.tcl:185 +#: lib/remote_branch_delete.tcl:181 #, tcl-format msgid "" "The following branches are not completely merged into %s:\n" @@ -2443,7 +2328,7 @@ msgstr "" "\n" " ● %s" -#: lib/remote_branch_delete.tcl:190 +#: lib/remote_branch_delete.tcl:186 #, tcl-format msgid "" "One or more of the merge tests failed because you have not fetched the " @@ -2452,20 +2337,20 @@ msgstr "" "Поне една от пробите за сливане е неуспешна, защото не сте доставили всички " "необходими подавания. Пробвайте първо да доставите подаванията от „%s“." -#: lib/remote_branch_delete.tcl:208 +#: lib/remote_branch_delete.tcl:204 msgid "Please select one or more branches to delete." msgstr "Изберете поне един клон за изтриване." -#: lib/remote_branch_delete.tcl:227 +#: lib/remote_branch_delete.tcl:223 #, tcl-format msgid "Deleting branches from %s" msgstr "Изтриване на клони от „%s“" -#: lib/remote_branch_delete.tcl:300 +#: lib/remote_branch_delete.tcl:296 msgid "No repository selected." msgstr "Не е избрано хранилище." -#: lib/remote_branch_delete.tcl:305 +#: lib/remote_branch_delete.tcl:301 #, tcl-format msgid "Scanning %s..." msgstr "Претърсване на „%s“…" @@ -2486,27 +2371,27 @@ msgstr "Окастряне от" msgid "Fetch from" msgstr "Доставяне от" -#: lib/remote.tcl:249 lib/remote.tcl:253 lib/remote.tcl:258 lib/remote.tcl:264 +#: lib/remote.tcl:247 lib/remote.tcl:251 lib/remote.tcl:256 lib/remote.tcl:262 msgid "All" msgstr "Всички" -#: lib/search.tcl:48 +#: lib/search.tcl:47 msgid "Find:" msgstr "Търсене:" -#: lib/search.tcl:50 +#: lib/search.tcl:49 msgid "Next" msgstr "Следваща поява" -#: lib/search.tcl:51 +#: lib/search.tcl:50 msgid "Prev" msgstr "Предишна поява" -#: lib/search.tcl:52 +#: lib/search.tcl:51 msgid "RegExp" msgstr "РегИзр" -#: lib/search.tcl:54 +#: lib/search.tcl:53 msgid "Case" msgstr "Главни/Малки" @@ -2573,19 +2458,19 @@ msgstr "Открит е публичен ключ в „%s“" msgid "Generate Key" msgstr "Генериране на ключ" -#: lib/sshkey.tcl:61 +#: lib/sshkey.tcl:58 msgid "Copy To Clipboard" msgstr "Копиране към системния буфер" -#: lib/sshkey.tcl:75 +#: lib/sshkey.tcl:72 msgid "Your OpenSSH Public Key" msgstr "Публичният ви ключ за OpenSSH" -#: lib/sshkey.tcl:83 +#: lib/sshkey.tcl:80 msgid "Generating..." msgstr "Генериране…" -#: lib/sshkey.tcl:89 +#: lib/sshkey.tcl:87 #, tcl-format msgid "" "Could not start ssh-keygen:\n" @@ -2596,20 +2481,20 @@ msgstr "" "\n" "%s" -#: lib/sshkey.tcl:116 +#: lib/sshkey.tcl:114 msgid "Generation failed." msgstr "Неуспешно генериране." -#: lib/sshkey.tcl:123 +#: lib/sshkey.tcl:121 msgid "Generation succeeded, but no keys found." msgstr "Генерирането завърши успешно, а не са намерени ключове." -#: lib/sshkey.tcl:126 +#: lib/sshkey.tcl:124 #, tcl-format msgid "Your key is in: %s" msgstr "Ключът ви е в „%s“" -#: lib/status_bar.tcl:263 +#: lib/status_bar.tcl:258 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" msgstr "%s… %*i от общо %*i %s (%3i%%)" @@ -2739,12 +2624,12 @@ msgstr "Команда: %s" msgid "Running: %s" msgstr "Изпълнение: %s" -#: lib/tools.tcl:158 +#: lib/tools.tcl:157 #, tcl-format msgid "Tool completed successfully: %s" msgstr "Командата завърши успешно: %s" -#: lib/tools.tcl:160 +#: lib/tools.tcl:159 #, tcl-format msgid "Tool failed: %s" msgstr "Командата върна грешка: %s" @@ -2809,24 +2694,24 @@ msgstr "Клони-източници" msgid "Destination Repository" msgstr "Целево хранилище" -#: lib/transport.tcl:205 +#: lib/transport.tcl:201 msgid "Transfer Options" msgstr "Настройки при пренасянето" -#: lib/transport.tcl:207 +#: lib/transport.tcl:203 msgid "Force overwrite existing branch (may discard changes)" msgstr "" "Изрично презаписване на съществуващ клон (някои промени може да се загубят)" -#: lib/transport.tcl:211 +#: lib/transport.tcl:207 msgid "Use thin pack (for slow network connections)" msgstr "Максимална компресия (за бавни мрежови връзки)" -#: lib/transport.tcl:215 +#: lib/transport.tcl:211 msgid "Include tags" msgstr "Включване на етикетите" -#: lib/transport.tcl:229 +#: lib/transport.tcl:225 #, tcl-format msgid "%s (%s): Push" msgstr "%s (%s): Изтласкване" From 8fd50a4a28dbb8a190bee3c3b03b7ac062426b45 Mon Sep 17 00:00:00 2001 From: Alexander Shopov Date: Tue, 29 Jul 2025 20:09:45 +0200 Subject: [PATCH 11/21] git-gui i18n: Remove the locations within the Bulgarian translation This makes sending diffs via mail list easier and brings the po-file in line with git po-file. Signed-off-by: Alexander Shopov --- po/bg.po | 573 ------------------------------------------------------- 1 file changed, 573 deletions(-) diff --git a/po/bg.po b/po/bg.po index b252c8c3f3..21f5bd54e9 100644 --- a/po/bg.po +++ b/po/bg.po @@ -18,77 +18,58 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: git-gui.sh:819 #, tcl-format msgid "Invalid font specified in %s:" msgstr "Указан е неправилен шрифт в „%s“:" -#: git-gui.sh:873 msgid "Main Font" msgstr "Основен шрифт" -#: git-gui.sh:874 msgid "Diff/Console Font" msgstr "Шрифт за разликите/конзолата" -#: git-gui.sh:889 git-gui.sh:905 git-gui.sh:919 git-gui.sh:948 git-gui.sh:964 -#: git-gui.sh:3061 msgid "git-gui: fatal error" msgstr "git-gui: фатална грешка" -#: git-gui.sh:890 msgid "Cannot find git in PATH." msgstr "Командата git липсва в пътя (PATH)." -#: git-gui.sh:920 msgid "Cannot parse Git version string:" msgstr "Низът с версията на Git не може да се анализира:" -#: git-gui.sh:941 msgid "Insufficient git version, require: " msgstr "Прекалено ниска версия на git, необходима е поне: " -#: git-gui.sh:942 msgid "git returned:" msgstr "git върна:" -#: git-gui.sh:1164 msgid "Git directory not found:" msgstr "Директорията на Git не е открита:" -#: git-gui.sh:1181 msgid "Cannot move to top of working directory:" msgstr "Не може да се премине към родителската директория." -#: git-gui.sh:1189 msgid "Cannot use bare repository:" msgstr "Голо хранилище не може да се използва:" -#: git-gui.sh:1197 msgid "No working directory" msgstr "Работната директория липсва" -#: git-gui.sh:1371 lib/checkout_op.tcl:306 msgid "Refreshing file status..." msgstr "Обновяване на състоянието на файла…" -#: git-gui.sh:1404 msgid "Scanning for modified files ..." msgstr "Проверка за променени файлове…" -#: git-gui.sh:1484 msgid "Calling prepare-commit-msg hook..." msgstr "Куката „prepare-commit-msg“ се изпълнява в момента…" -#: git-gui.sh:1501 msgid "Commit declined by prepare-commit-msg hook." msgstr "Подаването е отхвърлено от куката „prepare-commit-msg“." -#: git-gui.sh:1659 lib/browser.tcl:250 msgid "Ready." msgstr "Готово." -#: git-gui.sh:1822 #, tcl-format msgid "" "Display limit (gui.maxfilesdisplayed = %s) reached, not showing all %s files." @@ -97,721 +78,539 @@ msgstr "" "извеждане(gui.maxfilesdisplayed = %s), съответно не са показани всички %s " "файла." -#: git-gui.sh:1945 msgid "Unmodified" msgstr "Непроменен" -#: git-gui.sh:1947 msgid "Modified, not staged" msgstr "Променен, но не е в индекса" -#: git-gui.sh:1948 git-gui.sh:1960 msgid "Staged for commit" msgstr "В индекса за подаване" -#: git-gui.sh:1949 git-gui.sh:1961 msgid "Portions staged for commit" msgstr "Части са в индекса за подаване" -#: git-gui.sh:1950 git-gui.sh:1962 msgid "Staged for commit, missing" msgstr "В индекса за подаване, но липсва" -#: git-gui.sh:1952 msgid "File type changed, not staged" msgstr "Видът на файла е сменен, но не е в индекса" -#: git-gui.sh:1953 git-gui.sh:1954 msgid "File type changed, old type staged for commit" msgstr "Видът на файла е сменен, но новият вид не е в индекса" -#: git-gui.sh:1955 msgid "File type changed, staged" msgstr "Видът на файла е сменен и е в индекса" -#: git-gui.sh:1956 msgid "File type change staged, modification not staged" msgstr "Видът на файла е сменен в индекса, но не и съдържанието" -#: git-gui.sh:1957 msgid "File type change staged, file missing" msgstr "Видът на файла е сменен в индекса, но файлът липсва" -#: git-gui.sh:1959 msgid "Untracked, not staged" msgstr "Неследен" -#: git-gui.sh:1964 msgid "Missing" msgstr "Липсващ" -#: git-gui.sh:1965 msgid "Staged for removal" msgstr "В индекса за изтриване" -#: git-gui.sh:1966 msgid "Staged for removal, still present" msgstr "В индекса за изтриване, но още го има" -#: git-gui.sh:1968 git-gui.sh:1969 git-gui.sh:1970 git-gui.sh:1971 -#: git-gui.sh:1972 git-gui.sh:1973 msgid "Requires merge resolution" msgstr "Изисква коригиране при сливане" -#: git-gui.sh:2018 msgid "Couldn't find gitk in PATH" msgstr "Командата „gitk“ липсва в пътищата, определени от променливата PATH." -#: git-gui.sh:2065 git-gui.sh:2101 #, tcl-format msgid "Starting %s... please wait..." msgstr "Стартиране на „%s“…, изчакайте…" -#: git-gui.sh:2080 msgid "Couldn't find git gui in PATH" msgstr "" "Командата „git gui“ липсва в пътищата, определени от променливата PATH." -#: git-gui.sh:2580 lib/choose_repository.tcl:43 msgid "Repository" msgstr "Хранилище" -#: git-gui.sh:2581 msgid "Edit" msgstr "Редактиране" -#: git-gui.sh:2583 lib/choose_rev.tcl:557 msgid "Branch" msgstr "Клон" -#: git-gui.sh:2586 lib/choose_rev.tcl:544 msgid "Commit@@noun" msgstr "Подаване" -#: git-gui.sh:2589 lib/merge.tcl:118 lib/merge.tcl:165 msgid "Merge" msgstr "Сливане" -#: git-gui.sh:2590 lib/choose_rev.tcl:553 msgid "Remote" msgstr "Отдалечено хранилище" -#: git-gui.sh:2593 msgid "Tools" msgstr "Команди" -#: git-gui.sh:2602 msgid "Explore Working Copy" msgstr "Разглеждане на работното копие" -#: git-gui.sh:2615 msgid "Git Bash" msgstr "Bash за Git" -#: git-gui.sh:2625 msgid "Browse Current Branch's Files" msgstr "Разглеждане на файловете в текущия клон" -#: git-gui.sh:2629 msgid "Browse Branch Files..." msgstr "Разглеждане на текущия клон…" -#: git-gui.sh:2634 msgid "Visualize Current Branch's History" msgstr "Визуализация на историята на текущия клон" -#: git-gui.sh:2638 msgid "Visualize All Branch History" msgstr "Визуализация на историята на всички клонове" -#: git-gui.sh:2645 #, tcl-format msgid "Browse %s's Files" msgstr "Разглеждане на файловете в „%s“" -#: git-gui.sh:2647 #, tcl-format msgid "Visualize %s's History" msgstr "Визуализация на историята на „%s“" -#: git-gui.sh:2652 lib/database.tcl:39 msgid "Database Statistics" msgstr "Статистика на базата от данни" -#: git-gui.sh:2655 lib/database.tcl:32 msgid "Compress Database" msgstr "Компресиране на базата от данни" -#: git-gui.sh:2658 msgid "Verify Database" msgstr "Проверка на базата от данни" -#: git-gui.sh:2665 git-gui.sh:2669 git-gui.sh:2673 msgid "Create Desktop Icon" msgstr "Добавяне на икона на работния плот" -#: git-gui.sh:2681 lib/choose_repository.tcl:196 lib/choose_repository.tcl:204 msgid "Quit" msgstr "Спиране на програмата" -#: git-gui.sh:2689 msgid "Undo" msgstr "Отмяна" -#: git-gui.sh:2692 msgid "Redo" msgstr "Повторение" -#: git-gui.sh:2696 git-gui.sh:3297 msgid "Cut" msgstr "Отрязване" -#: git-gui.sh:2699 git-gui.sh:3300 git-gui.sh:3376 git-gui.sh:3471 -#: lib/console.tcl:69 msgid "Copy" msgstr "Копиране" -#: git-gui.sh:2702 git-gui.sh:3303 msgid "Paste" msgstr "Поставяне" -#: git-gui.sh:2705 git-gui.sh:3306 lib/branch_delete.tcl:28 -#: lib/remote_branch_delete.tcl:39 msgid "Delete" msgstr "Изтриване" -#: git-gui.sh:2709 git-gui.sh:3310 git-gui.sh:3475 lib/console.tcl:71 msgid "Select All" msgstr "Избиране на всичко" -#: git-gui.sh:2718 msgid "Create..." msgstr "Създаване…" -#: git-gui.sh:2724 msgid "Checkout..." msgstr "Изтегляне…" -#: git-gui.sh:2730 msgid "Rename..." msgstr "Преименуване…" -#: git-gui.sh:2735 msgid "Delete..." msgstr "Изтриване…" -#: git-gui.sh:2740 msgid "Reset..." msgstr "Отмяна на промените…" -#: git-gui.sh:2750 msgid "Done" msgstr "Готово" -#: git-gui.sh:2752 msgid "Commit@@verb" msgstr "Подаване" -#: git-gui.sh:2761 git-gui.sh:3236 msgid "Amend Last Commit" msgstr "Поправяне на последното подаване" -#: git-gui.sh:2771 git-gui.sh:3197 lib/remote_branch_delete.tcl:97 msgid "Rescan" msgstr "Обновяване" -#: git-gui.sh:2777 msgid "Stage To Commit" msgstr "Към индекса за подаване" -#: git-gui.sh:2783 msgid "Stage Changed Files To Commit" msgstr "Всички променени файлове към индекса за подаване" -#: git-gui.sh:2789 msgid "Unstage From Commit" msgstr "Изваждане от индекса за подаване" -#: git-gui.sh:2795 lib/index.tcl:519 msgid "Revert Changes" msgstr "Връщане на оригинала" -#: git-gui.sh:2803 git-gui.sh:3538 git-gui.sh:3569 msgid "Show Less Context" msgstr "По-малко контекст" -#: git-gui.sh:2807 git-gui.sh:3542 git-gui.sh:3573 msgid "Show More Context" msgstr "Повече контекст" -#: git-gui.sh:2814 git-gui.sh:3210 git-gui.sh:3321 msgid "Sign Off" msgstr "Подписване" -#: git-gui.sh:2830 msgid "Local Merge..." msgstr "Локално сливане…" -#: git-gui.sh:2835 msgid "Abort Merge..." msgstr "Преустановяване на сливане…" -#: git-gui.sh:2847 git-gui.sh:2875 msgid "Add..." msgstr "Добавяне…" -#: git-gui.sh:2851 msgid "Push..." msgstr "Изтласкване…" -#: git-gui.sh:2855 msgid "Delete Branch..." msgstr "Изтриване на клон…" -#: git-gui.sh:2865 git-gui.sh:3504 msgid "Options..." msgstr "Опции…" -#: git-gui.sh:2876 msgid "Remove..." msgstr "Премахване…" -#: git-gui.sh:2885 lib/choose_repository.tcl:57 msgid "Help" msgstr "Помощ" -#: git-gui.sh:2889 git-gui.sh:2893 lib/about.tcl:14 -#: lib/choose_repository.tcl:51 lib/choose_repository.tcl:60 #, tcl-format msgid "About %s" msgstr "Относно „%s“" -#: git-gui.sh:2913 msgid "Online Documentation" msgstr "Документация в Интернет" -#: git-gui.sh:2916 lib/choose_repository.tcl:54 lib/choose_repository.tcl:63 msgid "Show SSH Key" msgstr "Показване на ключа за SSH" -#: git-gui.sh:2946 git-gui.sh:3078 msgid "usage:" msgstr "употреба:" -#: git-gui.sh:2950 git-gui.sh:3082 msgid "Usage" msgstr "Употреба" -#: git-gui.sh:3031 lib/blame.tcl:578 msgid "Error" msgstr "Грешка" -#: git-gui.sh:3062 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "ФАТАЛНА ГРЕШКА: пътят „%s“ липсва: такъв файл или директория няма" -#: git-gui.sh:3094 msgid "Current Branch:" msgstr "Текущ клон:" -#: git-gui.sh:3115 msgid "Unstaged Changes" msgstr "Промени извън индекса" -#: git-gui.sh:3137 msgid "Staged Changes (Will Commit)" msgstr "Промени в индекса (за подаване)" -#: git-gui.sh:3203 msgid "Stage Changed" msgstr "Индексът е променен" -#: git-gui.sh:3222 lib/transport.tcl:137 msgid "Push" msgstr "Изтласкване" -#: git-gui.sh:3249 msgid "Initial Commit Message:" msgstr "Първоначално съобщение при подаване:" -#: git-gui.sh:3250 msgid "Amended Commit Message:" msgstr "Поправено съобщение при подаване:" -#: git-gui.sh:3251 msgid "Amended Initial Commit Message:" msgstr "Поправено първоначално съобщение при подаване:" -#: git-gui.sh:3252 msgid "Amended Merge Commit Message:" msgstr "Поправено съобщение при подаване със сливане:" -#: git-gui.sh:3253 msgid "Merge Commit Message:" msgstr "Съобщение при подаване със сливане:" -#: git-gui.sh:3254 msgid "Commit Message:" msgstr "Съобщение при подаване:" -#: git-gui.sh:3313 git-gui.sh:3479 lib/console.tcl:73 msgid "Copy All" msgstr "Копиране на всичко" -#: git-gui.sh:3337 lib/blame.tcl:106 msgid "File:" msgstr "Файл:" -#: git-gui.sh:3385 lib/choose_repository.tcl:659 msgid "Open" msgstr "Отваряне" -#: git-gui.sh:3467 msgid "Refresh" msgstr "Обновяване" -#: git-gui.sh:3488 msgid "Decrease Font Size" msgstr "По-дребен шрифт" -#: git-gui.sh:3492 msgid "Increase Font Size" msgstr "По-едър шрифт" -#: git-gui.sh:3500 lib/blame.tcl:295 msgid "Encoding" msgstr "Кодиране" -#: git-gui.sh:3511 msgid "Apply/Reverse Hunk" msgstr "Прилагане/връщане на парче" -#: git-gui.sh:3516 msgid "Apply/Reverse Line" msgstr "Прилагане/връщане на ред" -#: git-gui.sh:3522 git-gui.sh:3632 git-gui.sh:3643 msgid "Revert Hunk" msgstr "Връщане на парче" -#: git-gui.sh:3527 git-gui.sh:3639 git-gui.sh:3650 msgid "Revert Line" msgstr "Връщане на ред" -#: git-gui.sh:3532 git-gui.sh:3629 msgid "Undo Last Revert" msgstr "Отмяна на последното връщане" -#: git-gui.sh:3551 msgid "Run Merge Tool" msgstr "Изпълнение на програмата за сливане" -#: git-gui.sh:3556 msgid "Use Remote Version" msgstr "Версия от отдалеченото хранилище" -#: git-gui.sh:3560 msgid "Use Local Version" msgstr "Локална версия" -#: git-gui.sh:3564 msgid "Revert To Base" msgstr "Връщане към родителската версия" -#: git-gui.sh:3582 msgid "Visualize These Changes In The Submodule" msgstr "Визуализиране на промените в подмодула" -#: git-gui.sh:3586 msgid "Visualize Current Branch History In The Submodule" msgstr "Визуализация на историята на текущия клон в историята за подмодула" -#: git-gui.sh:3590 msgid "Visualize All Branch History In The Submodule" msgstr "Визуализация на историята на всички клони в историята за подмодула" -#: git-gui.sh:3595 msgid "Start git gui In The Submodule" msgstr "Стартиране на „git gui“ за подмодула" -#: git-gui.sh:3631 msgid "Unstage Hunk From Commit" msgstr "Изваждане на парчето от подаването" -#: git-gui.sh:3635 msgid "Unstage Lines From Commit" msgstr "Изваждане на редовете от подаването" -#: git-gui.sh:3636 git-gui.sh:3647 msgid "Revert Lines" msgstr "Връщане на редовете" -#: git-gui.sh:3638 msgid "Unstage Line From Commit" msgstr "Изваждане на реда от подаването" -#: git-gui.sh:3642 msgid "Stage Hunk For Commit" msgstr "Добавяне на парчето за подаване" -#: git-gui.sh:3646 msgid "Stage Lines For Commit" msgstr "Добавяне на редовете за подаване" -#: git-gui.sh:3649 msgid "Stage Line For Commit" msgstr "Добавяне на реда за подаване" -#: git-gui.sh:3699 msgid "Initializing..." msgstr "Инициализиране…" -#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "git-gui — графичен интерфейс за Git." -#: lib/blame.tcl:74 #, tcl-format msgid "%s (%s): File Viewer" msgstr "%s (%s): Преглед на файлове" -#: lib/blame.tcl:80 msgid "Commit:" msgstr "Подаване:" -#: lib/blame.tcl:281 msgid "Copy Commit" msgstr "Копиране на подаване" -#: lib/blame.tcl:285 msgid "Find Text..." msgstr "Търсене на текст…" -#: lib/blame.tcl:289 msgid "Goto Line..." msgstr "Към ред…" -#: lib/blame.tcl:298 msgid "Do Full Copy Detection" msgstr "Пълно търсене на копиране" -#: lib/blame.tcl:302 msgid "Show History Context" msgstr "Показване на контекста от историята" -#: lib/blame.tcl:305 msgid "Blame Parent Commit" msgstr "Анотиране на родителското подаване" -#: lib/blame.tcl:469 #, tcl-format msgid "Reading %s..." msgstr "Чете се „%s“…" -#: lib/blame.tcl:599 msgid "Loading copy/move tracking annotations..." msgstr "Зареждане на анотациите за проследяване на копирането/преместването…" -#: lib/blame.tcl:616 msgid "lines annotated" msgstr "реда анотирани" -#: lib/blame.tcl:817 msgid "Loading original location annotations..." msgstr "Зареждане на анотациите за първоначалното местоположение…" -#: lib/blame.tcl:820 msgid "Annotation complete." msgstr "Анотирането завърши." -#: lib/blame.tcl:851 msgid "Busy" msgstr "Операцията не е завършила" -#: lib/blame.tcl:852 msgid "Annotation process is already running." msgstr "В момента тече процес на анотиране." -#: lib/blame.tcl:889 msgid "Running thorough copy detection..." msgstr "Изпълнява се цялостен процес на откриване на копиране…" -#: lib/blame.tcl:957 msgid "Loading annotation..." msgstr "Зареждане на анотации…" -#: lib/blame.tcl:1010 msgid "Author:" msgstr "Автор:" -#: lib/blame.tcl:1014 msgid "Committer:" msgstr "Подал:" -#: lib/blame.tcl:1019 msgid "Original File:" msgstr "Първоначален файл:" -#: lib/blame.tcl:1067 msgid "Cannot find HEAD commit:" msgstr "Подаването за връх „HEAD“ не може да се открие:" -#: lib/blame.tcl:1122 msgid "Cannot find parent commit:" msgstr "Родителското подаване не може да се открие" -#: lib/blame.tcl:1137 msgid "Unable to display parent" msgstr "Родителят не може да се покаже" -#: lib/blame.tcl:1138 lib/diff.tcl:319 msgid "Error loading diff:" msgstr "Грешка при зареждане на разлика:" -#: lib/blame.tcl:1279 msgid "Originally By:" msgstr "Първоначално от:" -#: lib/blame.tcl:1285 msgid "In File:" msgstr "Във файл:" -#: lib/blame.tcl:1290 msgid "Copied Or Moved Here By:" msgstr "Копирано или преместено тук от:" -#: lib/branch_checkout.tcl:15 #, tcl-format msgid "%s (%s): Checkout Branch" msgstr "%s (%s): Клон за изтегляне" -#: lib/branch_checkout.tcl:20 msgid "Checkout Branch" msgstr "Клон за изтегляне" -#: lib/branch_checkout.tcl:25 msgid "Checkout" msgstr "Изтегляне" -#: lib/branch_checkout.tcl:29 lib/branch_create.tcl:37 lib/branch_delete.tcl:34 -#: lib/branch_rename.tcl:32 lib/browser.tcl:289 lib/checkout_op.tcl:571 -#: lib/choose_font.tcl:44 lib/merge.tcl:169 lib/option.tcl:127 -#: lib/remote_add.tcl:34 lib/remote_branch_delete.tcl:43 lib/tools_dlg.tcl:41 -#: lib/tools_dlg.tcl:202 lib/tools_dlg.tcl:345 lib/transport.tcl:141 msgid "Cancel" msgstr "Отказване" -#: lib/branch_checkout.tcl:34 lib/browser.tcl:294 lib/tools_dlg.tcl:321 msgid "Revision" msgstr "Версия" -#: lib/branch_checkout.tcl:38 lib/branch_create.tcl:67 lib/option.tcl:298 msgid "Options" msgstr "Опции" -#: lib/branch_checkout.tcl:41 lib/branch_create.tcl:90 msgid "Fetch Tracking Branch" msgstr "Изтегляне на промените от следения клон" -#: lib/branch_checkout.tcl:46 msgid "Detach From Local Branch" msgstr "Изтриване от локалния клон" -#: lib/branch_create.tcl:23 #, tcl-format msgid "%s (%s): Create Branch" msgstr "%s (%s): Създаване на клон" -#: lib/branch_create.tcl:28 msgid "Create New Branch" msgstr "Създаване на нов клон" -#: lib/branch_create.tcl:33 lib/choose_repository.tcl:353 msgid "Create" msgstr "Създаване" -#: lib/branch_create.tcl:42 msgid "Branch Name" msgstr "Име на клона" -#: lib/branch_create.tcl:44 lib/remote_add.tcl:41 lib/tools_dlg.tcl:51 msgid "Name:" msgstr "Име:" -#: lib/branch_create.tcl:56 msgid "Match Tracking Branch Name" msgstr "Съвпадане по името на следения клон" -#: lib/branch_create.tcl:64 msgid "Starting Revision" msgstr "Начална версия" -#: lib/branch_create.tcl:70 msgid "Update Existing Branch:" msgstr "Обновяване на съществуващ клон:" -#: lib/branch_create.tcl:73 msgid "No" msgstr "Не" -#: lib/branch_create.tcl:78 msgid "Fast Forward Only" msgstr "Само тривиално превъртащо сливане" -#: lib/branch_create.tcl:83 lib/checkout_op.tcl:563 msgid "Reset" msgstr "Отначало" -#: lib/branch_create.tcl:95 msgid "Checkout After Creation" msgstr "Преминаване към клона след създаването му" -#: lib/branch_create.tcl:130 msgid "Please select a tracking branch." msgstr "Изберете клон за следени." -#: lib/branch_create.tcl:139 #, tcl-format msgid "Tracking branch %s is not a branch in the remote repository." msgstr "Следящият клон — „%s“, не съществува в отдалеченото хранилище." -#: lib/branch_create.tcl:152 lib/branch_rename.tcl:88 msgid "Please supply a branch name." msgstr "Дайте име на клона." -#: lib/branch_create.tcl:163 lib/branch_rename.tcl:108 #, tcl-format msgid "'%s' is not an acceptable branch name." msgstr "„%s“ не може да се използва за име на клон." -#: lib/branch_delete.tcl:16 #, tcl-format msgid "%s (%s): Delete Branch" msgstr "%s (%s): Изтриване на клон" -#: lib/branch_delete.tcl:21 msgid "Delete Local Branch" msgstr "Изтриване на локален клон" -#: lib/branch_delete.tcl:39 msgid "Local Branches" msgstr "Локални клони" -#: lib/branch_delete.tcl:51 msgid "Delete Only If Merged Into" msgstr "Изтриване, само ако промените са слети и другаде" -#: lib/branch_delete.tcl:53 lib/remote_branch_delete.tcl:116 msgid "Always (Do not perform merge checks)" msgstr "Винаги (без проверка за сливане)" -#: lib/branch_delete.tcl:103 #, tcl-format msgid "The following branches are not completely merged into %s:" msgstr "Не всички промени в клоните са слети в „%s“:" -#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:214 msgid "" "Recovering deleted branches is difficult.\n" "\n" @@ -821,12 +620,10 @@ msgstr "" "\n" "Сигурни ли сте, че искате да триете?" -#: lib/branch_delete.tcl:131 #, tcl-format msgid " - %s:" msgstr " — „%s:“" -#: lib/branch_delete.tcl:141 #, tcl-format msgid "" "Failed to delete branches:\n" @@ -835,100 +632,76 @@ msgstr "" "Неуспешно триене на клони:\n" "%s" -#: lib/branch_rename.tcl:15 #, tcl-format msgid "%s (%s): Rename Branch" msgstr "%s (%s): Преименуване на клон" -#: lib/branch_rename.tcl:23 msgid "Rename Branch" msgstr "Преименуване на клон" -#: lib/branch_rename.tcl:28 msgid "Rename" msgstr "Преименуване" -#: lib/branch_rename.tcl:38 msgid "Branch:" msgstr "Клон:" -#: lib/branch_rename.tcl:42 msgid "New Name:" msgstr "Ново име:" -#: lib/branch_rename.tcl:77 msgid "Please select a branch to rename." msgstr "Изберете клон за преименуване." -#: lib/branch_rename.tcl:98 lib/checkout_op.tcl:202 #, tcl-format msgid "Branch '%s' already exists." msgstr "Клонът „%s“ вече съществува." -#: lib/branch_rename.tcl:119 #, tcl-format msgid "Failed to rename '%s'." msgstr "Неуспешно преименуване на „%s“." -#: lib/browser.tcl:17 msgid "Starting..." msgstr "Стартиране…" -#: lib/browser.tcl:27 #, tcl-format msgid "%s (%s): File Browser" msgstr "%s (%s): Файлов браузър" -#: lib/browser.tcl:130 lib/browser.tcl:147 #, tcl-format msgid "Loading %s..." msgstr "Зареждане на „%s“…" -#: lib/browser.tcl:191 msgid "[Up To Parent]" msgstr "[Към родителя]" -#: lib/browser.tcl:272 #, tcl-format msgid "%s (%s): Browse Branch Files" msgstr "%s (%s): Разглеждане на файловете в клона" -#: lib/browser.tcl:279 msgid "Browse Branch Files" msgstr "Разглеждане на файловете в клона" -#: lib/browser.tcl:285 lib/choose_repository.tcl:368 -#: lib/choose_repository.tcl:454 lib/choose_repository.tcl:463 -#: lib/choose_repository.tcl:674 msgid "Browse" msgstr "Разглеждане" -#: lib/checkout_op.tcl:85 #, tcl-format msgid "Fetching %s from %s" msgstr "Доставяне на „%s“ от „%s“" -#: lib/checkout_op.tcl:133 #, tcl-format msgid "fatal: Cannot resolve %s" msgstr "фатална грешка: „%s“ не може да се открие" -#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:29 -#: lib/sshkey.tcl:55 msgid "Close" msgstr "Затваряне" -#: lib/checkout_op.tcl:175 #, tcl-format msgid "Branch '%s' does not exist." msgstr "Клонът „%s“ не съществува." -#: lib/checkout_op.tcl:194 #, tcl-format msgid "Failed to configure simplified git-pull for '%s'." msgstr "Неуспешно настройване на опростен git-pull за „%s“." -#: lib/checkout_op.tcl:229 #, tcl-format msgid "" "Branch '%s' already exists.\n" @@ -941,21 +714,17 @@ msgstr "" "Той не може да се слее тривиално до „%s“.\n" "Необходимо е сливане." -#: lib/checkout_op.tcl:243 #, tcl-format msgid "Merge strategy '%s' not supported." msgstr "Стратегия за сливане „%s“ не се поддържа." -#: lib/checkout_op.tcl:262 #, tcl-format msgid "Failed to update '%s'." msgstr "Неуспешно обновяване на „%s“." -#: lib/checkout_op.tcl:274 msgid "Staging area (index) is already locked." msgstr "Индексът вече е заключен." -#: lib/checkout_op.tcl:289 msgid "" "Last scanned state does not match repository state.\n" "\n" @@ -972,31 +741,25 @@ msgstr "" "\n" "Автоматично ще започне нова проверка.\n" -#: lib/checkout_op.tcl:345 #, tcl-format msgid "Updating working directory to '%s'..." msgstr "Работната директория се привежда към „%s“…" -#: lib/checkout_op.tcl:346 msgid "files checked out" msgstr "файла са изтеглени" -#: lib/checkout_op.tcl:378 #, tcl-format msgid "Aborted checkout of '%s' (file level merging is required)." msgstr "" "Преустановяване на изтеглянето на „%s“ (необходимо е пофайлово сливане)." -#: lib/checkout_op.tcl:379 msgid "File level merge required." msgstr "Необходимо е пофайлово сливане." -#: lib/checkout_op.tcl:383 #, tcl-format msgid "Staying on branch '%s'." msgstr "Оставане върху клона „%s“." -#: lib/checkout_op.tcl:454 msgid "" "You are no longer on a local branch.\n" "\n" @@ -1007,31 +770,25 @@ msgstr "" "\n" "Ако искате да сте на клон, създайте базиран на „Това несвързано изтегляне“." -#: lib/checkout_op.tcl:505 lib/checkout_op.tcl:509 #, tcl-format msgid "Checked out '%s'." msgstr "„%s“ е изтеглен." -#: lib/checkout_op.tcl:527 #, tcl-format msgid "Resetting '%s' to '%s' will lose the following commits:" msgstr "" "Зануляването на „%s“ към „%s“ ще доведе до загубването на следните подавания:" -#: lib/checkout_op.tcl:549 msgid "Recovering lost commits may not be easy." msgstr "Възстановяването на загубените подавания може да е трудно." -#: lib/checkout_op.tcl:554 #, tcl-format msgid "Reset '%s'?" msgstr "Зануляване на „%s“?" -#: lib/checkout_op.tcl:559 lib/merge.tcl:161 lib/tools_dlg.tcl:336 msgid "Visualize" msgstr "Визуализация" -#: lib/checkout_op.tcl:627 #, tcl-format msgid "" "Failed to set current branch.\n" @@ -1049,23 +806,18 @@ msgstr "" "Това състояние е аварийно и не трябва да се случва. Програмата „%s“ ще " "преустанови работа." -#: lib/choose_font.tcl:40 msgid "Select" msgstr "Избор" -#: lib/choose_font.tcl:54 msgid "Font Family" msgstr "Шрифт" -#: lib/choose_font.tcl:75 msgid "Font Size" msgstr "Размер" -#: lib/choose_font.tcl:92 msgid "Font Example" msgstr "Мостра" -#: lib/choose_font.tcl:104 msgid "" "This is example text.\n" "If you like this text, it can be your font." @@ -1073,181 +825,137 @@ msgstr "" "Това е примерен текст.\n" "Ако ви харесва как изглежда, изберете шрифта." -#: lib/choose_repository.tcl:35 msgid "Git Gui" msgstr "ГПИ на Git" -#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:358 msgid "Create New Repository" msgstr "Създаване на ново хранилище" -#: lib/choose_repository.tcl:100 msgid "New..." msgstr "Ново…" -#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:441 msgid "Clone Existing Repository" msgstr "Клониране на съществуващо хранилище" -#: lib/choose_repository.tcl:118 msgid "Clone..." msgstr "Клониране…" -#: lib/choose_repository.tcl:125 lib/choose_repository.tcl:664 msgid "Open Existing Repository" msgstr "Отваряне на съществуващо хранилище" -#: lib/choose_repository.tcl:131 msgid "Open..." msgstr "Отваряне…" -#: lib/choose_repository.tcl:144 msgid "Recent Repositories" msgstr "Скоро ползвани" -#: lib/choose_repository.tcl:154 msgid "Open Recent Repository:" msgstr "Отваряне на хранилище ползвано наскоро:" -#: lib/choose_repository.tcl:317 lib/choose_repository.tcl:324 #, tcl-format msgid "Failed to create repository %s:" msgstr "Неуспешно създаване на хранилището „%s“:" -#: lib/choose_repository.tcl:363 msgid "Directory:" msgstr "Директория:" -#: lib/choose_repository.tcl:393 lib/choose_repository.tcl:518 -#: lib/choose_repository.tcl:698 msgid "Git Repository" msgstr "Хранилище на Git" -#: lib/choose_repository.tcl:418 #, tcl-format msgid "Directory %s already exists." msgstr "Вече съществува директория „%s“." -#: lib/choose_repository.tcl:422 #, tcl-format msgid "File %s already exists." msgstr "Вече съществува файл „%s“." -#: lib/choose_repository.tcl:436 msgid "Clone" msgstr "Клониране" -#: lib/choose_repository.tcl:449 msgid "Source Location:" msgstr "Адрес на източника:" -#: lib/choose_repository.tcl:458 msgid "Target Directory:" msgstr "Целева директория:" -#: lib/choose_repository.tcl:468 msgid "Clone Type:" msgstr "Вид клониране:" -#: lib/choose_repository.tcl:473 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Стандартно (бързо, частично споделяне на файлове, твърди връзки)" -#: lib/choose_repository.tcl:478 msgid "Full Copy (Slower, Redundant Backup)" msgstr "Пълно (бавно, пълноценно резервно копие)" -#: lib/choose_repository.tcl:483 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Споделено (най-бързо, не се препоръчва, не прави резервно копие)" -#: lib/choose_repository.tcl:490 msgid "Recursively clone submodules too" msgstr "Рекурсивно клониране и на подмодулите" -#: lib/choose_repository.tcl:524 lib/choose_repository.tcl:704 -#: lib/choose_repository.tcl:712 #, tcl-format msgid "Not a Git repository: %s" msgstr "Това не е хранилище на Git: %s" -#: lib/choose_repository.tcl:571 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "Не се поддържат твърди връзки. Преминава се към копиране." -#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "Само локални хранилища може да се клонират стандартно" -#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "Само локални хранилища може да се клонират споделено" -#: lib/choose_repository.tcl:590 #, tcl-format msgid "Location %s already exists." msgstr "Местоположението „%s“ вече съществува." -#: lib/choose_repository.tcl:613 #, tcl-format msgid "Cloning from %s" msgstr "Клониране на „%s“" -#: lib/choose_repository.tcl:619 lib/choose_repository.tcl:625 msgid "Clone failed." msgstr "Неуспешно клониране." -#: lib/choose_repository.tcl:669 msgid "Repository:" msgstr "Хранилище:" -#: lib/choose_repository.tcl:718 #, tcl-format msgid "Failed to open repository %s:" msgstr "Неуспешно отваряне на хранилището „%s“:" -#: lib/choose_rev.tcl:52 msgid "This Detached Checkout" msgstr "Това несвързано изтегляне" -#: lib/choose_rev.tcl:59 msgid "Revision Expression:" msgstr "Израз за версия:" -#: lib/choose_rev.tcl:71 msgid "Local Branch" msgstr "Локален клон" -#: lib/choose_rev.tcl:76 msgid "Tracking Branch" msgstr "Следящ клон" -#: lib/choose_rev.tcl:81 lib/choose_rev.tcl:534 msgid "Tag" msgstr "Етикет" -#: lib/choose_rev.tcl:312 #, tcl-format msgid "Invalid revision: %s" msgstr "Неправилна версия: %s" -#: lib/choose_rev.tcl:333 msgid "No revision selected." msgstr "Не е избрана версия." -#: lib/choose_rev.tcl:341 msgid "Revision expression is empty." msgstr "Изразът за версия е празен." -#: lib/choose_rev.tcl:527 msgid "Updated" msgstr "Обновен" -#: lib/choose_rev.tcl:555 msgid "URL" msgstr "Адрес" -#: lib/commit.tcl:9 msgid "" "There is nothing to amend.\n" "\n" @@ -1259,7 +967,6 @@ msgstr "" "Ще създадете първоначалното подаване. Преди него няма други подавания, които " "да поправите.\n" -#: lib/commit.tcl:18 msgid "" "Cannot amend while merging.\n" "\n" @@ -1272,24 +979,19 @@ msgstr "" "В момента все още не сте завършили операция по сливане. Не може да поправите " "предишното подаване, освен ако първо не преустановите текущото сливане.\n" -#: lib/commit.tcl:56 msgid "Error loading commit data for amend:" msgstr "Грешка при зареждане на данните от подаване, които да се поправят:" -#: lib/commit.tcl:83 msgid "Unable to obtain your identity:" msgstr "Идентификацията ви не може да се определи:" -#: lib/commit.tcl:88 msgid "Invalid GIT_COMMITTER_IDENT:" msgstr "Неправилно поле „GIT_COMMITTER_IDENT“:" -#: lib/commit.tcl:138 #, tcl-format msgid "warning: Tcl does not support encoding '%s'." msgstr "предупреждение: Tcl не поддържа кодирането „%s“." -#: lib/commit.tcl:158 msgid "" "Last scanned state does not match repository state.\n" "\n" @@ -1306,7 +1008,6 @@ msgstr "" "\n" "Автоматично ще започне нова проверка.\n" -#: lib/commit.tcl:182 #, tcl-format msgid "" "Unmerged files cannot be committed.\n" @@ -1319,7 +1020,6 @@ msgstr "" "Във файла „%s“ има конфликти при сливане. За да го подадете, трябва първо да " "коригирате конфликтите и да добавите файла към индекса за подаване.\n" -#: lib/commit.tcl:190 #, tcl-format msgid "" "Unknown file state %s detected.\n" @@ -1330,7 +1030,6 @@ msgstr "" "\n" "Файлът „%s“ не може да се подаде чрез текущата програма.\n" -#: lib/commit.tcl:198 msgid "" "No changes to commit.\n" "\n" @@ -1340,7 +1039,6 @@ msgstr "" "\n" "Трябва да добавите поне един файл към индекса, за да подадете.\n" -#: lib/commit.tcl:222 msgid "" "Please supply a commit message.\n" "\n" @@ -1358,15 +1056,12 @@ msgstr "" "● Втори ред: празен.\n" "● Останалите редове: опишете защо се налага тази промяна.\n" -#: lib/commit.tcl:253 msgid "Calling pre-commit hook..." msgstr "Изпълняване на куката преди подаване…" -#: lib/commit.tcl:268 msgid "Commit declined by pre-commit hook." msgstr "Подаването е отхвърлено от куката преди подаване." -#: lib/commit.tcl:287 msgid "" "You are about to commit on a detached head. This is a potentially dangerous " "thing to do because if you switch to another branch you will lose your " @@ -1382,32 +1077,25 @@ msgstr "" " \n" "Сигурни ли сте, че искате да извършите текущото подаване?" -#: lib/commit.tcl:308 msgid "Calling commit-msg hook..." msgstr "Изпълняване на куката за съобщението при подаване…" -#: lib/commit.tcl:323 msgid "Commit declined by commit-msg hook." msgstr "Подаването е отхвърлено от куката за съобщението при подаване." -#: lib/commit.tcl:336 msgid "Committing changes..." msgstr "Подаване на промените…" -#: lib/commit.tcl:354 msgid "write-tree failed:" msgstr "неуспешно запазване на дървото (write-tree):" -#: lib/commit.tcl:355 lib/commit.tcl:405 lib/commit.tcl:432 msgid "Commit failed." msgstr "Неуспешно подаване." -#: lib/commit.tcl:372 #, tcl-format msgid "Commit %s appears to be corrupt" msgstr "Подаването „%s“ изглежда повредено" -#: lib/commit.tcl:377 msgid "" "No changes to commit.\n" "\n" @@ -1422,83 +1110,63 @@ msgstr "" "\n" "Автоматично ще започне нова проверка.\n" -#: lib/commit.tcl:384 msgid "No changes to commit." msgstr "Няма промени за подаване." -#: lib/commit.tcl:404 msgid "commit-tree failed:" msgstr "неуспешно подаване на дървото (commit-tree):" -#: lib/commit.tcl:431 msgid "update-ref failed:" msgstr "неуспешно обновяване на указателите (update-ref):" -#: lib/commit.tcl:525 #, tcl-format msgid "Created commit %s: %s" msgstr "Успешно подаване %s: %s" -#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "В момента се извършва действие, изчакайте…" -#: lib/console.tcl:185 msgid "Success" msgstr "Успех" -#: lib/console.tcl:199 msgid "Error: Command Failed" msgstr "Грешка: неуспешно изпълнение на команда" -#: lib/database.tcl:41 msgid "Number of loose objects" msgstr "Брой непакетирани обекти" -#: lib/database.tcl:42 msgid "Disk space used by loose objects" msgstr "Дисково пространство заето от непакетирани обекти" -#: lib/database.tcl:43 msgid "Number of packed objects" msgstr "Брой пакетирани обекти" -#: lib/database.tcl:44 msgid "Number of packs" msgstr "Брой пакети" -#: lib/database.tcl:45 msgid "Disk space used by packed objects" msgstr "Дисково пространство заето от пакетирани обекти" -#: lib/database.tcl:46 msgid "Packed objects waiting for pruning" msgstr "Пакетирани обекти за окастряне" -#: lib/database.tcl:47 msgid "Garbage files" msgstr "Файлове за боклука" -#: lib/database.tcl:56 lib/option.tcl:182 lib/option.tcl:197 lib/option.tcl:220 -#: lib/option.tcl:270 #, tcl-format msgid "%s:" msgstr "%s:" -#: lib/database.tcl:65 #, tcl-format msgid "%s (%s): Database Statistics" msgstr "%s (%s): Статистика на базата от данни" -#: lib/database.tcl:71 msgid "Compressing the object database" msgstr "Компресиране на базата с данни за обектите" -#: lib/database.tcl:82 msgid "Verifying the object database with fsck-objects" msgstr "Проверка на базата с данни за обектите с програмата „fsck-objects“" -#: lib/database.tcl:106 #, tcl-format msgid "" "This repository currently has approximately %i loose objects.\n" @@ -1515,12 +1183,10 @@ msgstr "" "\n" "Да се започне ли компресирането?" -#: lib/date.tcl:25 #, tcl-format msgid "Invalid date from Git: %s" msgstr "Неправилни данни от Git: %s" -#: lib/diff.tcl:72 msgid "" "* No differences detected; stage the file to de-list it from Unstaged " "Changes.\n" @@ -1528,16 +1194,13 @@ msgstr "" "● Няма разлики. Добавете файла към индекса, за да се извади от промените " "извън индекса.\n" -#: lib/diff.tcl:73 msgid "* Click to find other files that may have the same state.\n" msgstr "● Натиснете, за да потърсите други файлове в това състояние.\n" -#: lib/diff.tcl:104 #, tcl-format msgid "Loading diff of %s..." msgstr "Зареждане на разликите в „%s“…" -#: lib/diff.tcl:130 msgid "" "LOCAL: deleted\n" "REMOTE:\n" @@ -1545,7 +1208,6 @@ msgstr "" "ЛОКАЛНО: изтрит\n" "ОТДАЛЕЧЕНО:\n" -#: lib/diff.tcl:135 msgid "" "REMOTE: deleted\n" "LOCAL:\n" @@ -1553,32 +1215,25 @@ msgstr "" "ОТДАЛЕЧЕНО: изтрит\n" "ЛОКАЛНО:\n" -#: lib/diff.tcl:142 msgid "LOCAL:\n" msgstr "ЛОКАЛНО:\n" -#: lib/diff.tcl:145 msgid "REMOTE:\n" msgstr "ОТДАЛЕЧЕНО:\n" -#: lib/diff.tcl:207 lib/diff.tcl:318 #, tcl-format msgid "Unable to display %s" msgstr "Файлът „%s“ не може да се покаже" -#: lib/diff.tcl:208 msgid "Error loading file:" msgstr "Грешка при зареждане на файл:" -#: lib/diff.tcl:214 msgid "Git Repository (subproject)" msgstr "Хранилище на Git (подмодул)" -#: lib/diff.tcl:226 msgid "* Binary file (not showing content)." msgstr "● Двоичен файл (съдържанието не се показва)." -#: lib/diff.tcl:231 #, tcl-format msgid "" "* Untracked file is %d bytes.\n" @@ -1587,7 +1242,6 @@ msgstr "" "● Неследеният файл е %d байта.\n" "● Показват се само първите %d байта.\n" -#: lib/diff.tcl:237 #, tcl-format msgid "" "\n" @@ -1598,80 +1252,62 @@ msgstr "" "● Неследеният файл е отрязан дотук от програмата „%s“.\n" "● Използвайте външен редактор, за да видите целия файл.\n" -#: lib/diff.tcl:554 msgid "Failed to unstage selected hunk." msgstr "Избраното парче не може да се извади от индекса." -#: lib/diff.tcl:562 msgid "Failed to revert selected hunk." msgstr "Избраното парче не може да се върне." -#: lib/diff.tcl:565 msgid "Failed to stage selected hunk." msgstr "Избраното парче не може да се добави към индекса." -#: lib/diff.tcl:658 msgid "Failed to unstage selected line." msgstr "Избраният ред не може да се извади от индекса." -#: lib/diff.tcl:667 msgid "Failed to revert selected line." msgstr "Избраният ред не може да се върне." -#: lib/diff.tcl:671 msgid "Failed to stage selected line." msgstr "Избраният ред не може да се добави към индекса." -#: lib/diff.tcl:860 msgid "Failed to undo last revert." msgstr "Неуспешна отмяна на последното връщане." -#: lib/encoding.tcl:443 msgid "Default" msgstr "Стандартното" -#: lib/encoding.tcl:448 #, tcl-format msgid "System (%s)" msgstr "Системното (%s)" -#: lib/encoding.tcl:459 lib/encoding.tcl:465 msgid "Other" msgstr "Друго" -#: lib/error.tcl:20 #, tcl-format msgid "%s: error" msgstr "%s: грешка" -#: lib/error.tcl:36 #, tcl-format msgid "%s: warning" msgstr "%s: предупреждение" -#: lib/error.tcl:79 #, tcl-format msgid "%s hook failed:" msgstr "%s: грешка от куката" -#: lib/error.tcl:95 msgid "You must correct the above errors before committing." msgstr "Преди да можете да подадете, коригирайте горните грешки." -#: lib/error.tcl:115 #, tcl-format msgid "%s (%s): error" msgstr "%s (%s): грешка" -#: lib/index.tcl:6 msgid "Unable to unlock the index." msgstr "Индексът не може да се отключи." -#: lib/index.tcl:28 msgid "Index Error" msgstr "Грешка в индекса" -#: lib/index.tcl:30 msgid "" "Updating the Git index failed. A rescan will be automatically started to " "resynchronize git-gui." @@ -1679,123 +1315,96 @@ msgstr "" "Неуспешно обновяване на индекса на Git. Автоматично ще започне нова проверка " "за синхронизирането на git-gui." -#: lib/index.tcl:41 msgid "Continue" msgstr "Продължаване" -#: lib/index.tcl:44 msgid "Unlock Index" msgstr "Отключване на индекса" -#: lib/index.tcl:75 lib/index.tcl:144 lib/index.tcl:218 lib/index.tcl:587 msgid "files" msgstr "файлове" -#: lib/index.tcl:324 msgid "Unstaging selected files from commit" msgstr "Изваждане на избраните файлове от подаването" -#: lib/index.tcl:328 #, tcl-format msgid "Unstaging %s from commit" msgstr "Изваждане на „%s“ от подаването" -#: lib/index.tcl:367 msgid "Ready to commit." msgstr "Готовност за подаване." -#: lib/index.tcl:376 msgid "Adding selected files" msgstr "Добавяне на избраните файлове" -#: lib/index.tcl:380 #, tcl-format msgid "Adding %s" msgstr "Добавяне на „%s“" -#: lib/index.tcl:410 #, tcl-format msgid "Stage %d untracked files?" msgstr "Да се добавят ли %d неследени файла към индекса?" -#: lib/index.tcl:418 msgid "Adding all changed files" msgstr "Добавяне на всички променени файлове" -#: lib/index.tcl:501 #, tcl-format msgid "Revert changes in file %s?" msgstr "Да се махнат ли промените във файла „%s“?" -#: lib/index.tcl:506 #, tcl-format msgid "Revert changes in these %i files?" msgstr "Да се махнат ли промените в тези %i файла?" -#: lib/index.tcl:515 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" "Всички промени, които не са били добавени в индекса, ще се загубят " "безвъзвратно." -#: lib/index.tcl:518 lib/index.tcl:562 msgid "Do Nothing" msgstr "Нищо да не се прави" -#: lib/index.tcl:544 #, tcl-format msgid "Delete untracked file %s?" msgstr "Да се изтрие ли неследеният файл „%s“?" -#: lib/index.tcl:549 #, tcl-format msgid "Delete these %i untracked files?" msgstr "Да се изтрият ли тези %d неследени файла?" -#: lib/index.tcl:559 msgid "Files will be permanently deleted." msgstr "Файловете ще се изтрият окончателно." -#: lib/index.tcl:563 msgid "Delete Files" msgstr "Изтриване на файлове" -#: lib/index.tcl:586 msgid "Deleting" msgstr "Изтриване" -#: lib/index.tcl:665 msgid "Encountered errors deleting files:\n" msgstr "Грешки при изтриване на файловете:\n" -#: lib/index.tcl:674 #, tcl-format msgid "None of the %d selected files could be deleted." msgstr "Никой от избраните %d файла не бе изтрит." -#: lib/index.tcl:679 #, tcl-format msgid "%d of the %d selected files could not be deleted." msgstr "%d от избраните %d файла не бяха изтрити." -#: lib/index.tcl:726 msgid "Reverting selected files" msgstr "Махане на промените в избраните файлове" -#: lib/index.tcl:730 #, tcl-format msgid "Reverting %s" msgstr "Махане на промените в „%s“" -#: lib/line.tcl:16 msgid "Goto Line:" msgstr "Към ред:" -#: lib/line.tcl:22 msgid "Go" msgstr "Към" -#: lib/merge.tcl:13 msgid "" "Cannot merge while amending.\n" "\n" @@ -1806,7 +1415,6 @@ msgstr "" "Трябва да завършите поправянето на текущото подаване, преди да започнете " "сливане.\n" -#: lib/merge.tcl:27 msgid "" "Last scanned state does not match repository state.\n" "\n" @@ -1823,7 +1431,6 @@ msgstr "" "Автоматично ще започне нова проверка.\n" "\n" -#: lib/merge.tcl:45 #, tcl-format msgid "" "You are in the middle of a conflicted merge.\n" @@ -1841,7 +1448,6 @@ msgstr "" "завършите текущото сливане чрез подаване. Чак тогава може да започнете ново " "сливане.\n" -#: lib/merge.tcl:55 #, tcl-format msgid "" "You are in the middle of a change.\n" @@ -1858,39 +1464,31 @@ msgstr "" "Трябва да завършите текущото подаване, преди да започнете сливане. Така ще " "можете лесно да преустановите сливането, ако възникне нужда.\n" -#: lib/merge.tcl:108 #, tcl-format msgid "%s of %s" msgstr "%s от общо %s" -#: lib/merge.tcl:117 #, tcl-format msgid "Merging %s and %s..." msgstr "Сливане на „%s“ и „%s“…" -#: lib/merge.tcl:128 msgid "Merge completed successfully." msgstr "Сливането завърши успешно." -#: lib/merge.tcl:130 msgid "Merge failed. Conflict resolution is required." msgstr "Неуспешно сливане — има конфликти за коригиране." -#: lib/merge.tcl:147 #, tcl-format msgid "%s (%s): Merge" msgstr "%s (%s): Сливане" -#: lib/merge.tcl:155 #, tcl-format msgid "Merge Into %s" msgstr "Сливане в „%s“" -#: lib/merge.tcl:174 msgid "Revision To Merge" msgstr "Версия за сливане" -#: lib/merge.tcl:209 msgid "" "Cannot abort while amending.\n" "\n" @@ -1900,7 +1498,6 @@ msgstr "" "\n" "Трябва да завършите поправката на това подаване.\n" -#: lib/merge.tcl:219 msgid "" "Abort merge?\n" "\n" @@ -1914,7 +1511,6 @@ msgstr "" "\n" "Наистина ли да се преустанови сливането?" -#: lib/merge.tcl:225 msgid "" "Reset changes?\n" "\n" @@ -1928,35 +1524,27 @@ msgstr "" "\n" "Наистина ли да се занулят промените?" -#: lib/merge.tcl:237 msgid "Aborting" msgstr "Преустановяване" -#: lib/merge.tcl:238 msgid "files reset" msgstr "файла със занулени промени" -#: lib/merge.tcl:268 msgid "Abort failed." msgstr "Неуспешно преустановяване." -#: lib/merge.tcl:270 msgid "Abort completed. Ready." msgstr "Успешно преустановяване. Готовност за следващо действие." -#: lib/mergetool.tcl:8 msgid "Force resolution to the base version?" msgstr "Да се използва базовата версия" -#: lib/mergetool.tcl:9 msgid "Force resolution to this branch?" msgstr "Да се използва версията от този клон" -#: lib/mergetool.tcl:10 msgid "Force resolution to the other branch?" msgstr "Да се използва версията от другия клон" -#: lib/mergetool.tcl:14 #, tcl-format msgid "" "Note that the diff shows only conflicting changes.\n" @@ -1971,34 +1559,28 @@ msgstr "" "\n" "Тази операция може да се отмени само чрез започване на сливането наново." -#: lib/mergetool.tcl:45 #, tcl-format msgid "File %s seems to have unresolved conflicts, still stage?" msgstr "" "Изглежда, че все още има некоригирани конфликти във файла „%s“. Да се добави " "ли файлът към индекса?" -#: lib/mergetool.tcl:60 #, tcl-format msgid "Adding resolution for %s" msgstr "Добавяне на корекция на конфликтите в „%s“" -#: lib/mergetool.tcl:141 msgid "Cannot resolve deletion or link conflicts using a tool" msgstr "" "Конфликтите при символни връзки или изтриване не може да се коригират с " "външна програма." -#: lib/mergetool.tcl:146 msgid "Conflict file does not exist" msgstr "Файлът, в който е конфликтът, не съществува" -#: lib/mergetool.tcl:246 #, tcl-format msgid "Not a GUI merge tool: '%s'" msgstr "Това не е графична програма за сливане: „%s“" -#: lib/mergetool.tcl:278 #, tcl-format msgid "" "Unable to process square brackets in \"mergetool.%s.cmd\" configuration " @@ -2010,7 +1592,6 @@ msgstr "" "\n" "Махнете ги." -#: lib/mergetool.tcl:289 #, tcl-format msgid "" "Unsupported merge tool '%s'.\n" @@ -2023,11 +1604,9 @@ msgstr "" "За да я използвате, настройте „mergetool.%s.cmd“ както както е обяснено в " "страницата на ръководството за „git-config“." -#: lib/mergetool.tcl:327 msgid "Merge tool is already running, terminate it?" msgstr "Програмата за сливане вече е стартирана. Да се изключи ли?" -#: lib/mergetool.tcl:347 #, tcl-format msgid "" "Error retrieving versions:\n" @@ -2036,7 +1615,6 @@ msgstr "" "Грешка при изтеглянето на версии:\n" "%s" -#: lib/mergetool.tcl:367 #, tcl-format msgid "" "Could not start the merge tool:\n" @@ -2047,277 +1625,211 @@ msgstr "" "\n" "%s" -#: lib/mergetool.tcl:371 msgid "Running merge tool..." msgstr "Стартиране на програмата за сливане…" -#: lib/mergetool.tcl:399 lib/mergetool.tcl:407 msgid "Merge tool failed." msgstr "Грешка в програмата за сливане." -#: lib/option.tcl:11 #, tcl-format msgid "Invalid global encoding '%s'" msgstr "Неправилно глобално кодиране „%s“" -#: lib/option.tcl:19 #, tcl-format msgid "Invalid repo encoding '%s'" msgstr "Неправилно кодиране „%s“ на хранилището" -#: lib/option.tcl:119 msgid "Restore Defaults" msgstr "Стандартни настройки" -#: lib/option.tcl:123 msgid "Save" msgstr "Запазване" -#: lib/option.tcl:133 #, tcl-format msgid "%s Repository" msgstr "Хранилище „%s“" -#: lib/option.tcl:134 msgid "Global (All Repositories)" msgstr "Глобално (за всички хранилища)" -#: lib/option.tcl:140 msgid "User Name" msgstr "Потребителско име" -#: lib/option.tcl:141 msgid "Email Address" msgstr "Адрес на е-поща" -#: lib/option.tcl:143 msgid "Summarize Merge Commits" msgstr "Обобщаване на подаванията при сливане" -#: lib/option.tcl:144 msgid "Merge Verbosity" msgstr "Подробности при сливанията" -#: lib/option.tcl:145 msgid "Show Diffstat After Merge" msgstr "Извеждане на статистика след сливанията" -#: lib/option.tcl:146 msgid "Use Merge Tool" msgstr "Използване на програма за сливане" -#: lib/option.tcl:148 msgid "Trust File Modification Timestamps" msgstr "Доверие във времето на промяна на файловете" -#: lib/option.tcl:149 msgid "Prune Tracking Branches During Fetch" msgstr "Окастряне на следящите клонове при доставяне" -#: lib/option.tcl:150 msgid "Match Tracking Branches" msgstr "Напасване на следящите клонове" -#: lib/option.tcl:151 msgid "Use Textconv For Diffs and Blames" msgstr "Използване на „textconv“ за разликите и анотирането" -#: lib/option.tcl:152 msgid "Blame Copy Only On Changed Files" msgstr "Анотиране на копието само по променените файлове" -#: lib/option.tcl:153 msgid "Maximum Length of Recent Repositories List" msgstr "Максимален брой на списъка „Скоро ползвани“ хранилища" -#: lib/option.tcl:154 msgid "Minimum Letters To Blame Copy On" msgstr "Минимален брой знаци за анотиране на копието" -#: lib/option.tcl:155 msgid "Blame History Context Radius (days)" msgstr "Исторически обхват за анотиране в дни" -#: lib/option.tcl:156 msgid "Number of Diff Context Lines" msgstr "Брой редове за контекста на разликите" -#: lib/option.tcl:157 msgid "Additional Diff Parameters" msgstr "Аргументи към командата за разликите" -#: lib/option.tcl:158 msgid "Commit Message Text Width" msgstr "Широчина на текста на съобщението при подаване" -#: lib/option.tcl:159 msgid "New Branch Name Template" msgstr "Шаблон за името на новите клони" -#: lib/option.tcl:160 msgid "Default File Contents Encoding" msgstr "Кодиране на файловете" -#: lib/option.tcl:161 msgid "Warn before committing to a detached head" msgstr "Предупреждаване при подаване към несвързан указател" -#: lib/option.tcl:162 msgid "Staging of untracked files" msgstr "Добавяне на неследените файлове към индекса" -#: lib/option.tcl:163 msgid "Show untracked files" msgstr "Показване на неследените файлове" -#: lib/option.tcl:164 msgid "Tab spacing" msgstr "Ширина на табулацията" -#: lib/option.tcl:210 msgid "Change" msgstr "Смяна" -#: lib/option.tcl:248 msgid "Spelling Dictionary:" msgstr "Правописен речник:" -#: lib/option.tcl:272 msgid "Change Font" msgstr "Смяна на шрифта" -#: lib/option.tcl:276 #, tcl-format msgid "Choose %s" msgstr "Избор на „%s“" -#: lib/option.tcl:282 msgid "pt." msgstr "тчк." -#: lib/option.tcl:296 msgid "Preferences" msgstr "Настройки" -#: lib/option.tcl:333 msgid "Failed to completely save options:" msgstr "Неуспешно запазване на настройките:" -#: lib/remote_add.tcl:20 #, tcl-format msgid "%s (%s): Add Remote" msgstr "%s (%s): Добавяне на отдалечено хранилище" -#: lib/remote_add.tcl:25 msgid "Add New Remote" msgstr "Добавяне на отдалечено хранилище" -#: lib/remote_add.tcl:30 lib/tools_dlg.tcl:37 msgid "Add" msgstr "Добавяне" -#: lib/remote_add.tcl:39 msgid "Remote Details" msgstr "Данни за отдалеченото хранилище" -#: lib/remote_add.tcl:50 msgid "Location:" msgstr "Местоположение:" -#: lib/remote_add.tcl:60 msgid "Further Action" msgstr "Следващо действие" -#: lib/remote_add.tcl:63 msgid "Fetch Immediately" msgstr "Незабавно доставяне" -#: lib/remote_add.tcl:69 msgid "Initialize Remote Repository and Push" msgstr "Инициализиране на отдалеченото хранилище и изтласкване на промените" -#: lib/remote_add.tcl:75 msgid "Do Nothing Else Now" msgstr "Да не се прави нищо" -#: lib/remote_add.tcl:100 msgid "Please supply a remote name." msgstr "Задайте име за отдалеченото хранилище." -#: lib/remote_add.tcl:113 #, tcl-format msgid "'%s' is not an acceptable remote name." msgstr "Отдалечено хранилище не може да се казва „%s“." -#: lib/remote_add.tcl:124 #, tcl-format msgid "Failed to add remote '%s' of location '%s'." msgstr "Неуспешно добавяне на отдалеченото хранилище „%s“ от адрес „%s“." -#: lib/remote_add.tcl:132 lib/transport.tcl:6 #, tcl-format msgid "fetch %s" msgstr "доставяне на „%s“" -#: lib/remote_add.tcl:133 #, tcl-format msgid "Fetching the %s" msgstr "Доставяне на „%s“" -#: lib/remote_add.tcl:156 #, tcl-format msgid "Do not know how to initialize repository at location '%s'." msgstr "Хранилището с местоположение „%s“ не може да се инициализира." -#: lib/remote_add.tcl:162 lib/transport.tcl:54 lib/transport.tcl:92 -#: lib/transport.tcl:110 #, tcl-format msgid "push %s" msgstr "изтласкване на „%s“" -#: lib/remote_add.tcl:163 #, tcl-format msgid "Setting up the %s (at %s)" msgstr "Добавяне на хранилище „%s“ (с адрес „%s“)" -#: lib/remote_branch_delete.tcl:29 #, tcl-format msgid "%s (%s): Delete Branch Remotely" msgstr "%s (%s): Изтриване на отдалечения клон" -#: lib/remote_branch_delete.tcl:34 msgid "Delete Branch Remotely" msgstr "Изтриване на отдалечения клон" -#: lib/remote_branch_delete.tcl:48 msgid "From Repository" msgstr "От хранилище" -#: lib/remote_branch_delete.tcl:51 lib/transport.tcl:165 msgid "Remote:" msgstr "Отдалечено хранилище:" -#: lib/remote_branch_delete.tcl:68 lib/transport.tcl:183 msgid "Arbitrary Location:" msgstr "Произволно местоположение:" -#: lib/remote_branch_delete.tcl:84 msgid "Branches" msgstr "Клони" -#: lib/remote_branch_delete.tcl:106 msgid "Delete Only If" msgstr "Изтриване, само ако" -#: lib/remote_branch_delete.tcl:108 msgid "Merged Into:" msgstr "Слят в:" -#: lib/remote_branch_delete.tcl:149 msgid "A branch is required for 'Merged Into'." msgstr "За данните „Слят в“ е необходимо да зададете клон." -#: lib/remote_branch_delete.tcl:181 #, tcl-format msgid "" "The following branches are not completely merged into %s:\n" @@ -2328,7 +1840,6 @@ msgstr "" "\n" " ● %s" -#: lib/remote_branch_delete.tcl:186 #, tcl-format msgid "" "One or more of the merge tests failed because you have not fetched the " @@ -2337,140 +1848,107 @@ msgstr "" "Поне една от пробите за сливане е неуспешна, защото не сте доставили всички " "необходими подавания. Пробвайте първо да доставите подаванията от „%s“." -#: lib/remote_branch_delete.tcl:204 msgid "Please select one or more branches to delete." msgstr "Изберете поне един клон за изтриване." -#: lib/remote_branch_delete.tcl:223 #, tcl-format msgid "Deleting branches from %s" msgstr "Изтриване на клони от „%s“" -#: lib/remote_branch_delete.tcl:296 msgid "No repository selected." msgstr "Не е избрано хранилище." -#: lib/remote_branch_delete.tcl:301 #, tcl-format msgid "Scanning %s..." msgstr "Претърсване на „%s“…" -#: lib/remote.tcl:200 msgid "Push to" msgstr "Изтласкване към" -#: lib/remote.tcl:218 msgid "Remove Remote" msgstr "Премахване на отдалечено хранилище" -#: lib/remote.tcl:223 msgid "Prune from" msgstr "Окастряне от" -#: lib/remote.tcl:228 msgid "Fetch from" msgstr "Доставяне от" -#: lib/remote.tcl:247 lib/remote.tcl:251 lib/remote.tcl:256 lib/remote.tcl:262 msgid "All" msgstr "Всички" -#: lib/search.tcl:47 msgid "Find:" msgstr "Търсене:" -#: lib/search.tcl:49 msgid "Next" msgstr "Следваща поява" -#: lib/search.tcl:50 msgid "Prev" msgstr "Предишна поява" -#: lib/search.tcl:51 msgid "RegExp" msgstr "РегИзр" -#: lib/search.tcl:53 msgid "Case" msgstr "Главни/Малки" -#: lib/shortcut.tcl:8 lib/shortcut.tcl:40 lib/shortcut.tcl:72 #, tcl-format msgid "%s (%s): Create Desktop Icon" msgstr "%s (%s): Добавяне на икона на работния плот" -#: lib/shortcut.tcl:24 lib/shortcut.tcl:62 msgid "Cannot write shortcut:" msgstr "Клавишната комбинация не може да се запази:" -#: lib/shortcut.tcl:137 msgid "Cannot write icon:" msgstr "Иконата не може да се запази:" -#: lib/spellcheck.tcl:57 msgid "Unsupported spell checker" msgstr "Тази програма за проверка на правописа не се поддържа" -#: lib/spellcheck.tcl:65 msgid "Spell checking is unavailable" msgstr "Липсва програма за проверка на правописа" -#: lib/spellcheck.tcl:68 msgid "Invalid spell checking configuration" msgstr "Неправилни настройки на проверката на правописа" -#: lib/spellcheck.tcl:70 #, tcl-format msgid "Reverting dictionary to %s." msgstr "Ползване на речник за език „%s“." -#: lib/spellcheck.tcl:73 msgid "Spell checker silently failed on startup" msgstr "Програмата за правопис даже не стартира успешно." -#: lib/spellcheck.tcl:80 msgid "Unrecognized spell checker" msgstr "Непозната програма за проверка на правописа" -#: lib/spellcheck.tcl:186 msgid "No Suggestions" msgstr "Няма предложения" -#: lib/spellcheck.tcl:388 msgid "Unexpected EOF from spell checker" msgstr "Неочакван край на файл от програмата за проверка на правописа" -#: lib/spellcheck.tcl:392 msgid "Spell Checker Failed" msgstr "Грешка в програмата за проверка на правописа" -#: lib/sshkey.tcl:34 msgid "No keys found." msgstr "Не са открити ключове." -#: lib/sshkey.tcl:37 #, tcl-format msgid "Found a public key in: %s" msgstr "Открит е публичен ключ в „%s“" -#: lib/sshkey.tcl:43 msgid "Generate Key" msgstr "Генериране на ключ" -#: lib/sshkey.tcl:58 msgid "Copy To Clipboard" msgstr "Копиране към системния буфер" -#: lib/sshkey.tcl:72 msgid "Your OpenSSH Public Key" msgstr "Публичният ви ключ за OpenSSH" -#: lib/sshkey.tcl:80 msgid "Generating..." msgstr "Генериране…" -#: lib/sshkey.tcl:87 #, tcl-format msgid "" "Could not start ssh-keygen:\n" @@ -2481,81 +1959,63 @@ msgstr "" "\n" "%s" -#: lib/sshkey.tcl:114 msgid "Generation failed." msgstr "Неуспешно генериране." -#: lib/sshkey.tcl:121 msgid "Generation succeeded, but no keys found." msgstr "Генерирането завърши успешно, а не са намерени ключове." -#: lib/sshkey.tcl:124 #, tcl-format msgid "Your key is in: %s" msgstr "Ключът ви е в „%s“" -#: lib/status_bar.tcl:258 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" msgstr "%s… %*i от общо %*i %s (%3i%%)" -#: lib/tools_dlg.tcl:22 #, tcl-format msgid "%s (%s): Add Tool" msgstr "%s (%s): Добавяне на команда" -#: lib/tools_dlg.tcl:28 msgid "Add New Tool Command" msgstr "Добавяне на команда" -#: lib/tools_dlg.tcl:34 msgid "Add globally" msgstr "Глобално добавяне" -#: lib/tools_dlg.tcl:46 msgid "Tool Details" msgstr "Подробности за командата" -#: lib/tools_dlg.tcl:49 msgid "Use '/' separators to create a submenu tree:" msgstr "За създаване на подменюта използвайте знака „/“ за разделител:" -#: lib/tools_dlg.tcl:60 msgid "Command:" msgstr "Команда:" -#: lib/tools_dlg.tcl:71 msgid "Show a dialog before running" msgstr "Преди изпълнение да се извежда диалогов прозорец" -#: lib/tools_dlg.tcl:77 msgid "Ask the user to select a revision (sets $REVISION)" msgstr "Потребителят да укаже версия (задаване на променливата $REVISION)" -#: lib/tools_dlg.tcl:82 msgid "Ask the user for additional arguments (sets $ARGS)" msgstr "" "Потребителят да укаже допълнителни аргументи (задаване на променливата $ARGS)" -#: lib/tools_dlg.tcl:89 msgid "Don't show the command output window" msgstr "Без показване на прозорец с изхода от командата" -#: lib/tools_dlg.tcl:94 msgid "Run only if a diff is selected ($FILENAME not empty)" msgstr "" "Стартиране само след избор на разлика (променливата $FILENAME не е празна)" -#: lib/tools_dlg.tcl:118 msgid "Please supply a name for the tool." msgstr "Задайте име за командата." -#: lib/tools_dlg.tcl:126 #, tcl-format msgid "Tool '%s' already exists." msgstr "Командата „%s“ вече съществува." -#: lib/tools_dlg.tcl:148 #, tcl-format msgid "" "Could not add tool:\n" @@ -2564,154 +2024,121 @@ msgstr "" "Командата не може да се добави:\n" "%s" -#: lib/tools_dlg.tcl:187 #, tcl-format msgid "%s (%s): Remove Tool" msgstr "%s (%s): Премахване на команда" -#: lib/tools_dlg.tcl:193 msgid "Remove Tool Commands" msgstr "Премахване на команди" -#: lib/tools_dlg.tcl:198 msgid "Remove" msgstr "Премахване" -#: lib/tools_dlg.tcl:231 msgid "(Blue denotes repository-local tools)" msgstr "(командите към локалното хранилище са обозначени в синьо)" -#: lib/tools_dlg.tcl:283 #, tcl-format msgid "%s (%s):" msgstr "%s (%s):" -#: lib/tools_dlg.tcl:292 #, tcl-format msgid "Run Command: %s" msgstr "Изпълнение на командата „%s“" -#: lib/tools_dlg.tcl:306 msgid "Arguments" msgstr "Аргументи" -#: lib/tools_dlg.tcl:341 msgid "OK" msgstr "Добре" -#: lib/tools.tcl:76 #, tcl-format msgid "Running %s requires a selected file." msgstr "За изпълнението на „%s“ трябва да изберете файл." -#: lib/tools.tcl:92 #, tcl-format msgid "Are you sure you want to run %1$s on file \"%2$s\"?" msgstr "Сигурни ли сте, че искате да изпълните „%1$s“ върху файла „%2$s“?" -#: lib/tools.tcl:96 #, tcl-format msgid "Are you sure you want to run %s?" msgstr "Сигурни ли сте, че искате да изпълните „%s“?" -#: lib/tools.tcl:118 #, tcl-format msgid "Tool: %s" msgstr "Команда: %s" -#: lib/tools.tcl:119 #, tcl-format msgid "Running: %s" msgstr "Изпълнение: %s" -#: lib/tools.tcl:157 #, tcl-format msgid "Tool completed successfully: %s" msgstr "Командата завърши успешно: %s" -#: lib/tools.tcl:159 #, tcl-format msgid "Tool failed: %s" msgstr "Командата върна грешка: %s" -#: lib/transport.tcl:7 #, tcl-format msgid "Fetching new changes from %s" msgstr "Доставяне на промените от „%s“" -#: lib/transport.tcl:18 #, tcl-format msgid "remote prune %s" msgstr "окастряне на следящите клони към „%s“" -#: lib/transport.tcl:19 #, tcl-format msgid "Pruning tracking branches deleted from %s" msgstr "Окастряне на следящите клони на изтритите клони от „%s“" -#: lib/transport.tcl:25 msgid "fetch all remotes" msgstr "доставяне от всички отдалечени" -#: lib/transport.tcl:26 msgid "Fetching new changes from all remotes" msgstr "Доставяне на промените от всички отдалечени хранилища" -#: lib/transport.tcl:40 msgid "remote prune all remotes" msgstr "окастряне на следящите изтрити" -#: lib/transport.tcl:41 msgid "Pruning tracking branches deleted from all remotes" msgstr "" "Окастряне на следящите клони на изтритите клони от всички отдалечени " "хранилища" -#: lib/transport.tcl:55 #, tcl-format msgid "Pushing changes to %s" msgstr "Изтласкване на промените към „%s“" -#: lib/transport.tcl:93 #, tcl-format msgid "Mirroring to %s" msgstr "Изтласкване на всичко към „%s“" -#: lib/transport.tcl:111 #, tcl-format msgid "Pushing %s %s to %s" msgstr "Изтласкване на %s „%s“ към „%s“" -#: lib/transport.tcl:132 msgid "Push Branches" msgstr "Клони за изтласкване" -#: lib/transport.tcl:147 msgid "Source Branches" msgstr "Клони-източници" -#: lib/transport.tcl:162 msgid "Destination Repository" msgstr "Целево хранилище" -#: lib/transport.tcl:201 msgid "Transfer Options" msgstr "Настройки при пренасянето" -#: lib/transport.tcl:203 msgid "Force overwrite existing branch (may discard changes)" msgstr "" "Изрично презаписване на съществуващ клон (някои промени може да се загубят)" -#: lib/transport.tcl:207 msgid "Use thin pack (for slow network connections)" msgstr "Максимална компресия (за бавни мрежови връзки)" -#: lib/transport.tcl:211 msgid "Include tags" msgstr "Включване на етикетите" -#: lib/transport.tcl:225 #, tcl-format msgid "%s (%s): Push" msgstr "%s (%s): Изтласкване" From 8c02ecc6f66d6f0831485948555594bf1fff9763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= Date: Thu, 31 Jul 2025 01:06:24 -0700 Subject: [PATCH 12/21] git-gui: remove uname_O in Makefile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Last used in ae49066 (git gui Makefile - remove Cygwin modifications, 2023-06-26), and unused since. Signed-off-by: Carlo Marcelo Arenas Belón Signed-off-by: Johannes Sixt --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 315888f302..a87dc06587 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,6 @@ GIT-VERSION-FILE: FORCE @$(SHELL_PATH) ./GIT-VERSION-GEN . $@ uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') -uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not') uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not') SCRIPT_SH = git-gui.sh From de0ac94c58fb6857cfcb902245a89396c690ab99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= Date: Thu, 31 Jul 2025 01:06:25 -0700 Subject: [PATCH 13/21] git-gui: fix dependency of GITGUI_MAIN on generator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since 854e883 (git-gui: extract script to generate "git-gui", 2025-03-11), the logic to generate the main script was pulled out of the Makefile, but adding the resulting generator as a dependency was missed. If the logic changes, the main script should be regenerated, so add it as a dependency. Signed-off-by: Carlo Marcelo Arenas Belón Signed-off-by: Johannes Sixt --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index a87dc06587..179857d088 100644 --- a/Makefile +++ b/Makefile @@ -168,7 +168,7 @@ git-gui: windows/git-gui.sh cp $< $@ endif -$(GITGUI_MAIN): git-gui.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS +$(GITGUI_MAIN): git-gui.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS generate-git-gui.sh $(QUIET_GEN)$(SHELL_PATH) generate-git-gui.sh "$<" "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE XGETTEXT ?= xgettext From df41037be019863d1de86e5bacce91d7218758b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= Date: Thu, 31 Jul 2025 01:06:26 -0700 Subject: [PATCH 14/21] git-gui: retire Git Gui.app MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In a recent commit, the minimum version of Tcl/Tk was raised to 8.6, but the "app" relies on the system provided Framework that is based on 8.5. Remove it, and let git-gui use a third party version of Wish if available. Signed-off-by: Carlo Marcelo Arenas Belón Signed-off-by: Johannes Sixt --- .gitignore | 1 - GIT-GUI-BUILD-OPTIONS.in | 1 - Makefile | 51 ---------------------------------- generate-macos-app.sh | 30 -------------------- generate-macos-wrapper.sh | 35 ----------------------- macosx/AppMain.tcl | 29 ------------------- macosx/Info.plist | 30 -------------------- macosx/git-gui.icns | Bin 28866 -> 0 bytes meson.build | 57 -------------------------------------- 9 files changed, 234 deletions(-) delete mode 100755 generate-macos-app.sh delete mode 100755 generate-macos-wrapper.sh delete mode 100644 macosx/AppMain.tcl delete mode 100644 macosx/Info.plist delete mode 100644 macosx/git-gui.icns diff --git a/.gitignore b/.gitignore index ff6e0be4b4..ba845f3f3a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ .DS_Store config.mak -Git Gui.app* git-gui.tcl GIT-GUI-BUILD-OPTIONS GIT-VERSION-FILE diff --git a/GIT-GUI-BUILD-OPTIONS.in b/GIT-GUI-BUILD-OPTIONS.in index 5fd885c2bf..3c112af578 100644 --- a/GIT-GUI-BUILD-OPTIONS.in +++ b/GIT-GUI-BUILD-OPTIONS.in @@ -4,4 +4,3 @@ GITGUI_RELATIVE=@GITGUI_RELATIVE@ SHELL_PATH=@SHELL_PATH@ TCLTK_PATH=@TCLTK_PATH@ TCL_PATH=@TCL_PATH@ -TKEXECUTABLE=@TKEXECUTABLE@ diff --git a/Makefile b/Makefile index 179857d088..2ac5f442f4 100644 --- a/Makefile +++ b/Makefile @@ -52,8 +52,6 @@ INSTALL_R0 = $(INSTALL) -m 644 # space is required here INSTALL_R1 = INSTALL_X0 = $(INSTALL) -m 755 # space is required here INSTALL_X1 = -INSTALL_A0 = find # space is required here -INSTALL_A1 = | cpio -pud INSTALL_L0 = rm -f # space is required here INSTALL_L1 = && ln # space is required here INSTALL_L2 = @@ -78,8 +76,6 @@ ifndef V INSTALL_R1 = && echo ' ' INSTALL 644 `basename $$src` && $(INSTALL) -m 644 $$src INSTALL_X0 = src= INSTALL_X1 = && echo ' ' INSTALL 755 `basename $$src` && $(INSTALL) -m 755 $$src - INSTALL_A0 = src= - INSTALL_A1 = && echo ' ' INSTALL ' ' `basename "$$src"` && find "$$src" | cpio -pud INSTALL_L0 = dst= INSTALL_L1 = && src= @@ -100,18 +96,6 @@ else TCL_PATH ?= $(dir $(TCLTK_PATH))$(notdir $(subst wish,tclsh,$(TCLTK_PATH))) endif -ifeq ($(uname_S),Darwin) - TKFRAMEWORK = /Library/Frameworks/Tk.framework/Resources/Wish.app - ifeq ($(shell echo "$(uname_R)" | awk -F. '{if ($$1 >= 9) print "y"}')_$(shell test -d $(TKFRAMEWORK) || echo n),y_n) - TKFRAMEWORK = /System/Library/Frameworks/Tk.framework/Resources/Wish.app - ifeq ($(shell test -d $(TKFRAMEWORK) || echo n),n) - TKFRAMEWORK = /System/Library/Frameworks/Tk.framework/Resources/Wish\ Shell.app - endif - endif - TKEXECUTABLE = $(TKFRAMEWORK)/Contents/MacOS/$(shell basename "$(TKFRAMEWORK)" .app) - TKEXECUTABLE_SQ = $(subst ','\'',$(TKEXECUTABLE)) -endif - ifeq ($(findstring $(firstword -$(MAKEFLAGS)),s),s) QUIET_GEN = endif @@ -129,16 +113,10 @@ libdir_SQ = $(subst ','\'',$(gg_libdir)) exedir = $(dir $(gitexecdir))share/git-gui/lib GITGUI_RELATIVE := -GITGUI_MACOSXAPP := ifeq ($(exedir),$(gg_libdir)) GITGUI_RELATIVE := 1 endif -ifeq ($(uname_S),Darwin) - ifeq ($(shell test -d $(TKFRAMEWORK) && echo y),y) - GITGUI_MACOSXAPP := YesPlease - endif -endif ifneq (,$(findstring MINGW,$(uname_S))) ifeq ($(shell expr "$(uname_R)" : '1\.'),2) NO_MSGFMT=1 @@ -147,20 +125,6 @@ endif GITGUI_RELATIVE := 1 endif -ifdef GITGUI_MACOSXAPP -GITGUI_MAIN := git-gui.tcl - -git-gui: generate-macos-wrapper.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS - $(QUIET_GEN)$(SHELL_PATH) generate-macos-wrapper.sh "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE - -Git\ Gui.app: GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS \ - macosx/Info.plist \ - macosx/git-gui.icns \ - macosx/AppMain.tcl \ - $(TKEXECUTABLE) - $(QUIET_GEN)$(SHELL_PATH) generate-macos-app.sh . "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE -endif - ifdef GITGUI_WINDOWS_WRAPPER GITGUI_MAIN := git-gui.tcl @@ -205,14 +169,10 @@ GIT-GUI-BUILD-OPTIONS: FORCE -e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \ -e 's|@TCLTK_PATH@|$(TCLTK_PATH_SQ)|' \ -e 's|@TCL_PATH@|$(TCL_PATH_SQ)|' \ - -e 's|@TKEXECUTABLE@|$(TKEXECUTABLE_SQ)|' \ $@.in >$@+ @if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi @if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi -ifdef GITGUI_MACOSXAPP -all:: git-gui Git\ Gui.app -endif ifdef GITGUI_WINDOWS_WRAPPER all:: git-gui endif @@ -228,10 +188,6 @@ ifdef GITGUI_WINDOWS_WRAPPER endif $(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(libdir_SQ)' $(INSTALL_D1) $(QUIET)$(INSTALL_R0)lib/tclIndex $(INSTALL_R1) '$(DESTDIR_SQ)$(libdir_SQ)' -ifdef GITGUI_MACOSXAPP - $(QUIET)$(INSTALL_A0)'Git Gui.app' $(INSTALL_A1) '$(DESTDIR_SQ)$(libdir_SQ)' - $(QUIET)$(INSTALL_X0)git-gui.tcl $(INSTALL_X1) '$(DESTDIR_SQ)$(libdir_SQ)' -endif $(QUIET)$(foreach p,$(ALL_LIBFILES) $(NONTCL_LIBFILES), $(INSTALL_R0)$p $(INSTALL_R1) '$(DESTDIR_SQ)$(libdir_SQ)' &&) true $(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(msgsdir_SQ)' $(INSTALL_D1) $(QUIET)$(foreach p,$(ALL_MSGFILES), $(INSTALL_R0)$p $(INSTALL_R1) '$(DESTDIR_SQ)$(msgsdir_SQ)' &&) true @@ -246,10 +202,6 @@ ifdef GITGUI_WINDOWS_WRAPPER endif $(QUIET)$(CLEAN_DST) '$(DESTDIR_SQ)$(libdir_SQ)' $(QUIET)$(REMOVE_F0)'$(DESTDIR_SQ)$(libdir_SQ)'/tclIndex $(REMOVE_F1) -ifdef GITGUI_MACOSXAPP - $(QUIET)$(REMOVE_F0)'$(DESTDIR_SQ)$(libdir_SQ)/Git Gui.app' $(REMOVE_F1) - $(QUIET)$(REMOVE_F0)'$(DESTDIR_SQ)$(libdir_SQ)'/git-gui.tcl $(REMOVE_F1) -endif $(QUIET)$(foreach p,$(ALL_LIBFILES) $(NONTCL_LIBFILES), $(REMOVE_F0)'$(DESTDIR_SQ)$(libdir_SQ)'/$(notdir $p) $(REMOVE_F1) &&) true $(QUIET)$(CLEAN_DST) '$(DESTDIR_SQ)$(msgsdir_SQ)' $(QUIET)$(foreach p,$(ALL_MSGFILES), $(REMOVE_F0)'$(DESTDIR_SQ)$(msgsdir_SQ)'/$(notdir $p) $(REMOVE_F1) &&) true @@ -265,9 +217,6 @@ dist-version: GIT-VERSION-FILE clean:: $(RM_RF) $(GITGUI_MAIN) lib/tclIndex po/*.msg $(PO_TEMPLATE) $(RM_RF) GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS -ifdef GITGUI_MACOSXAPP - $(RM_RF) 'Git Gui.app'* git-gui -endif ifdef GITGUI_WINDOWS_WRAPPER $(RM_RF) git-gui endif diff --git a/generate-macos-app.sh b/generate-macos-app.sh deleted file mode 100755 index 71b9fa67a4..0000000000 --- a/generate-macos-app.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -set -e - -SOURCE_DIR="$1" -OUTPUT="$2" -BUILD_OPTIONS="$3" -VERSION_FILE="$4" - -. "$BUILD_OPTIONS" -. "$VERSION_FILE" - -rm -rf "$OUTPUT" "$OUTPUT+" - -mkdir -p "$OUTPUT+/Contents/MacOS" -mkdir -p "$OUTPUT+/Contents/Resources/Scripts" - -cp "$TKEXECUTABLE" "$OUTPUT+/Contents/MacOS" -cp "$SOURCE_DIR/macosx/git-gui.icns" "$OUTPUT+/Contents/Resources" -sed \ - -e "s/@@GITGUI_VERSION@@/$GITGUI_VERSION/g" \ - -e "s/@@GITGUI_TKEXECUTABLE@@/$(basename "$TKEXECUTABLE")/g" \ - "$SOURCE_DIR/macosx/Info.plist" \ - >"$OUTPUT+/Contents/Info.plist" -sed \ - -e "s|@@gitexecdir@@|$GITGUI_GITEXECDIR|" \ - -e "s|@@GITGUI_LIBDIR@@|$GITGUI_LIBDIR|" \ - "$SOURCE_DIR/macosx/AppMain.tcl" \ - >"$OUTPUT+/Contents/Resources/Scripts/AppMain.tcl" -mv "$OUTPUT+" "$OUTPUT" diff --git a/generate-macos-wrapper.sh b/generate-macos-wrapper.sh deleted file mode 100755 index 0304937f41..0000000000 --- a/generate-macos-wrapper.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh - -set -e - -if test "$#" -ne 3 -then - echo >&2 "usage: $0 " - exit 1 -fi - -OUTPUT="$1" -BUILD_OPTIONS="$2" -VERSION_FILE="$3" - -. "$BUILD_OPTIONS" - -rm -f "$OUTPUT" "$OUTPUT+" - -( - echo "#!$SHELL_PATH" - cat "$BUILD_OPTIONS" "$VERSION_FILE" - cat <<-'EOF' - if test "z$*" = zversion || - test "z$*" = z--version - then - echo "git-gui version $GITGUI_VERSION" - else - libdir="${GIT_GUI_LIB_DIR:-$GITGUI_LIBDIR}" - exec "$libdir/Git Gui.app/Contents/MacOS/$(basename "$TKEXECUTABLE")" "$0" "$@" - fi - EOF -) >"$OUTPUT+" - -chmod +x "$OUTPUT+" -mv "$OUTPUT+" "$OUTPUT" diff --git a/macosx/AppMain.tcl b/macosx/AppMain.tcl deleted file mode 100644 index b6c6dc3500..0000000000 --- a/macosx/AppMain.tcl +++ /dev/null @@ -1,29 +0,0 @@ -set gitexecdir {@@gitexecdir@@} -if { [info exists ::env(GIT_GUI_LIB_DIR) ] } { - set gitguilib $::env(GIT_GUI_LIB_DIR) -} else { - set gitguilib {@@GITGUI_LIBDIR@@} -} - -set env(PATH) "$gitexecdir:$env(PATH)" - -if {[string first -psn [lindex $argv 0]] == 0} { - lset argv 0 [file join $gitexecdir git-gui] -} - -if {[file tail [lindex $argv 0]] eq {gitk}} { - set argv0 [lindex $argv 0] - set AppMain_source $argv0 -} else { - set argv0 [file join $gitexecdir [file tail [lindex $argv 0]]] - set AppMain_source [file join $gitguilib git-gui.tcl] - if {[info exists env(PWD)]} { - cd $env(PWD) - } elseif {[pwd] eq {/}} { - cd $env(HOME) - } -} - -unset gitexecdir gitguilib -set argv [lrange $argv 1 end] -source $AppMain_source diff --git a/macosx/Info.plist b/macosx/Info.plist deleted file mode 100644 index 1ade121c4c..0000000000 --- a/macosx/Info.plist +++ /dev/null @@ -1,30 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - @@GITGUI_TKEXECUTABLE@@ - CFBundleGetInfoString - Git Gui @@GITGUI_VERSION@@ © 2006-2007 Shawn Pearce, et. al. - CFBundleIconFile - git-gui.icns - CFBundleIdentifier - cz.or.repo.git-gui - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - Git Gui - CFBundlePackageType - APPL - CFBundleShortVersionString - @@GITGUI_VERSION@@ - CFBundleSignature - GITg - CFBundleVersion - @@GITGUI_VERSION@@ - NSHighResolutionCapable - - - diff --git a/macosx/git-gui.icns b/macosx/git-gui.icns deleted file mode 100644 index 77d88a77a7669667335cf6fd5767c8b40f3ce6e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28866 zcmeHP4O~>^nt#p=2y%5T_jlc}63a@{yjiYES8sx8l*`r3bSS{u2t2L5Yu9oH5|2gx)IfpX?!;ILidHnHy zJYWCk{W$M=&wHGspO!k4D1E1X+RQ#g^f+hajNLADyWq;{LKteUe_;(SzAIPC^)m-Q zNW>k@C5<`e$pSIWqwoQvMm-u6GiuaRW(uD^c5Hl1?AWnW^ISUFlT-7ER+)RyI5W{^ zb3KJvNL%=@*=+1Zi74Kkw)TLL(Oe6K&Cy33U~jWCa1_Dz(LuJgBo*aYcATOkXdOej zA}!+qq93MbLcP0=84OG}XaR*z&reCoOE(chTUC7?p&>NSG2oHX$J+Ul1bn{`y>mRb!5(Q3&e=^FSJcutwL^7{8|b0v*=OXv1`jX*lKw zD3U+mC^%DD{dT*(iN9*M?{W%z*42H;U#hFCXf~1QgWY}8D-z*u2mQs#>diaoh_lZ9 zrpJR1>U6sCE|dHJw`@LC{>LT%@Y0L(`DH(*JL{3Wk>>H;%Fj9LQT$8PIg(cL&bsz& z!|yP>7d~~?>G^BC-Om3s(N(9oZB6I5KPFb6cyuhT5%hz02g&|;o;c?pA(zPnU5Q-K z6R9)uKj3d3{(ibf^v!2PjfaS9+)G?T7*Rtvq6_%D5=E2^x$rmQ3Q@NUUj26jzCJ~` z#zU+HM8l0Sl(f=AzLcoHX$-|dXB6@oR`i55hNepLH6}(=ARmML&(K%(w~CA_h==qp zYau-c>nYZHic`stT6fcwB@~i)D1pk&MfBxj3N@7K7$Xa#l10Q-6y-1yDrJj^F6J;U zld!C08W~qL*h*m|W->N=RRwsVeFy7VVihnNp-^WOSg~}3v87fDS;p8)%t+x$Ot+2d z7)!E}R^a7O=m#G?LR4a8&?;way1_y;U8sfDCNZ`Pi<8#O*i3*I19M|t4#s;W06su$ znR;O8X3U$Hrh_bH+hU@qe8weBUIN){3*%uO! zK_%~R%_jS=Y6NB*`2zIV0BbyDNb;{tb0`J!$;h`uU)2x% zzhbPU0g%U9pQO34f7?2c9#zRFf_K-iX9QBjdsB$>-sD(XX)x{xCC;*1cKzfJ)eF=B z{0m|U7qN_D9Je!fS}v0kwI=VoMxb|KUoV!hnyJwBYo7z`x5>%LF)Fx3eG26?MWNMN z`}~!6>LI6pQs4{K{xA2UlJ^{x+Cm=o+BN=h`q4Q;%JCs>B_z%AwMzSB!Em%-{|O5D zp$d7(NuK|BgjSIEe)>E9%I_8OJ}|lqJjkPH4$r@%kfVQ&3#`lhPq)%tJb&4P{O+Lx ziEe{4h5QegnAlu6D6XZv>;LgQHk2Z9yLkSjv+T~+!^S2=NPX6!h+B}H?!5%=wNnQV ze(@6uO}EOWs6C6Ox#;r0wGb1H{>UZ%_+b?>HXf7K965XXNZG%;8v-@`v?T1!G>>D0 z)F4=SO{35YxVw5tyYal>!m9@X0xF`WCqE9pL(`eg6mYq3g;Xo1VXkxsynQR+cH4DI zNOMmK5#}~Fr#Ur3*~q!mZbmK2-FAp69?^)x#CWtk4{u0~z;et0Ve<&%D?;kMU82-` zi+<7lqfZj{wqcX-Omf5&LnUuI^3~2-7`HBBIdQevy@u*Csw(Jk4$}>vjSE^bKa zgrP$>!CNzTTp@N)qK@EkM*(p|3}Uqr$Z3fSiQ9v?DHCC4&ljEx%7v%=+9bh!G0qZ9 zOp|fef|G;3dy*keT!f}4XPX(N8y9m{gPCzlMxgNh5VQ^SJvHpjQS$Fd>{#wh6xZ>hz67mBW|Gl<&TJ0r2 zX{n_7(9b|V8}?Ehw_gcR{Liutq$zF4D{K>~I=H(1JXg0Q z@hPoyIH^!PFHn+-M4jc(PgEDGa686-z~dR?JPF->OzfW%uIdXaO%zyDMYWd6+_RWWYk5{|ndEz^Prn&7~D|8(o(9Nx>MU7Xdz8(z!(dUn^ z@prjHoo@2bKTftrgQv_}dNxy-H~mh}yz`e3n$YxZGbMY`pM-1uR5;C*Ud5iSUxe}e z_fTxR{zT!?T&aIm?`z4K{7y{rf1 zVteoB{`CwvpZD}&fWr=+uN8aSp-=SO5AcAum#Xxvpr0a&T>269VC_}acCMd}^N2L4 zUA+f-6@rh}^~2*QOc*ApwW|L|nKSNPFaE{&7s&K)`O1ra&#MrA(O+s{5=O-RW=kqT zS@So+*{4D?9i({}XFp!fO%nwv-#|qoUG@udp8xU8rcIkRep1VF=m@o?Z!inZqk{05xD75+W%JVd-I!;#)$_%dU93+>wsNJkP=02{vdLmQp zG*Mx5Q_S3|D*NfGs=U#7d8Z`(Ea7zF=6Hc$Ni?o7hE|-vLHS2iTuO0>;6+<0g;deD z7-E4-ix-Q&6Ksp=%tsyH!mPrnbcQG4-yzzzl=Ns>Jv|rjG?jjEpzySpj0seWSNNs7 z*1XJ_pFBXCNc$O_aM&Ko#c02ZmyY|vy2+f&aJ+{TOM&xO(kzck!wX3_2d{rG=I2Qm zdx-YqG{&v48*eTPB=udS8S!zFoI_`=5{(+t3~toRIh48Bsj-%E%kSJloWbVetYS3G zm`7V{h(0KCYJoSXmN-jRGlMh4?IN<{#3O5((4Ksz-DeoQ5IB~dM21C7^V+2c%%ULl zAkooFI0vD3YlwSaSHQHXIgQa+-e5%sb4ar~Cv_p-h$dGPl@%~9IboqwmP=ehGTOg! zJ8_Frpff!Vht8rIeBTGjyzNAB5Ev%okjE+DVzcq?RG(QTiYOZ|#YBmPxXUvESq4ER zY#Utygt8G9mXd9RD5dO1sKsp~q{s2zR`jxfxQHxx*(2RomspqiROa4{d>t>6bpo~!{OhnTK$$WT^oyvO#TxpE{`4Ag>8Y-&CUIZs ztC+BF!K!H+ag*nuQ1dGOV@V;}j4r}ZXcCVMUQJwN8b&2Cp^CWBLosnNlmyD@P&_54g`ebgxTk&1QtunmFIMec4qWbr6KDV2=lAL!LR~fknM~%5} zGpgN(L&*6X7`NWAA20Z`-(qy2j<~+2b&S>@B2DeG^f#Esc+hZ|xV%lTGmW8s?orYj zEJbN+nIf$&@E*l$%f;bhI~$%t!1kgG3~svGRs+_(%d+0 zDq}^taa3L@tlv$A)wCb$_YKLhe&gLfBDlxaKsRA!tEM4=ON%$q$MD?~r+)8a{qE=% zCKmRh_ucFF06LA9Mbk3@PjTl9uHV7++p(<6mt|F6aQ*%zt>4cV##1HM?;Db1{jQ>k zh+w9zN?f_)=}%bS0+bf7qo?6J&9;uZWBu;v7A`8xpziMVyNPnqvVp>uBEV@j9SW}B z!S!2ptroZHiZwmBe*a?D?^)tIrI>K#8A}`M;_+AWageuT**1FgO)ZGu-1#U4``@?e zb1?Qin2ZGn%^|{PEdi}Lue|Z%$x^DMbj{^`CbVv`} z?;qXnZ;+BTu02J+_n++nmDmLF{hR=jzHCo1*#E))_p1lmGwCEY!TIM`@89_I2gz8r zr|9?iPxg-<^0WJc=D{A2_W;+cSFf&4R=D|)ciQ>Sa$~=15r%YJh8vu}WGZU)lJxuf zlSLfy!cGU`9S-()9g5%M*|RRZ8-br(qS+-M?f*7#)umO{#(z;){pj8!Zx%E|EZB9N2>gW)Atw( zTEMqy{!R29N!6mC@Uv$HwWa^<<5b=G%rq#lQ9brA4lmO6-x&7vR=MWYem-NV8QA4s zdA?NtJExu$e;!dMeVt4fA7%2N76~81Yo;&v_U!C-s=&v`koSJstjb@tb#be)M4WH5w;%XIFf1Pz^uI`MY(| z?z_=aU+pQ&@b@b`sNvI{CnX{Kz5kMJ@%pp{pKKERn%fj6zE&l^c)o4;eWW(>3F9le z{Q37KPGPUw{}k!?lyUbbKLZmKSwrua$_J`&=EZrv_# zzTf*Vd?7{d@uyi{;AicYEAs)se?;N(+K&^RkAKQQqOHOgqoiclD0O_V50^T0l=qaB zM73}y*4v{eOD!rEd82#jYZ+_3d_ zyKIN=M*qhC(y&`RTLw_FaP5D&QJsalwQB=&-rBY>!^eq)y>_LebWhvtT4?=06H+3y diff --git a/meson.build b/meson.build index cdae85e4b9..1cedc823de 100644 --- a/meson.build +++ b/meson.build @@ -19,17 +19,6 @@ build_options_config.set_quoted('GITGUI_LIBDIR', get_option('prefix') / get_opti build_options_config.set_quoted('SHELL_PATH', fs.as_posix(shell.full_path())) build_options_config.set_quoted('TCLTK_PATH', fs.as_posix(wish.full_path())) build_options_config.set_quoted('TCL_PATH', fs.as_posix(tclsh.full_path())) -if target_machine.system() == 'darwin' - tkexecutables = [ - '/Library/Frameworks/Tk.framework/Resources/Wish.app/Contents/MacOS/Wish', - '/System/Library/Frameworks/Tk.framework/Resources/Wish.app/Contents/MacOS/Wish', - '/System/Library/Frameworks/Tk.framework/Resources/Wish Shell.app/Contents/MacOS/Wish Shell', - ] - tkexecutable = find_program(tkexecutables) - build_options_config.set_quoted('TKEXECUTABLE', tkexecutable.full_path()) -else - build_options_config.set('TKEXECUTABLE', '') -endif build_options = configure_file( input: 'GIT-GUI-BUILD-OPTIONS.in', @@ -70,52 +59,6 @@ if target_machine.system() == 'windows' install: true, install_dir: get_option('libexecdir') / 'git-core', ) -elif target_machine.system() == 'darwin' - gitgui_main = 'git-gui.tcl' - gitgui_main_install_dir = get_option('datadir') / 'git-gui/lib' - - custom_target( - output: 'git-gui', - command: [ - shell, - meson.current_source_dir() / 'generate-macos-wrapper.sh', - '@OUTPUT@', - meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS', - meson.current_build_dir() / 'GIT-VERSION-FILE', - ], - depends: [ - version_file, - ], - depend_files: [ - build_options, - ], - install: true, - install_dir: get_option('libexecdir') / 'git-core', - ) - - custom_target( - output: 'Git Gui.app', - command: [ - shell, - meson.current_source_dir() / 'generate-macos-app.sh', - meson.current_source_dir(), - meson.current_build_dir() / 'Git Gui.app', - meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS', - meson.current_build_dir() / 'GIT-VERSION-FILE', - ], - depends: [ - version_file, - ], - depend_files: [ - build_options, - 'macosx/AppMain.tcl', - 'macosx/Info.plist', - 'macosx/git-gui.icns', - ], - build_by_default: true, - install: true, - install_dir: get_option('datadir') / 'git-gui/lib', - ) endif custom_target( From 0e3233b91393e3b5f21c310f202797a603294e0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= Date: Thu, 31 Jul 2025 01:06:27 -0700 Subject: [PATCH 15/21] git-gui: honor TCLTK_PATH in git-gui--askpass MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since its introduction in 8c76212 (git-gui: Add a simple implementation of SSH_ASKPASS., 2008-10-15), git-gui--askpass has been calling whatever wish interpreter is in the path, unlike git-gui. Correct that by turning it into a script that would be processed at build time. Signed-off-by: Carlo Marcelo Arenas Belón Signed-off-by: Johannes Sixt --- .gitignore | 1 + Makefile | 7 +++++-- generate-script.sh | 22 ++++++++++++++++++++++ git-gui--askpass => git-gui--askpass.sh | 0 meson.build | 22 ++++++++++++++-------- 5 files changed, 42 insertions(+), 10 deletions(-) create mode 100755 generate-script.sh rename git-gui--askpass => git-gui--askpass.sh (100%) diff --git a/.gitignore b/.gitignore index ba845f3f3a..5130b4f018 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ git-gui.tcl GIT-GUI-BUILD-OPTIONS GIT-VERSION-FILE git-gui +git-gui--askpass lib/tclIndex diff --git a/Makefile b/Makefile index 2ac5f442f4..2cd160b057 100644 --- a/Makefile +++ b/Makefile @@ -173,10 +173,13 @@ GIT-GUI-BUILD-OPTIONS: FORCE @if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi @if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi +git-gui--askpass: git-gui--askpass.sh GIT-GUI-BUILD-OPTIONS generate-script.sh + $(QUIET_GEN)$(SHELL_PATH) generate-script.sh $@ $< ./GIT-GUI-BUILD-OPTIONS + ifdef GITGUI_WINDOWS_WRAPPER all:: git-gui endif -all:: $(GITGUI_MAIN) lib/tclIndex $(ALL_MSGFILES) +all:: $(GITGUI_MAIN) git-gui--askpass lib/tclIndex $(ALL_MSGFILES) install: all $(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(gitexecdir_SQ)' $(INSTALL_D1) @@ -215,7 +218,7 @@ dist-version: GIT-VERSION-FILE @sed 's|^GITGUI_VERSION=||' $(TARDIR)/version clean:: - $(RM_RF) $(GITGUI_MAIN) lib/tclIndex po/*.msg $(PO_TEMPLATE) + $(RM_RF) $(GITGUI_MAIN) git-gui--askpass lib/tclIndex po/*.msg $(PO_TEMPLATE) $(RM_RF) GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS ifdef GITGUI_WINDOWS_WRAPPER $(RM_RF) git-gui diff --git a/generate-script.sh b/generate-script.sh new file mode 100755 index 0000000000..0dd2da92e3 --- /dev/null +++ b/generate-script.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e + +if test $# -ne 3 +then + echo >&2 "USAGE: $0 " + exit 1 +fi + +OUTPUT="$1" +INPUT="$2" +BUILD_OPTIONS="$3" + +. "$BUILD_OPTIONS" + +sed \ + -e "1s|#!.*/sh|#!$SHELL_PATH|" \ + -e "1,3s|^exec wish|exec '$TCLTK_PATH'|" \ + "$INPUT" >"$OUTPUT" + +chmod a+x "$OUTPUT" diff --git a/git-gui--askpass b/git-gui--askpass.sh similarity index 100% rename from git-gui--askpass rename to git-gui--askpass.sh diff --git a/meson.build b/meson.build index 1cedc823de..320ba09ecf 100644 --- a/meson.build +++ b/meson.build @@ -38,14 +38,6 @@ version_file = custom_target( build_always_stale: true, ) -configure_file( - input: 'git-gui--askpass', - output: 'git-gui--askpass', - copy: true, - install: true, - install_dir: get_option('libexecdir') / 'git-core', -) - gitgui_main = 'git-gui' gitgui_main_install_dir = get_option('libexecdir') / 'git-core' @@ -61,6 +53,20 @@ if target_machine.system() == 'windows' ) endif +custom_target( + output: 'git-gui--askpass', + input: 'git-gui--askpass.sh', + command: [ + shell, + meson.current_source_dir() / 'generate-script.sh', + '@OUTPUT@', + '@INPUT@', + meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS', + ], + install: true, + install_dir: get_option('libexecdir') / 'git-core', +) + custom_target( input: 'git-gui.sh', output: gitgui_main, From beab415e429067108953966d3d2d4420d75515cd Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Wed, 21 May 2025 21:13:27 -0400 Subject: [PATCH 16/21] git-gui: remove EOL translation for gets git-gui configures '-translation lf' on a number of channels. The default configuration is 'auto', which on input changes any occurrence of \n, \r, or \r\n to \n, and on output changes any such EOL sequence to a platform dependent value (\n on Unix, \r\n on Windows). Such translation can be necessary, but much of what is configured now is redundant. In particular, many of the channels configured this way are then consumed by gets, which already recognizes any of \n, \r, or \r\n as terminators. Configuring a channel to first change these line endings, then give the result to gets, is redundant. The valid uses of -translation lf are for output where we do not want \r\n on Windows, and for consuming entire files without going through gets, assuring that \n will be used internally. Let's remove all the others that only serve to confuse. lib/diff.tcl must have -translation lf because \r\n might be stored in the repository (e.g., on Windows, with no crlf translation enabled), and git will treat \n as the line ending, while the preceding \r is just whitespace, and these may be split by ANSI color coding. git-gui's read_diff handles this correctly as-is. Signed-off-by: Mark Levedahl --- lib/blame.tcl | 5 ++--- lib/choose_rev.tcl | 2 +- lib/commit.tcl | 4 ++-- lib/diff.tcl | 2 ++ lib/remote_branch_delete.tcl | 1 - 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/blame.tcl b/lib/blame.tcl index bb67b047eb..22c5e7a193 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -492,7 +492,6 @@ method _load {jump} { } fconfigure $fd \ -blocking 0 \ - -translation lf \ -encoding [get_path_encoding $path] fileevent $fd readable [cb _read_file $fd $jump] set current_fd $fd @@ -619,7 +618,7 @@ method _exec_blame {cur_w cur_d options cur_s} { lappend options -- $path set fd [git_read_nice [concat blame $options]] - fconfigure $fd -blocking 0 -translation lf -encoding utf-8 + fconfigure $fd -blocking 0 -encoding utf-8 fileevent $fd readable [cb _read_blame $fd $cur_w $cur_d] set current_fd $fd set blame_lines 0 @@ -985,7 +984,7 @@ method _showcommit {cur_w lno} { set msg {} catch { set fd [git_read [list cat-file commit $cmit]] - fconfigure $fd -encoding iso8859-1 -translation lf + fconfigure $fd -encoding iso8859-1 # By default commits are assumed to be in utf-8 set enc utf-8 while {[gets $fd line] > 0} { diff --git a/lib/choose_rev.tcl b/lib/choose_rev.tcl index 4cf6cebac4..cd355cc92a 100644 --- a/lib/choose_rev.tcl +++ b/lib/choose_rev.tcl @@ -147,7 +147,7 @@ constructor _new {path unmerged_only title} { refs/remotes \ refs/tags \ ]] - fconfigure $fr_fd -translation lf -encoding utf-8 + fconfigure $fr_fd -encoding utf-8 while {[gets $fr_fd line] > 0} { set line [eval $line] if {[lindex $line 1 0] eq {tag}} { diff --git a/lib/commit.tcl b/lib/commit.tcl index adde708084..5e77fd2f54 100644 --- a/lib/commit.tcl +++ b/lib/commit.tcl @@ -28,7 +28,7 @@ You are currently in the middle of a merge that has not been fully completed. Y set name "" set email "" set fd [git_read [list cat-file commit $curHEAD]] - fconfigure $fd -encoding iso8859-1 -translation lf + fconfigure $fd -encoding iso8859-1 # By default commits are assumed to be in utf-8 set enc utf-8 while {[gets $fd line] > 0} { @@ -361,7 +361,7 @@ proc commit_committree {fd_wt curHEAD msg_p} { # if {$commit_type eq {normal}} { set fd_ot [git_read [list cat-file commit $PARENT]] - fconfigure $fd_ot -encoding iso8859-1 -translation lf + fconfigure $fd_ot -encoding iso8859-1 set old_tree [gets $fd_ot] close $fd_ot diff --git a/lib/diff.tcl b/lib/diff.tcl index 65d0997b79..442737ba4f 100644 --- a/lib/diff.tcl +++ b/lib/diff.tcl @@ -324,6 +324,8 @@ proc start_show_diff {cont_info {add_opts {}}} { # '++' lines which is not bijective. Thus, we need to maintain a state # across lines. set ::conflict_in_pre_image 0 + + # git-diff has eol==\n, \r if present is part of the text fconfigure $fd \ -blocking 0 \ -encoding [get_path_encoding $path] \ diff --git a/lib/remote_branch_delete.tcl b/lib/remote_branch_delete.tcl index 349d31edf3..f0814efdd7 100644 --- a/lib/remote_branch_delete.tcl +++ b/lib/remote_branch_delete.tcl @@ -307,7 +307,6 @@ method _load {cache uri} { set active_ls [git_read [list ls-remote $uri]] fconfigure $active_ls \ -blocking 0 \ - -translation lf \ -encoding utf-8 fileevent $active_ls readable [cb _read $cache $active_ls] } else { From 0832752392da5d820ac96517041152e8fd943c18 Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Fri, 9 May 2025 21:39:56 -0400 Subject: [PATCH 17/21] git-gui: themed.tcl: use full namespace for color Tcl 9 imposes strict requirements on namespaces for variables, while Tcl 8 does not. lib/themed.tcl does not use the fully qualified name for the "color" namespace, with result that variables are not found with Tcl 9.0. Fix this. Signed-off-by: Mark Levedahl --- lib/themed.tcl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/themed.tcl b/lib/themed.tcl index 8c4a0c2ee7..c18e201d85 100644 --- a/lib/themed.tcl +++ b/lib/themed.tcl @@ -21,10 +21,10 @@ namespace eval color { set inactive_select_bg [convert_rgb_to_gray $select_bg] set inactive_select_fg $select_fg - set color::select_bg $select_bg - set color::select_fg $select_fg - set color::inactive_select_bg $inactive_select_bg - set color::inactive_select_fg $inactive_select_fg + set ::color::select_bg $select_bg + set ::color::select_fg $select_fg + set ::color::inactive_select_bg $inactive_select_bg + set ::color::inactive_select_fg $inactive_select_fg proc add_option {key val} { option add $key $val widgetDefault From 24b10786bc4b0176db1f36a51911c75de0abcba5 Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Sat, 31 May 2025 14:52:35 -0400 Subject: [PATCH 18/21] git-gui: use -profile tcl8 for file input with Tcl 9 git-gui invokes many git commands expecting output in utf-8 encoding, but git accepts extended ascii (code page unknown) as utf-8 without validating, so cannot guarantee valid utf-8 on output. In particular, using any extended ascii code page has long been acceptable on git given that everyone on a project is aware of and uses that same code page to view all data. utf-8 accepts only 7-bit ascii characters in single bytes, and any characters outside of that base set require at least two bytes for representation in unicode. Tcl is a string based language, and transcodes all input data to an internal unicode format, and to whatever format is requested on output: "pure" binary is recoded byte by byte using iso8859-1. Tcl8.x silently recodes invalid utf-8 as binary data, so extended ascii characters maintain their binary value on output but may not display correctly. Tcl 8.7 added three profiles to control this behaviour: strict (raises exceptions), replace (replaces each invalid byte with ?), and the default tcl8 maintaining the old behavior. Tcl 9 changes the default profile to strict, meaning any invalid utf-8 raises an exception that git-gui does not handle. An example of this in the git repository is commit 7eb93c8965 ("[PATCH] Simplify git script", 2005-09-07). This includes extended ascii characters in the author name and commit message. The tcl8 profile used so far has acceptable behavior given git-gui's acceptance: this allows git-gui to accept extended ascii though it may display incorrectly. Let's continue that behavior by overriding open to use the tcl8 profile on Tcl9 and later: Tcl 8.6 does not understand fconfigure -profile, and Tcl 8.7 maintains the tcl8 profile. Signed-off-by: Mark Levedahl --- git-gui.sh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/git-gui.sh b/git-gui.sh index 63c2f48f91..2c83ed5066 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -73,6 +73,19 @@ proc is_Cygwin {} { return $_iscygwin } +###################################################################### +## Enable Tcl8 profile in Tcl9, allowing consumption of data that has +## bytes not conforming to the assumed encoding profile. + +if {[package vcompare $::tcl_version 9.0] >= 0} { + rename open _strict_open + proc open args { + set f [_strict_open {*}$args] + chan configure $f -profile tcl8 + return $f + } +} + ###################################################################### ## ## PATH lookup. Sanitize $PATH, assure exec/open use only that From cc41d374fa9e130cf9b89da5cbcf7694257b7df1 Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Sat, 31 May 2025 15:18:31 -0400 Subject: [PATCH 19/21] git-gui: use -profile tcl8 on encoding conversions git-gui in the prior commit learned to apply -profile tcl8 when reading files, avoiding errors on non-binary data streams whose encoding is not utf-8. But, git-gui also consumes binary data streams (generally blobs from commits) as the output of commands, and internally decodes this to support various displays. With Tcl9, errors occur in this decoding for the same reasons described in the previous commit: basically, the underlying data may contain extended ascii characters violating the assumption of utf-8 encoding. This problem has a similar fix to the prior issue: we must use the tlc8 profile when converting this data to the internal unicode format. Do so, again only on Tcl9 as Tcl8.6 does not recognize -profile, and only Tcl 9.0 makes strict the default. Signed-off-by: Mark Levedahl --- git-gui.sh | 13 ++++++++++--- lib/blame.tcl | 2 +- lib/commit.tcl | 6 +++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 2c83ed5066..1ebf1e288d 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -84,6 +84,13 @@ if {[package vcompare $::tcl_version 9.0] >= 0} { chan configure $f -profile tcl8 return $f } + proc convertfrom args { + return [encoding convertfrom -profile tcl8 {*}$args] + } +} else { + proc convertfrom args { + return [encoding convertfrom {*}$args] + } } ###################################################################### @@ -1543,7 +1550,7 @@ proc read_diff_index {fd after} { set i [split [string range $buf_rdi $c [expr {$z1 - 2}]] { }] set p [string range $buf_rdi $z1 [expr {$z2 - 1}]] merge_state \ - [encoding convertfrom utf-8 $p] \ + [convertfrom utf-8 $p] \ [lindex $i 4]? \ [list [lindex $i 0] [lindex $i 2]] \ [list] @@ -1576,7 +1583,7 @@ proc read_diff_files {fd after} { set i [split [string range $buf_rdf $c [expr {$z1 - 2}]] { }] set p [string range $buf_rdf $z1 [expr {$z2 - 1}]] merge_state \ - [encoding convertfrom utf-8 $p] \ + [convertfrom utf-8 $p] \ ?[lindex $i 4] \ [list] \ [list [lindex $i 0] [lindex $i 2]] @@ -1599,7 +1606,7 @@ proc read_ls_others {fd after} { set pck [split $buf_rlo "\0"] set buf_rlo [lindex $pck end] foreach p [lrange $pck 0 end-1] { - set p [encoding convertfrom utf-8 $p] + set p [convertfrom utf-8 $p] if {[string index $p end] eq {/}} { set p [string range $p 0 end-1] } diff --git a/lib/blame.tcl b/lib/blame.tcl index 22c5e7a193..4477b84eae 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -997,7 +997,7 @@ method _showcommit {cur_w lno} { set enc [tcl_encoding $enc] if {$enc ne {}} { - set msg [encoding convertfrom $enc $msg] + set msg [convertfrom $enc $msg] } set msg [string trim $msg] } diff --git a/lib/commit.tcl b/lib/commit.tcl index 5e77fd2f54..2c2f73d3af 100644 --- a/lib/commit.tcl +++ b/lib/commit.tcl @@ -43,9 +43,9 @@ You are currently in the middle of a merge that has not been fully completed. Y set enc [tcl_encoding $enc] if {$enc ne {}} { - set msg [encoding convertfrom $enc $msg] - set name [encoding convertfrom $enc $name] - set email [encoding convertfrom $enc $email] + set msg [convertfrom $enc $msg] + set name [convertfrom $enc $name] + set email [convertfrom $enc $email] } if {$name ne {} && $email ne {}} { set commit_author [list name $name email $email date $time] From c20408c6b755a6b0fe869586cbba0bd6329978b5 Mon Sep 17 00:00:00 2001 From: Mark Levedahl Date: Fri, 16 May 2025 22:30:37 -0400 Subject: [PATCH 20/21] git-gui: Allow Tcl 9.0 TclTk 9.0 is now shipping, and git-gui is now patched to support use of this newer version. Adjust required versions to allow Tcl/Tk >= 8.6, including 9.x. Signed-off-by: Mark Levedahl --- git-gui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-gui.sh b/git-gui.sh index 1ebf1e288d..44e801c5bf 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -30,7 +30,7 @@ along with this program; if not, see .}] ## ## Tcl/Tk sanity check -if {[catch {package require Tcl 8.6-8.8} err]} { +if {[catch {package require Tcl 8.6-} err]} { catch {wm withdraw .} tk_messageBox \ -icon error \ From e3efff4463c09f0070777000624f6b148873a0b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= Date: Thu, 31 Jul 2025 01:06:28 -0700 Subject: [PATCH 21/21] git-gui: ensure own version of git-gui--askpass is used MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When finding a location for the askpass helper, git will be asked for its exec path, but if that git is not the same that called git-gui then we might mistakenly point to its helper instead. Assume that git-gui and the helper are colocated to derive its path instead. This is specially useful in macOS where a broken version of that helper is provided by the system git. [j6t: move directory to variable to help in-flight topics] Suggested-by: Mark Levedahl Signed-off-by: Carlo Marcelo Arenas Belón Signed-off-by: Johannes Sixt --- git-gui.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/git-gui.sh b/git-gui.sh index 8bb121db4f..f28a23f844 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -1113,9 +1113,11 @@ citool { ## execution environment # Suggest our implementation of askpass, if none is set +set argv0dir [file dirname [file normalize $::argv0]] if {![info exists env(SSH_ASKPASS)]} { - set env(SSH_ASKPASS) [file join [git --exec-path] git-gui--askpass] + set env(SSH_ASKPASS) [file join $argv0dir git-gui--askpass] } +unset argv0dir ###################################################################### ##