about summary refs log tree commit diff
path: root/third_party/git/git-gui
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/git-gui')
-rw-r--r--third_party/git/git-gui/README.md174
-rwxr-xr-xthird_party/git/git-gui/git-gui--askpass5
-rwxr-xr-xthird_party/git/git-gui/git-gui.sh235
-rw-r--r--third_party/git/git-gui/lib/blame.tcl24
-rw-r--r--third_party/git/git-gui/lib/branch.tcl2
-rw-r--r--third_party/git/git-gui/lib/checkout_op.tcl21
-rw-r--r--third_party/git/git-gui/lib/choose_repository.tcl120
-rw-r--r--third_party/git/git-gui/lib/chord.tcl158
-rw-r--r--third_party/git/git-gui/lib/commit.tcl4
-rw-r--r--third_party/git/git-gui/lib/console.tcl2
-rw-r--r--third_party/git/git-gui/lib/diff.tcl129
-rw-r--r--third_party/git/git-gui/lib/index.tcl533
-rw-r--r--third_party/git/git-gui/lib/merge.tcl14
-rw-r--r--third_party/git/git-gui/lib/status_bar.tcl231
-rw-r--r--third_party/git/git-gui/po/de.po3388
-rw-r--r--third_party/git/git-gui/po/git-gui.pot2506
-rw-r--r--third_party/git/git-gui/po/glossary/de.po315
-rw-r--r--third_party/git/git-gui/po/glossary/git-gui-glossary.pot250
-rw-r--r--third_party/git/git-gui/po/glossary/git-gui-glossary.txt101
-rw-r--r--third_party/git/git-gui/po/ja.po9
20 files changed, 3062 insertions, 5159 deletions
diff --git a/third_party/git/git-gui/README.md b/third_party/git/git-gui/README.md
deleted file mode 100644
index 5ce2122fbc..0000000000
--- a/third_party/git/git-gui/README.md
+++ /dev/null
@@ -1,174 +0,0 @@
-# Git GUI - A graphical user interface for Git
-
-Git GUI allows you to use the [Git source control management
-tools](https://git-scm.com/) via a GUI. This includes staging, committing,
-adding, pushing, etc. It can also be used as a blame viewer, a tree browser,
-and a citool (make exactly one commit before exiting and returning to shell).
-More details about Git GUI can be found in its manual page by either running
-`man git-gui`, or by visiting the [online manual
-page](https://git-scm.com/docs/git-gui).
-
-Git GUI was initially written by Shawn O. Pearce, and is distributed with the
-standard Git installation.
-
-# Building and installing
-
-You need to have the following dependencies installed before you begin:
-
-- Git
-- Tcl
-- Tk
-- wish
-- Gitk (needed for browsing history)
-- msgfmt
-
-Most of Git GUI is written in Tcl, so there is no compilation involved. Still,
-some things do need to be done (mostly some substitutions), so you do need to
-"build" it.
-
-You can build Git GUI using:
-
-```
-make
-```
-
-And then install it using:
-
-```
-make install
-```
-
-You probably need to have root/admin permissions to install.
-
-# Contributing
-
-The project is currently maintained by Pratyush Yadav over at
-https://github.com/prati0100/git-gui. Even though the project is hosted at
-GitHub, the development does not happen over GitHub Issues and Pull Requests.
-Instead, an email based workflow is used. The Git mailing list
-[git@vger.kernel.org](mailto:git@vger.kernel.org) is where the patches are
-discussed and reviewed.
-
-More information about the Git mailing list and instructions to subscribe can
-be found [here](https://git.wiki.kernel.org/index.php/GitCommunity).
-
-## Sending your changes
-
-Since the development happens over email, you need to send in your commits in
-text format. Commits can be converted to emails via the two tools provided by
-Git: `git-send-email` and `git-format-patch`.
-
-You can use `git-format-patch` to generate patches in mbox format from your
-commits that can then be sent via email. Let's say you are working on a branch
-called 'foo' that was created on top of 'master'. You can run:
-
-```
-git format-patch -o output_dir master..foo
-```
-
-to convert all the extra commits in 'foo' into a set of patches saved in the
-folder `output_dir`.
-
-If you are sending multiple patches, it is recommended to include a cover
-letter. A cover letter is an email explaining in brief what the series is
-supposed to do. A cover letter template can be generated by passing
-`--cover-letter` to `git-format-patch`.
-
-After you send your patches, you might get a review suggesting some changes.
-Make those changes, and re-send your patch(es) in reply to the first patch of
-your initial version. Also please mention the version of the patch. This can be
-done by passing `-v X` to `git-format-patch`, where 'X' is the version number
-of the patch(es).
-
-### Using git-send-email
-
-You can use `git-send-email` to send patches generated via `git-format-patch`.
-While you can directly send patches via `git-send-email`, it is recommended
-that you first use `git-format-patch` to generate the emails, audit them, and
-then send them via `git-send-email`.
-
-A pretty good guide to configuring and using `git-send-email` can be found
-[here](https://www.freedesktop.org/wiki/Software/PulseAudio/HowToUseGitSendEmail/)
-
-### Using your email client
-
-If your email client supports sending mbox format emails, you can use
-`git-format-patch` to get an mbox file for each commit, and then send them. If
-there is more than one patch in the series, then all patches after the first
-patch (or the cover letter) need to be sent as replies to the first.
-`git-send-email` does this by default.
-
-### Using GitGitGadget
-
-Since some people prefer a GitHub pull request based workflow, they can use
-[GitGitGadget](https://gitgitgadget.github.io/) to send in patches. The tool
-was originally written for sending patches to the Git project, but it now also
-supports sending patches for git-gui.
-
-Instructions for using GitGitGadget to send git-gui patches, courtesy of
-Johannes Schindelin:
-
-If you don't already have a fork of the [git/git](https://github.com/git/git)
-repo, you need to make one. Then clone your fork:
-
-```
-git clone https://github.com/<your-username>/git
-```
-
-Then add GitGitGadget as a remote:
-
-```
-git remote add gitgitgadget https://github.com/gitgitgadget/git
-```
-
-Then fetch the git-gui branch:
-
-```
-git fetch gitgitgadget git-gui/master
-```
-
-Then create a new branch based on git-gui/master:
-
-```
-git checkout -b <your-branch-name> git-gui/master
-```
-
-Make whatever commits you need to, push them to your fork, and then head over
-to https://github.com/gitgitgadget/git/pulls and open a Pull Request targeting
-git-gui/master.
-
-GitGitGadget will welcome you with a (hopefully) helpful message.
-
-## Signing off
-
-You need to sign off your commits before sending them to the list. You can do
-that by passing the `-s` option to `git-commit`. You can also use the "Sign
-Off" option in Git GUI.
-
-A sign-off is a simple 'Signed-off-by: A U Thor \<author@example.com\>' line at
-the end of the commit message, after your explanation of the commit.
-
-A sign-off means that you are legally allowed to send the code, and it serves
-as a certificate of origin. More information can be found at
-[developercertificate.org](https://developercertificate.org/).
-
-## Responding to review comments
-
-It is quite likely your patches will get review comments. Those comments are
-sent on the Git mailing list as replies to your patch, and you will usually be
-Cc'ed in those replies.
-
-You are expected to respond by either explaining your code further to convince
-the reviewer what you are doing is correct, or acknowledge the comments and
-re-send the patches with those comments addressed.
-
-Some tips for those not familiar with communication on a mailing list:
-
-- Use only plain text emails. No HTML at all.
-- Wrap lines at around 75 characters.
-- Do not send attachments. If you do need to send some files, consider using a
-  hosting service, and paste the link in your email.
-- Do not [top post](http://www.idallen.com/topposting.html).
-- Always "reply all". Keep all correspondents and the list in Cc. If you reply
-  directly to a reviewer, and not Cc the list, other people would not be able
-  to chime in.
diff --git a/third_party/git/git-gui/git-gui--askpass b/third_party/git/git-gui/git-gui--askpass
index 1c99ee8ca2..4277f30c41 100755
--- a/third_party/git/git-gui/git-gui--askpass
+++ b/third_party/git/git-gui/git-gui--askpass
@@ -56,11 +56,6 @@ proc finish {} {
 		}
 	}
 
-	# On Windows, force the encoding to UTF-8: it is what `git.exe` expects
-	if {$::tcl_platform(platform) eq {windows}} {
-		set ::answer [encoding convertto utf-8 $::answer]
-	}
-
 	puts $::answer
 	set ::rc 0
 }
diff --git a/third_party/git/git-gui/git-gui.sh b/third_party/git/git-gui/git-gui.sh
index 4610e4ca72..6de74ce639 100755
--- a/third_party/git/git-gui/git-gui.sh
+++ b/third_party/git/git-gui/git-gui.sh
@@ -30,8 +30,8 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.}]
 ##
 ## Tcl/Tk sanity check
 
-if {[catch {package require Tcl 8.5} err]
- || [catch {package require Tk  8.5} err]
+if {[catch {package require Tcl 8.4} err]
+ || [catch {package require Tk  8.4} err]
 } {
 	catch {wm withdraw .}
 	tk_messageBox \
@@ -684,7 +684,6 @@ proc load_current_branch {} {
 	global current_branch is_detached
 
 	set fd [open [gitdir HEAD] r]
-	fconfigure $fd -translation binary -encoding utf-8
 	if {[gets $fd ref] < 1} {
 		set ref {}
 	}
@@ -1341,7 +1340,6 @@ set HEAD {}
 set PARENT {}
 set MERGE_HEAD [list]
 set commit_type {}
-set commit_type_is_amend 0
 set empty_tree {}
 set current_branch {}
 set is_detached 0
@@ -1349,9 +1347,8 @@ set current_diff_path {}
 set is_3way_diff 0
 set is_submodule_diff 0
 set is_conflict_diff 0
+set selected_commit_type new
 set diff_empty_count 0
-set last_revert {}
-set last_revert_enc {}
 
 set nullid "0000000000000000000000000000000000000000"
 set nullid2 "0000000000000000000000000000000000000001"
@@ -1437,7 +1434,7 @@ proc PARENT {} {
 }
 
 proc force_amend {} {
-	global commit_type_is_amend
+	global selected_commit_type
 	global HEAD PARENT MERGE_HEAD commit_type
 
 	repository_state newType newHEAD newMERGE_HEAD
@@ -1446,7 +1443,7 @@ proc force_amend {} {
 	set MERGE_HEAD $newMERGE_HEAD
 	set commit_type $newType
 
-	set commit_type_is_amend 1
+	set selected_commit_type amend
 	do_select_commit_type
 }
 
@@ -1798,10 +1795,10 @@ proc ui_status {msg} {
 	}
 }
 
-proc ui_ready {} {
+proc ui_ready {{test {}}} {
 	global main_status
 	if {[info exists main_status]} {
-		$main_status show [mc "Ready."]
+		$main_status show [mc "Ready."] $test
 	}
 }
 
@@ -2151,6 +2148,8 @@ proc incr_font_size {font {amt 1}} {
 ##
 ## ui commands
 
+set starting_gitk_msg [mc "Starting gitk... please wait..."]
+
 proc do_gitk {revs {is_submodule false}} {
 	global current_diff_path file_states current_diff_side ui_index
 	global _gitdir _gitworktree
@@ -2205,12 +2204,9 @@ proc do_gitk {revs {is_submodule false}} {
 		set env(GIT_WORK_TREE) $_gitworktree
 		cd $pwd
 
-		if {[info exists main_status]} {
-			set status_operation [$::main_status \
-				start \
-				[mc "Starting %s... please wait..." "gitk"]]
-
-			after 3500 [list $status_operation stop]
+		ui_status $::starting_gitk_msg
+		after 10000 {
+			ui_ready $starting_gitk_msg
 		}
 	}
 }
@@ -2242,16 +2238,16 @@ proc do_git_gui {} {
 		set env(GIT_WORK_TREE) $_gitworktree
 		cd $pwd
 
-		set status_operation [$::main_status \
-			start \
-			[mc "Starting %s... please wait..." "git-gui"]]
-
-		after 3500 [list $status_operation stop]
+		ui_status $::starting_gitk_msg
+		after 10000 {
+			ui_ready $starting_gitk_msg
+		}
 	}
 }
 
-# Get the system-specific explorer app/command.
-proc get_explorer {} {
+proc do_explore {} {
+	global _gitworktree
+	set explorer {}
 	if {[is_Cygwin] || [is_Windows]} {
 		set explorer "explorer.exe"
 	} elseif {[is_MacOSX]} {
@@ -2260,23 +2256,9 @@ proc get_explorer {} {
 		# freedesktop.org-conforming system is our best shot
 		set explorer "xdg-open"
 	}
-	return $explorer
-}
-
-proc do_explore {} {
-	global _gitworktree
-	set explorer [get_explorer]
 	eval exec $explorer [list [file nativename $_gitworktree]] &
 }
 
-# Open file relative to the working tree by the default associated app.
-proc do_file_open {file} {
-	global _gitworktree
-	set explorer [get_explorer]
-	set full_file_path [file join $_gitworktree $file]
-	exec $explorer [file nativename $full_file_path] &
-}
-
 set is_quitting 0
 set ret_code    1
 
@@ -2512,7 +2494,7 @@ proc force_first_diff {after} {
 
 proc toggle_or_diff {mode w args} {
 	global file_states file_lists current_diff_path ui_index ui_workdir
-	global last_clicked selected_paths file_lists_last_clicked
+	global last_clicked selected_paths
 
 	if {$mode eq "click"} {
 		foreach {x y} $args break
@@ -2569,8 +2551,6 @@ proc toggle_or_diff {mode w args} {
 	$ui_index tag remove in_sel 0.0 end
 	$ui_workdir tag remove in_sel 0.0 end
 
-	set file_lists_last_clicked($w) $path
-
 	# Determine the state of the file
 	if {[info exists file_states($path)]} {
 		set state [lindex $file_states($path) 0]
@@ -2684,32 +2664,6 @@ proc show_less_context {} {
 	}
 }
 
-proc focus_widget {widget} {
-	global file_lists last_clicked selected_paths
-	global file_lists_last_clicked
-
-	if {[llength $file_lists($widget)] > 0} {
-		set path $file_lists_last_clicked($widget)
-		set index [lsearch -sorted -exact $file_lists($widget) $path]
-		if {$index < 0} {
-			set index 0
-			set path [lindex $file_lists($widget) $index]
-		}
-
-		focus $widget
-		set last_clicked [list $widget [expr $index + 1]]
-		array unset selected_paths
-		set selected_paths($path) 1
-		show_diff $path $widget
-	}
-}
-
-proc toggle_commit_type {} {
-	global commit_type_is_amend
-	set commit_type_is_amend [expr !$commit_type_is_amend]
-	do_select_commit_type
-}
-
 ######################################################################
 ##
 ## ui construction
@@ -2752,18 +2706,10 @@ if {![is_bare]} {
 }
 
 if {[is_Windows]} {
-	# Use /git-bash.exe if available
-	set normalized [file normalize $::argv0]
-	regsub "/mingw../libexec/git-core/git-gui$" \
-		$normalized "/git-bash.exe" cmdLine
-	if {$cmdLine != $normalized && [file exists $cmdLine]} {
-		set cmdLine [list "Git Bash" $cmdLine &]
-	} else {
-		set cmdLine [list "Git Bash" bash --login -l &]
-	}
 	.mbar.repository add command \
 		-label [mc "Git Bash"] \
-		-command {eval exec [auto_execok start] $cmdLine}
+		-command {eval exec [auto_execok start] \
+					  [list "Git Bash" bash --login -l &]}
 }
 
 if {[is_Windows] || ![is_bare]} {
@@ -2906,11 +2852,19 @@ if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 	menu .mbar.commit
 
 	if {![is_enabled nocommit]} {
-		.mbar.commit add checkbutton \
+		.mbar.commit add radiobutton \
+			-label [mc "New Commit"] \
+			-command do_select_commit_type \
+			-variable selected_commit_type \
+			-value new
+		lappend disable_on_lock \
+			[list .mbar.commit entryconf [.mbar.commit index last] -state]
+
+		.mbar.commit add radiobutton \
 			-label [mc "Amend Last Commit"] \
-			-accelerator $M1T-E \
-			-variable commit_type_is_amend \
-			-command do_select_commit_type
+			-command do_select_commit_type \
+			-variable selected_commit_type \
+			-value amend
 		lappend disable_on_lock \
 			[list .mbar.commit entryconf [.mbar.commit index last] -state]
 
@@ -3076,23 +3030,8 @@ unset doc_path doc_url
 wm protocol . WM_DELETE_WINDOW do_quit
 bind all <$M1B-Key-q> do_quit
 bind all <$M1B-Key-Q> do_quit
-
-set m1b_w_script {
-	set toplvl_win [winfo toplevel %W]
-
-	# If we are destroying the main window, we should call do_quit to take
-	# care of cleanup before exiting the program.
-	if {$toplvl_win eq "."} {
-		do_quit
-	} else {
-		destroy $toplvl_win
-	}
-}
-
-bind all <$M1B-Key-w> $m1b_w_script
-bind all <$M1B-Key-W> $m1b_w_script
-
-unset m1b_w_script
+bind all <$M1B-Key-w> {destroy [winfo toplevel %W]}
+bind all <$M1B-Key-W> {destroy [winfo toplevel %W]}
 
 set subcommand_args {}
 proc usage {} {
@@ -3398,10 +3337,18 @@ set ui_comm .vpane.lower.commarea.buffer.frame.t
 set ui_coml .vpane.lower.commarea.buffer.header.l
 
 if {![is_enabled nocommit]} {
-	${NS}::checkbutton .vpane.lower.commarea.buffer.header.amend \
+	${NS}::radiobutton .vpane.lower.commarea.buffer.header.new \
+		-text [mc "New Commit"] \
+		-command do_select_commit_type \
+		-variable selected_commit_type \
+		-value new
+	lappend disable_on_lock \
+		[list .vpane.lower.commarea.buffer.header.new conf -state]
+	${NS}::radiobutton .vpane.lower.commarea.buffer.header.amend \
 		-text [mc "Amend Last Commit"] \
-		-variable commit_type_is_amend \
-		-command do_select_commit_type
+		-command do_select_commit_type \
+		-variable selected_commit_type \
+		-value amend
 	lappend disable_on_lock \
 		[list .vpane.lower.commarea.buffer.header.amend conf -state]
 }
@@ -3426,6 +3373,7 @@ pack $ui_coml -side left -fill x
 
 if {![is_enabled nocommit]} {
 	pack .vpane.lower.commarea.buffer.header.amend -side right
+	pack .vpane.lower.commarea.buffer.header.new -side right
 }
 
 textframe .vpane.lower.commarea.buffer.frame
@@ -3439,16 +3387,10 @@ ttext $ui_comm -background white -foreground black \
 	-relief sunken \
 	-width $repo_config(gui.commitmsgwidth) -height 9 -wrap none \
 	-font font_diff \
-	-xscrollcommand {.vpane.lower.commarea.buffer.frame.sbx set} \
 	-yscrollcommand {.vpane.lower.commarea.buffer.frame.sby set}
-${NS}::scrollbar .vpane.lower.commarea.buffer.frame.sbx \
-	-orient horizontal \
-	-command [list $ui_comm xview]
 ${NS}::scrollbar .vpane.lower.commarea.buffer.frame.sby \
-	-orient vertical \
 	-command [list $ui_comm yview]
 
-pack .vpane.lower.commarea.buffer.frame.sbx -side bottom -fill x
 pack .vpane.lower.commarea.buffer.frame.sby -side right -fill y
 pack $ui_comm -side left -fill y
 pack .vpane.lower.commarea.buffer.header -side top -fill x
@@ -3528,11 +3470,9 @@ tlabel .vpane.lower.diff.header.file \
 	-justify left
 tlabel .vpane.lower.diff.header.path \
 	-background gold \
-	-foreground blue \
+	-foreground black \
 	-anchor w \
-	-justify left \
-	-font [eval font create [font configure font_ui] -underline 1] \
-	-cursor hand2
+	-justify left
 pack .vpane.lower.diff.header.status -side left
 pack .vpane.lower.diff.header.file -side left
 pack .vpane.lower.diff.header.path -fill x
@@ -3547,12 +3487,8 @@ $ctxm add command \
 			-type STRING \
 			-- $current_diff_path
 	}
-$ctxm add command \
-	-label [mc Open] \
-	-command {do_file_open $current_diff_path}
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
 bind_button3 .vpane.lower.diff.header.path "tk_popup $ctxm %X %Y"
-bind .vpane.lower.diff.header.path <Button-1> {do_file_open $current_diff_path}
 
 # -- Diff Body
 #
@@ -3611,9 +3547,6 @@ $ui_diff tag conf d_s- \
 $ui_diff tag conf d< \
 	-foreground orange \
 	-font font_diffbold
-$ui_diff tag conf d| \
-	-foreground orange \
-	-font font_diffbold
 $ui_diff tag conf d= \
 	-foreground orange \
 	-font font_diffbold
@@ -3673,32 +3606,16 @@ set ctxm .vpane.lower.diff.body.ctxm
 menu $ctxm -tearoff 0
 $ctxm add command \
 	-label [mc "Apply/Reverse Hunk"] \
-	-command {apply_or_revert_hunk $cursorX $cursorY 0}
+	-command {apply_hunk $cursorX $cursorY}
 set ui_diff_applyhunk [$ctxm index last]
 lappend diff_actions [list $ctxm entryconf $ui_diff_applyhunk -state]
 $ctxm add command \
 	-label [mc "Apply/Reverse Line"] \
-	-command {apply_or_revert_range_or_line $cursorX $cursorY 0; do_rescan}
+	-command {apply_range_or_line $cursorX $cursorY; do_rescan}
 set ui_diff_applyline [$ctxm index last]
 lappend diff_actions [list $ctxm entryconf $ui_diff_applyline -state]
 $ctxm add separator
 $ctxm add command \
-	-label [mc "Revert Hunk"] \
-	-command {apply_or_revert_hunk $cursorX $cursorY 1}
-set ui_diff_reverthunk [$ctxm index last]
-lappend diff_actions [list $ctxm entryconf $ui_diff_reverthunk -state]
-$ctxm add command \
-	-label [mc "Revert Line"] \
-	-command {apply_or_revert_range_or_line $cursorX $cursorY 1; do_rescan}
-set ui_diff_revertline [$ctxm index last]
-lappend diff_actions [list $ctxm entryconf $ui_diff_revertline -state]
-$ctxm add command \
-	-label [mc "Undo Last Revert"] \
-	-command {undo_last_revert; do_rescan}
-set ui_diff_undorevert [$ctxm index last]
-lappend diff_actions [list $ctxm entryconf $ui_diff_undorevert -state]
-$ctxm add separator
-$ctxm add command \
 	-label [mc "Show Less Context"] \
 	-command show_less_context
 lappend diff_actions [list $ctxm entryconf [$ctxm index last] -state]
@@ -3776,7 +3693,7 @@ proc has_textconv {path} {
 }
 
 proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} {
-	global current_diff_path file_states last_revert
+	global current_diff_path file_states
 	set ::cursorX $x
 	set ::cursorY $y
 	if {[info exists file_states($current_diff_path)]} {
@@ -3790,28 +3707,19 @@ proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} {
 		tk_popup $ctxmsm $X $Y
 	} else {
 		set has_range [expr {[$::ui_diff tag nextrange sel 0.0] != {}}]
-		set u [mc "Undo Last Revert"]
 		if {$::ui_index eq $::current_diff_side} {
 			set l [mc "Unstage Hunk From Commit"]
-			set h [mc "Revert Hunk"]
-
 			if {$has_range} {
 				set t [mc "Unstage Lines From Commit"]
-				set r [mc "Revert Lines"]
 			} else {
 				set t [mc "Unstage Line From Commit"]
-				set r [mc "Revert Line"]
 			}
 		} else {
 			set l [mc "Stage Hunk For Commit"]
-			set h [mc "Revert Hunk"]
-
 			if {$has_range} {
 				set t [mc "Stage Lines For Commit"]
-				set r [mc "Revert Lines"]
 			} else {
 				set t [mc "Stage Line For Commit"]
-				set r [mc "Revert Line"]
 			}
 		}
 		if {$::is_3way_diff
@@ -3822,35 +3730,11 @@ proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} {
 			|| [string match {T?} $state]
 			|| [has_textconv $current_diff_path]} {
 			set s disabled
-			set revert_state disabled
 		} else {
 			set s normal
-
-			# Only allow reverting changes in the working tree. If
-			# the user wants to revert changes in the index, they
-			# need to unstage those first.
-			if {$::ui_workdir eq $::current_diff_side} {
-				set revert_state normal
-			} else {
-				set revert_state disabled
-			}
 		}
-
-		if {$last_revert eq {}} {
-			set undo_state disabled
-		} else {
-			set undo_state normal
-		}
-
 		$ctxm entryconf $::ui_diff_applyhunk -state $s -label $l
 		$ctxm entryconf $::ui_diff_applyline -state $s -label $t
-		$ctxm entryconf $::ui_diff_revertline -state $revert_state \
-			-label $r
-		$ctxm entryconf $::ui_diff_reverthunk -state $revert_state \
-			-label $h
-		$ctxm entryconf $::ui_diff_undorevert -state $undo_state \
-			-label $u
-
 		tk_popup $ctxm $X $Y
 	}
 }
@@ -3977,8 +3861,6 @@ bind .   <$M1B-Key-j> do_revert_selection
 bind .   <$M1B-Key-J> do_revert_selection
 bind .   <$M1B-Key-i> do_add_all
 bind .   <$M1B-Key-I> do_add_all
-bind .   <$M1B-Key-e> toggle_commit_type
-bind .   <$M1B-Key-E> toggle_commit_type
 bind .   <$M1B-Key-minus> {show_less_context;break}
 bind .   <$M1B-Key-KP_Subtract> {show_less_context;break}
 bind .   <$M1B-Key-equal> {show_more_context;break}
@@ -3995,14 +3877,6 @@ foreach i [list $ui_index $ui_workdir] {
 }
 unset i
 
-bind .   <Alt-Key-1> {focus_widget $::ui_workdir}
-bind .   <Alt-Key-2> {focus_widget $::ui_index}
-bind .   <Alt-Key-3> {focus $::ui_diff}
-bind .   <Alt-Key-4> {focus $::ui_comm}
-
-set file_lists_last_clicked($ui_index) {}
-set file_lists_last_clicked($ui_workdir) {}
-
 set file_lists($ui_index) [list]
 set file_lists($ui_workdir) [list]
 
@@ -4181,9 +4055,6 @@ if {$picked && [is_config_true gui.autoexplore]} {
 	do_explore
 }
 
-# Clear "Initializing..." status
-after 500 {$main_status show ""}
-
 # Local variables:
 # mode: tcl
 # indent-tabs-mode: t
diff --git a/third_party/git/git-gui/lib/blame.tcl b/third_party/git/git-gui/lib/blame.tcl
index 62ec083667..a1aeb8b96e 100644
--- a/third_party/git/git-gui/lib/blame.tcl
+++ b/third_party/git/git-gui/lib/blame.tcl
@@ -24,7 +24,6 @@ field w_cviewer  ; # pane showing commit message
 field finder     ; # find mini-dialog frame
 field gotoline   ; # line goto mini-dialog frame
 field status     ; # status mega-widget instance
-field status_operation ; # operation displayed by status mega-widget
 field old_height ; # last known height of $w.file_pane
 
 
@@ -275,7 +274,6 @@ constructor new {i_commit i_path i_jump} {
 	pack $w_cviewer -expand 1 -fill both
 
 	set status [::status_bar::new $w.status]
-	set status_operation {}
 
 	menu $w.ctxm -tearoff 0
 	$w.ctxm add command \
@@ -604,23 +602,16 @@ method _exec_blame {cur_w cur_d options cur_s} {
 	} else {
 		lappend options $commit
 	}
-
-	# We may recurse in from another call to _exec_blame and already have
-	# a status operation.
-	if {$status_operation == {}} {
-		set status_operation [$status start \
-			$cur_s \
-			[mc "lines annotated"]]
-	} else {
-		$status_operation restart $cur_s
-	}
-
 	lappend options -- $path
 	set fd [eval git_read --nice blame $options]
 	fconfigure $fd -blocking 0 -translation lf -encoding utf-8
 	fileevent $fd readable [cb _read_blame $fd $cur_w $cur_d]
 	set current_fd $fd
 	set blame_lines 0
+
+	$status start \
+		$cur_s \
+		[mc "lines annotated"]
 }
 
 method _read_blame {fd cur_w cur_d} {
@@ -815,11 +806,10 @@ method _read_blame {fd cur_w cur_d} {
 				[mc "Loading original location annotations..."]
 		} else {
 			set current_fd {}
-			$status_operation stop [mc "Annotation complete."]
-			set status_operation {}
+			$status stop [mc "Annotation complete."]
 		}
 	} else {
-		$status_operation update $blame_lines $total_lines
+		$status update $blame_lines $total_lines
 	}
 } ifdeleted { catch {close $fd} }
 
@@ -1134,7 +1124,7 @@ method _blameparent {} {
 			set diffcmd [list diff-tree --unified=0 $cparent $cmit -- $new_path]
 		}
 		if {[catch {set fd [eval git_read $diffcmd]} err]} {
-			$status_operation stop [mc "Unable to display parent"]
+			$status stop [mc "Unable to display parent"]
 			error_popup [strcat [mc "Error loading diff:"] "\n\n$err"]
 			return
 		}
diff --git a/third_party/git/git-gui/lib/branch.tcl b/third_party/git/git-gui/lib/branch.tcl
index 8b0c485889..777eeb79c1 100644
--- a/third_party/git/git-gui/lib/branch.tcl
+++ b/third_party/git/git-gui/lib/branch.tcl
@@ -8,7 +8,6 @@ proc load_all_heads {} {
 	set rh_len [expr {[string length $rh] + 1}]
 	set all_heads [list]
 	set fd [git_read for-each-ref --format=%(refname) $rh]
-	fconfigure $fd -translation binary -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 +24,6 @@ proc load_all_tags {} {
 		--sort=-taggerdate \
 		--format=%(refname) \
 		refs/tags]
-	fconfigure $fd -translation binary -encoding utf-8
 	while {[gets $fd line] > 0} {
 		if {![regsub ^refs/tags/ $line {} name]} continue
 		lappend all_tags $name
diff --git a/third_party/git/git-gui/lib/checkout_op.tcl b/third_party/git/git-gui/lib/checkout_op.tcl
index 21ea768d80..9e7412c446 100644
--- a/third_party/git/git-gui/lib/checkout_op.tcl
+++ b/third_party/git/git-gui/lib/checkout_op.tcl
@@ -341,9 +341,9 @@ method _readtree {} {
 	global HEAD
 
 	set readtree_d {}
-	set status_bar_operation [$::main_status start \
+	$::main_status start \
 		[mc "Updating working directory to '%s'..." [_name $this]] \
-		[mc "files checked out"]]
+		[mc "files checked out"]
 
 	set fd [git_read --stderr read-tree \
 		-m \
@@ -354,27 +354,26 @@ method _readtree {} {
 		$new_hash \
 		]
 	fconfigure $fd -blocking 0 -translation binary
-	fileevent $fd readable [cb _readtree_wait $fd $status_bar_operation]
+	fileevent $fd readable [cb _readtree_wait $fd]
 }
 
-method _readtree_wait {fd status_bar_operation} {
+method _readtree_wait {fd} {
 	global current_branch
 
 	set buf [read $fd]
-	$status_bar_operation update_meter $buf
+	$::main_status update_meter $buf
 	append readtree_d $buf
 
 	fconfigure $fd -blocking 1
 	if {![eof $fd]} {
 		fconfigure $fd -blocking 0
-		$status_bar_operation stop
 		return
 	}
 
 	if {[catch {close $fd}]} {
 		set err $readtree_d
 		regsub {^fatal: } $err {} err
-		$status_bar_operation stop [mc "Aborted checkout of '%s' (file level merging is required)." [_name $this]]
+		$::main_status stop [mc "Aborted checkout of '%s' (file level merging is required)." [_name $this]]
 		warn_popup [strcat [mc "File level merge required."] "
 
 $err
@@ -385,12 +384,12 @@ $err
 		return
 	}
 
-	$status_bar_operation stop
+	$::main_status stop
 	_after_readtree $this
 }
 
 method _after_readtree {} {
-	global commit_type HEAD MERGE_HEAD PARENT
+	global selected_commit_type commit_type HEAD MERGE_HEAD PARENT
 	global current_branch is_detached
 	global ui_comm
 
@@ -491,12 +490,12 @@ method _update_repo_state {} {
 	#    amend mode our file lists are accurate and we can avoid
 	#    the rescan.
 	#
-	global commit_type_is_amend commit_type HEAD MERGE_HEAD PARENT
+	global selected_commit_type commit_type HEAD MERGE_HEAD PARENT
 	global ui_comm
 
 	unlock_index
 	set name [_name $this]
-	set commit_type_is_amend 0
+	set selected_commit_type new
 	if {[string match amend* $commit_type]} {
 		$ui_comm delete 0.0 end
 		$ui_comm edit reset
diff --git a/third_party/git/git-gui/lib/choose_repository.tcl b/third_party/git/git-gui/lib/choose_repository.tcl
index e54f3e66d8..80f5a59bbb 100644
--- a/third_party/git/git-gui/lib/choose_repository.tcl
+++ b/third_party/git/git-gui/lib/choose_repository.tcl
@@ -9,18 +9,6 @@ field w_body      ; # Widget holding the center content
 field w_next      ; # Next button
 field w_quit      ; # Quit button
 field o_cons      ; # Console object (if active)
-
-# Status mega-widget instance during _do_clone2 (used by _copy_files and
-# _link_files). Widget is destroyed before _do_clone2 calls
-# _do_clone_checkout
-field o_status
-
-# Operation displayed by status mega-widget during _do_clone_checkout =>
-# _readtree_wait => _postcheckout_wait => _do_clone_submodules =>
-# _do_validate_submodule_cloning. The status mega-widget is a different
-# instance than that stored in $o_status in earlier operations.
-field o_status_op
-
 field w_types     ; # List of type buttons in clone
 field w_recentlist ; # Listbox containing recent repositories
 field w_localpath  ; # Entry widget bound to local_path
@@ -671,12 +659,12 @@ method _do_clone2 {} {
 
 	switch -exact -- $clone_type {
 	hardlink {
-		set o_status [status_bar::two_line $w_body]
+		set o_cons [status_bar::two_line $w_body]
 		pack $w_body -fill x -padx 10 -pady 10
 
-		set status_op [$o_status start \
+		$o_cons start \
 			[mc "Counting objects"] \
-			[mc "buckets"]]
+			[mc "buckets"]
 		update
 
 		if {[file exists [file join $objdir info alternates]]} {
@@ -701,7 +689,6 @@ method _do_clone2 {} {
 			} err]} {
 				catch {cd $pwd}
 				_clone_failed $this [mc "Unable to copy objects/info/alternates: %s" $err]
-				$status_op stop
 				return
 			}
 		}
@@ -713,7 +700,7 @@ method _do_clone2 {} {
 			-directory [file join $objdir] ??]
 		set bcnt [expr {[llength $buckets] + 2}]
 		set bcur 1
-		$status_op update $bcur $bcnt
+		$o_cons update $bcur $bcnt
 		update
 
 		file mkdir [file join .git objects pack]
@@ -721,7 +708,7 @@ method _do_clone2 {} {
 			-directory [file join $objdir pack] *] {
 			lappend tolink [file join pack $i]
 		}
-		$status_op update [incr bcur] $bcnt
+		$o_cons update [incr bcur] $bcnt
 		update
 
 		foreach i $buckets {
@@ -730,10 +717,10 @@ method _do_clone2 {} {
 				-directory [file join $objdir $i] *] {
 				lappend tolink [file join $i $j]
 			}
-			$status_op update [incr bcur] $bcnt
+			$o_cons update [incr bcur] $bcnt
 			update
 		}
-		$status_op stop
+		$o_cons stop
 
 		if {$tolink eq {}} {
 			info_popup [strcat \
@@ -760,8 +747,6 @@ method _do_clone2 {} {
 		if {!$i} return
 
 		destroy $w_body
-
-		set o_status {}
 	}
 	full {
 		set o_cons [console::embed \
@@ -796,9 +781,9 @@ method _do_clone2 {} {
 }
 
 method _copy_files {objdir tocopy} {
-	set status_op [$o_status start \
+	$o_cons start \
 		[mc "Copying objects"] \
-		[mc "KiB"]]
+		[mc "KiB"]
 	set tot 0
 	set cmp 0
 	foreach p $tocopy {
@@ -813,7 +798,7 @@ method _copy_files {objdir tocopy} {
 
 				while {![eof $f_in]} {
 					incr cmp [fcopy $f_in $f_cp -size 16384]
-					$status_op update \
+					$o_cons update \
 						[expr {$cmp / 1024}] \
 						[expr {$tot / 1024}]
 					update
@@ -823,19 +808,17 @@ method _copy_files {objdir tocopy} {
 				close $f_cp
 			} err]} {
 			_clone_failed $this [mc "Unable to copy object: %s" $err]
-			$status_op stop
 			return 0
 		}
 	}
-	$status_op stop
 	return 1
 }
 
 method _link_files {objdir tolink} {
 	set total [llength $tolink]
-	set status_op [$o_status start \
+	$o_cons start \
 		[mc "Linking objects"] \
-		[mc "objects"]]
+		[mc "objects"]
 	for {set i 0} {$i < $total} {} {
 		set p [lindex $tolink $i]
 		if {[catch {
@@ -844,17 +827,15 @@ method _link_files {objdir tolink} {
 					[file join $objdir $p]
 			} err]} {
 			_clone_failed $this [mc "Unable to hardlink object: %s" $err]
-			$status_op stop
 			return 0
 		}
 
 		incr i
 		if {$i % 5 == 0} {
-			$status_op update $i $total
+			$o_cons update $i $total
 			update
 		}
 	}
-	$status_op stop
 	return 1
 }
 
@@ -977,26 +958,11 @@ method _do_clone_checkout {HEAD} {
 		return
 	}
 
-	set status [status_bar::two_line $w_body]
+	set o_cons [status_bar::two_line $w_body]
 	pack $w_body -fill x -padx 10 -pady 10
-
-	# We start the status operation here.
-	#
-	# This function calls _readtree_wait as a callback.
-	#
-	# _readtree_wait in turn either calls _do_clone_submodules directly,
-	# or calls _postcheckout_wait as a callback which then calls
-	# _do_clone_submodules.
-	#
-	# _do_clone_submodules calls _do_validate_submodule_cloning.
-	#
-	# _do_validate_submodule_cloning stops the status operation.
-	#
-	# There are no other calls into this chain from other code.
-
-	set o_status_op [$status start \
+	$o_cons start \
 		[mc "Creating working directory"] \
-		[mc "files"]]
+		[mc "files"]
 
 	set readtree_err {}
 	set fd [git_read --stderr read-tree \
@@ -1010,9 +976,33 @@ method _do_clone_checkout {HEAD} {
 	fileevent $fd readable [cb _readtree_wait $fd]
 }
 
+method _do_validate_submodule_cloning {ok} {
+	if {$ok} {
+		$o_cons done $ok
+		set done 1
+	} else {
+		_clone_failed $this [mc "Cannot clone submodules."]
+	}
+}
+
+method _do_clone_submodules {} {
+	if {$recursive eq {true}} {
+		destroy $w_body
+		set o_cons [console::embed \
+			$w_body \
+			[mc "Cloning submodules"]]
+		pack $w_body -fill both -expand 1 -padx 10
+		$o_cons exec \
+			[list git submodule update --init --recursive] \
+			[cb _do_validate_submodule_cloning]
+	} else {
+		set done 1
+	}
+}
+
 method _readtree_wait {fd} {
 	set buf [read $fd]
-	$o_status_op update_meter $buf
+	$o_cons update_meter $buf
 	append readtree_err $buf
 
 	fconfigure $fd -blocking 1
@@ -1060,34 +1050,6 @@ method _postcheckout_wait {fd_ph} {
 	fconfigure $fd_ph -blocking 0
 }
 
-method _do_clone_submodules {} {
-	if {$recursive eq {true}} {
-		$o_status_op stop
-		set o_status_op {}
-
-		destroy $w_body
-
-		set o_cons [console::embed \
-			$w_body \
-			[mc "Cloning submodules"]]
-		pack $w_body -fill both -expand 1 -padx 10
-		$o_cons exec \
-			[list git submodule update --init --recursive] \
-			[cb _do_validate_submodule_cloning]
-	} else {
-		set done 1
-	}
-}
-
-method _do_validate_submodule_cloning {ok} {
-	if {$ok} {
-		$o_cons done $ok
-		set done 1
-	} else {
-		_clone_failed $this [mc "Cannot clone submodules."]
-	}
-}
-
 ######################################################################
 ##
 ## Open Existing Repository
diff --git a/third_party/git/git-gui/lib/chord.tcl b/third_party/git/git-gui/lib/chord.tcl
deleted file mode 100644
index e21e7d3d0b..0000000000
--- a/third_party/git/git-gui/lib/chord.tcl
+++ /dev/null
@@ -1,158 +0,0 @@
-# Simple Chord for Tcl
-#
-# A "chord" is a method with more than one entrypoint and only one body, such
-# that the body runs only once all the entrypoints have been called by
-# different asynchronous tasks. In this implementation, the chord is defined
-# dynamically for each invocation. A SimpleChord object is created, supplying
-# body script to be run when the chord is completed, and then one or more notes
-# are added to the chord. Each note can be called like a proc, and returns
-# immediately if the chord isn't yet complete. When the last remaining note is
-# called, the body runs before the note returns.
-#
-# The SimpleChord class has a constructor that takes the body script, and a
-# method add_note that returns a note object. Since the body script does not
-# run in the context of the procedure that defined it, a mechanism is provided
-# for injecting variables into the chord for use by the body script. The
-# activation of a note is idempotent; multiple calls have the same effect as
-# a simple call.
-#
-# If you are invoking asynchronous operations with chord notes as completion
-# callbacks, and there is a possibility that earlier operations could complete
-# before later ones are started, it is a good practice to create a "common"
-# note on the chord that prevents it from being complete until you're certain
-# you've added all the notes you need.
-#
-# Example:
-#
-#   # Turn off the UI while running a couple of async operations.
-#   lock_ui
-#
-#   set chord [SimpleChord::new {
-#     unlock_ui
-#     # Note: $notice here is not referenced in the calling scope
-#     if {$notice} { info_popup $notice }
-#   }
-#
-#   # Configure a note to keep the chord from completing until
-#   # all operations have been initiated.
-#   set common_note [$chord add_note]
-#
-#   # Activate notes in 'after' callbacks to other operations
-#   set newnote [$chord add_note]
-#   async_operation $args [list $newnote activate]
-#
-#   # Communicate with the chord body
-#   if {$condition} {
-#     # This sets $notice in the same context that the chord body runs in.
-#     $chord eval { set notice "Something interesting" }
-#   }
-#
-#   # Activate the common note, making the chord eligible to complete
-#   $common_note activate
-#
-# At this point, the chord will complete at some unknown point in the future.
-# The common note might have been the first note activated, or the async
-# operations might have completed synchronously and the common note is the
-# last one, completing the chord before this code finishes, or anything in
-# between. The purpose of the chord is to not have to worry about the order.
-
-# SimpleChord class:
-#   Represents a procedure that conceptually has multiple entrypoints that must
-#   all be called before the procedure executes. Each entrypoint is called a
-#   "note". The chord is only "completed" when all the notes are "activated".
-class SimpleChord {
-	field notes
-	field body
-	field is_completed
-	field eval_ns
-
-	# Constructor:
-	#   set chord [SimpleChord::new {body}]
-	#     Creates a new chord object with the specified body script. The
-	#     body script is evaluated at most once, when a note is activated
-	#     and the chord has no other non-activated notes.
-	constructor new {i_body} {
-		set notes [list]
-		set body $i_body
-		set is_completed 0
-		set eval_ns "[namespace qualifiers $this]::eval"
-		return $this
-	}
-
-	# Method:
-	#   $chord eval {script}
-	#     Runs the specified script in the same context (namespace) in which
-	#     the chord body will be evaluated. This can be used to set variable
-	#     values for the chord body to use.
-	method eval {script} {
-		namespace eval $eval_ns $script
-	}
-
-	# Method:
-	#   set note [$chord add_note]
-	#     Adds a new note to the chord, an instance of ChordNote. Raises an
-	#     error if the chord is already completed, otherwise the chord is
-	#     updated so that the new note must also be activated before the
-	#     body is evaluated.
-	method add_note {} {
-		if {$is_completed} { error "Cannot add a note to a completed chord" }
-
-		set note [ChordNote::new $this]
-
-		lappend notes $note
-
-		return $note
-	}
-
-	# This method is for internal use only and is intentionally undocumented.
-	method notify_note_activation {} {
-		if {!$is_completed} {
-			foreach note $notes {
-				if {![$note is_activated]} { return }
-			}
-
-			set is_completed 1
-
-			namespace eval $eval_ns $body
-			delete_this
-		}
-	}
-}
-
-# ChordNote class:
-#   Represents a note within a chord, providing a way to activate it. When the
-#   final note of the chord is activated (this can be any note in the chord,
-#   with all other notes already previously activated in any order), the chord's
-#   body is evaluated.
-class ChordNote {
-	field chord
-	field is_activated
-
-	# Constructor:
-	#   Instances of ChordNote are created internally by calling add_note on
-	#   SimpleChord objects.
-	constructor new {c} {
-		set chord $c
-		set is_activated 0
-		return $this
-	}
-
-	# Method:
-	#   [$note is_activated]
-	#     Returns true if this note has already been activated.
-	method is_activated {} {
-		return $is_activated
-	}
-
-	# Method:
-	#   $note activate
-	#     Activates the note, if it has not already been activated, and
-	#     completes the chord if there are no other notes awaiting
-	#     activation. Subsequent calls will have no further effect.
-	method activate {} {
-		if {!$is_activated} {
-			set is_activated 1
-			$chord notify_note_activation
-		}
-	}
-}
diff --git a/third_party/git/git-gui/lib/commit.tcl b/third_party/git/git-gui/lib/commit.tcl
index b516aa2990..75ea965dac 100644
--- a/third_party/git/git-gui/lib/commit.tcl
+++ b/third_party/git/git-gui/lib/commit.tcl
@@ -333,7 +333,7 @@ proc commit_writetree {curHEAD msg_p} {
 proc commit_committree {fd_wt curHEAD msg_p} {
 	global HEAD PARENT MERGE_HEAD commit_type commit_author
 	global current_branch
-	global ui_comm commit_type_is_amend
+	global ui_comm selected_commit_type
 	global file_states selected_paths rescan_active
 	global repo_config
 	global env
@@ -467,8 +467,8 @@ A rescan will be automatically started now.
 
 	# -- Update in memory status
 	#
+	set selected_commit_type new
 	set commit_type normal
-	set commit_type_is_amend 0
 	set HEAD $cmt_id
 	set PARENT $cmt_id
 	set MERGE_HEAD [list]
diff --git a/third_party/git/git-gui/lib/console.tcl b/third_party/git/git-gui/lib/console.tcl
index bb6b9c889e..1f3248ffd1 100644
--- a/third_party/git/git-gui/lib/console.tcl
+++ b/third_party/git/git-gui/lib/console.tcl
@@ -203,8 +203,6 @@ method done {ok} {
 			focus $w.ok
 		}
 	}
-
-	bind $w <Key-Escape> "destroy $w;break"
 }
 
 method _sb_set {sb orient first last} {
diff --git a/third_party/git/git-gui/lib/diff.tcl b/third_party/git/git-gui/lib/diff.tcl
index 871ad488c2..68c4a6c736 100644
--- a/third_party/git/git-gui/lib/diff.tcl
+++ b/third_party/git/git-gui/lib/diff.tcl
@@ -55,7 +55,7 @@ proc reshow_diff {{after {}}} {
 
 proc force_diff_encoding {enc} {
 	global current_diff_path
-
+	
 	if {$current_diff_path ne {}} {
 		force_path_encoding $current_diff_path $enc
 		reshow_diff
@@ -270,6 +270,19 @@ proc show_other_diff {path w m cont_info} {
 	}
 }
 
+proc get_conflict_marker_size {path} {
+	set size 7
+	catch {
+		set fd_rc [eval [list git_read check-attr "conflict-marker-size" -- $path]]
+		set ret [gets $fd_rc line]
+		close $fd_rc
+		if {$ret > 0} {
+			regexp {.*: conflict-marker-size: (\d+)$} $line line size
+		}
+	}
+	return $size
+}
+
 proc start_show_diff {cont_info {add_opts {}}} {
 	global file_states file_lists
 	global is_3way_diff is_submodule_diff diff_active repo_config
@@ -285,7 +298,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
 	set is_submodule_diff 0
 	set diff_active 1
 	set current_diff_header {}
-	set conflict_size [gitattr $path conflict-marker-size 7]
+	set conflict_size [get_conflict_marker_size $path]
 
 	set cmd [list]
 	if {$w eq $ui_index} {
@@ -347,10 +360,6 @@ proc start_show_diff {cont_info {add_opts {}}} {
 	}
 
 	set ::current_diff_inheader 1
-	# Detect pre-image lines of the diff3 conflict-style. They are just
-	# '++' lines which is not bijective. Thus, we need to maintain a state
-	# across lines.
-	set ::conflict_in_pre_image 0
 	fconfigure $fd \
 		-blocking 0 \
 		-encoding [get_path_encoding $path] \
@@ -453,23 +462,11 @@ proc read_diff {fd conflict_size cont_info} {
 			{--} {set tags d_--}
 			{++} {
 				set regexp [string map [list %conflict_size $conflict_size]\
-								{^\+\+([<>=|]){%conflict_size}(?: |$)}]
+								{^\+\+([<>=]){%conflict_size}(?: |$)}]
 				if {[regexp $regexp $line _g op]} {
 					set is_conflict_diff 1
 					set line [string replace $line 0 1 {  }]
 					set tags d$op
-
-					# The ||| conflict-marker marks the start of the pre-image.
-					# All those lines are also prefixed with '++'. Thus we need
-					# to maintain this state.
-					set ::conflict_in_pre_image [expr {$op eq {|}}]
-				} elseif {$::conflict_in_pre_image} {
-					# This is a pre-image line. It is the one which both sides
-					# are based on. As it has also the '++' line start, it is
-					# normally shown as 'added'. Invert this to '--' to make
-					# it a 'removed' line.
-					set line [string replace $line 0 1 {--}]
-					set tags d_--
 				} else {
 					set tags d_++
 				}
@@ -570,31 +567,24 @@ proc read_diff {fd conflict_size cont_info} {
 	}
 }
 
-proc apply_or_revert_hunk {x y revert} {
+proc apply_hunk {x y} {
 	global current_diff_path current_diff_header current_diff_side
-	global ui_diff ui_index file_states last_revert last_revert_enc
+	global ui_diff ui_index file_states
 
 	if {$current_diff_path eq {} || $current_diff_header eq {}} return
 	if {![lock_index apply_hunk]} return
 
-	set apply_cmd {apply --whitespace=nowarn}
+	set apply_cmd {apply --cached --whitespace=nowarn}
 	set mi [lindex $file_states($current_diff_path) 0]
 	if {$current_diff_side eq $ui_index} {
 		set failed_msg [mc "Failed to unstage selected hunk."]
-		lappend apply_cmd --reverse --cached
+		lappend apply_cmd --reverse
 		if {[string index $mi 0] ne {M}} {
 			unlock_index
 			return
 		}
 	} else {
-		if {$revert} {
-			set failed_msg [mc "Failed to revert selected hunk."]
-			lappend apply_cmd --reverse
-		} else {
-			set failed_msg [mc "Failed to stage selected hunk."]
-			lappend apply_cmd --cached
-		}
-
+		set failed_msg [mc "Failed to stage selected hunk."]
 		if {[string index $mi 1] ne {M}} {
 			unlock_index
 			return
@@ -613,40 +603,29 @@ proc apply_or_revert_hunk {x y revert} {
 		set e_lno end
 	}
 
-	set wholepatch "$current_diff_header[$ui_diff get $s_lno $e_lno]"
-
 	if {[catch {
 		set enc [get_path_encoding $current_diff_path]
 		set p [eval git_write $apply_cmd]
 		fconfigure $p -translation binary -encoding $enc
-		puts -nonewline $p $wholepatch
+		puts -nonewline $p $current_diff_header
+		puts -nonewline $p [$ui_diff get $s_lno $e_lno]
 		close $p} err]} {
 		error_popup "$failed_msg\n\n$err"
 		unlock_index
 		return
 	}
 
-	if {$revert} {
-		# Save a copy of this patch for undoing reverts.
-		set last_revert $wholepatch
-		set last_revert_enc $enc
-	}
-
 	$ui_diff conf -state normal
 	$ui_diff delete $s_lno $e_lno
 	$ui_diff conf -state disabled
 
-	# Check if the hunk was the last one in the file.
 	if {[$ui_diff get 1.0 end] eq "\n"} {
 		set o _
 	} else {
 		set o ?
 	}
 
-	# Update the status flags.
-	if {$revert} {
-		set mi [string index $mi 0]$o
-	} elseif {$current_diff_side eq $ui_index} {
+	if {$current_diff_side eq $ui_index} {
 		set mi ${o}M
 	} elseif {[string index $mi 0] eq {_}} {
 		set mi M$o
@@ -661,9 +640,9 @@ proc apply_or_revert_hunk {x y revert} {
 	}
 }
 
-proc apply_or_revert_range_or_line {x y revert} {
+proc apply_range_or_line {x y} {
 	global current_diff_path current_diff_header current_diff_side
-	global ui_diff ui_index file_states last_revert
+	global ui_diff ui_index file_states
 
 	set selected [$ui_diff tag nextrange sel 0.0]
 
@@ -681,27 +660,19 @@ proc apply_or_revert_range_or_line {x y revert} {
 	if {$current_diff_path eq {} || $current_diff_header eq {}} return
 	if {![lock_index apply_hunk]} return
 
-	set apply_cmd {apply --whitespace=nowarn}
+	set apply_cmd {apply --cached --whitespace=nowarn}
 	set mi [lindex $file_states($current_diff_path) 0]
 	if {$current_diff_side eq $ui_index} {
 		set failed_msg [mc "Failed to unstage selected line."]
 		set to_context {+}
-		lappend apply_cmd --reverse --cached
+		lappend apply_cmd --reverse
 		if {[string index $mi 0] ne {M}} {
 			unlock_index
 			return
 		}
 	} else {
-		if {$revert} {
-			set failed_msg [mc "Failed to revert selected line."]
-			set to_context {+}
-			lappend apply_cmd --reverse
-		} else {
-			set failed_msg [mc "Failed to stage selected line."]
-			set to_context {-}
-			lappend apply_cmd --cached
-		}
-
+		set failed_msg [mc "Failed to stage selected line."]
+		set to_context {-}
 		if {[string index $mi 1] ne {M}} {
 			unlock_index
 			return
@@ -859,47 +830,7 @@ proc apply_or_revert_range_or_line {x y revert} {
 		puts -nonewline $p $wholepatch
 		close $p} err]} {
 		error_popup "$failed_msg\n\n$err"
-		unlock_index
-		return
-	}
-
-	if {$revert} {
-		# Save a copy of this patch for undoing reverts.
-		set last_revert $current_diff_header$wholepatch
-		set last_revert_enc $enc
-	}
-
-	unlock_index
-}
-
-# Undo the last line/hunk reverted. When hunks and lines are reverted, a copy
-# of the diff applied is saved. Re-apply that diff to undo the revert.
-#
-# Right now, we only use a single variable to hold the copy, and not a
-# stack/deque for simplicity, so multiple undos are not possible. Maybe this
-# can be added if the need for something like this is felt in the future.
-proc undo_last_revert {} {
-	global last_revert current_diff_path current_diff_header
-	global last_revert_enc
-
-	if {$last_revert eq {}} return
-	if {![lock_index apply_hunk]} return
-
-	set apply_cmd {apply --whitespace=nowarn}
-	set failed_msg [mc "Failed to undo last revert."]
-
-	if {[catch {
-		set enc $last_revert_enc
-		set p [eval git_write $apply_cmd]
-		fconfigure $p -translation binary -encoding $enc
-		puts -nonewline $p $last_revert
-		close $p} err]} {
-		error_popup "$failed_msg\n\n$err"
-		unlock_index
-		return
 	}
 
-	set last_revert {}
-
 	unlock_index
 }
diff --git a/third_party/git/git-gui/lib/index.tcl b/third_party/git/git-gui/lib/index.tcl
index 1fc5b42300..b588db11d9 100644
--- a/third_party/git/git-gui/lib/index.tcl
+++ b/third_party/git/git-gui/lib/index.tcl
@@ -7,74 +7,67 @@ proc _delete_indexlock {} {
 	}
 }
 
-proc close_and_unlock_index {fd after} {
-	if {![catch {_close_updateindex $fd} err]} {
+proc _close_updateindex {fd after} {
+	global use_ttk NS
+	fconfigure $fd -blocking 1
+	if {[catch {close $fd} err]} {
+		set w .indexfried
+		Dialog $w
+		wm withdraw $w
+		wm title $w [strcat "[appname] ([reponame]): " [mc "Index Error"]]
+		wm geometry $w "+[winfo rootx .]+[winfo rooty .]"
+		set s [mc "Updating the Git index failed.  A rescan will be automatically started to resynchronize git-gui."]
+		text $w.msg -yscrollcommand [list $w.vs set] \
+			-width [string length $s] -relief flat \
+			-borderwidth 0 -highlightthickness 0 \
+			-background [get_bg_color $w]
+		$w.msg tag configure bold -font font_uibold -justify center
+		${NS}::scrollbar $w.vs -command [list $w.msg yview]
+		$w.msg insert end $s bold \n\n$err {}
+		$w.msg configure -state disabled
+
+		${NS}::button $w.continue \
+			-text [mc "Continue"] \
+			-command [list destroy $w]
+		${NS}::button $w.unlock \
+			-text [mc "Unlock Index"] \
+			-command "destroy $w; _delete_indexlock"
+		grid $w.msg - $w.vs -sticky news
+		grid $w.unlock $w.continue - -sticky se -padx 2 -pady 2
+		grid columnconfigure $w 0 -weight 1
+		grid rowconfigure $w 0 -weight 1
+
+		wm protocol $w WM_DELETE_WINDOW update
+		bind $w.continue <Visibility> "
+			grab $w
+			focus %W
+		"
+		wm deiconify $w
+		tkwait window $w
+
+		$::main_status stop
 		unlock_index
-		uplevel #0 $after
-	} else {
-		rescan_on_error $err $after
+		rescan $after 0
+		return
 	}
-}
 
-proc _close_updateindex {fd} {
-	fconfigure $fd -blocking 1
-	close $fd
-}
-
-proc rescan_on_error {err {after {}}} {
-	global use_ttk NS
-
-	set w .indexfried
-	Dialog $w
-	wm withdraw $w
-	wm title $w [strcat "[appname] ([reponame]): " [mc "Index Error"]]
-	wm geometry $w "+[winfo rootx .]+[winfo rooty .]"
-	set s [mc "Updating the Git index failed.  A rescan will be automatically started to resynchronize git-gui."]
-	text $w.msg -yscrollcommand [list $w.vs set] \
-		-width [string length $s] -relief flat \
-		-borderwidth 0 -highlightthickness 0 \
-		-background [get_bg_color $w]
-	$w.msg tag configure bold -font font_uibold -justify center
-	${NS}::scrollbar $w.vs -command [list $w.msg yview]
-	$w.msg insert end $s bold \n\n$err {}
-	$w.msg configure -state disabled
-
-	${NS}::button $w.continue \
-		-text [mc "Continue"] \
-		-command [list destroy $w]
-	${NS}::button $w.unlock \
-		-text [mc "Unlock Index"] \
-		-command "destroy $w; _delete_indexlock"
-	grid $w.msg - $w.vs -sticky news
-	grid $w.unlock $w.continue - -sticky se -padx 2 -pady 2
-	grid columnconfigure $w 0 -weight 1
-	grid rowconfigure $w 0 -weight 1
-
-	wm protocol $w WM_DELETE_WINDOW update
-	bind $w.continue <Visibility> "
-		grab $w
-		focus %W
-	"
-	wm deiconify $w
-	tkwait window $w
-
-	$::main_status stop_all
+	$::main_status stop
 	unlock_index
-	rescan [concat $after [list ui_ready]] 0
+	uplevel #0 $after
 }
 
-proc update_indexinfo {msg path_list after} {
+proc update_indexinfo {msg pathList after} {
 	global update_index_cp
 
 	if {![lock_index update]} return
 
 	set update_index_cp 0
-	set path_list [lsort $path_list]
-	set total_cnt [llength $path_list]
-	set batch [expr {int($total_cnt * .01) + 1}]
+	set pathList [lsort $pathList]
+	set totalCnt [llength $pathList]
+	set batch [expr {int($totalCnt * .01) + 1}]
 	if {$batch > 25} {set batch 25}
 
-	set status_bar_operation [$::main_status start $msg [mc "files"]]
+	$::main_status start $msg [mc "files"]
 	set fd [git_write update-index -z --index-info]
 	fconfigure $fd \
 		-blocking 0 \
@@ -85,29 +78,26 @@ proc update_indexinfo {msg path_list after} {
 	fileevent $fd writable [list \
 		write_update_indexinfo \
 		$fd \
-		$path_list \
-		$total_cnt \
+		$pathList \
+		$totalCnt \
 		$batch \
-		$status_bar_operation \
 		$after \
 		]
 }
 
-proc write_update_indexinfo {fd path_list total_cnt batch status_bar_operation \
-	after} {
+proc write_update_indexinfo {fd pathList totalCnt batch after} {
 	global update_index_cp
 	global file_states current_diff_path
 
-	if {$update_index_cp >= $total_cnt} {
-		$status_bar_operation stop
-		close_and_unlock_index $fd $after
+	if {$update_index_cp >= $totalCnt} {
+		_close_updateindex $fd $after
 		return
 	}
 
 	for {set i $batch} \
-		{$update_index_cp < $total_cnt && $i > 0} \
+		{$update_index_cp < $totalCnt && $i > 0} \
 		{incr i -1} {
-		set path [lindex $path_list $update_index_cp]
+		set path [lindex $pathList $update_index_cp]
 		incr update_index_cp
 
 		set s $file_states($path)
@@ -129,21 +119,21 @@ proc write_update_indexinfo {fd path_list total_cnt batch status_bar_operation \
 		display_file $path $new
 	}
 
-	$status_bar_operation update $update_index_cp $total_cnt
+	$::main_status update $update_index_cp $totalCnt
 }
 
-proc update_index {msg path_list after} {
+proc update_index {msg pathList after} {
 	global update_index_cp
 
 	if {![lock_index update]} return
 
 	set update_index_cp 0
-	set path_list [lsort $path_list]
-	set total_cnt [llength $path_list]
-	set batch [expr {int($total_cnt * .01) + 1}]
+	set pathList [lsort $pathList]
+	set totalCnt [llength $pathList]
+	set batch [expr {int($totalCnt * .01) + 1}]
 	if {$batch > 25} {set batch 25}
 
-	set status_bar_operation [$::main_status start $msg [mc "files"]]
+	$::main_status start $msg [mc "files"]
 	set fd [git_write update-index --add --remove -z --stdin]
 	fconfigure $fd \
 		-blocking 0 \
@@ -154,29 +144,26 @@ proc update_index {msg path_list after} {
 	fileevent $fd writable [list \
 		write_update_index \
 		$fd \
-		$path_list \
-		$total_cnt \
+		$pathList \
+		$totalCnt \
 		$batch \
-		$status_bar_operation \
 		$after \
 		]
 }
 
-proc write_update_index {fd path_list total_cnt batch status_bar_operation \
-	after} {
+proc write_update_index {fd pathList totalCnt batch after} {
 	global update_index_cp
 	global file_states current_diff_path
 
-	if {$update_index_cp >= $total_cnt} {
-		$status_bar_operation stop
-		close_and_unlock_index $fd $after
+	if {$update_index_cp >= $totalCnt} {
+		_close_updateindex $fd $after
 		return
 	}
 
 	for {set i $batch} \
-		{$update_index_cp < $total_cnt && $i > 0} \
+		{$update_index_cp < $totalCnt && $i > 0} \
 		{incr i -1} {
-		set path [lindex $path_list $update_index_cp]
+		set path [lindex $pathList $update_index_cp]
 		incr update_index_cp
 
 		switch -glob -- [lindex $file_states($path) 0] {
@@ -203,21 +190,21 @@ proc write_update_index {fd path_list total_cnt batch status_bar_operation \
 		display_file $path $new
 	}
 
-	$status_bar_operation update $update_index_cp $total_cnt
+	$::main_status update $update_index_cp $totalCnt
 }
 
-proc checkout_index {msg path_list after capture_error} {
+proc checkout_index {msg pathList after} {
 	global update_index_cp
 
 	if {![lock_index update]} return
 
 	set update_index_cp 0
-	set path_list [lsort $path_list]
-	set total_cnt [llength $path_list]
-	set batch [expr {int($total_cnt * .01) + 1}]
+	set pathList [lsort $pathList]
+	set totalCnt [llength $pathList]
+	set batch [expr {int($totalCnt * .01) + 1}]
 	if {$batch > 25} {set batch 25}
 
-	set status_bar_operation [$::main_status start $msg [mc "files"]]
+	$::main_status start $msg [mc "files"]
 	set fd [git_write checkout-index \
 		--index \
 		--quiet \
@@ -234,45 +221,26 @@ proc checkout_index {msg path_list after capture_error} {
 	fileevent $fd writable [list \
 		write_checkout_index \
 		$fd \
-		$path_list \
-		$total_cnt \
+		$pathList \
+		$totalCnt \
 		$batch \
-		$status_bar_operation \
 		$after \
-		$capture_error \
 		]
 }
 
-proc write_checkout_index {fd path_list total_cnt batch status_bar_operation \
-	after capture_error} {
+proc write_checkout_index {fd pathList totalCnt batch after} {
 	global update_index_cp
 	global file_states current_diff_path
 
-	if {$update_index_cp >= $total_cnt} {
-		$status_bar_operation stop
-
-		# We do not unlock the index directly here because this
-		# operation expects to potentially run in parallel with file
-		# deletions scheduled by revert_helper. We're done with the
-		# update index, so we close it, but actually unlocking the index
-		# and dealing with potential errors is deferred to the chord
-		# body that runs when all async operations are completed.
-		#
-		# (See after_chord in revert_helper.)
-
-		if {[catch {_close_updateindex $fd} err]} {
-			uplevel #0 $capture_error [list $err]
-		}
-
-		uplevel #0 $after
-
+	if {$update_index_cp >= $totalCnt} {
+		_close_updateindex $fd $after
 		return
 	}
 
 	for {set i $batch} \
-		{$update_index_cp < $total_cnt && $i > 0} \
+		{$update_index_cp < $totalCnt && $i > 0} \
 		{incr i -1} {
-		set path [lindex $path_list $update_index_cp]
+		set path [lindex $pathList $update_index_cp]
 		incr update_index_cp
 		switch -glob -- [lindex $file_states($path) 0] {
 		U? {continue}
@@ -285,7 +253,7 @@ proc write_checkout_index {fd path_list total_cnt batch status_bar_operation \
 		}
 	}
 
-	$status_bar_operation update $update_index_cp $total_cnt
+	$::main_status update $update_index_cp $totalCnt
 }
 
 proc unstage_helper {txt paths} {
@@ -293,7 +261,7 @@ proc unstage_helper {txt paths} {
 
 	if {![lock_index begin-update]} return
 
-	set path_list [list]
+	set pathList [list]
 	set after {}
 	foreach path $paths {
 		switch -glob -- [lindex $file_states($path) 0] {
@@ -301,19 +269,19 @@ proc unstage_helper {txt paths} {
 		M? -
 		T? -
 		D? {
-			lappend path_list $path
+			lappend pathList $path
 			if {$path eq $current_diff_path} {
 				set after {reshow_diff;}
 			}
 		}
 		}
 	}
-	if {$path_list eq {}} {
+	if {$pathList eq {}} {
 		unlock_index
 	} else {
 		update_indexinfo \
 			$txt \
-			$path_list \
+			$pathList \
 			[concat $after [list ui_ready]]
 	}
 }
@@ -337,7 +305,7 @@ proc add_helper {txt paths} {
 
 	if {![lock_index begin-update]} return
 
-	set path_list [list]
+	set pathList [list]
 	set after {}
 	foreach path $paths {
 		switch -glob -- [lindex $file_states($path) 0] {
@@ -353,19 +321,19 @@ proc add_helper {txt paths} {
 		?M -
 		?D -
 		?T {
-			lappend path_list $path
+			lappend pathList $path
 			if {$path eq $current_diff_path} {
 				set after {reshow_diff;}
 			}
 		}
 		}
 	}
-	if {$path_list eq {}} {
+	if {$pathList eq {}} {
 		unlock_index
 	} else {
 		update_index \
 			$txt \
-			$path_list \
+			$pathList \
 			[concat $after {ui_status [mc "Ready to commit."]}]
 	}
 }
@@ -420,303 +388,66 @@ proc do_add_all {} {
 	add_helper [mc "Adding all changed files"] $paths
 }
 
-# Copied from TclLib package "lambda".
-proc lambda {arguments body args} {
-	return [list ::apply [list $arguments $body] {*}$args]
-}
-
 proc revert_helper {txt paths} {
 	global file_states current_diff_path
 
 	if {![lock_index begin-update]} return
 
-	# Common "after" functionality that waits until multiple asynchronous
-	# operations are complete (by waiting for them to activate their notes
-	# on the chord).
-	#
-	# The asynchronous operations are each indicated below by a comment
-	# before the code block that starts the async operation.
-	set after_chord [SimpleChord::new {
-		if {[string trim $err] != ""} {
-			rescan_on_error $err
-		} else {
-			unlock_index
-			if {$should_reshow_diff} { reshow_diff }
-			ui_ready
-		}
-	}]
-
-	$after_chord eval { set should_reshow_diff 0 }
-
-	# This function captures an error for processing when after_chord is
-	# completed. (The chord is curried into the lambda function.)
-	set capture_error [lambda \
-		{chord error} \
-		{ $chord eval [list set err $error] } \
-		$after_chord]
-
-	# We don't know how many notes we're going to create (it's dynamic based
-	# on conditional paths below), so create a common note that will delay
-	# the chord's completion until we activate it, and then activate it
-	# after all the other notes have been created.
-	set after_common_note [$after_chord add_note]
-
-	set path_list [list]
-	set untracked_list [list]
-
+	set pathList [list]
+	set after {}
 	foreach path $paths {
 		switch -glob -- [lindex $file_states($path) 0] {
 		U? {continue}
-		?O {
-			lappend untracked_list $path
-		}
 		?M -
 		?T -
 		?D {
-			lappend path_list $path
+			lappend pathList $path
 			if {$path eq $current_diff_path} {
-				$after_chord eval { set should_reshow_diff 1 }
+				set after {reshow_diff;}
 			}
 		}
 		}
 	}
 
-	set path_cnt [llength $path_list]
-	set untracked_cnt [llength $untracked_list]
-
-	# Asynchronous operation: revert changes by checking them out afresh
-	# from the index.
-	if {$path_cnt > 0} {
-		# Split question between singular and plural cases, because
-		# such distinction is needed in some languages. Previously, the
-		# code used "Revert changes in" for both, but that can't work
-		# in languages where 'in' must be combined with word from
-		# rest of string (in different way for both cases of course).
-		#
-		# FIXME: Unfortunately, even that isn't enough in some languages
-		# as they have quite complex plural-form rules. Unfortunately,
-		# msgcat doesn't seem to support that kind of string
-		# translation.
-		#
-		if {$path_cnt == 1} {
-			set query [mc \
-				"Revert changes in file %s?" \
-				[short_path [lindex $path_list]] \
-				]
-		} else {
-			set query [mc \
-				"Revert changes in these %i files?" \
-				$path_cnt]
-		}
-
-		set reply [tk_dialog \
-			.confirm_revert \
-			"[appname] ([reponame])" \
-			"$query
-
-[mc "Any unstaged changes will be permanently lost by the revert."]" \
-			question \
-			1 \
-			[mc "Do Nothing"] \
-			[mc "Revert Changes"] \
-			]
-
-		if {$reply == 1} {
-			set note [$after_chord add_note]
-			checkout_index \
-				$txt \
-				$path_list \
-				[list $note activate] \
-				$capture_error
-		}
-	}
-
-	# Asynchronous operation: Deletion of untracked files.
-	if {$untracked_cnt > 0} {
-		# Split question between singular and plural cases, because
-		# such distinction is needed in some languages.
-		#
-		# FIXME: Unfortunately, even that isn't enough in some languages
-		# as they have quite complex plural-form rules. Unfortunately,
-		# msgcat doesn't seem to support that kind of string
-		# translation.
-		#
-		if {$untracked_cnt == 1} {
-			set query [mc \
-				"Delete untracked file %s?" \
-				[short_path [lindex $untracked_list]] \
-				]
-		} else {
-			set query [mc \
-				"Delete these %i untracked files?" \
-				$untracked_cnt \
-				]
-		}
-
-		set reply [tk_dialog \
-			.confirm_revert \
-			"[appname] ([reponame])" \
-			"$query
-
-[mc "Files will be permanently deleted."]" \
-			question \
-			1 \
-			[mc "Do Nothing"] \
-			[mc "Delete Files"] \
-			]
-
-		if {$reply == 1} {
-			$after_chord eval { set should_reshow_diff 1 }
 
-			set note [$after_chord add_note]
-			delete_files $untracked_list [list $note activate]
-		}
-	}
-
-	# Activate the common note. If no other notes were created, this
-	# completes the chord. If other notes were created, then this common
-	# note prevents a race condition where the chord might complete early.
-	$after_common_note activate
-}
-
-# Delete all of the specified files, performing deletion in batches to allow the
-# UI to remain responsive and updated.
-proc delete_files {path_list after} {
-	# Enable progress bar status updates
-	set status_bar_operation [$::main_status \
-		start \
-		[mc "Deleting"] \
-		[mc "files"]]
-
-	set path_index 0
-	set deletion_errors [list]
-	set batch_size 50
-
-	delete_helper \
-		$path_list \
-		$path_index \
-		$deletion_errors \
-		$batch_size \
-		$status_bar_operation \
-		$after
-}
-
-# Helper function to delete a list of files in batches. Each call deletes one
-# batch of files, and then schedules a call for the next batch after any UI
-# messages have been processed.
-proc delete_helper {path_list path_index deletion_errors batch_size \
-	status_bar_operation after} {
-	global file_states
-
-	set path_cnt [llength $path_list]
-
-	set batch_remaining $batch_size
-
-	while {$batch_remaining > 0} {
-		if {$path_index >= $path_cnt} { break }
-
-		set path [lindex $path_list $path_index]
-
-		set deletion_failed [catch {file delete -- $path} deletion_error]
-
-		if {$deletion_failed} {
-			lappend deletion_errors [list "$deletion_error"]
-		} else {
-			remove_empty_directories [file dirname $path]
-
-			# Don't assume the deletion worked. Remove the file from
-			# the UI, but only if it no longer exists.
-			if {![path_exists $path]} {
-				unset file_states($path)
-				display_file $path __
-			}
-		}
-
-		incr path_index 1
-		incr batch_remaining -1
-	}
-
-	# Update the progress bar to indicate that this batch has been
-	# completed. The update will be visible when this procedure returns
-	# and allows the UI thread to process messages.
-	$status_bar_operation update $path_index $path_cnt
-
-	if {$path_index < $path_cnt} {
-		# The Tcler's Wiki lists this as the best practice for keeping
-		# a UI active and processing messages during a long-running
-		# operation.
-
-		after idle [list after 0 [list \
-			delete_helper \
-			$path_list \
-			$path_index \
-			$deletion_errors \
-			$batch_size \
-			$status_bar_operation \
-			$after
-			]]
+	# Split question between singular and plural cases, because
+	# such distinction is needed in some languages. Previously, the
+	# code used "Revert changes in" for both, but that can't work
+	# in languages where 'in' must be combined with word from
+	# rest of string (in different way for both cases of course).
+	#
+	# FIXME: Unfortunately, even that isn't enough in some languages
+	# as they have quite complex plural-form rules. Unfortunately,
+	# msgcat doesn't seem to support that kind of string translation.
+	#
+	set n [llength $pathList]
+	if {$n == 0} {
+		unlock_index
+		return
+	} elseif {$n == 1} {
+		set query [mc "Revert changes in file %s?" [short_path [lindex $pathList]]]
 	} else {
-		# Finish the status bar operation.
-		$status_bar_operation stop
-
-		# Report error, if any, based on how many deletions failed.
-		set deletion_error_cnt [llength $deletion_errors]
-
-		if {($deletion_error_cnt > 0)
-		 && ($deletion_error_cnt <= [MAX_VERBOSE_FILES_IN_DELETION_ERROR])} {
-			set error_text [mc "Encountered errors deleting files:\n"]
-
-			foreach deletion_error $deletion_errors {
-				append error_text "* [lindex $deletion_error 0]\n"
-			}
-
-			error_popup $error_text
-		} elseif {$deletion_error_cnt == $path_cnt} {
-			error_popup [mc \
-				"None of the %d selected files could be deleted." \
-				$path_cnt \
-				]
-		} elseif {$deletion_error_cnt > 1} {
-			error_popup [mc \
-				"%d of the %d selected files could not be deleted." \
-				$deletion_error_cnt \
-				$path_cnt \
-				]
-		}
-
-		uplevel #0 $after
+		set query [mc "Revert changes in these %i files?" $n]
 	}
-}
 
-proc MAX_VERBOSE_FILES_IN_DELETION_ERROR {} { return 10; }
-
-# This function is from the TCL documentation:
-#
-#   https://wiki.tcl-lang.org/page/file+exists
-#
-# [file exists] returns false if the path does exist but is a symlink to a path
-# that doesn't exist. This proc returns true if the path exists, regardless of
-# whether it is a symlink and whether it is broken.
-proc path_exists {name} {
-	expr {![catch {file lstat $name finfo}]}
-}
-
-# Remove as many empty directories as we can starting at the specified path,
-# walking up the directory tree. If we encounter a directory that is not
-# empty, or if a directory deletion fails, then we stop the operation and
-# return to the caller. Even if this procedure fails to delete any
-# directories at all, it does not report failure.
-proc remove_empty_directories {directory_path} {
-	set parent_path [file dirname $directory_path]
-
-	while {$parent_path != $directory_path} {
-		set contents [glob -nocomplain -dir $directory_path *]
+	set reply [tk_dialog \
+		.confirm_revert \
+		"[appname] ([reponame])" \
+		"$query
 
-		if {[llength $contents] > 0} { break }
-		if {[catch {file delete -- $directory_path}]} { break }
-
-		set directory_path $parent_path
-		set parent_path [file dirname $directory_path]
+[mc "Any unstaged changes will be permanently lost by the revert."]" \
+		question \
+		1 \
+		[mc "Do Nothing"] \
+		[mc "Revert Changes"] \
+		]
+	if {$reply == 1} {
+		checkout_index \
+			$txt \
+			$pathList \
+			[concat $after [list ui_ready]]
+	} else {
+		unlock_index
 	}
 }
 
@@ -735,19 +466,19 @@ proc do_revert_selection {} {
 }
 
 proc do_select_commit_type {} {
-	global commit_type commit_type_is_amend
+	global commit_type selected_commit_type
 
-	if {$commit_type_is_amend == 0
+	if {$selected_commit_type eq {new}
 		&& [string match amend* $commit_type]} {
 		create_new_commit
-	} elseif {$commit_type_is_amend == 1
+	} elseif {$selected_commit_type eq {amend}
 		&& ![string match amend* $commit_type]} {
 		load_last_commit
 
 		# The amend request was rejected...
 		#
 		if {![string match amend* $commit_type]} {
-			set commit_type_is_amend 0
+			set selected_commit_type new
 		}
 	}
 }
diff --git a/third_party/git/git-gui/lib/merge.tcl b/third_party/git/git-gui/lib/merge.tcl
index 664803cf3f..9f253db5b3 100644
--- a/third_party/git/git-gui/lib/merge.tcl
+++ b/third_party/git/git-gui/lib/merge.tcl
@@ -241,27 +241,23 @@ Continue with resetting the current changes?"]
 	if {[ask_popup $op_question] eq {yes}} {
 		set fd [git_read --stderr read-tree --reset -u -v HEAD]
 		fconfigure $fd -blocking 0 -translation binary
-		set status_bar_operation [$::main_status \
-			start \
-			[mc "Aborting"] \
-			[mc "files reset"]]
-		fileevent $fd readable [namespace code [list \
-			_reset_wait $fd $status_bar_operation]]
+		fileevent $fd readable [namespace code [list _reset_wait $fd]]
+		$::main_status start [mc "Aborting"] [mc "files reset"]
 	} else {
 		unlock_index
 	}
 }
 
-proc _reset_wait {fd status_bar_operation} {
+proc _reset_wait {fd} {
 	global ui_comm
 
-	$status_bar_operation update_meter [read $fd]
+	$::main_status update_meter [read $fd]
 
 	fconfigure $fd -blocking 1
 	if {[eof $fd]} {
 		set fail [catch {close $fd} err]
+		$::main_status stop
 		unlock_index
-		$status_bar_operation stop
 
 		$ui_comm delete 0.0 end
 		$ui_comm edit modified false
diff --git a/third_party/git/git-gui/lib/status_bar.tcl b/third_party/git/git-gui/lib/status_bar.tcl
index d32b14142f..02111a1742 100644
--- a/third_party/git/git-gui/lib/status_bar.tcl
+++ b/third_party/git/git-gui/lib/status_bar.tcl
@@ -1,42 +1,16 @@
 # git-gui status bar mega-widget
 # Copyright (C) 2007 Shawn Pearce
 
-# The status_bar class manages the entire status bar. It is possible for
-# multiple overlapping asynchronous operations to want to display status
-# simultaneously. Each one receives a status_bar_operation when it calls the
-# start method, and the status bar combines all active operations into the
-# line of text it displays. Most of the time, there will be at most one
-# ongoing operation.
-#
-# Note that the entire status bar can be either in single-line or two-line
-# mode, depending on the constructor. Multiple active operations are only
-# supported for single-line status bars.
-
 class status_bar {
 
-field allow_multiple ; # configured at construction
-
 field w         ; # our own window path
 field w_l       ; # text widget we draw messages into
 field w_c       ; # canvas we draw a progress bar into
 field c_pack    ; # script to pack the canvas with
-
-field baseline_text   ; # text to show if there are no operations
-field status_bar_text ; # combined text for all operations
-
-field operations ; # list of current ongoing operations
-
-# The status bar can display a progress bar, updated when consumers call the
-# update method on their status_bar_operation. When there are multiple
-# operations, the status bar shows the combined status of all operations.
-#
-# When an overlapping operation completes, the progress bar is going to
-# abruptly have one fewer operation in the calculation, causing a discontinuity.
-# Therefore, whenever an operation completes, if it is not the last operation,
-# this counter is increased, and the progress bar is calculated as though there
-# were still another operation at 100%. When the last operation completes, this
-# is reset to 0.
-field completed_operation_count
+field status  {}; # single line of text we show
+field prefix  {}; # text we format into status
+field units   {}; # unit of progress
+field meter   {}; # current core git progress meter (if active)
 
 constructor new {path} {
 	global use_ttk NS
@@ -44,19 +18,12 @@ constructor new {path} {
 	set w_l $w.l
 	set w_c $w.c
 
-	# Standard single-line status bar: Permit overlapping operations
-	set allow_multiple 1
-
-	set baseline_text ""
-	set operations [list]
-	set completed_operation_count 0
-
 	${NS}::frame $w
 	if {!$use_ttk} {
 		$w configure -borderwidth 1 -relief sunken
 	}
 	${NS}::label $w_l \
-		-textvariable @status_bar_text \
+		-textvariable @status \
 		-anchor w \
 		-justify left
 	pack $w_l -side left
@@ -77,16 +44,9 @@ constructor two_line {path} {
 	set w_l $w.l
 	set w_c $w.c
 
-	# Two-line status bar: Only one ongoing operation permitted.
-	set allow_multiple 0
-
-	set baseline_text ""
-	set operations [list]
-	set completed_operation_count 0
-
 	${NS}::frame $w
 	${NS}::label $w_l \
-		-textvariable @status_bar_text \
+		-textvariable @status \
 		-anchor w \
 		-justify left
 	pack $w_l -anchor w -fill x
@@ -96,7 +56,7 @@ constructor two_line {path} {
 	return $this
 }
 
-method ensure_canvas {} {
+method start {msg uds} {
 	if {[winfo exists $w_c]} {
 		$w_c coords bar 0 0 0 20
 	} else {
@@ -108,170 +68,31 @@ method ensure_canvas {} {
 		$w_c create rectangle 0 0 0 20 -tags bar -fill navy
 		eval $c_pack
 	}
-}
-
-method show {msg} {
-	$this ensure_canvas
-	set baseline_text $msg
-	$this refresh
-}
-
-method start {msg {uds {}}} {
-	set baseline_text ""
-
-	if {!$allow_multiple && [llength $operations]} {
-		return [lindex $operations 0]
-	}
-
-	$this ensure_canvas
-
-	set operation [status_bar_operation::new $this $msg $uds]
-
-	lappend operations $operation
-
-	$this refresh
-
-	return $operation
-}
-
-method refresh {} {
-	set new_text ""
-
-	set total [expr $completed_operation_count * 100]
-	set have $total
-
-	foreach operation $operations {
-		if {$new_text != ""} {
-			append new_text " / "
-		}
-
-		append new_text [$operation get_status]
-
-		set total [expr $total + 100]
-		set have [expr $have + [$operation get_progress]]
-	}
-
-	if {$new_text == ""} {
-		set new_text $baseline_text
-	}
-
-	set status_bar_text $new_text
-
-	if {[winfo exists $w_c]} {
-		set pixel_width 0
-		if {$have > 0} {
-			set pixel_width [expr {[winfo width $w_c] * $have / $total}]
-		}
-
-		$w_c coords bar 0 0 $pixel_width 20
-	}
-}
-
-method stop {operation stop_msg} {
-	set idx [lsearch $operations $operation]
-
-	if {$idx >= 0} {
-		set operations [lreplace $operations $idx $idx]
-		set completed_operation_count [expr \
-			$completed_operation_count + 1]
-
-		if {[llength $operations] == 0} {
-			set completed_operation_count 0
-
-			destroy $w_c
-			if {$stop_msg ne {}} {
-				set baseline_text $stop_msg
-			}
-		}
-
-		$this refresh
-	}
-}
-
-method stop_all {{stop_msg {}}} {
-	# This makes the operation's call to stop a no-op.
-	set operations_copy $operations
-	set operations [list]
-
-	foreach operation $operations_copy {
-		$operation stop
-	}
-
-	if {$stop_msg ne {}} {
-		set baseline_text $stop_msg
-	}
-
-	$this refresh
-}
-
-method _delete {current} {
-	if {$current eq $w} {
-		delete_this
-	}
-}
-
-}
-
-# The status_bar_operation class tracks a single consumer's ongoing status bar
-# activity, with the context that there are a few situations where multiple
-# overlapping asynchronous operations might want to display status information
-# simultaneously. Instances of status_bar_operation are created by calling
-# start on the status_bar, and when the caller is done with its stauts bar
-# operation, it calls stop on the operation.
-
-class status_bar_operation {
-
-field status_bar; # reference back to the status_bar that owns this object
-
-field is_active;
-
-field status   {}; # single line of text we show
-field progress {}; # current progress (0 to 100)
-field prefix   {}; # text we format into status
-field units    {}; # unit of progress
-field meter    {}; # current core git progress meter (if active)
-
-constructor new {owner msg uds} {
-	set status_bar $owner
 
 	set status $msg
-	set progress 0
 	set prefix $msg
 	set units  $uds
 	set meter  {}
-
-	set is_active 1
-
-	return $this
 }
 
-method get_is_active {} { return $is_active }
-method get_status {} { return $status }
-method get_progress {} { return $progress }
-
 method update {have total} {
-	if {!$is_active} { return }
-
-	set progress 0
-
+	set pdone 0
+	set cdone 0
 	if {$total > 0} {
-		set progress [expr {100 * $have / $total}]
+		set pdone [expr {100 * $have / $total}]
+		set cdone [expr {[winfo width $w_c] * $have / $total}]
 	}
 
 	set prec [string length [format %i $total]]
-
 	set status [mc "%s ... %*i of %*i %s (%3i%%)" \
 		$prefix \
 		$prec $have \
 		$prec $total \
-		$units $progress]
-
-	$status_bar refresh
+		$units $pdone]
+	$w_c coords bar 0 0 $cdone 20
 }
 
 method update_meter {buf} {
-	if {!$is_active} { return }
-
 	append meter $buf
 	set r [string last "\r" $meter]
 	if {$r == -1} {
@@ -288,25 +109,23 @@ method update_meter {buf} {
 	}
 }
 
-method stop {{stop_msg {}}} {
-	if {$is_active} {
-		set is_active 0
-		$status_bar stop $this $stop_msg
+method stop {{msg {}}} {
+	destroy $w_c
+	if {$msg ne {}} {
+		set status $msg
 	}
 }
 
-method restart {msg} {
-	if {!$is_active} { return }
-
-	set status $msg
-	set prefix $msg
-	set meter {}
-	$status_bar refresh
+method show {msg {test {}}} {
+	if {$test eq {} || $status eq $test} {
+		set status $msg
+	}
 }
 
-method _delete {} {
-	stop
-	delete_this
+method _delete {current} {
+	if {$current eq $w} {
+		delete_this
+	}
 }
 
 }
diff --git a/third_party/git/git-gui/po/de.po b/third_party/git/git-gui/po/de.po
index a8d5f61ca3..baebff2fff 100644
--- a/third_party/git/git-gui/po/de.po
+++ b/third_party/git/git-gui/po/de.po
@@ -7,42 +7,41 @@ msgid ""
 msgstr ""
 "Project-Id-Version: git-gui\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-02-08 22:54+0100\n"
-"PO-Revision-Date: 2020-02-09 22:40+0100\n"
-"Last-Translator: Christian Stimming <christian@cstimming.de>\n"
+"POT-Creation-Date: 2010-01-26 22:22+0100\n"
+"PO-Revision-Date: 2010-01-26 22:25+0100\n"
+"Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
 "Language-Team: German\n"
-"Language: de_DE\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: git-gui.sh:847
+#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
+#: git-gui.sh:922
+msgid "git-gui: fatal error"
+msgstr "git-gui: Programmfehler"
+
+#: git-gui.sh:743
 #, tcl-format
 msgid "Invalid font specified in %s:"
 msgstr "Ungültige Zeichensatz-Angabe in %s:"
 
-#: git-gui.sh:901
+#: git-gui.sh:779
 msgid "Main Font"
 msgstr "Programmschriftart"
 
-#: git-gui.sh:902
+#: git-gui.sh:780
 msgid "Diff/Console Font"
 msgstr "Vergleich-Schriftart"
 
-#: git-gui.sh:917 git-gui.sh:931 git-gui.sh:944 git-gui.sh:1034 git-gui.sh:1053
-#: git-gui.sh:3212
-msgid "git-gui: fatal error"
-msgstr "git-gui: Programmfehler"
-
-#: git-gui.sh:918
+#: git-gui.sh:794
 msgid "Cannot find git in PATH."
 msgstr "Git kann im PATH nicht gefunden werden."
 
-#: git-gui.sh:945
+#: git-gui.sh:821
 msgid "Cannot parse Git version string:"
 msgstr "Git Versionsangabe kann nicht erkannt werden:"
 
-#: git-gui.sh:970
+#: git-gui.sh:839
 #, tcl-format
 msgid ""
 "Git version cannot be determined.\n"
@@ -61,524 +60,479 @@ msgstr ""
 "\n"
 "Soll angenommen werden, »%s« sei Version 1.5.0?\n"
 
-#: git-gui.sh:1267
+#: git-gui.sh:1128
 msgid "Git directory not found:"
 msgstr "Git-Verzeichnis nicht gefunden:"
 
-#: git-gui.sh:1301
+#: git-gui.sh:1146
 msgid "Cannot move to top of working directory:"
 msgstr ""
 "Es konnte nicht in das oberste Verzeichnis der Arbeitskopie gewechselt "
 "werden:"
 
-#: git-gui.sh:1309
+#: git-gui.sh:1154
 msgid "Cannot use bare repository:"
-msgstr "Bloßes Repository kann nicht benutzt werden:"
+msgstr "Bloßes Projektarchiv kann nicht benutzt werden:"
 
-#: git-gui.sh:1317
+#: git-gui.sh:1162
 msgid "No working directory"
 msgstr "Kein Arbeitsverzeichnis"
 
-#: git-gui.sh:1491 lib/checkout_op.tcl:306
+#: git-gui.sh:1334 lib/checkout_op.tcl:306
 msgid "Refreshing file status..."
 msgstr "Dateistatus aktualisieren..."
 
-#: git-gui.sh:1551
+#: git-gui.sh:1390
 msgid "Scanning for modified files ..."
 msgstr "Nach geänderten Dateien suchen..."
 
-#: git-gui.sh:1629
+#: git-gui.sh:1454
 msgid "Calling prepare-commit-msg hook..."
-msgstr "Aufrufen des »prepare-commit-msg hook«..."
+msgstr "Aufrufen der Eintragen-Vorbereiten-Kontrolle (»prepare-commit hook«)..."
 
-#: git-gui.sh:1646
+#: git-gui.sh:1471
 msgid "Commit declined by prepare-commit-msg hook."
-msgstr "Commit abgelehnt durch »prepare-commit-msg hook«."
+msgstr ""
+"Eintragen abgelehnt durch Eintragen-Vorbereiten-Kontrolle (»prepare-commit "
+"hook«)."
 
-#: git-gui.sh:1804 lib/browser.tcl:252
+#: git-gui.sh:1629 lib/browser.tcl:246
 msgid "Ready."
 msgstr "Bereit."
 
-#: git-gui.sh:1968
+#: git-gui.sh:1787
 #, tcl-format
-msgid ""
-"Display limit (gui.maxfilesdisplayed = %s) reached, not showing all %s files."
-msgstr ""
-"Anzeigelimit erreicht (gui.maxfilesdisplayed = %s) für Anzahl Einträge. Es "
-"werden nicht alle %s Dateien gezeigt."
+msgid "Displaying only %s of %s files."
+msgstr "Nur %s von %s Dateien werden angezeigt."
 
-#: git-gui.sh:2091
+#: git-gui.sh:1913
 msgid "Unmodified"
 msgstr "Unverändert"
 
-#: git-gui.sh:2093
+#: git-gui.sh:1915
 msgid "Modified, not staged"
 msgstr "Verändert, nicht bereitgestellt"
 
-#: git-gui.sh:2094 git-gui.sh:2106
+#: git-gui.sh:1916 git-gui.sh:1924
 msgid "Staged for commit"
-msgstr "Bereitgestellt zum Committen"
+msgstr "Bereitgestellt zum Eintragen"
 
-#: git-gui.sh:2095 git-gui.sh:2107
+#: git-gui.sh:1917 git-gui.sh:1925
 msgid "Portions staged for commit"
-msgstr "Teilweise bereitgestellt zum Committen"
+msgstr "Teilweise bereitgestellt zum Eintragen"
 
-#: git-gui.sh:2096 git-gui.sh:2108
+#: git-gui.sh:1918 git-gui.sh:1926
 msgid "Staged for commit, missing"
-msgstr "Bereitgestellt zum Committen, fehlend"
+msgstr "Bereitgestellt zum Eintragen, fehlend"
 
-#: git-gui.sh:2098
+#: git-gui.sh:1920
 msgid "File type changed, not staged"
 msgstr "Dateityp geändert, nicht bereitgestellt"
 
-#: git-gui.sh:2099 git-gui.sh:2100
-msgid "File type changed, old type staged for commit"
-msgstr "Dateityp geändert, alter Dateityp bereitgestellt"
-
-#: git-gui.sh:2101
+#: git-gui.sh:1921
 msgid "File type changed, staged"
 msgstr "Dateityp geändert, bereitgestellt"
 
-#: git-gui.sh:2102
-msgid "File type change staged, modification not staged"
-msgstr "Dateityp-Änderung bereitgestellt, Inhaltsänderung nicht bereitgestellt"
-
-#: git-gui.sh:2103
-msgid "File type change staged, file missing"
-msgstr "Dateityp-Änderung bereitgestellt, Datei gelöscht"
-
-#: git-gui.sh:2105
+#: git-gui.sh:1923
 msgid "Untracked, not staged"
-msgstr "Unversioniert, nicht bereitgestellt"
+msgstr "Nicht unter Versionskontrolle, nicht bereitgestellt"
 
-#: git-gui.sh:2110
+#: git-gui.sh:1928
 msgid "Missing"
 msgstr "Fehlend"
 
-#: git-gui.sh:2111
+#: git-gui.sh:1929
 msgid "Staged for removal"
 msgstr "Bereitgestellt zum Löschen"
 
-#: git-gui.sh:2112
+#: git-gui.sh:1930
 msgid "Staged for removal, still present"
 msgstr "Bereitgestellt zum Löschen, trotzdem vorhanden"
 
-#: git-gui.sh:2114 git-gui.sh:2115 git-gui.sh:2116 git-gui.sh:2117
-#: git-gui.sh:2118 git-gui.sh:2119
+#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
+#: git-gui.sh:1936 git-gui.sh:1937
 msgid "Requires merge resolution"
 msgstr "Konfliktauflösung nötig"
 
-#: git-gui.sh:2164
+#: git-gui.sh:1972
+msgid "Starting gitk... please wait..."
+msgstr "Gitk wird gestartet... bitte warten."
+
+#: git-gui.sh:1984
 msgid "Couldn't find gitk in PATH"
 msgstr "Gitk kann im PATH nicht gefunden werden."
 
-#: git-gui.sh:2210 git-gui.sh:2245
-#, tcl-format
-msgid "Starting %s... please wait..."
-msgstr "%s wird gestartet... bitte warten."
-
-#: git-gui.sh:2224
+#: git-gui.sh:2043
 msgid "Couldn't find git gui in PATH"
 msgstr "»Git gui« kann im PATH nicht gefunden werden."
 
-#: git-gui.sh:2726 lib/choose_repository.tcl:53
+#: git-gui.sh:2455 lib/choose_repository.tcl:36
 msgid "Repository"
-msgstr "Repository"
+msgstr "Projektarchiv"
 
-#: git-gui.sh:2727
+#: git-gui.sh:2456
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: git-gui.sh:2729 lib/choose_rev.tcl:567
+#: git-gui.sh:2458 lib/choose_rev.tcl:561
 msgid "Branch"
-msgstr "Branch"
+msgstr "Zweig"
 
-#: git-gui.sh:2732 lib/choose_rev.tcl:554
+#: git-gui.sh:2461 lib/choose_rev.tcl:548
 msgid "Commit@@noun"
-msgstr "Commit"
+msgstr "Version"
 
-#: git-gui.sh:2735 lib/merge.tcl:127 lib/merge.tcl:174
+#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
 msgid "Merge"
 msgstr "Zusammenführen"
 
-#: git-gui.sh:2736 lib/choose_rev.tcl:563
+#: git-gui.sh:2465 lib/choose_rev.tcl:557
 msgid "Remote"
-msgstr "Extern"
+msgstr "Externe Archive"
 
-#: git-gui.sh:2739
+#: git-gui.sh:2468
 msgid "Tools"
 msgstr "Werkzeuge"
 
-#: git-gui.sh:2748
+#: git-gui.sh:2477
 msgid "Explore Working Copy"
-msgstr "Arbeitskopie im Dateimanager öffnen"
-
-#: git-gui.sh:2763
-msgid "Git Bash"
-msgstr "Git Bash"
+msgstr "Arbeitskopie im Dateimanager"
 
-#: git-gui.sh:2772
+#: git-gui.sh:2483
 msgid "Browse Current Branch's Files"
-msgstr "Aktuellen Branch durchblättern"
+msgstr "Aktuellen Zweig durchblättern"
 
-#: git-gui.sh:2776
+#: git-gui.sh:2487
 msgid "Browse Branch Files..."
-msgstr "Branch durchblättern..."
+msgstr "Einen Zweig durchblättern..."
 
-#: git-gui.sh:2781
+#: git-gui.sh:2492
 msgid "Visualize Current Branch's History"
-msgstr "Aktuellen Branch darstellen"
+msgstr "Aktuellen Zweig darstellen"
 
-#: git-gui.sh:2785
+#: git-gui.sh:2496
 msgid "Visualize All Branch History"
-msgstr "Historie aller Branches darstellen"
+msgstr "Alle Zweige darstellen"
 
-#: git-gui.sh:2792
+#: git-gui.sh:2503
 #, tcl-format
 msgid "Browse %s's Files"
-msgstr "Branch »%s« durchblättern"
+msgstr "Zweig »%s« durchblättern"
 
-#: git-gui.sh:2794
+#: git-gui.sh:2505
 #, tcl-format
 msgid "Visualize %s's History"
 msgstr "Historie von »%s« darstellen"
 
-#: git-gui.sh:2799 lib/database.tcl:40
+#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
 msgid "Database Statistics"
 msgstr "Datenbankstatistik"
 
-#: git-gui.sh:2802 lib/database.tcl:33
+#: git-gui.sh:2513 lib/database.tcl:34
 msgid "Compress Database"
 msgstr "Datenbank komprimieren"
 
-#: git-gui.sh:2805
+#: git-gui.sh:2516
 msgid "Verify Database"
 msgstr "Datenbank überprüfen"
 
-#: git-gui.sh:2812 git-gui.sh:2816 git-gui.sh:2820
+#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
+#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
 msgid "Create Desktop Icon"
 msgstr "Desktop-Icon erstellen"
 
-#: git-gui.sh:2828 lib/choose_repository.tcl:209 lib/choose_repository.tcl:217
+#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
 msgid "Quit"
 msgstr "Beenden"
 
-#: git-gui.sh:2836
+#: git-gui.sh:2547
 msgid "Undo"
 msgstr "Rückgängig"
 
-#: git-gui.sh:2839
+#: git-gui.sh:2550
 msgid "Redo"
 msgstr "Wiederholen"
 
-#: git-gui.sh:2843 git-gui.sh:3461
+#: git-gui.sh:2554 git-gui.sh:3109
 msgid "Cut"
 msgstr "Ausschneiden"
 
-#: git-gui.sh:2846 git-gui.sh:3464 git-gui.sh:3540 git-gui.sh:3633
+#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
 #: lib/console.tcl:69
 msgid "Copy"
 msgstr "Kopieren"
 
-#: git-gui.sh:2849 git-gui.sh:3467
+#: git-gui.sh:2560 git-gui.sh:3115
 msgid "Paste"
 msgstr "Einfügen"
 
-#: git-gui.sh:2852 git-gui.sh:3470 lib/remote_branch_delete.tcl:39
-#: lib/branch_delete.tcl:28
+#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
+#: lib/remote_branch_delete.tcl:38
 msgid "Delete"
 msgstr "Löschen"
 
-#: git-gui.sh:2856 git-gui.sh:3474 git-gui.sh:3637 lib/console.tcl:71
+#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
 msgid "Select All"
 msgstr "Alle auswählen"
 
-#: git-gui.sh:2865
+#: git-gui.sh:2576
 msgid "Create..."
 msgstr "Erstellen..."
 
-#: git-gui.sh:2871
+#: git-gui.sh:2582
 msgid "Checkout..."
-msgstr "Auschecken..."
+msgstr "Umstellen..."
 
-#: git-gui.sh:2877
+#: git-gui.sh:2588
 msgid "Rename..."
 msgstr "Umbenennen..."
 
-#: git-gui.sh:2882
+#: git-gui.sh:2593
 msgid "Delete..."
 msgstr "Löschen..."
 
-#: git-gui.sh:2887
+#: git-gui.sh:2598
 msgid "Reset..."
-msgstr "Änderungen verwerfen..."
+msgstr "Zurücksetzen..."
 
-#: git-gui.sh:2897
+#: git-gui.sh:2608
 msgid "Done"
 msgstr "Fertig"
 
-#: git-gui.sh:2899
+#: git-gui.sh:2610
 msgid "Commit@@verb"
-msgstr "Committen"
+msgstr "Eintragen"
 
-#: git-gui.sh:2908 git-gui.sh:3400
+#: git-gui.sh:2619 git-gui.sh:3050
+msgid "New Commit"
+msgstr "Neue Version"
+
+#: git-gui.sh:2627 git-gui.sh:3057
 msgid "Amend Last Commit"
-msgstr "Letzten Commit nachbessern"
+msgstr "Letzte nachbessern"
 
-#: git-gui.sh:2918 git-gui.sh:3361 lib/remote_branch_delete.tcl:101
+#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
 msgid "Rescan"
 msgstr "Neu laden"
 
-#: git-gui.sh:2924
+#: git-gui.sh:2643
 msgid "Stage To Commit"
-msgstr "Für Commit bereitstellen"
+msgstr "Zum Eintragen bereitstellen"
 
-#: git-gui.sh:2930
+#: git-gui.sh:2649
 msgid "Stage Changed Files To Commit"
-msgstr "Geänderte Dateien für Commit bereitstellen"
+msgstr "Geänderte Dateien bereitstellen"
 
-#: git-gui.sh:2936
+#: git-gui.sh:2655
 msgid "Unstage From Commit"
-msgstr "Aus Commit-Bereitstellung herausnehmen"
+msgstr "Aus der Bereitstellung herausnehmen"
 
-#: git-gui.sh:2942 lib/index.tcl:521
+#: git-gui.sh:2661 lib/index.tcl:412
 msgid "Revert Changes"
 msgstr "Änderungen verwerfen"
 
-#: git-gui.sh:2950 git-gui.sh:3700 git-gui.sh:3731
+#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
 msgid "Show Less Context"
 msgstr "Weniger Zeilen anzeigen"
 
-#: git-gui.sh:2954 git-gui.sh:3704 git-gui.sh:3735
+#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
 msgid "Show More Context"
 msgstr "Mehr Zeilen anzeigen"
 
-#: git-gui.sh:2961 git-gui.sh:3374 git-gui.sh:3485
+#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
 msgid "Sign Off"
 msgstr "Abzeichnen"
 
-#: git-gui.sh:2977
+#: git-gui.sh:2696
 msgid "Local Merge..."
 msgstr "Lokales Zusammenführen..."
 
-#: git-gui.sh:2982
+#: git-gui.sh:2701
 msgid "Abort Merge..."
 msgstr "Zusammenführen abbrechen..."
 
-#: git-gui.sh:2994 git-gui.sh:3022
+#: git-gui.sh:2713 git-gui.sh:2741
 msgid "Add..."
-msgstr "Neues hinzufügen..."
+msgstr "Hinzufügen..."
 
-#: git-gui.sh:2998
+#: git-gui.sh:2717
 msgid "Push..."
 msgstr "Versenden..."
 
-#: git-gui.sh:3002
+#: git-gui.sh:2721
 msgid "Delete Branch..."
-msgstr "Branch löschen..."
+msgstr "Zweig löschen..."
 
-#: git-gui.sh:3012 git-gui.sh:3666
+#: git-gui.sh:2731 git-gui.sh:3292
 msgid "Options..."
 msgstr "Optionen..."
 
-#: git-gui.sh:3023
+#: git-gui.sh:2742
 msgid "Remove..."
 msgstr "Entfernen..."
 
-#: git-gui.sh:3032 lib/choose_repository.tcl:67
+#: git-gui.sh:2751 lib/choose_repository.tcl:50
 msgid "Help"
 msgstr "Hilfe"
 
-#: git-gui.sh:3036 git-gui.sh:3040 lib/choose_repository.tcl:61
-#: lib/choose_repository.tcl:70 lib/about.tcl:14
+#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
+#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
 #, tcl-format
 msgid "About %s"
 msgstr "Über %s"
 
-#: git-gui.sh:3064
+#: git-gui.sh:2783
 msgid "Online Documentation"
 msgstr "Online-Dokumentation"
 
-#: git-gui.sh:3067 lib/choose_repository.tcl:64 lib/choose_repository.tcl:73
+#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
 msgid "Show SSH Key"
 msgstr "SSH-Schlüssel anzeigen"
 
-#: git-gui.sh:3097 git-gui.sh:3229
-msgid "usage:"
-msgstr "Verwendung:"
-
-#: git-gui.sh:3101 git-gui.sh:3233
-msgid "Usage"
-msgstr "Verwendung"
-
-#: git-gui.sh:3182 lib/blame.tcl:575
-msgid "Error"
-msgstr "Fehler"
-
-#: git-gui.sh:3213
+#: git-gui.sh:2893
 #, tcl-format
 msgid "fatal: cannot stat path %s: No such file or directory"
 msgstr ""
 "Fehler: Verzeichnis »%s« kann nicht gelesen werden: Datei oder Verzeichnis "
 "nicht gefunden"
 
-#: git-gui.sh:3246
+#: git-gui.sh:2926
 msgid "Current Branch:"
-msgstr "Aktueller Branch:"
+msgstr "Aktueller Zweig:"
 
-#: git-gui.sh:3271
+#: git-gui.sh:2947
+msgid "Staged Changes (Will Commit)"
+msgstr "Bereitstellung (zum Eintragen)"
+
+#: git-gui.sh:2967
 msgid "Unstaged Changes"
 msgstr "Nicht bereitgestellte Änderungen"
 
-#: git-gui.sh:3293
-msgid "Staged Changes (Will Commit)"
-msgstr "Bereitstellung (zum Committen)"
-
-#: git-gui.sh:3367
+#: git-gui.sh:3017
 msgid "Stage Changed"
 msgstr "Alles bereitstellen"
 
-#: git-gui.sh:3386 lib/transport.tcl:137
+#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
 msgid "Push"
 msgstr "Versenden"
 
-#: git-gui.sh:3413
+#: git-gui.sh:3071
 msgid "Initial Commit Message:"
-msgstr "Erste Commit-Beschreibung:"
+msgstr "Erste Versionsbeschreibung:"
 
-#: git-gui.sh:3414
+#: git-gui.sh:3072
 msgid "Amended Commit Message:"
 msgstr "Nachgebesserte Beschreibung:"
 
-#: git-gui.sh:3415
+#: git-gui.sh:3073
 msgid "Amended Initial Commit Message:"
 msgstr "Nachgebesserte erste Beschreibung:"
 
-#: git-gui.sh:3416
+#: git-gui.sh:3074
 msgid "Amended Merge Commit Message:"
 msgstr "Nachgebesserte Zusammenführungs-Beschreibung:"
 
-#: git-gui.sh:3417
+#: git-gui.sh:3075
 msgid "Merge Commit Message:"
 msgstr "Zusammenführungs-Beschreibung:"
 
-#: git-gui.sh:3418
+#: git-gui.sh:3076
 msgid "Commit Message:"
-msgstr "Commit-Beschreibung:"
+msgstr "Versionsbeschreibung:"
 
-#: git-gui.sh:3477 git-gui.sh:3641 lib/console.tcl:73
+#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
 msgid "Copy All"
 msgstr "Alle kopieren"
 
-#: git-gui.sh:3501 lib/blame.tcl:106
+#: git-gui.sh:3149 lib/blame.tcl:104
 msgid "File:"
 msgstr "Datei:"
 
-#: git-gui.sh:3549 lib/choose_repository.tcl:1100
-msgid "Open"
-msgstr "Öffnen"
-
-#: git-gui.sh:3629
+#: git-gui.sh:3255
 msgid "Refresh"
 msgstr "Aktualisieren"
 
-#: git-gui.sh:3650
+#: git-gui.sh:3276
 msgid "Decrease Font Size"
 msgstr "Schriftgröße verkleinern"
 
-#: git-gui.sh:3654
+#: git-gui.sh:3280
 msgid "Increase Font Size"
 msgstr "Schriftgröße vergrößern"
 
-#: git-gui.sh:3662 lib/blame.tcl:296
+#: git-gui.sh:3288 lib/blame.tcl:281
 msgid "Encoding"
 msgstr "Zeichenkodierung"
 
-#: git-gui.sh:3673
+#: git-gui.sh:3299
 msgid "Apply/Reverse Hunk"
-msgstr "Patch-Block anwenden/zurücknehmen"
+msgstr "Kontext anwenden/umkehren"
 
-#: git-gui.sh:3678
+#: git-gui.sh:3304
 msgid "Apply/Reverse Line"
-msgstr "Zeile anwenden/zurücknehmen"
-
-#: git-gui.sh:3684 git-gui.sh:3794 git-gui.sh:3805
-msgid "Revert Hunk"
-msgstr "Patch-Block zurücknehmen"
-
-#: git-gui.sh:3689 git-gui.sh:3801 git-gui.sh:3812
-msgid "Revert Line"
-msgstr "Zeilenänderungen zurücknehmen"
-
-#: git-gui.sh:3694 git-gui.sh:3791
-msgid "Undo Last Revert"
-msgstr "Letztes Zurücknehmen rückgängig"
+msgstr "Zeile anwenden/umkehren"
 
-#: git-gui.sh:3713
+#: git-gui.sh:3323
 msgid "Run Merge Tool"
 msgstr "Zusammenführungswerkzeug"
 
-#: git-gui.sh:3718
+#: git-gui.sh:3328
 msgid "Use Remote Version"
 msgstr "Externe Version benutzen"
 
-#: git-gui.sh:3722
+#: git-gui.sh:3332
 msgid "Use Local Version"
 msgstr "Lokale Version benutzen"
 
-#: git-gui.sh:3726
+#: git-gui.sh:3336
 msgid "Revert To Base"
-msgstr "Zurücksetzen auf ursprünglichen Commit"
+msgstr "Ursprüngliche Version benutzen"
 
-#: git-gui.sh:3744
+#: git-gui.sh:3354
 msgid "Visualize These Changes In The Submodule"
-msgstr "Diese Änderungen im Submodul darstellen"
+msgstr "Diese Änderungen im Untermodul darstellen"
 
-#: git-gui.sh:3748
+#: git-gui.sh:3358
 msgid "Visualize Current Branch History In The Submodule"
-msgstr "Aktuellen Branch im Submodul darstellen"
+msgstr "Aktuellen Zweig im Untermodul darstellen"
 
-#: git-gui.sh:3752
+#: git-gui.sh:3362
 msgid "Visualize All Branch History In The Submodule"
-msgstr "Alle Branches im Submodul darstellen"
+msgstr "Alle Zweige im Untermodul darstellen"
 
-#: git-gui.sh:3757
+#: git-gui.sh:3367
 msgid "Start git gui In The Submodule"
-msgstr "Git gui im Submodul starten"
+msgstr "Git gui im Untermodul starten"
 
-#: git-gui.sh:3793
+#: git-gui.sh:3389
 msgid "Unstage Hunk From Commit"
-msgstr "Patch-Block aus Bereitstellung herausnehmen"
+msgstr "Kontext aus Bereitstellung herausnehmen"
 
-#: git-gui.sh:3797
+#: git-gui.sh:3391
 msgid "Unstage Lines From Commit"
 msgstr "Zeilen aus der Bereitstellung herausnehmen"
 
-#: git-gui.sh:3798 git-gui.sh:3809
-msgid "Revert Lines"
-msgstr "Zeilenänderung zurücknehmen"
-
-#: git-gui.sh:3800
+#: git-gui.sh:3393
 msgid "Unstage Line From Commit"
 msgstr "Zeile aus der Bereitstellung herausnehmen"
 
-#: git-gui.sh:3804
+#: git-gui.sh:3396
 msgid "Stage Hunk For Commit"
-msgstr "Patch-Block zur Bereitstellung hinzufügen"
+msgstr "Kontext zur Bereitstellung hinzufügen"
 
-#: git-gui.sh:3808
+#: git-gui.sh:3398
 msgid "Stage Lines For Commit"
 msgstr "Zeilen zur Bereitstellung hinzufügen"
 
-#: git-gui.sh:3811
+#: git-gui.sh:3400
 msgid "Stage Line For Commit"
 msgstr "Zeile zur Bereitstellung hinzufügen"
 
-#: git-gui.sh:3861
+#: git-gui.sh:3424
 msgid "Initializing..."
 msgstr "Initialisieren..."
 
-#: git-gui.sh:4017
+#: git-gui.sh:3541
 #, tcl-format
 msgid ""
 "Possible environment issues exist.\n"
@@ -594,7 +548,7 @@ msgstr ""
 "von %s an Git weitergegeben werden:\n"
 "\n"
 
-#: git-gui.sh:4046
+#: git-gui.sh:3570
 msgid ""
 "\n"
 "This is due to a known issue with the\n"
@@ -604,7 +558,7 @@ msgstr ""
 "Dies ist ein bekanntes Problem der Tcl-Version, die\n"
 "in Cygwin mitgeliefert wird."
 
-#: git-gui.sh:4051
+#: git-gui.sh:3575
 #, tcl-format
 msgid ""
 "\n"
@@ -620,151 +574,315 @@ msgstr ""
 "gewünschten Werte für die Einstellung user.name und \n"
 "user.email in Ihre Datei ~/.gitconfig einfügen.\n"
 
-#: lib/spellcheck.tcl:57
-msgid "Unsupported spell checker"
-msgstr "Rechtschreibprüfungsprogramm nicht unterstützt"
+#: lib/about.tcl:26
+msgid "git-gui - a graphical user interface for Git."
+msgstr "git-gui - eine grafische Oberfläche für Git."
 
-#: lib/spellcheck.tcl:65
-msgid "Spell checking is unavailable"
-msgstr "Rechtschreibprüfung nicht verfügbar"
+#: lib/blame.tcl:72
+msgid "File Viewer"
+msgstr "Datei-Browser"
 
-#: lib/spellcheck.tcl:68
-msgid "Invalid spell checking configuration"
-msgstr "Unbenutzbare Konfiguration der Rechtschreibprüfung"
+#: lib/blame.tcl:78
+msgid "Commit:"
+msgstr "Version:"
 
-#: lib/spellcheck.tcl:70
+#: lib/blame.tcl:271
+msgid "Copy Commit"
+msgstr "Version kopieren"
+
+#: lib/blame.tcl:275
+msgid "Find Text..."
+msgstr "Text suchen..."
+
+#: lib/blame.tcl:284
+msgid "Do Full Copy Detection"
+msgstr "Volle Kopie-Erkennung"
+
+#: lib/blame.tcl:288
+msgid "Show History Context"
+msgstr "Historien-Kontext anzeigen"
+
+#: lib/blame.tcl:291
+msgid "Blame Parent Commit"
+msgstr "Elternversion annotieren"
+
+#: lib/blame.tcl:450
 #, tcl-format
-msgid "Reverting dictionary to %s."
-msgstr "Wörterbuch auf %s zurückgesetzt."
+msgid "Reading %s..."
+msgstr "%s lesen..."
 
-#: lib/spellcheck.tcl:73
-msgid "Spell checker silently failed on startup"
-msgstr "Rechtschreibprüfungsprogramm mit Fehler abgebrochen"
+#: lib/blame.tcl:557
+msgid "Loading copy/move tracking annotations..."
+msgstr "Annotierungen für Kopieren/Verschieben werden geladen..."
 
-#: lib/spellcheck.tcl:80
-msgid "Unrecognized spell checker"
-msgstr "Unbekanntes Rechtschreibprüfungsprogramm"
+#: lib/blame.tcl:577
+msgid "lines annotated"
+msgstr "Zeilen annotiert"
 
-#: lib/spellcheck.tcl:186
-msgid "No Suggestions"
-msgstr "Keine Vorschläge"
+#: lib/blame.tcl:769
+msgid "Loading original location annotations..."
+msgstr "Annotierungen für ursprünglichen Ort werden geladen..."
 
-#: lib/spellcheck.tcl:388
-msgid "Unexpected EOF from spell checker"
-msgstr "Unerwartetes EOF vom Rechtschreibprüfungsprogramm"
+#: lib/blame.tcl:772
+msgid "Annotation complete."
+msgstr "Annotierung vollständig."
 
-#: lib/spellcheck.tcl:392
-msgid "Spell Checker Failed"
-msgstr "Rechtschreibprüfung fehlgeschlagen"
+#: lib/blame.tcl:802
+msgid "Busy"
+msgstr "Verarbeitung läuft"
 
-#: lib/transport.tcl:6 lib/remote_add.tcl:132
-#, tcl-format
-msgid "fetch %s"
-msgstr "»%s« anfordern"
+#: lib/blame.tcl:803
+msgid "Annotation process is already running."
+msgstr "Annotierung läuft bereits."
 
-#: lib/transport.tcl:7
-#, tcl-format
-msgid "Fetching new changes from %s"
-msgstr "Neue Änderungen von »%s« holen"
+#: lib/blame.tcl:842
+msgid "Running thorough copy detection..."
+msgstr "Intensive Kopie-Erkennung läuft..."
 
-#: lib/transport.tcl:18
-#, tcl-format
-msgid "remote prune %s"
-msgstr "Gelöschte externe Branches aus »%s« entfernen"
+#: lib/blame.tcl:910
+msgid "Loading annotation..."
+msgstr "Annotierung laden..."
 
-#: lib/transport.tcl:19
-#, tcl-format
-msgid "Pruning tracking branches deleted from %s"
-msgstr "Gelöschte externe Trackingbranches aus »%s« werden entfernt"
+#: lib/blame.tcl:963
+msgid "Author:"
+msgstr "Autor:"
+
+#: lib/blame.tcl:967
+msgid "Committer:"
+msgstr "Eintragender:"
 
-#: lib/transport.tcl:25
-msgid "fetch all remotes"
-msgstr "Abrufen aller externen"
+#: lib/blame.tcl:972
+msgid "Original File:"
+msgstr "Ursprüngliche Datei:"
 
-#: lib/transport.tcl:26
-msgid "Fetching new changes from all remotes"
-msgstr "Neue Änderungen von allen externen anfordern"
+#: lib/blame.tcl:1020
+msgid "Cannot find HEAD commit:"
+msgstr "Zweigspitze (»HEAD«) kann nicht gefunden werden:"
 
-#: lib/transport.tcl:40
-msgid "remote prune all remotes"
-msgstr "Extern veraltete Branches entfernen aller Repositories"
+#: lib/blame.tcl:1075
+msgid "Cannot find parent commit:"
+msgstr "Elternversion kann nicht gefunden werden:"
 
-#: lib/transport.tcl:41
-msgid "Pruning tracking branches deleted from all remotes"
-msgstr ""
-"Gelöschte externe Trackingbranches aus allen Repositories werden entfernt"
+#: lib/blame.tcl:1090
+msgid "Unable to display parent"
+msgstr "Elternversion kann nicht angezeigt werden"
 
-#: lib/transport.tcl:54 lib/transport.tcl:92 lib/transport.tcl:110
-#: lib/remote_add.tcl:162
-#, tcl-format
-msgid "push %s"
-msgstr "»%s« versenden..."
+#: lib/blame.tcl:1091 lib/diff.tcl:320
+msgid "Error loading diff:"
+msgstr "Fehler beim Laden des Vergleichs:"
 
-#: lib/transport.tcl:55
-#, tcl-format
-msgid "Pushing changes to %s"
-msgstr "Änderungen nach »%s« versenden"
+#: lib/blame.tcl:1231
+msgid "Originally By:"
+msgstr "Ursprünglich von:"
 
-#: lib/transport.tcl:93
-#, tcl-format
-msgid "Mirroring to %s"
-msgstr "Spiegeln nach %s"
+#: lib/blame.tcl:1237
+msgid "In File:"
+msgstr "In Datei:"
 
-#: lib/transport.tcl:111
-#, tcl-format
-msgid "Pushing %s %s to %s"
-msgstr "%s %s nach %s versenden"
+#: lib/blame.tcl:1242
+msgid "Copied Or Moved Here By:"
+msgstr "Kopiert oder verschoben durch:"
 
-#: lib/transport.tcl:132
-msgid "Push Branches"
-msgstr "Branches versenden"
+#: lib/branch_checkout.tcl:14 lib/branch_checkout.tcl:19
+msgid "Checkout Branch"
+msgstr "Auf Zweig umstellen"
 
-#: lib/transport.tcl:141 lib/checkout_op.tcl:580 lib/remote_add.tcl:34
-#: lib/browser.tcl:292 lib/branch_checkout.tcl:30 lib/branch_rename.tcl:32
-#: lib/choose_font.tcl:45 lib/option.tcl:127 lib/tools_dlg.tcl:41
-#: lib/tools_dlg.tcl:202 lib/tools_dlg.tcl:345 lib/remote_branch_delete.tcl:43
-#: lib/branch_create.tcl:37 lib/branch_delete.tcl:34 lib/merge.tcl:178
+#: lib/branch_checkout.tcl:23
+msgid "Checkout"
+msgstr "Umstellen"
+
+#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
+#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
+#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
+#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
+#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
+#: lib/transport.tcl:108
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: lib/transport.tcl:147
-msgid "Source Branches"
-msgstr "Lokale Branches"
+#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 lib/tools_dlg.tcl:328
+msgid "Revision"
+msgstr "Version"
 
-#: lib/transport.tcl:162
-msgid "Destination Repository"
-msgstr "Ziel-Repository"
+#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:280
+msgid "Options"
+msgstr "Optionen"
 
-#: lib/transport.tcl:165 lib/remote_branch_delete.tcl:51
-msgid "Remote:"
-msgstr "Externes Repository:"
+#: lib/branch_checkout.tcl:39 lib/branch_create.tcl:92
+msgid "Fetch Tracking Branch"
+msgstr "Übernahmezweig anfordern"
 
-#: lib/transport.tcl:187 lib/remote_branch_delete.tcl:72
-msgid "Arbitrary Location:"
-msgstr "Beliebige Adresse:"
+#: lib/branch_checkout.tcl:44
+msgid "Detach From Local Branch"
+msgstr "Verbindung zu lokalem Zweig lösen"
 
-#: lib/transport.tcl:205
-msgid "Transfer Options"
-msgstr "Netzwerk-Einstellungen"
+#: lib/branch_create.tcl:22
+msgid "Create Branch"
+msgstr "Zweig erstellen"
 
-#: lib/transport.tcl:207
-msgid "Force overwrite existing branch (may discard changes)"
+#: lib/branch_create.tcl:27
+msgid "Create New Branch"
+msgstr "Neuen Zweig erstellen"
+
+#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
+msgid "Create"
+msgstr "Erstellen"
+
+#: lib/branch_create.tcl:40
+msgid "Branch Name"
+msgstr "Zweigname"
+
+#: lib/branch_create.tcl:43 lib/remote_add.tcl:39 lib/tools_dlg.tcl:50
+msgid "Name:"
+msgstr "Name:"
+
+#: lib/branch_create.tcl:58
+msgid "Match Tracking Branch Name"
+msgstr "Passend zu Übernahmezweig-Name"
+
+#: lib/branch_create.tcl:66
+msgid "Starting Revision"
+msgstr "Anfangsversion"
+
+#: lib/branch_create.tcl:72
+msgid "Update Existing Branch:"
+msgstr "Existierenden Zweig aktualisieren:"
+
+#: lib/branch_create.tcl:75
+msgid "No"
+msgstr "Nein"
+
+#: lib/branch_create.tcl:80
+msgid "Fast Forward Only"
+msgstr "Nur Schnellzusammenführung"
+
+#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: lib/branch_create.tcl:97
+msgid "Checkout After Creation"
+msgstr "Arbeitskopie umstellen nach Erstellen"
+
+#: lib/branch_create.tcl:131
+msgid "Please select a tracking branch."
+msgstr "Bitte wählen Sie einen Übernahmezweig."
+
+#: lib/branch_create.tcl:140
+#, tcl-format
+msgid "Tracking branch %s is not a branch in the remote repository."
+msgstr "Übernahmezweig »%s« ist kein Zweig im externen Projektarchiv."
+
+#: lib/branch_create.tcl:153 lib/branch_rename.tcl:86
+msgid "Please supply a branch name."
+msgstr "Bitte geben Sie einen Zweignamen an."
+
+#: lib/branch_create.tcl:164 lib/branch_rename.tcl:106
+#, tcl-format
+msgid "'%s' is not an acceptable branch name."
+msgstr "»%s« ist kein zulässiger Zweigname."
+
+#: lib/branch_delete.tcl:15
+msgid "Delete Branch"
+msgstr "Zweig löschen"
+
+#: lib/branch_delete.tcl:20
+msgid "Delete Local Branch"
+msgstr "Lokalen Zweig löschen"
+
+#: lib/branch_delete.tcl:37
+msgid "Local Branches"
+msgstr "Lokale Zweige"
+
+#: lib/branch_delete.tcl:52
+msgid "Delete Only If Merged Into"
+msgstr "Nur löschen, wenn zusammengeführt nach"
+
+#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
+msgid "Always (Do not perform merge checks)"
+msgstr "Immer (Keine Zusammenführungsprüfung)"
+
+#: lib/branch_delete.tcl:103
+#, tcl-format
+msgid "The following branches are not completely merged into %s:"
+msgstr "Folgende Zweige sind noch nicht mit »%s« zusammengeführt:"
+
+#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
 msgstr ""
-"Überschreiben von existierenden Branches erzwingen (könnte Änderungen "
-"löschen)"
+"Das Wiederherstellen von gelöschten Zweigen ist nur mit größerem Aufwand "
+"möglich.\n"
+"\n"
+"Sollen die ausgewählten Zweige gelöscht werden?"
 
-#: lib/transport.tcl:211
-msgid "Use thin pack (for slow network connections)"
-msgstr "Kompaktes Datenformat benutzen (für langsame Netzverbindungen)"
+#: lib/branch_delete.tcl:141
+#, tcl-format
+msgid ""
+"Failed to delete branches:\n"
+"%s"
+msgstr ""
+"Fehler beim Löschen der Zweige:\n"
+"%s"
 
-#: lib/transport.tcl:215
-msgid "Include tags"
-msgstr "Mit Tags versenden"
+#: lib/branch_rename.tcl:14 lib/branch_rename.tcl:22
+msgid "Rename Branch"
+msgstr "Zweig umbenennen"
 
-#: lib/transport.tcl:229
+#: lib/branch_rename.tcl:26
+msgid "Rename"
+msgstr "Umbenennen"
+
+#: lib/branch_rename.tcl:36
+msgid "Branch:"
+msgstr "Zweig:"
+
+#: lib/branch_rename.tcl:39
+msgid "New Name:"
+msgstr "Neuer Name:"
+
+#: lib/branch_rename.tcl:75
+msgid "Please select a branch to rename."
+msgstr "Bitte wählen Sie einen Zweig zum umbenennen."
+
+#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
 #, tcl-format
-msgid "%s (%s): Push"
-msgstr "%s (%s): Versenden"
+msgid "Branch '%s' already exists."
+msgstr "Zweig »%s« existiert bereits."
+
+#: lib/branch_rename.tcl:117
+#, tcl-format
+msgid "Failed to rename '%s'."
+msgstr "Fehler beim Umbenennen von »%s«."
+
+#: lib/browser.tcl:17
+msgid "Starting..."
+msgstr "Starten..."
+
+#: lib/browser.tcl:26
+msgid "File Browser"
+msgstr "Datei-Browser"
+
+#: lib/browser.tcl:126 lib/browser.tcl:143
+#, tcl-format
+msgid "Loading %s..."
+msgstr "%s laden..."
+
+#: lib/browser.tcl:187
+msgid "[Up To Parent]"
+msgstr "[Nach oben]"
+
+#: lib/browser.tcl:267 lib/browser.tcl:273
+msgid "Browse Branch Files"
+msgstr "Dateien des Zweigs durchblättern"
+
+#: lib/browser.tcl:278 lib/choose_repository.tcl:398
+#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
+#: lib/choose_repository.tcl:1028
+msgid "Browse"
+msgstr "Blättern"
 
 #: lib/checkout_op.tcl:85
 #, tcl-format
@@ -774,28 +892,23 @@ msgstr "Änderungen »%s« von »%s« anfordern"
 #: lib/checkout_op.tcl:133
 #, tcl-format
 msgid "fatal: Cannot resolve %s"
-msgstr "Fehler: »%s« kann nicht als Branch oder Version erkannt werden"
+msgstr "Fehler: »%s« kann nicht als Zweig oder Version erkannt werden"
 
-#: lib/checkout_op.tcl:146 lib/sshkey.tcl:58 lib/console.tcl:81
-#: lib/database.tcl:30
+#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
+#: lib/sshkey.tcl:53
 msgid "Close"
 msgstr "Schließen"
 
 #: lib/checkout_op.tcl:175
 #, tcl-format
 msgid "Branch '%s' does not exist."
-msgstr "Branch »%s« existiert nicht."
+msgstr "Zweig »%s« existiert nicht."
 
 #: lib/checkout_op.tcl:194
 #, tcl-format
 msgid "Failed to configure simplified git-pull for '%s'."
 msgstr "Fehler beim Einrichten der vereinfachten git-pull für »%s«."
 
-#: lib/checkout_op.tcl:202 lib/branch_rename.tcl:102
-#, tcl-format
-msgid "Branch '%s' already exists."
-msgstr "Branch »%s« existiert bereits."
-
 #: lib/checkout_op.tcl:229
 #, tcl-format
 msgid ""
@@ -804,10 +917,10 @@ msgid ""
 "It cannot fast-forward to %s.\n"
 "A merge is required."
 msgstr ""
-"Branch »%s« existiert bereits.\n"
+"Zweig »%s« existiert bereits.\n"
 "\n"
-"Branch kann nicht auf »%s« vorgespult werden. Reguläres Zusammenführen ist "
-"notwendig."
+"Zweig kann nicht mit »%s« schnellzusammengeführt werden. Reguläres "
+"Zusammenführen ist notwendig."
 
 #: lib/checkout_op.tcl:243
 #, tcl-format
@@ -832,79 +945,76 @@ msgid ""
 "\n"
 "The rescan will be automatically started now.\n"
 msgstr ""
-"Der letzte geladene Status stimmt nicht mehr mit dem Repository überein.\n"
+"Der letzte geladene Status stimmt nicht mehr mit dem Projektarchiv überein.\n"
 "\n"
-"Ein anderes Git-Programm hat das Repository seit dem letzten Laden "
-"geändert.  Vor dem Wechseln des lokalen Branches muss neu geladen werden.\n"
+"Ein anderes Git-Programm hat das Projektarchiv seit dem letzten Laden "
+"geändert.  Vor dem Wechseln des lokalen Zweigs muss neu geladen werden.\n"
 "\n"
 "Es wird gleich neu geladen.\n"
 
 #: lib/checkout_op.tcl:345
 #, tcl-format
 msgid "Updating working directory to '%s'..."
-msgstr "Arbeitskopie aktualisieren auf »%s«..."
+msgstr "Arbeitskopie umstellen auf »%s«..."
 
 #: lib/checkout_op.tcl:346
 msgid "files checked out"
 msgstr "Dateien aktualisiert"
 
-#: lib/checkout_op.tcl:377
+#: lib/checkout_op.tcl:376
 #, tcl-format
 msgid "Aborted checkout of '%s' (file level merging is required)."
 msgstr ""
-"Branch »%s« Auschecken abgebrochen (Zusammenführen der Dateien ist "
+"Auf Zweig »%s« umstellen abgebrochen (Zusammenführen der Dateien ist "
 "notwendig)."
 
-#: lib/checkout_op.tcl:378
+#: lib/checkout_op.tcl:377
 msgid "File level merge required."
 msgstr "Zusammenführen der Dateien ist notwendig."
 
-#: lib/checkout_op.tcl:382
+#: lib/checkout_op.tcl:381
 #, tcl-format
 msgid "Staying on branch '%s'."
-msgstr "Es wird auf Branch »%s« verblieben."
+msgstr "Es wird auf Zweig »%s« verblieben."
 
-#: lib/checkout_op.tcl:453
+#: lib/checkout_op.tcl:452
 msgid ""
 "You are no longer on a local branch.\n"
 "\n"
 "If you wanted to be on a branch, create one now starting from 'This Detached "
 "Checkout'."
 msgstr ""
-"Die Arbeitskopie ist nicht auf einem lokalen Branch.\n"
+"Die Arbeitskopie ist nicht auf einem lokalen Zweig.\n"
 "\n"
-"Wenn Sie auf einem Branch arbeiten möchten, erstellen Sie bitte jetzt einen "
-"Branch mit der Auswahl »Losgelöste Arbeitskopie-Version«."
+"Wenn Sie auf einem Zweig arbeiten möchten, erstellen Sie bitte jetzt einen "
+"Zweig mit der Auswahl »Abgetrennte Arbeitskopie-Version«."
 
-#: lib/checkout_op.tcl:504 lib/checkout_op.tcl:508
+#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
 #, tcl-format
 msgid "Checked out '%s'."
 msgstr "Umgestellt auf »%s«."
 
-#: lib/checkout_op.tcl:536
+#: lib/checkout_op.tcl:535
 #, tcl-format
 msgid "Resetting '%s' to '%s' will lose the following commits:"
-msgstr "Umsetzen von »%s« nach »%s« wird folgende Commits verlieren:"
+msgstr "Zurücksetzen von »%s« nach »%s« wird folgende Versionen verwerfen:"
 
-#: lib/checkout_op.tcl:558
+#: lib/checkout_op.tcl:557
 msgid "Recovering lost commits may not be easy."
 msgstr ""
-"Verlorene Commits können nur mit größerem Aufwand wiederhergestellt werden."
+"Verworfene Versionen können nur mit größerem Aufwand wiederhergestellt "
+"werden."
 
-#: lib/checkout_op.tcl:563
+#: lib/checkout_op.tcl:562
 #, tcl-format
 msgid "Reset '%s'?"
-msgstr "»%s« umsetzen?"
+msgstr "»%s« zurücksetzen?"
 
-#: lib/checkout_op.tcl:568 lib/tools_dlg.tcl:336 lib/merge.tcl:170
+#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
 msgid "Visualize"
 msgstr "Darstellen"
 
-#: lib/checkout_op.tcl:572 lib/branch_create.tcl:85
-msgid "Reset"
-msgstr "Umsetzen (Reset)"
-
-#: lib/checkout_op.tcl:636
+#: lib/checkout_op.tcl:635
 #, tcl-format
 msgid ""
 "Failed to set current branch.\n"
@@ -914,7 +1024,7 @@ msgid ""
 "\n"
 "This should not have occurred.  %s will now close and give up."
 msgstr ""
-"Lokaler Branch kann nicht gesetzt werden.\n"
+"Lokaler Zweig kann nicht gesetzt werden.\n"
 "\n"
 "Diese Arbeitskopie ist nur teilweise umgestellt. Die Dateien sind korrekt "
 "aktualisiert, aber einige interne Git-Dateien konnten nicht geändert "
@@ -922,345 +1032,23 @@ msgstr ""
 "\n"
 "Dies ist ein interner Programmfehler von %s. Programm wird jetzt abgebrochen."
 
-#: lib/remote_add.tcl:20
-#, tcl-format
-msgid "%s (%s): Add Remote"
-msgstr "%s (%s): Externes Repository hinzufügen"
-
-#: lib/remote_add.tcl:25
-msgid "Add New Remote"
-msgstr "Neues externes Repository hinzufügen"
-
-#: lib/remote_add.tcl:30 lib/tools_dlg.tcl:37
-msgid "Add"
-msgstr "Hinzufügen"
-
-#: lib/remote_add.tcl:39
-msgid "Remote Details"
-msgstr "Einzelheiten des externen Repository"
-
-#: lib/remote_add.tcl:41 lib/tools_dlg.tcl:51 lib/branch_create.tcl:44
-msgid "Name:"
-msgstr "Name:"
-
-#: lib/remote_add.tcl:50
-msgid "Location:"
-msgstr "Adresse:"
-
-#: lib/remote_add.tcl:60
-msgid "Further Action"
-msgstr "Weitere Aktion"
-
-#: lib/remote_add.tcl:63
-msgid "Fetch Immediately"
-msgstr "Jetzt anfordern"
-
-#: lib/remote_add.tcl:69
-msgid "Initialize Remote Repository and Push"
-msgstr "Externes Repository initialisieren und dahin versenden"
-
-#: lib/remote_add.tcl:75
-msgid "Do Nothing Else Now"
-msgstr "Keine weitere Aktion"
-
-#: lib/remote_add.tcl:100
-msgid "Please supply a remote name."
-msgstr "Bitte geben Sie einen Namen des externen Repository an."
-
-#: lib/remote_add.tcl:113
-#, tcl-format
-msgid "'%s' is not an acceptable remote name."
-msgstr "»%s« ist kein zulässiger Name eines externen Repository."
-
-#: lib/remote_add.tcl:124
-#, tcl-format
-msgid "Failed to add remote '%s' of location '%s'."
-msgstr "Fehler beim Hinzufügen des externen Repository »%s« aus Adresse »%s«."
-
-#: lib/remote_add.tcl:133
-#, tcl-format
-msgid "Fetching the %s"
-msgstr "»%s« anfordern"
-
-#: lib/remote_add.tcl:156
-#, tcl-format
-msgid "Do not know how to initialize repository at location '%s'."
-msgstr ""
-"Initialisieren eines externen Repositories an Adresse »%s« ist nicht möglich."
-
-#: lib/remote_add.tcl:163
-#, tcl-format
-msgid "Setting up the %s (at %s)"
-msgstr "Einrichten von »%s« an »%s«"
-
-#: lib/browser.tcl:17
-msgid "Starting..."
-msgstr "Starten..."
-
-#: lib/browser.tcl:27
-#, tcl-format
-msgid "%s (%s): File Browser"
-msgstr "%s (%s): Datei-Browser"
-
-#: lib/browser.tcl:132 lib/browser.tcl:149
-#, tcl-format
-msgid "Loading %s..."
-msgstr "%s laden..."
-
-#: lib/browser.tcl:193
-msgid "[Up To Parent]"
-msgstr "[Nach oben]"
-
-#: lib/browser.tcl:275
-#, tcl-format
-msgid "%s (%s): Browse Branch Files"
-msgstr "%s (%s): Dateien des Branches durchblättern"
-
-#: lib/browser.tcl:282
-msgid "Browse Branch Files"
-msgstr "Dateien des Branches durchblättern"
-
-#: lib/browser.tcl:288 lib/choose_repository.tcl:437
-#: lib/choose_repository.tcl:524 lib/choose_repository.tcl:533
-#: lib/choose_repository.tcl:1115
-msgid "Browse"
-msgstr "Blättern"
-
-#: lib/browser.tcl:297 lib/branch_checkout.tcl:35 lib/tools_dlg.tcl:321
-msgid "Revision"
-msgstr "Version"
-
-#: lib/index.tcl:6
-msgid "Unable to unlock the index."
-msgstr "Bereitstellung kann nicht wieder freigegeben werden."
-
-#: lib/index.tcl:30
-msgid "Index Error"
-msgstr "Fehler in Bereitstellung"
-
-#: lib/index.tcl:32
-msgid ""
-"Updating the Git index failed.  A rescan will be automatically started to "
-"resynchronize git-gui."
-msgstr ""
-"Das Aktualisieren der Git-Bereitstellung ist fehlgeschlagen. Eine allgemeine "
-"Git-Aktualisierung wird jetzt gestartet, um git-gui wieder mit git zu "
-"synchronisieren."
-
-#: lib/index.tcl:43
-msgid "Continue"
-msgstr "Fortsetzen"
-
-#: lib/index.tcl:46
-msgid "Unlock Index"
-msgstr "Bereitstellung freigeben"
-
-#: lib/index.tcl:77 lib/index.tcl:146 lib/index.tcl:220 lib/index.tcl:587
-#: lib/choose_repository.tcl:999
-msgid "files"
-msgstr "Dateien"
-
-#: lib/index.tcl:326
-msgid "Unstaging selected files from commit"
-msgstr "Gewählte Dateien aus der Bereitstellung herausnehmen"
-
-#: lib/index.tcl:330
-#, tcl-format
-msgid "Unstaging %s from commit"
-msgstr "Datei »%s« aus der Bereitstellung herausnehmen"
-
-#: lib/index.tcl:369
-msgid "Ready to commit."
-msgstr "Bereit zum Committen."
-
-#: lib/index.tcl:378
-msgid "Adding selected files"
-msgstr "Gewählte Dateien hinzufügen"
-
-#: lib/index.tcl:382
-#, tcl-format
-msgid "Adding %s"
-msgstr "»%s« hinzufügen"
-
-#: lib/index.tcl:412
-#, tcl-format
-msgid "Stage %d untracked files?"
-msgstr "%d unversionierte Dateien bereitstellen?"
-
-#: lib/index.tcl:420
-msgid "Adding all changed files"
-msgstr "Alle geänderten Dateien hinzufügen"
-
-#: lib/index.tcl:503
-#, tcl-format
-msgid "Revert changes in file %s?"
-msgstr "Änderungen in Datei »%s« verwerfen?"
-
-#: lib/index.tcl:508
-#, tcl-format
-msgid "Revert changes in these %i files?"
-msgstr "Änderungen in diesen %i Dateien verwerfen?"
-
-#: lib/index.tcl:517
-msgid "Any unstaged changes will be permanently lost by the revert."
-msgstr ""
-"Alle nicht bereitgestellten Änderungen werden beim Verwerfen verloren gehen."
-
-#: lib/index.tcl:520 lib/index.tcl:563
-msgid "Do Nothing"
-msgstr "Nichts tun"
-
-#: lib/index.tcl:545
-#, tcl-format
-msgid "Delete untracked file %s?"
-msgstr "Unversionierte Datei »%s« löschen?"
-
-#: lib/index.tcl:550
-#, tcl-format
-msgid "Delete these %i untracked files?"
-msgstr "Diese %i unversionierten Dateien löschen?"
-
-#: lib/index.tcl:560
-msgid "Files will be permanently deleted."
-msgstr "Dateien werden endgültig gelöscht."
-
-#: lib/index.tcl:564
-msgid "Delete Files"
-msgstr "Dateien löschen"
-
-#: lib/index.tcl:586
-msgid "Deleting"
-msgstr "Löschen"
-
-#: lib/index.tcl:665
-msgid "Encountered errors deleting files:\n"
-msgstr "Fehler beim Löschen der Dateien:\n"
-
-#: lib/index.tcl:674
-#, tcl-format
-msgid "None of the %d selected files could be deleted."
-msgstr "Keine der %d gewählten Dateien konnten gelöscht werden."
-
-#: lib/index.tcl:679
-#, tcl-format
-msgid "%d of the %d selected files could not be deleted."
-msgstr "%d der %d gewählten Dateien konnten nicht gelöscht werden."
-
-#: lib/index.tcl:726
-msgid "Reverting selected files"
-msgstr "Änderungen in gewählten Dateien verwerfen"
-
-#: lib/index.tcl:730
-#, tcl-format
-msgid "Reverting %s"
-msgstr "Änderungen in %s verwerfen"
-
-#: lib/branch_checkout.tcl:16
-#, tcl-format
-msgid "%s (%s): Checkout Branch"
-msgstr "%s (%s): Branch auschecken"
-
-#: lib/branch_checkout.tcl:21
-msgid "Checkout Branch"
-msgstr "Branch auschecken"
-
-#: lib/branch_checkout.tcl:26
-msgid "Checkout"
-msgstr "Auschecken"
-
-#: lib/branch_checkout.tcl:39 lib/option.tcl:310 lib/branch_create.tcl:69
-msgid "Options"
-msgstr "Optionen"
-
-#: lib/branch_checkout.tcl:42 lib/branch_create.tcl:92
-msgid "Fetch Tracking Branch"
-msgstr "Trackingbranch anfordern"
-
-#: lib/branch_checkout.tcl:47
-msgid "Detach From Local Branch"
-msgstr "Verbindung zu lokalem Branch lösen"
-
-#: lib/status_bar.tcl:263
-#, tcl-format
-msgid "%s ... %*i of %*i %s (%3i%%)"
-msgstr "%s ... %*i von %*i %s (%3i%%)"
-
-#: lib/remote.tcl:200
-msgid "Push to"
-msgstr "Versenden nach"
-
-#: lib/remote.tcl:218
-msgid "Remove Remote"
-msgstr "Externes Repository entfernen"
-
-#: lib/remote.tcl:223
-msgid "Prune from"
-msgstr "Veraltete Branches entfernen"
-
-#: lib/remote.tcl:228
-msgid "Fetch from"
-msgstr "Anfordern"
-
-#: lib/remote.tcl:249 lib/remote.tcl:253 lib/remote.tcl:258 lib/remote.tcl:264
-msgid "All"
-msgstr "Alle"
-
-#: lib/branch_rename.tcl:15
-#, tcl-format
-msgid "%s (%s): Rename Branch"
-msgstr "%s (%s): Branch umbenennen"
-
-#: lib/branch_rename.tcl:23
-msgid "Rename Branch"
-msgstr "Branch umbenennen"
-
-#: lib/branch_rename.tcl:28
-msgid "Rename"
-msgstr "Umbenennen"
-
-#: lib/branch_rename.tcl:38
-msgid "Branch:"
-msgstr "Branch:"
-
-#: lib/branch_rename.tcl:46
-msgid "New Name:"
-msgstr "Neuer Name:"
-
-#: lib/branch_rename.tcl:81
-msgid "Please select a branch to rename."
-msgstr "Bitte wählen Sie einen Branch zum umbenennen."
-
-#: lib/branch_rename.tcl:92 lib/branch_create.tcl:154
-msgid "Please supply a branch name."
-msgstr "Bitte geben Sie einen Branchnamen an."
-
-#: lib/branch_rename.tcl:112 lib/branch_create.tcl:165
-#, tcl-format
-msgid "'%s' is not an acceptable branch name."
-msgstr "»%s« ist kein zulässiger Branchname."
-
-#: lib/branch_rename.tcl:123
-#, tcl-format
-msgid "Failed to rename '%s'."
-msgstr "Fehler beim Umbenennen von »%s«."
-
-#: lib/choose_font.tcl:41
+#: lib/choose_font.tcl:39
 msgid "Select"
 msgstr "Auswählen"
 
-#: lib/choose_font.tcl:55
+#: lib/choose_font.tcl:53
 msgid "Font Family"
 msgstr "Schriftfamilie"
 
-#: lib/choose_font.tcl:76
+#: lib/choose_font.tcl:74
 msgid "Font Size"
 msgstr "Schriftgröße"
 
-#: lib/choose_font.tcl:93
+#: lib/choose_font.tcl:91
 msgid "Font Example"
 msgstr "Schriftbeispiel"
 
-#: lib/choose_font.tcl:105
+#: lib/choose_font.tcl:103
 msgid ""
 "This is example text.\n"
 "If you like this text, it can be your font."
@@ -1268,1137 +1056,277 @@ msgstr ""
 "Dies ist ein Beispieltext.\n"
 "Wenn Ihnen dieser Text gefällt, sollten Sie diese Schriftart wählen."
 
-#: lib/option.tcl:11
-#, tcl-format
-msgid "Invalid global encoding '%s'"
-msgstr "Ungültige globale Zeichenkodierung »%s«"
-
-#: lib/option.tcl:19
-#, tcl-format
-msgid "Invalid repo encoding '%s'"
-msgstr "Ungültige Repository-Zeichenkodierung »%s«"
-
-#: lib/option.tcl:119
-msgid "Restore Defaults"
-msgstr "Voreinstellungen wiederherstellen"
-
-#: lib/option.tcl:123
-msgid "Save"
-msgstr "Speichern"
-
-#: lib/option.tcl:133
-#, tcl-format
-msgid "%s Repository"
-msgstr "%s Repository"
-
-#: lib/option.tcl:134
-msgid "Global (All Repositories)"
-msgstr "Global (Alle Repositories)"
-
-#: lib/option.tcl:140
-msgid "User Name"
-msgstr "Benutzername"
-
-#: lib/option.tcl:141
-msgid "Email Address"
-msgstr "E-Mail-Adresse"
-
-#: lib/option.tcl:143
-msgid "Summarize Merge Commits"
-msgstr "Zusammenführungs-Commits zusammenfassen"
-
-#: lib/option.tcl:144
-msgid "Merge Verbosity"
-msgstr "Ausführlichkeit der Zusammenführen-Meldungen"
-
-#: lib/option.tcl:145
-msgid "Show Diffstat After Merge"
-msgstr "Vergleichsstatistik nach Zusammenführen anzeigen"
-
-#: lib/option.tcl:146
-msgid "Use Merge Tool"
-msgstr "Zusammenführungswerkzeug"
-
-#: lib/option.tcl:148
-msgid "Trust File Modification Timestamps"
-msgstr "Auf Dateiänderungsdatum verlassen"
-
-#: lib/option.tcl:149
-msgid "Prune Tracking Branches During Fetch"
-msgstr "Veraltete Trackingbranches entfernen während Anforderung"
-
-#: lib/option.tcl:150
-msgid "Match Tracking Branches"
-msgstr "Neue Branches automatisch als Trackingbranch"
-
-#: lib/option.tcl:151
-msgid "Use Textconv For Diffs and Blames"
-msgstr "Benutze »textconv« für Vergleich und Annotieren"
-
-#: lib/option.tcl:152
-msgid "Blame Copy Only On Changed Files"
-msgstr "Kopie-Annotieren nur bei geänderten Dateien"
-
-#: lib/option.tcl:153
-msgid "Maximum Length of Recent Repositories List"
-msgstr "Anzahl Einträge in »Letzte Repositories«"
-
-#: lib/option.tcl:154
-msgid "Minimum Letters To Blame Copy On"
-msgstr "Mindestzahl Zeichen für Kopie-Annotieren"
-
-#: lib/option.tcl:155
-msgid "Blame History Context Radius (days)"
-msgstr "Anzahl Tage für Annotieren-Historien-Kontext"
-
-#: lib/option.tcl:156
-msgid "Number of Diff Context Lines"
-msgstr "Anzahl der Kontextzeilen beim Vergleich"
-
-#: lib/option.tcl:157
-msgid "Additional Diff Parameters"
-msgstr "Zusätzliche Vergleich-/diff-Parameter"
-
-#: lib/option.tcl:158
-msgid "Commit Message Text Width"
-msgstr "Textbreite der Commit-Beschreibung"
-
-#: lib/option.tcl:159
-msgid "New Branch Name Template"
-msgstr "Namensvorlage für neue Branches"
-
-#: lib/option.tcl:160
-msgid "Default File Contents Encoding"
-msgstr "Voreingestellte Zeichenkodierung"
-
-#: lib/option.tcl:161
-msgid "Warn before committing to a detached head"
-msgstr "Warnen vor Committen auf losgelöste Branchspitze"
-
-#: lib/option.tcl:162
-msgid "Staging of untracked files"
-msgstr "Unversionierte Dateien bereitstellen"
-
-#: lib/option.tcl:163
-msgid "Show untracked files"
-msgstr "Unversionierte Dateien anzeigen"
-
-#: lib/option.tcl:164
-msgid "Tab spacing"
-msgstr "Tabulator-Breite"
-
-#: lib/option.tcl:182 lib/option.tcl:197 lib/option.tcl:220 lib/option.tcl:282
-#: lib/database.tcl:57
-#, tcl-format
-msgid "%s:"
-msgstr "%s:"
-
-#: lib/option.tcl:210
-msgid "Change"
-msgstr "Ändern"
-
-#: lib/option.tcl:254
-msgid "Spelling Dictionary:"
-msgstr "Wörterbuch Rechtschreibprüfung:"
-
-#: lib/option.tcl:284
-msgid "Change Font"
-msgstr "Schriftart ändern"
-
-#: lib/option.tcl:288
-#, tcl-format
-msgid "Choose %s"
-msgstr "%s wählen"
-
-#: lib/option.tcl:294
-msgid "pt."
-msgstr "pt."
-
-#: lib/option.tcl:308
-msgid "Preferences"
-msgstr "Einstellungen"
-
-#: lib/option.tcl:345
-msgid "Failed to completely save options:"
-msgstr "Optionen konnten nicht gespeichert werden:"
-
-#: lib/encoding.tcl:443
-msgid "Default"
-msgstr "Voreinstellung"
-
-#: lib/encoding.tcl:448
-#, tcl-format
-msgid "System (%s)"
-msgstr "Systemweit (%s)"
-
-#: lib/encoding.tcl:459 lib/encoding.tcl:465
-msgid "Other"
-msgstr "Andere"
-
-#: lib/tools.tcl:76
-#, tcl-format
-msgid "Running %s requires a selected file."
-msgstr "Um »%s« zu starten, muss eine Datei ausgewählt sein."
-
-#: lib/tools.tcl:92
-#, tcl-format
-msgid "Are you sure you want to run %1$s on file \"%2$s\"?"
-msgstr "Wollen Sie %1$s wirklich auf Datei »%2$s« starten?"
-
-#: lib/tools.tcl:96
-#, tcl-format
-msgid "Are you sure you want to run %s?"
-msgstr "Wollen Sie %s wirklich starten?"
-
-#: lib/tools.tcl:118
-#, tcl-format
-msgid "Tool: %s"
-msgstr "Werkzeug: %s"
-
-#: lib/tools.tcl:119
-#, tcl-format
-msgid "Running: %s"
-msgstr "Starten: %s"
-
-#: lib/tools.tcl:158
-#, tcl-format
-msgid "Tool completed successfully: %s"
-msgstr "Werkzeug erfolgreich abgeschlossen: %s"
-
-#: lib/tools.tcl:160
-#, tcl-format
-msgid "Tool failed: %s"
-msgstr "Werkzeug fehlgeschlagen: %s"
-
-#: lib/mergetool.tcl:8
-msgid "Force resolution to the base version?"
-msgstr "Konflikt durch Basisversion ersetzen?"
-
-#: lib/mergetool.tcl:9
-msgid "Force resolution to this branch?"
-msgstr "Konflikt durch diesen Branch ersetzen?"
-
-#: lib/mergetool.tcl:10
-msgid "Force resolution to the other branch?"
-msgstr "Konflikt durch anderen Branch ersetzen?"
-
-#: lib/mergetool.tcl:14
-#, tcl-format
-msgid ""
-"Note that the diff shows only conflicting changes.\n"
-"\n"
-"%s will be overwritten.\n"
-"\n"
-"This operation can be undone only by restarting the merge."
-msgstr ""
-"Hinweis: Der Vergleich zeigt nur konfliktverursachende Änderungen an.\n"
-"\n"
-"»%s« wird überschrieben.\n"
-"\n"
-"Diese Operation kann nur rückgängig gemacht werden, wenn die\n"
-"Zusammenführung erneut gestartet wird."
-
-#: lib/mergetool.tcl:45
-#, tcl-format
-msgid "File %s seems to have unresolved conflicts, still stage?"
-msgstr "Datei »%s« hat nicht aufgelöste Konflikte. Trotzdem bereitstellen?"
-
-#: lib/mergetool.tcl:60
-#, tcl-format
-msgid "Adding resolution for %s"
-msgstr "Auflösung hinzugefügt für %s"
-
-#: lib/mergetool.tcl:141
-msgid "Cannot resolve deletion or link conflicts using a tool"
-msgstr ""
-"Konflikte durch gelöschte Dateien oder symbolische Links können nicht durch "
-"das Zusamenführungswerkzeug gelöst werden."
-
-#: lib/mergetool.tcl:146
-msgid "Conflict file does not exist"
-msgstr "Konflikt-Datei existiert nicht"
-
-#: lib/mergetool.tcl:246
-#, tcl-format
-msgid "Not a GUI merge tool: '%s'"
-msgstr "Kein GUI Zusammenführungswerkzeug: »%s«"
-
-#: lib/mergetool.tcl:275
-#, tcl-format
-msgid "Unsupported merge tool '%s'"
-msgstr "Unbekanntes Zusammenführungswerkzeug: »%s«"
-
-#: lib/mergetool.tcl:310
-msgid "Merge tool is already running, terminate it?"
-msgstr "Zusammenführungswerkzeug läuft bereits. Soll es abgebrochen werden?"
-
-#: lib/mergetool.tcl:330
-#, tcl-format
-msgid ""
-"Error retrieving versions:\n"
-"%s"
-msgstr ""
-"Fehler beim Abrufen der Dateiversionen:\n"
-"%s"
-
-#: lib/mergetool.tcl:350
-#, tcl-format
-msgid ""
-"Could not start the merge tool:\n"
-"\n"
-"%s"
-msgstr ""
-"Zusammenführungswerkzeug konnte nicht gestartet werden:\n"
-"\n"
-"%s"
-
-#: lib/mergetool.tcl:354
-msgid "Running merge tool..."
-msgstr "Zusammenführungswerkzeug starten..."
-
-#: lib/mergetool.tcl:382 lib/mergetool.tcl:390
-msgid "Merge tool failed."
-msgstr "Zusammenführungswerkzeug fehlgeschlagen."
-
-#: lib/tools_dlg.tcl:22
-#, tcl-format
-msgid "%s (%s): Add Tool"
-msgstr "%s (%s): Werkzeug hinzufügen"
-
-#: lib/tools_dlg.tcl:28
-msgid "Add New Tool Command"
-msgstr "Neues Kommando für Werkzeug hinzufügen"
-
-#: lib/tools_dlg.tcl:34
-msgid "Add globally"
-msgstr "Global hinzufügen"
-
-#: lib/tools_dlg.tcl:46
-msgid "Tool Details"
-msgstr "Einzelheiten des Werkzeugs"
-
-#: lib/tools_dlg.tcl:49
-msgid "Use '/' separators to create a submenu tree:"
-msgstr "Benutzen Sie einen Schrägstrich »/«, um Untermenüs zu erstellen:"
-
-#: lib/tools_dlg.tcl:60
-msgid "Command:"
-msgstr "Kommando:"
-
-#: lib/tools_dlg.tcl:71
-msgid "Show a dialog before running"
-msgstr "Bestätigungsfrage vor Starten anzeigen"
-
-#: lib/tools_dlg.tcl:77
-msgid "Ask the user to select a revision (sets $REVISION)"
-msgstr "Benutzer nach Version fragen (setzt $REVISION)"
-
-#: lib/tools_dlg.tcl:82
-msgid "Ask the user for additional arguments (sets $ARGS)"
-msgstr "Benutzer nach zusätzlichen Argumenten fragen (setzt $ARGS)"
-
-#: lib/tools_dlg.tcl:89
-msgid "Don't show the command output window"
-msgstr "Kein Ausgabefenster zeigen"
-
-#: lib/tools_dlg.tcl:94
-msgid "Run only if a diff is selected ($FILENAME not empty)"
-msgstr "Nur starten, wenn ein Vergleich gewählt ist ($FILENAME ist nicht leer)"
-
-#: lib/tools_dlg.tcl:118
-msgid "Please supply a name for the tool."
-msgstr "Bitte geben Sie einen Werkzeugnamen an."
-
-#: lib/tools_dlg.tcl:126
-#, tcl-format
-msgid "Tool '%s' already exists."
-msgstr "Werkzeug »%s« existiert bereits."
-
-#: lib/tools_dlg.tcl:148
-#, tcl-format
-msgid ""
-"Could not add tool:\n"
-"%s"
-msgstr ""
-"Werkzeug konnte nicht hinzugefügt werden:\n"
-"\n"
-"%s"
-
-#: lib/tools_dlg.tcl:187
-#, tcl-format
-msgid "%s (%s): Remove Tool"
-msgstr "%s (%s): Werkzeug entfernen"
-
-#: lib/tools_dlg.tcl:193
-msgid "Remove Tool Commands"
-msgstr "Werkzeugkommandos entfernen"
-
-#: lib/tools_dlg.tcl:198
-msgid "Remove"
-msgstr "Entfernen"
-
-#: lib/tools_dlg.tcl:231
-msgid "(Blue denotes repository-local tools)"
-msgstr "(Werkzeuge für lokales Repository werden in Blau angezeigt)"
-
-#: 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 "Kommando aufrufen: %s"
-
-#: lib/tools_dlg.tcl:306
-msgid "Arguments"
-msgstr "Argumente"
-
-#: lib/tools_dlg.tcl:341
-msgid "OK"
-msgstr "Ok"
-
-#: lib/search.tcl:48
-msgid "Find:"
-msgstr "Suchen:"
-
-#: lib/search.tcl:50
-msgid "Next"
-msgstr "Nächster"
-
-#: lib/search.tcl:51
-msgid "Prev"
-msgstr "Voriger"
-
-#: lib/search.tcl:52
-msgid "RegExp"
-msgstr "RegAusdruck"
-
-#: lib/search.tcl:54
-msgid "Case"
-msgstr "Groß/klein"
-
-#: lib/shortcut.tcl:8 lib/shortcut.tcl:43 lib/shortcut.tcl:75
-#, tcl-format
-msgid "%s (%s): Create Desktop Icon"
-msgstr "%s (%s): Desktop-Icon erstellen"
-
-#: lib/shortcut.tcl:24 lib/shortcut.tcl:65
-msgid "Cannot write shortcut:"
-msgstr "Fehler beim Schreiben der Verknüpfung:"
-
-#: lib/shortcut.tcl:140
-msgid "Cannot write icon:"
-msgstr "Fehler beim Erstellen des Icons:"
-
-#: lib/remote_branch_delete.tcl:29
-#, tcl-format
-msgid "%s (%s): Delete Branch Remotely"
-msgstr "%s (%s): Branch in externem Repository löschen"
-
-#: lib/remote_branch_delete.tcl:34
-msgid "Delete Branch Remotely"
-msgstr "Branch in externem Repository löschen"
-
-#: lib/remote_branch_delete.tcl:48
-msgid "From Repository"
-msgstr "In Repository"
-
-#: lib/remote_branch_delete.tcl:88
-msgid "Branches"
-msgstr "Branches"
-
-#: lib/remote_branch_delete.tcl:110
-msgid "Delete Only If"
-msgstr "Nur löschen, wenn"
-
-#: lib/remote_branch_delete.tcl:112
-msgid "Merged Into:"
-msgstr "Zusammengeführt mit:"
-
-#: lib/remote_branch_delete.tcl:120 lib/branch_delete.tcl:53
-msgid "Always (Do not perform merge checks)"
-msgstr "Immer (Keine Zusammenführungsprüfung)"
-
-#: lib/remote_branch_delete.tcl:153
-msgid "A branch is required for 'Merged Into'."
-msgstr "Für »Zusammenführen mit« muss ein Branch angegeben werden."
-
-#: lib/remote_branch_delete.tcl:185
-#, tcl-format
-msgid ""
-"The following branches are not completely merged into %s:\n"
-"\n"
-" - %s"
-msgstr ""
-"Folgende Branches sind noch nicht mit »%s« zusammengeführt:\n"
-"\n"
-" - %s"
-
-#: lib/remote_branch_delete.tcl:190
-#, tcl-format
-msgid ""
-"One or more of the merge tests failed because you have not fetched the "
-"necessary commits.  Try fetching from %s first."
-msgstr ""
-"Ein oder mehrere Zusammenführungen sind fehlgeschlagen, da Sie nicht die "
-"notwendigen Commits vorher angefordert haben.  Sie sollten versuchen, zuerst "
-"von »%s« anzufordern."
-
-#: lib/remote_branch_delete.tcl:208
-msgid "Please select one or more branches to delete."
-msgstr "Bitte wählen Sie mindestens einen Branch, der gelöscht werden soll."
-
-#: lib/remote_branch_delete.tcl:218 lib/branch_delete.tcl:115
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-"Das Wiederherstellen von gelöschten Branches ist nur mit größerem Aufwand "
-"möglich.\n"
-"\n"
-"Sollen die ausgewählten Branches gelöscht werden?"
-
-#: lib/remote_branch_delete.tcl:227
-#, tcl-format
-msgid "Deleting branches from %s"
-msgstr "Branches auf »%s« werden gelöscht"
-
-#: lib/remote_branch_delete.tcl:300
-msgid "No repository selected."
-msgstr "Kein Repository ausgewählt."
-
-#: lib/remote_branch_delete.tcl:305
-#, tcl-format
-msgid "Scanning %s..."
-msgstr "»%s« laden..."
-
-#: lib/choose_repository.tcl:45
+#: lib/choose_repository.tcl:28
 msgid "Git Gui"
 msgstr "Git Gui"
 
-#: lib/choose_repository.tcl:104 lib/choose_repository.tcl:427
+#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
 msgid "Create New Repository"
-msgstr "Repository neu erstellen"
+msgstr "Neues Projektarchiv"
 
-#: lib/choose_repository.tcl:110
+#: lib/choose_repository.tcl:93
 msgid "New..."
 msgstr "Neu..."
 
-#: lib/choose_repository.tcl:117 lib/choose_repository.tcl:511
+#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
 msgid "Clone Existing Repository"
-msgstr "Repository klonen"
+msgstr "Projektarchiv klonen"
 
-#: lib/choose_repository.tcl:128
+#: lib/choose_repository.tcl:106
 msgid "Clone..."
 msgstr "Klonen..."
 
-#: lib/choose_repository.tcl:135 lib/choose_repository.tcl:1105
+#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
 msgid "Open Existing Repository"
-msgstr "Repository öffnen"
+msgstr "Projektarchiv öffnen"
 
-#: lib/choose_repository.tcl:141
+#: lib/choose_repository.tcl:119
 msgid "Open..."
 msgstr "Öffnen..."
 
-#: lib/choose_repository.tcl:154
+#: lib/choose_repository.tcl:132
 msgid "Recent Repositories"
-msgstr "Letzte Repositories"
+msgstr "Zuletzt benutzte Projektarchive"
 
-#: lib/choose_repository.tcl:164
+#: lib/choose_repository.tcl:138
 msgid "Open Recent Repository:"
-msgstr "Zuletzt benutztes Repository öffnen:"
+msgstr "Zuletzt benutztes Projektarchiv öffnen:"
 
-#: lib/choose_repository.tcl:331 lib/choose_repository.tcl:338
-#: lib/choose_repository.tcl:345
+#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
+#: lib/choose_repository.tcl:320
 #, tcl-format
 msgid "Failed to create repository %s:"
-msgstr "Repository »%s« konnte nicht erstellt werden:"
+msgstr "Projektarchiv »%s« konnte nicht erstellt werden:"
 
-#: lib/choose_repository.tcl:422 lib/branch_create.tcl:33
-msgid "Create"
-msgstr "Erstellen"
-
-#: lib/choose_repository.tcl:432
+#: lib/choose_repository.tcl:391
 msgid "Directory:"
 msgstr "Verzeichnis:"
 
-#: lib/choose_repository.tcl:462 lib/choose_repository.tcl:588
-#: lib/choose_repository.tcl:1139
+#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
+#: lib/choose_repository.tcl:1052
 msgid "Git Repository"
-msgstr "Git Repository"
+msgstr "Git Projektarchiv"
 
-#: lib/choose_repository.tcl:487
+#: lib/choose_repository.tcl:448
 #, tcl-format
 msgid "Directory %s already exists."
 msgstr "Verzeichnis »%s« existiert bereits."
 
-#: lib/choose_repository.tcl:491
+#: lib/choose_repository.tcl:452
 #, tcl-format
 msgid "File %s already exists."
 msgstr "Datei »%s« existiert bereits."
 
-#: lib/choose_repository.tcl:506
+#: lib/choose_repository.tcl:466
 msgid "Clone"
 msgstr "Klonen"
 
-#: lib/choose_repository.tcl:519
+#: lib/choose_repository.tcl:479
 msgid "Source Location:"
-msgstr "Herkunfts-Adresse:"
+msgstr "Herkunft:"
 
-#: lib/choose_repository.tcl:528
+#: lib/choose_repository.tcl:490
 msgid "Target Directory:"
 msgstr "Zielverzeichnis:"
 
-#: lib/choose_repository.tcl:538
+#: lib/choose_repository.tcl:502
 msgid "Clone Type:"
 msgstr "Art des Klonens:"
 
-#: lib/choose_repository.tcl:543
+#: lib/choose_repository.tcl:508
 msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
 msgstr "Standard (schnell, teilweise redundant, Hardlinks)"
 
-#: lib/choose_repository.tcl:548
+#: lib/choose_repository.tcl:514
 msgid "Full Copy (Slower, Redundant Backup)"
 msgstr "Alles kopieren (langsamer, volle Redundanz)"
 
-#: lib/choose_repository.tcl:553
+#: lib/choose_repository.tcl:520
 msgid "Shared (Fastest, Not Recommended, No Backup)"
 msgstr "Verknüpft (schnell, nicht empfohlen, kein Backup)"
 
-#: lib/choose_repository.tcl:560
-msgid "Recursively clone submodules too"
-msgstr "Rekursiv weitere Submodule klonen"
-
-#: lib/choose_repository.tcl:594 lib/choose_repository.tcl:641
-#: lib/choose_repository.tcl:790 lib/choose_repository.tcl:864
-#: lib/choose_repository.tcl:1145 lib/choose_repository.tcl:1153
+#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
+#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
+#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
 #, tcl-format
 msgid "Not a Git repository: %s"
-msgstr "Kein Git-Repository: %s"
+msgstr "Kein Git-Projektarchiv in »%s« gefunden."
 
-#: lib/choose_repository.tcl:630
+#: lib/choose_repository.tcl:592
 msgid "Standard only available for local repository."
-msgstr "Standard ist nur für lokale Repositories verfügbar."
+msgstr "Standard ist nur für lokale Projektarchive verfügbar."
 
-#: lib/choose_repository.tcl:634
+#: lib/choose_repository.tcl:596
 msgid "Shared only available for local repository."
-msgstr "Verknüpft ist nur für lokale Repositories verfügbar."
+msgstr "Verknüpft ist nur für lokale Projektarchive verfügbar."
 
-#: lib/choose_repository.tcl:655
+#: lib/choose_repository.tcl:617
 #, tcl-format
 msgid "Location %s already exists."
-msgstr "Adresse »%s« existiert bereits."
+msgstr "Projektarchiv »%s« existiert bereits."
 
-#: lib/choose_repository.tcl:666
+#: lib/choose_repository.tcl:628
 msgid "Failed to configure origin"
 msgstr "Der Ursprungsort konnte nicht eingerichtet werden"
 
-#: lib/choose_repository.tcl:678
+#: lib/choose_repository.tcl:640
 msgid "Counting objects"
 msgstr "Objekte werden gezählt"
 
-#: lib/choose_repository.tcl:679
+#: lib/choose_repository.tcl:641
 msgid "buckets"
 msgstr "Buckets"
 
-#: lib/choose_repository.tcl:703
+#: lib/choose_repository.tcl:665
 #, tcl-format
 msgid "Unable to copy objects/info/alternates: %s"
 msgstr "Kopien von Objekten/Info/Alternates konnten nicht erstellt werden: %s"
 
-#: lib/choose_repository.tcl:740
+#: lib/choose_repository.tcl:701
 #, tcl-format
 msgid "Nothing to clone from %s."
 msgstr "Von »%s« konnte nichts geklont werden."
 
-#: lib/choose_repository.tcl:742 lib/choose_repository.tcl:962
-#: lib/choose_repository.tcl:974
+#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
+#: lib/choose_repository.tcl:929
 msgid "The 'master' branch has not been initialized."
-msgstr "Der »master«-Branch wurde noch nicht initialisiert."
+msgstr "Der »master«-Zweig wurde noch nicht initialisiert."
 
-#: lib/choose_repository.tcl:755
+#: lib/choose_repository.tcl:716
 msgid "Hardlinks are unavailable.  Falling back to copying."
 msgstr "Hardlinks nicht verfügbar. Stattdessen wird kopiert."
 
-#: lib/choose_repository.tcl:769
+#: lib/choose_repository.tcl:728
 #, tcl-format
 msgid "Cloning from %s"
 msgstr "Kopieren von »%s«"
 
-#: lib/choose_repository.tcl:800
+#: lib/choose_repository.tcl:759
 msgid "Copying objects"
 msgstr "Objektdatenbank kopieren"
 
-#: lib/choose_repository.tcl:801
+#: lib/choose_repository.tcl:760
 msgid "KiB"
 msgstr "KB"
 
-#: lib/choose_repository.tcl:825
+#: lib/choose_repository.tcl:784
 #, tcl-format
 msgid "Unable to copy object: %s"
 msgstr "Objekt kann nicht kopiert werden: %s"
 
-#: lib/choose_repository.tcl:837
+#: lib/choose_repository.tcl:794
 msgid "Linking objects"
 msgstr "Objekte verlinken"
 
-#: lib/choose_repository.tcl:838
+#: lib/choose_repository.tcl:795
 msgid "objects"
 msgstr "Objekte"
 
-#: lib/choose_repository.tcl:846
+#: lib/choose_repository.tcl:803
 #, tcl-format
 msgid "Unable to hardlink object: %s"
 msgstr "Für Objekt konnte kein Hardlink erstellt werden: %s"
 
-#: lib/choose_repository.tcl:903
+#: lib/choose_repository.tcl:858
 msgid "Cannot fetch branches and objects.  See console output for details."
 msgstr ""
-"Branches und Objekte konnten nicht angefordert werden.  Kontrollieren Sie "
-"die Ausgaben auf der Konsole für weitere Angaben."
+"Zweige und Objekte konnten nicht angefordert werden.  Kontrollieren Sie die "
+"Ausgaben auf der Konsole für weitere Angaben."
 
-#: lib/choose_repository.tcl:914
+#: lib/choose_repository.tcl:869
 msgid "Cannot fetch tags.  See console output for details."
 msgstr ""
-"Tags konnten nicht angefordert werden.  Kontrollieren Sie die Ausgaben auf "
-"der Konsole für weitere Angaben."
+"Markierungen konnten nicht angefordert werden.  Kontrollieren Sie die "
+"Ausgaben auf der Konsole für weitere Angaben."
 
-#: lib/choose_repository.tcl:938
+#: lib/choose_repository.tcl:893
 msgid "Cannot determine HEAD.  See console output for details."
 msgstr ""
-"Die Branchspitze (HEAD) konnte nicht gefunden werden.  Kontrollieren Sie die "
+"Die Zweigspitze (HEAD) konnte nicht gefunden werden.  Kontrollieren Sie die "
 "Ausgaben auf der Konsole für weitere Angaben."
 
-#: lib/choose_repository.tcl:947
+#: lib/choose_repository.tcl:902
 #, tcl-format
 msgid "Unable to cleanup %s"
 msgstr "Verzeichnis »%s« kann nicht aufgeräumt werden."
 
-#: lib/choose_repository.tcl:953
+#: lib/choose_repository.tcl:908
 msgid "Clone failed."
 msgstr "Klonen fehlgeschlagen."
 
-#: lib/choose_repository.tcl:960
+#: lib/choose_repository.tcl:915
 msgid "No default branch obtained."
-msgstr "Kein voreingestellter Branch gefunden."
+msgstr "Kein voreingestellter Zweig gefunden."
 
-#: lib/choose_repository.tcl:971
+#: lib/choose_repository.tcl:926
 #, tcl-format
 msgid "Cannot resolve %s as a commit."
-msgstr "»%s« wurde nicht als Commit gefunden."
+msgstr "»%s« wurde nicht als Version gefunden."
 
-#: lib/choose_repository.tcl:998
+#: lib/choose_repository.tcl:938
 msgid "Creating working directory"
 msgstr "Arbeitskopie erstellen"
 
-#: lib/choose_repository.tcl:1028
+#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
+#: lib/index.tcl:198
+msgid "files"
+msgstr "Dateien"
+
+#: lib/choose_repository.tcl:968
 msgid "Initial file checkout failed."
 msgstr "Erstellen der Arbeitskopie fehlgeschlagen."
 
-#: lib/choose_repository.tcl:1072
-msgid "Cloning submodules"
-msgstr "Klone Submodul"
-
-#: lib/choose_repository.tcl:1087
-msgid "Cannot clone submodules."
-msgstr "Submodul konnte nicht geklont werden."
+#: lib/choose_repository.tcl:1011
+msgid "Open"
+msgstr "Öffnen"
 
-#: lib/choose_repository.tcl:1110
+#: lib/choose_repository.tcl:1021
 msgid "Repository:"
-msgstr "Repository:"
+msgstr "Projektarchiv:"
 
-#: lib/choose_repository.tcl:1159
+#: lib/choose_repository.tcl:1072
 #, tcl-format
 msgid "Failed to open repository %s:"
-msgstr "Repository »%s« konnte nicht geöffnet werden."
-
-#: lib/about.tcl:26
-msgid "git-gui - a graphical user interface for Git."
-msgstr "git-gui - eine grafische Oberfläche für Git."
-
-#: lib/blame.tcl:74
-#, tcl-format
-msgid "%s (%s): File Viewer"
-msgstr "%s (%s): Datei-Browser"
-
-#: lib/blame.tcl:80
-msgid "Commit:"
-msgstr "Commit:"
-
-#: lib/blame.tcl:282
-msgid "Copy Commit"
-msgstr "Commit kopieren"
-
-#: lib/blame.tcl:286
-msgid "Find Text..."
-msgstr "Text suchen..."
-
-#: lib/blame.tcl:290
-msgid "Goto Line..."
-msgstr "Gehe zu Zeile..."
-
-#: lib/blame.tcl:299
-msgid "Do Full Copy Detection"
-msgstr "Volle Kopie-Erkennung"
-
-#: lib/blame.tcl:303
-msgid "Show History Context"
-msgstr "Historien-Kontext anzeigen"
-
-#: lib/blame.tcl:306
-msgid "Blame Parent Commit"
-msgstr "Elterncommit annotieren"
-
-#: lib/blame.tcl:468
-#, tcl-format
-msgid "Reading %s..."
-msgstr "%s lesen..."
-
-#: lib/blame.tcl:596
-msgid "Loading copy/move tracking annotations..."
-msgstr "Annotierungen für Kopieren/Verschieben werden geladen..."
-
-#: lib/blame.tcl:613
-msgid "lines annotated"
-msgstr "Zeilen annotiert"
-
-#: lib/blame.tcl:815
-msgid "Loading original location annotations..."
-msgstr "Annotierungen für ursprünglichen Ort werden geladen..."
-
-#: lib/blame.tcl:818
-msgid "Annotation complete."
-msgstr "Annotierung vollständig."
-
-#: lib/blame.tcl:849
-msgid "Busy"
-msgstr "Verarbeitung läuft"
-
-#: lib/blame.tcl:850
-msgid "Annotation process is already running."
-msgstr "Annotierung läuft bereits."
-
-#: lib/blame.tcl:889
-msgid "Running thorough copy detection..."
-msgstr "Intensive Kopie-Erkennung läuft..."
-
-#: lib/blame.tcl:957
-msgid "Loading annotation..."
-msgstr "Annotierung laden..."
-
-#: lib/blame.tcl:1010
-msgid "Author:"
-msgstr "Autor:"
-
-#: lib/blame.tcl:1014
-msgid "Committer:"
-msgstr "Committer:"
-
-#: lib/blame.tcl:1019
-msgid "Original File:"
-msgstr "Ursprüngliche Datei:"
-
-#: lib/blame.tcl:1067
-msgid "Cannot find HEAD commit:"
-msgstr "Branchspitze (»HEAD commit«) kann nicht gefunden werden:"
-
-#: lib/blame.tcl:1122
-msgid "Cannot find parent commit:"
-msgstr "Elterncommit kann nicht gefunden werden:"
-
-#: lib/blame.tcl:1137
-msgid "Unable to display parent"
-msgstr "Elterncommit kann nicht angezeigt werden"
-
-#: lib/blame.tcl:1138 lib/diff.tcl:345
-msgid "Error loading diff:"
-msgstr "Fehler beim Laden des Vergleichs:"
-
-#: lib/blame.tcl:1279
-msgid "Originally By:"
-msgstr "Ursprünglich von:"
-
-#: lib/blame.tcl:1285
-msgid "In File:"
-msgstr "In Datei:"
-
-#: lib/blame.tcl:1290
-msgid "Copied Or Moved Here By:"
-msgstr "Kopiert oder verschoben durch:"
-
-#: lib/diff.tcl:77
-#, tcl-format
-msgid ""
-"No differences detected.\n"
-"\n"
-"%s has no changes.\n"
-"\n"
-"The modification date of this file was updated by another application, but "
-"the content within the file was not changed.\n"
-"\n"
-"A rescan will be automatically started to find other files which may have "
-"the same state."
-msgstr ""
-"Keine Änderungen feststellbar.\n"
-"\n"
-"»%s« enthält keine Änderungen. Zwar wurde das Änderungsdatum dieser Datei "
-"von einem anderen Programm modifiziert, aber der Inhalt der Datei ist "
-"unverändert.\n"
-"\n"
-"Das Arbeitsverzeichnis wird jetzt neu geladen, um diese Änderung bei allen "
-"Dateien zu prüfen."
-
-#: lib/diff.tcl:117
-#, tcl-format
-msgid "Loading diff of %s..."
-msgstr "Vergleich von »%s« laden..."
-
-#: lib/diff.tcl:143
-msgid ""
-"LOCAL: deleted\n"
-"REMOTE:\n"
-msgstr ""
-"LOKAL: gelöscht\n"
-"EXTERN:\n"
-
-#: lib/diff.tcl:148
-msgid ""
-"REMOTE: deleted\n"
-"LOCAL:\n"
-msgstr ""
-"EXTERN: gelöscht\n"
-"LOKAL:\n"
-
-#: lib/diff.tcl:155
-msgid "LOCAL:\n"
-msgstr "LOKAL:\n"
-
-#: lib/diff.tcl:158
-msgid "REMOTE:\n"
-msgstr "EXTERN:\n"
-
-#: lib/diff.tcl:220 lib/diff.tcl:344
-#, tcl-format
-msgid "Unable to display %s"
-msgstr "Datei »%s« kann nicht angezeigt werden"
-
-#: lib/diff.tcl:221
-msgid "Error loading file:"
-msgstr "Fehler beim Laden der Datei:"
-
-#: lib/diff.tcl:227
-msgid "Git Repository (subproject)"
-msgstr "Git-Repository (Subprojekt)"
-
-#: lib/diff.tcl:239
-msgid "* Binary file (not showing content)."
-msgstr "* Binärdatei (Inhalt wird nicht angezeigt)"
-
-#: lib/diff.tcl:244
-#, tcl-format
-msgid ""
-"* Untracked file is %d bytes.\n"
-"* Showing only first %d bytes.\n"
-msgstr ""
-"* Unversionierte Datei hat %d Bytes.\n"
-"* Nur erste %d Bytes werden angezeigt.\n"
-
-#: lib/diff.tcl:250
-#, tcl-format
-msgid ""
-"\n"
-"* Untracked file clipped here by %s.\n"
-"* To see the entire file, use an external editor.\n"
-msgstr ""
-"\n"
-"* Unversionierte Datei, hier abgeschnitten durch %s.\n"
-"* Zum Ansehen der vollständigen Datei externen Editor benutzen.\n"
-
-#: lib/diff.tcl:583
-msgid "Failed to unstage selected hunk."
-msgstr ""
-"Fehler beim Herausnehmen des gewählten Patch-Blocks aus der Bereitstellung."
-
-#: lib/diff.tcl:591
-msgid "Failed to revert selected hunk."
-msgstr "Fehler beim Zurücknehmen des gewählten Patch-Blocks."
-
-#: lib/diff.tcl:594
-msgid "Failed to stage selected hunk."
-msgstr "Fehler beim Bereitstellen des gewählten Patch-Blocks."
-
-#: lib/diff.tcl:687
-msgid "Failed to unstage selected line."
-msgstr "Fehler beim Herausnehmen der gewählten Zeile aus der Bereitstellung."
-
-#: lib/diff.tcl:696
-msgid "Failed to revert selected line."
-msgstr "Fehler beim Zurücknehmen der gewählten Zeile."
-
-#: lib/diff.tcl:700
-msgid "Failed to stage selected line."
-msgstr "Fehler beim Bereitstellen der gewählten Zeile."
-
-#: lib/diff.tcl:889
-msgid "Failed to undo last revert."
-msgstr "Fehler beim Rückgängigmachen des letzten Zurücknehmen-Commits"
-
-#: lib/sshkey.tcl:34
-msgid "No keys found."
-msgstr "Keine Schlüssel gefunden."
-
-#: lib/sshkey.tcl:37
-#, tcl-format
-msgid "Found a public key in: %s"
-msgstr "Öffentlicher Schlüssel gefunden in: %s"
-
-#: lib/sshkey.tcl:43
-msgid "Generate Key"
-msgstr "Schlüssel erzeugen"
+msgstr "Projektarchiv »%s« konnte nicht geöffnet werden."
 
-#: lib/sshkey.tcl:61
-msgid "Copy To Clipboard"
-msgstr "In Zwischenablage kopieren"
-
-#: lib/sshkey.tcl:75
-msgid "Your OpenSSH Public Key"
-msgstr "Ihr OpenSSH öffenlicher Schlüssel"
-
-#: lib/sshkey.tcl:83
-msgid "Generating..."
-msgstr "Erzeugen..."
-
-#: lib/sshkey.tcl:89
-#, tcl-format
-msgid ""
-"Could not start ssh-keygen:\n"
-"\n"
-"%s"
-msgstr ""
-"Konnte »ssh-keygen« nicht starten:\n"
-"\n"
-"%s"
-
-#: lib/sshkey.tcl:116
-msgid "Generation failed."
-msgstr "Schlüsselerzeugung fehlgeschlagen."
-
-#: lib/sshkey.tcl:123
-msgid "Generation succeeded, but no keys found."
-msgstr "Schlüsselerzeugung erfolgreich, aber keine Schlüssel gefunden."
-
-#: lib/sshkey.tcl:126
-#, tcl-format
-msgid "Your key is in: %s"
-msgstr "Ihr Schlüssel ist abgelegt in: %s"
-
-#: lib/branch_create.tcl:23
-#, tcl-format
-msgid "%s (%s): Create Branch"
-msgstr "%s (%s): Branch erstellen"
-
-#: lib/branch_create.tcl:28
-msgid "Create New Branch"
-msgstr "Neuen Branch erstellen"
-
-#: lib/branch_create.tcl:42
-msgid "Branch Name"
-msgstr "Branchname"
-
-#: lib/branch_create.tcl:57
-msgid "Match Tracking Branch Name"
-msgstr "Passend zu Trackingbranch-Name"
-
-#: lib/branch_create.tcl:66
-msgid "Starting Revision"
-msgstr "Anfangsversion"
-
-#: lib/branch_create.tcl:72
-msgid "Update Existing Branch:"
-msgstr "Existierenden Branch aktualisieren:"
-
-#: lib/branch_create.tcl:75
-msgid "No"
-msgstr "Nein"
-
-#: lib/branch_create.tcl:80
-msgid "Fast Forward Only"
-msgstr "Nur Vorspulen"
-
-#: lib/branch_create.tcl:97
-msgid "Checkout After Creation"
-msgstr "Branch auschecken nach Erstellen"
-
-#: lib/branch_create.tcl:132
-msgid "Please select a tracking branch."
-msgstr "Bitte wählen Sie einen Trackingbranch."
-
-#: lib/branch_create.tcl:141
-#, tcl-format
-msgid "Tracking branch %s is not a branch in the remote repository."
-msgstr "Trackingbranch »%s« ist kein Branch im externen Repository."
-
-#: lib/console.tcl:59
-msgid "Working... please wait..."
-msgstr "Verarbeitung. Bitte warten..."
-
-#: lib/console.tcl:186
-msgid "Success"
-msgstr "Erfolgreich"
-
-#: lib/console.tcl:200
-msgid "Error: Command Failed"
-msgstr "Fehler: Kommando fehlgeschlagen"
-
-#: lib/line.tcl:17
-msgid "Goto Line:"
-msgstr "Gehe zu Zeile:"
-
-#: lib/line.tcl:23
-msgid "Go"
-msgstr "Gehe"
-
-#: lib/choose_rev.tcl:52
+#: lib/choose_rev.tcl:53
 msgid "This Detached Checkout"
-msgstr "Losgelöste Arbeitskopie-Version"
+msgstr "Abgetrennte Arbeitskopie-Version"
 
 #: lib/choose_rev.tcl:60
 msgid "Revision Expression:"
-msgstr "Version Regex-Ausdruck:"
+msgstr "Version Regexp-Ausdruck:"
 
-#: lib/choose_rev.tcl:72
+#: lib/choose_rev.tcl:74
 msgid "Local Branch"
-msgstr "Lokaler Branch"
+msgstr "Lokaler Zweig"
 
-#: lib/choose_rev.tcl:77
+#: lib/choose_rev.tcl:79
 msgid "Tracking Branch"
-msgstr "Trackingbranch"
+msgstr "Übernahmezweig"
 
-#: lib/choose_rev.tcl:82 lib/choose_rev.tcl:544
+#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538
 msgid "Tag"
-msgstr "Tag"
+msgstr "Markierung"
 
-#: lib/choose_rev.tcl:321
+#: lib/choose_rev.tcl:317
 #, tcl-format
 msgid "Invalid revision: %s"
 msgstr "Ungültige Version: %s"
 
-#: lib/choose_rev.tcl:342
+#: lib/choose_rev.tcl:338
 msgid "No revision selected."
 msgstr "Keine Version ausgewählt."
 
-#: lib/choose_rev.tcl:350
+#: lib/choose_rev.tcl:346
 msgid "Revision expression is empty."
 msgstr "Versions-Ausdruck ist leer."
 
-#: lib/choose_rev.tcl:537
+#: lib/choose_rev.tcl:531
 msgid "Updated"
 msgstr "Aktualisiert"
 
-#: lib/choose_rev.tcl:565
+#: lib/choose_rev.tcl:559
 msgid "URL"
 msgstr "URL"
 
@@ -2409,10 +1337,10 @@ msgid ""
 "You are about to create the initial commit.  There is no commit before this "
 "to amend.\n"
 msgstr ""
-"Kein Commit zur Nachbesserung vorhanden.\n"
+"Keine Version zur Nachbesserung vorhanden.\n"
 "\n"
-"Sie sind dabei, den ersten Commit zu erstellen. Es gibt keinen existierenden "
-"Commit, den Sie nachbessern könnten.\n"
+"Sie sind dabei, die erste Version zu übertragen. Es gibt keine existierende "
+"Version, die Sie nachbessern könnten.\n"
 
 #: lib/commit.tcl:18
 msgid ""
@@ -2422,31 +1350,31 @@ msgid ""
 "completed.  You cannot amend the prior commit unless you first abort the "
 "current merge activity.\n"
 msgstr ""
-"Nachbesserung bei Zusammenführung nicht möglich.\n"
+"Nachbesserung währen Zusammenführung nicht möglich.\n"
 "\n"
-"Sie haben das Zusammenführen von Commits angefangen, aber noch nicht "
-"beendet. Sie können keinen vorigen Commit nachbessern, solange eine "
+"Sie haben das Zusammenführen von Versionen angefangen, aber noch nicht "
+"beendet. Sie können keine vorige Übertragung nachbessern, solange eine "
 "unfertige Zusammenführung existiert. Dazu müssen Sie die Zusammenführung "
 "beenden oder abbrechen.\n"
 
-#: lib/commit.tcl:56
+#: lib/commit.tcl:48
 msgid "Error loading commit data for amend:"
-msgstr "Fehler beim Laden der Commitdaten für Nachbessern:"
+msgstr "Fehler beim Laden der Versionsdaten für Nachbessern:"
 
-#: lib/commit.tcl:83
+#: lib/commit.tcl:75
 msgid "Unable to obtain your identity:"
 msgstr "Benutzername konnte nicht bestimmt werden:"
 
-#: lib/commit.tcl:88
+#: lib/commit.tcl:80
 msgid "Invalid GIT_COMMITTER_IDENT:"
 msgstr "Ungültiger Wert von GIT_COMMITTER_INDENT:"
 
-#: lib/commit.tcl:138
+#: lib/commit.tcl:129
 #, tcl-format
 msgid "warning: Tcl does not support encoding '%s'."
 msgstr "Warning: Tcl/Tk unterstützt die Zeichencodierung »%s« nicht."
 
-#: lib/commit.tcl:158
+#: lib/commit.tcl:149
 msgid ""
 "Last scanned state does not match repository state.\n"
 "\n"
@@ -2455,14 +1383,14 @@ msgid ""
 "\n"
 "The rescan will be automatically started now.\n"
 msgstr ""
-"Der letzte geladene Status stimmt nicht mehr mit dem Repository überein.\n"
+"Der letzte geladene Status stimmt nicht mehr mit dem Projektarchiv überein.\n"
 "\n"
-"Ein anderes Git-Programm hat das Repository seit dem letzten Laden "
-"geändert.  Vor dem nächsten Commit muss neu geladen werden.\n"
+"Ein anderes Git-Programm hat das Projektarchiv seit dem letzten Laden "
+"geändert.  Vor dem Eintragen einer neuen Version muss neu geladen werden.\n"
 "\n"
 "Es wird gleich neu geladen.\n"
 
-#: lib/commit.tcl:182
+#: lib/commit.tcl:172
 #, tcl-format
 msgid ""
 "Unmerged files cannot be committed.\n"
@@ -2470,13 +1398,12 @@ msgid ""
 "File %s has merge conflicts.  You must resolve them and stage the file "
 "before committing.\n"
 msgstr ""
-"Nicht zusammengeführte Dateien können nicht committet werden.\n"
+"Nicht zusammengeführte Dateien können nicht eingetragen werden.\n"
 "\n"
 "Die Datei »%s« hat noch nicht aufgelöste Zusammenführungs-Konflikte. Sie "
-"müssen diese Konflikte auflösen und die Dateien in die Bereitstellung "
-"hinzufügen, bevor Sie committen können.\n"
+"müssen diese Konflikte auflösen, bevor Sie eintragen können.\n"
 
-#: lib/commit.tcl:190
+#: lib/commit.tcl:180
 #, tcl-format
 msgid ""
 "Unknown file state %s detected.\n"
@@ -2485,19 +1412,19 @@ msgid ""
 msgstr ""
 "Unbekannter Dateizustand »%s«.\n"
 "\n"
-"Datei »%s« kann nicht committet werden.\n"
+"Datei »%s« kann nicht eingetragen werden.\n"
 
-#: lib/commit.tcl:198
+#: lib/commit.tcl:188
 msgid ""
 "No changes to commit.\n"
 "\n"
 "You must stage at least 1 file before you can commit.\n"
 msgstr ""
-"Keine Änderungen vorhanden, die committet werden könnten.\n"
+"Keine Änderungen vorhanden, die eingetragen werden könnten.\n"
 "\n"
-"Sie müssen mindestens eine Datei bereitstellen, bevor Sie committen können.\n"
+"Sie müssen mindestens eine Datei bereitstellen, bevor Sie eintragen können.\n"
 
-#: lib/commit.tcl:213
+#: lib/commit.tcl:203
 msgid ""
 "Please supply a commit message.\n"
 "\n"
@@ -2517,58 +1444,42 @@ msgstr ""
 "\n"
 "- Rest: Eine ausführliche Beschreibung, warum diese Änderung hilfreich ist.\n"
 
-#: lib/commit.tcl:244
+#: lib/commit.tcl:234
 msgid "Calling pre-commit hook..."
-msgstr "Aufrufen des »pre-commit hook«..."
+msgstr "Aufrufen der Vor-Eintragen-Kontrolle (»pre-commit hook«)..."
 
-#: lib/commit.tcl:259
+#: lib/commit.tcl:249
 msgid "Commit declined by pre-commit hook."
-msgstr "Committen abgelehnt durch »pre-commit hook«."
+msgstr "Eintragen abgelehnt durch Vor-Eintragen-Kontrolle (»pre-commit hook«)."
 
-#: lib/commit.tcl:278
-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 "
-"changes and it can be difficult to retrieve them later from the reflog. You "
-"should probably cancel this commit and create a new branch to continue.\n"
-" \n"
-" Do you really want to proceed with your Commit?"
-msgstr ""
-"Sie sind dabei, einen Commit auf losgelöste Branchspitze (»commit to "
-"detached head«) zu erstellen. Das ist riskant, denn wenn Sie zu einem "
-"anderen Branch wechseln, würden Sie diese Änderungen verlieren und es ist "
-"nachträglich schwierig, diese aus dem Commit-Log (»reflog«) wiederzufinden. "
-"Es wird empfohlen, diesen Commit abzubrechen und zunächst einen neuen Branch "
-"zu erstellen.\n"
-"\n"
-" Wollen Sie den Commit trotzdem in dieser Form erstellen?"
-
-#: lib/commit.tcl:299
+#: lib/commit.tcl:272
 msgid "Calling commit-msg hook..."
-msgstr "Aufrufen des »commit-msg hook«..."
+msgstr "Aufrufen der Versionsbeschreibungs-Kontrolle (»commit-message hook«)..."
 
-#: lib/commit.tcl:314
+#: lib/commit.tcl:287
 msgid "Commit declined by commit-msg hook."
-msgstr "Committen abgelehnt durch »commit-msg hook«."
+msgstr ""
+"Eintragen abgelehnt durch Versionsbeschreibungs-Kontrolle (»commit-message "
+"hook«)."
 
-#: lib/commit.tcl:327
+#: lib/commit.tcl:300
 msgid "Committing changes..."
-msgstr "Änderungen committen..."
+msgstr "Änderungen eintragen..."
 
-#: lib/commit.tcl:344
+#: lib/commit.tcl:316
 msgid "write-tree failed:"
 msgstr "write-tree fehlgeschlagen:"
 
-#: lib/commit.tcl:345 lib/commit.tcl:395 lib/commit.tcl:422
+#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
 msgid "Commit failed."
-msgstr "Committen fehlgeschlagen."
+msgstr "Eintragen fehlgeschlagen."
 
-#: lib/commit.tcl:362
+#: lib/commit.tcl:334
 #, tcl-format
 msgid "Commit %s appears to be corrupt"
 msgstr "Version »%s« scheint beschädigt zu sein"
 
-#: lib/commit.tcl:367
+#: lib/commit.tcl:339
 msgid ""
 "No changes to commit.\n"
 "\n"
@@ -2576,104 +1487,70 @@ msgid ""
 "\n"
 "A rescan will be automatically started now.\n"
 msgstr ""
-"Keine Änderungen zum committen.\n"
+"Keine Änderungen einzutragen.\n"
 "\n"
-"Es gibt keine geänderte Datei in diesem Commit und es wurde auch nichts "
+"Es gibt keine geänderte Datei bei dieser Version und es wurde auch nichts "
 "zusammengeführt.\n"
 "\n"
 "Das Arbeitsverzeichnis wird daher jetzt neu geladen.\n"
 
-#: lib/commit.tcl:374
+#: lib/commit.tcl:346
 msgid "No changes to commit."
-msgstr "Keine Änderungen, die committet werden können."
+msgstr "Keine Änderungen, die eingetragen werden können."
 
-#: lib/commit.tcl:394
+#: lib/commit.tcl:360
 msgid "commit-tree failed:"
 msgstr "commit-tree fehlgeschlagen:"
 
-#: lib/commit.tcl:421
+#: lib/commit.tcl:381
 msgid "update-ref failed:"
 msgstr "update-ref fehlgeschlagen:"
 
-#: lib/commit.tcl:514
+#: lib/commit.tcl:469
 #, tcl-format
 msgid "Created commit %s: %s"
-msgstr "Commit %s erstellt: %s"
-
-#: lib/branch_delete.tcl:16
-#, tcl-format
-msgid "%s (%s): Delete Branch"
-msgstr "%s (%s): Branch löschen"
-
-#: lib/branch_delete.tcl:21
-msgid "Delete Local Branch"
-msgstr "Lokalen Branch löschen"
-
-#: lib/branch_delete.tcl:39
-msgid "Local Branches"
-msgstr "Lokale Branches"
-
-#: lib/branch_delete.tcl:51
-msgid "Delete Only If Merged Into"
-msgstr "Nur löschen, wenn zusammengeführt nach"
+msgstr "Version %s übertragen: %s"
 
-#: lib/branch_delete.tcl:103
-#, tcl-format
-msgid "The following branches are not completely merged into %s:"
-msgstr "Folgende Branches sind noch nicht mit »%s« zusammengeführt:"
-
-#: lib/branch_delete.tcl:131
-#, tcl-format
-msgid " - %s:"
-msgstr " - %s:"
+#: lib/console.tcl:59
+msgid "Working... please wait..."
+msgstr "Verarbeitung. Bitte warten..."
 
-#: lib/branch_delete.tcl:141
-#, tcl-format
-msgid ""
-"Failed to delete branches:\n"
-"%s"
-msgstr ""
-"Fehler beim Löschen der Branches:\n"
-"%s"
+#: lib/console.tcl:186
+msgid "Success"
+msgstr "Erfolgreich"
 
-#: lib/date.tcl:25
-#, tcl-format
-msgid "Invalid date from Git: %s"
-msgstr "Ungültiges Datum von Git: %s"
+#: lib/console.tcl:200
+msgid "Error: Command Failed"
+msgstr "Fehler: Kommando fehlgeschlagen"
 
-#: lib/database.tcl:42
+#: lib/database.tcl:43
 msgid "Number of loose objects"
 msgstr "Anzahl unverknüpfter Objekte"
 
-#: lib/database.tcl:43
+#: lib/database.tcl:44
 msgid "Disk space used by loose objects"
 msgstr "Festplattenplatz von unverknüpften Objekten"
 
-#: lib/database.tcl:44
+#: lib/database.tcl:45
 msgid "Number of packed objects"
 msgstr "Anzahl komprimierter Objekte"
 
-#: lib/database.tcl:45
+#: lib/database.tcl:46
 msgid "Number of packs"
 msgstr "Anzahl Komprimierungseinheiten"
 
-#: lib/database.tcl:46
+#: lib/database.tcl:47
 msgid "Disk space used by packed objects"
 msgstr "Festplattenplatz von komprimierten Objekten"
 
-#: lib/database.tcl:47
+#: lib/database.tcl:48
 msgid "Packed objects waiting for pruning"
 msgstr "Komprimierte Objekte, die zum Aufräumen vorgesehen sind"
 
-#: lib/database.tcl:48
+#: lib/database.tcl:49
 msgid "Garbage files"
 msgstr "Dateien im Mülleimer"
 
-#: lib/database.tcl:66
-#, tcl-format
-msgid "%s (%s): Database Statistics"
-msgstr "%s (%s): Datenbankstatistik"
-
 #: lib/database.tcl:72
 msgid "Compressing the object database"
 msgstr "Objektdatenbank komprimieren"
@@ -2692,37 +1569,214 @@ msgid ""
 "\n"
 "Compress the database now?"
 msgstr ""
-"Dieses Repository enthält ungefähr %i nicht verknüpfte Objekte.\n"
+"Dieses Projektarchiv enthält ungefähr %i nicht verknüpfte Objekte.\n"
 "\n"
-"Für eine optimale Performance wird empfohlen, die Datenbank des Repository "
-"zu komprimieren.\n"
+"Für eine optimale Performance wird empfohlen, die Datenbank des Projektarchivs zu komprimieren.\n"
 "\n"
 "Soll die Datenbank jetzt komprimiert werden?"
 
-#: lib/error.tcl:20
+#: lib/date.tcl:25
 #, tcl-format
-msgid "%s: error"
-msgstr "%s: Fehler"
+msgid "Invalid date from Git: %s"
+msgstr "Ungültiges Datum von Git: %s"
 
-#: lib/error.tcl:36
+#: lib/diff.tcl:64
 #, tcl-format
-msgid "%s: warning"
-msgstr "%s: Warnung"
+msgid ""
+"No differences detected.\n"
+"\n"
+"%s has no changes.\n"
+"\n"
+"The modification date of this file was updated by another application, but "
+"the content within the file was not changed.\n"
+"\n"
+"A rescan will be automatically started to find other files which may have "
+"the same state."
+msgstr ""
+"Keine Änderungen feststellbar.\n"
+"\n"
+"»%s« enthält keine Änderungen. Zwar wurde das Änderungsdatum dieser Datei von "
+"einem anderen Programm modifiziert, aber der Inhalt der Datei ist "
+"unverändert.\n"
+"\n"
+"Das Arbeitsverzeichnis wird jetzt neu geladen, um diese Änderung bei allen "
+"Dateien zu prüfen."
+
+#: lib/diff.tcl:104
+#, tcl-format
+msgid "Loading diff of %s..."
+msgstr "Vergleich von »%s« laden..."
+
+#: lib/diff.tcl:125
+msgid ""
+"LOCAL: deleted\n"
+"REMOTE:\n"
+msgstr ""
+"LOKAL: gelöscht\n"
+"ANDERES:\n"
+
+#: lib/diff.tcl:130
+msgid ""
+"REMOTE: deleted\n"
+"LOCAL:\n"
+msgstr ""
+"ANDERES: gelöscht\n"
+"LOKAL:\n"
 
-#: lib/error.tcl:80
+#: lib/diff.tcl:137
+msgid "LOCAL:\n"
+msgstr "LOKAL:\n"
+
+#: lib/diff.tcl:140
+msgid "REMOTE:\n"
+msgstr "ANDERES:\n"
+
+#: lib/diff.tcl:202 lib/diff.tcl:319
 #, tcl-format
-msgid "%s hook failed:"
-msgstr "%s hook fehlgeschlagen:"
+msgid "Unable to display %s"
+msgstr "Datei »%s« kann nicht angezeigt werden"
 
-#: lib/error.tcl:96
+#: lib/diff.tcl:203
+msgid "Error loading file:"
+msgstr "Fehler beim Laden der Datei:"
+
+#: lib/diff.tcl:210
+msgid "Git Repository (subproject)"
+msgstr "Git-Projektarchiv (Unterprojekt)"
+
+#: lib/diff.tcl:222
+msgid "* Binary file (not showing content)."
+msgstr "* Binärdatei (Inhalt wird nicht angezeigt)"
+
+#: lib/diff.tcl:227
+#, tcl-format
+msgid ""
+"* Untracked file is %d bytes.\n"
+"* Showing only first %d bytes.\n"
+msgstr ""
+"* Datei nicht unter Versionskontrolle, Dateigröße %d Bytes.\n"
+"* Nur erste %d Bytes werden angezeigt.\n"
+
+#: lib/diff.tcl:233
+#, tcl-format
+msgid ""
+"\n"
+"* Untracked file clipped here by %s.\n"
+"* To see the entire file, use an external editor.\n"
+msgstr ""
+"\n"
+"* Datei nicht unter Versionskontrolle, hier abgeschnitten durch %s.\n"
+"* Zum Ansehen der vollständigen Datei externen Editor benutzen.\n"
+
+#: lib/diff.tcl:482
+msgid "Failed to unstage selected hunk."
+msgstr ""
+"Fehler beim Herausnehmen des gewählten Kontexts aus der Bereitstellung."
+
+#: lib/diff.tcl:489
+msgid "Failed to stage selected hunk."
+msgstr "Fehler beim Bereitstellen des gewählten Kontexts."
+
+#: lib/diff.tcl:568
+msgid "Failed to unstage selected line."
+msgstr "Fehler beim Herausnehmen der gewählten Zeile aus der Bereitstellung."
+
+#: lib/diff.tcl:576
+msgid "Failed to stage selected line."
+msgstr "Fehler beim Bereitstellen der gewählten Zeile."
+
+#: lib/encoding.tcl:443
+msgid "Default"
+msgstr "Voreinstellung"
+
+#: lib/encoding.tcl:448
+#, tcl-format
+msgid "System (%s)"
+msgstr "Systemweit (%s)"
+
+#: lib/encoding.tcl:459 lib/encoding.tcl:465
+msgid "Other"
+msgstr "Andere"
+
+#: lib/error.tcl:20 lib/error.tcl:114
+msgid "error"
+msgstr "Fehler"
+
+#: lib/error.tcl:36
+msgid "warning"
+msgstr "Warnung"
+
+#: lib/error.tcl:94
 msgid "You must correct the above errors before committing."
 msgstr ""
-"Sie müssen die obigen Fehler zuerst beheben, bevor Sie committen können."
+"Sie müssen die obigen Fehler zuerst beheben, bevor Sie eintragen können."
+
+#: lib/index.tcl:6
+msgid "Unable to unlock the index."
+msgstr "Bereitstellung kann nicht wieder freigegeben werden."
+
+#: lib/index.tcl:15
+msgid "Index Error"
+msgstr "Fehler in Bereitstellung"
+
+#: lib/index.tcl:17
+msgid ""
+"Updating the Git index failed.  A rescan will be automatically started to "
+"resynchronize git-gui."
+msgstr ""
+"Das Aktualisieren der Git-Bereitstellung ist fehlgeschlagen. Eine allgemeine "
+"Git-Aktualisierung wird jetzt gestartet, um git-gui wieder mit git zu "
+"synchronisieren."
+
+#: lib/index.tcl:28
+msgid "Continue"
+msgstr "Fortsetzen"
 
-#: lib/error.tcl:116
+#: lib/index.tcl:31
+msgid "Unlock Index"
+msgstr "Bereitstellung freigeben"
+
+#: lib/index.tcl:289
+#, tcl-format
+msgid "Unstaging %s from commit"
+msgstr "Datei »%s« aus der Bereitstellung herausnehmen"
+
+#: lib/index.tcl:328
+msgid "Ready to commit."
+msgstr "Bereit zum Eintragen."
+
+#: lib/index.tcl:341
 #, tcl-format
-msgid "%s (%s): error"
-msgstr "%s (%s): Fehler"
+msgid "Adding %s"
+msgstr "»%s« hinzufügen..."
+
+#: lib/index.tcl:398
+#, tcl-format
+msgid "Revert changes in file %s?"
+msgstr "Änderungen in Datei »%s« verwerfen?"
+
+#: lib/index.tcl:400
+#, tcl-format
+msgid "Revert changes in these %i files?"
+msgstr "Änderungen in den gewählten %i Dateien verwerfen?"
+
+#: lib/index.tcl:408
+msgid "Any unstaged changes will be permanently lost by the revert."
+msgstr ""
+"Alle nicht bereitgestellten Änderungen werden beim Verwerfen verloren gehen."
+
+#: lib/index.tcl:411
+msgid "Do Nothing"
+msgstr "Nichts tun"
+
+#: lib/index.tcl:429
+msgid "Reverting selected files"
+msgstr "Änderungen in gewählten Dateien verwerfen"
+
+#: lib/index.tcl:433
+#, tcl-format
+msgid "Reverting %s"
+msgstr "Änderungen in %s verwerfen"
 
 #: lib/merge.tcl:13
 msgid ""
@@ -2732,7 +1786,7 @@ msgid ""
 msgstr ""
 "Zusammenführen kann nicht gleichzeitig mit Nachbessern durchgeführt werden.\n"
 "\n"
-"Sie müssen zuerst den Nachbesserungs-Commit abschließen, bevor Sie "
+"Sie müssen zuerst die Nachbesserungs-Version abschließen, bevor Sie "
 "zusammenführen können.\n"
 
 #: lib/merge.tcl:27
@@ -2744,9 +1798,9 @@ msgid ""
 "\n"
 "The rescan will be automatically started now.\n"
 msgstr ""
-"Der letzte geladene Status stimmt nicht mehr mit dem Repository überein.\n"
+"Der letzte geladene Status stimmt nicht mehr mit dem Projektarchiv überein.\n"
 "\n"
-"Ein anderes Git-Programm hat das Repository seit dem letzten Laden "
+"Ein anderes Git-Programm hat das Projektarchiv seit dem letzten Laden "
 "geändert.  Vor einem Zusammenführen muss neu geladen werden.\n"
 "\n"
 "Es wird gleich neu geladen.\n"
@@ -2763,11 +1817,10 @@ msgid ""
 msgstr ""
 "Zusammenführung mit Konflikten.\n"
 "\n"
-"Die Datei »%s« enthält Konflikte beim Zusammenführen.\n"
-"\n"
-"Sie müssen diese Konflikte per Hand auflösen. Anschließend müssen Sie die "
-"Datei wieder bereitstellen und committen, um die Zusammenführung "
-"abzuschließen. Erst danach kann eine neue Zusammenführung begonnen werden.\n"
+"Die Datei »%s« enthält Konflikte beim Zusammenführen. Sie müssen diese "
+"Konflikte per Hand auflösen. Anschließend müssen Sie die Datei wieder "
+"bereitstellen und eintragen, um die Zusammenführung abzuschließen. Erst "
+"danach kann eine neue Zusammenführung begonnen werden.\n"
 
 #: lib/merge.tcl:55
 #, tcl-format
@@ -2781,45 +1834,39 @@ msgid ""
 msgstr ""
 "Es liegen Änderungen vor.\n"
 "\n"
-"Die Datei »%s« wurde geändert.\n"
-"\n"
-"Sie sollten zuerst den bereitgestellten Commit abschließen, bevor Sie eine "
-"Zusammenführung beginnen.  Mit dieser Reihenfolge können Sie mögliche "
-"Konflikte beim Zusammenführen wesentlich einfacher beheben oder abbrechen.\n"
+"Die Datei »%s« wurde geändert.  Sie sollten zuerst die bereitgestellte "
+"Version abschließen, bevor Sie eine Zusammenführung beginnen.  Mit dieser "
+"Reihenfolge können Sie mögliche Konflikte beim Zusammenführen wesentlich "
+"einfacher beheben oder abbrechen.\n"
 
-#: lib/merge.tcl:108
+#: lib/merge.tcl:107
 #, tcl-format
 msgid "%s of %s"
 msgstr "%s von %s"
 
-#: lib/merge.tcl:126
+#: lib/merge.tcl:120
 #, tcl-format
 msgid "Merging %s and %s..."
 msgstr "Zusammenführen von %s und %s..."
 
-#: lib/merge.tcl:137
+#: lib/merge.tcl:131
 msgid "Merge completed successfully."
 msgstr "Zusammenführen erfolgreich abgeschlossen."
 
-#: lib/merge.tcl:139
+#: lib/merge.tcl:133
 msgid "Merge failed.  Conflict resolution is required."
 msgstr "Zusammenführen fehlgeschlagen. Konfliktauflösung ist notwendig."
 
-#: lib/merge.tcl:156
-#, tcl-format
-msgid "%s (%s): Merge"
-msgstr "%s (%s): Zusammenführen"
-
-#: lib/merge.tcl:164
+#: lib/merge.tcl:158
 #, tcl-format
 msgid "Merge Into %s"
 msgstr "Zusammenführen in »%s«"
 
-#: lib/merge.tcl:183
+#: lib/merge.tcl:177
 msgid "Revision To Merge"
 msgstr "Zusammenzuführende Version"
 
-#: lib/merge.tcl:218
+#: lib/merge.tcl:212
 msgid ""
 "Cannot abort while amending.\n"
 "\n"
@@ -2827,9 +1874,9 @@ msgid ""
 msgstr ""
 "Abbruch der Nachbesserung ist nicht möglich.\n"
 "\n"
-"Sie müssen die Nachbesserung diese Commits abschließen.\n"
+"Sie müssen die Nachbesserung der Version abschließen.\n"
 
-#: lib/merge.tcl:228
+#: lib/merge.tcl:222
 msgid ""
 "Abort merge?\n"
 "\n"
@@ -2839,11 +1886,12 @@ msgid ""
 msgstr ""
 "Zusammenführen abbrechen?\n"
 "\n"
-"Wenn Sie abbrechen, gehen alle noch nicht committeten Änderungen verloren.\n"
+"Wenn Sie abbrechen, gehen alle noch nicht eingetragenen Änderungen "
+"verloren.\n"
 "\n"
 "Zusammenführen jetzt abbrechen?"
 
-#: lib/merge.tcl:234
+#: lib/merge.tcl:228
 msgid ""
 "Reset changes?\n"
 "\n"
@@ -2851,24 +1899,694 @@ msgid ""
 "\n"
 "Continue with resetting the current changes?"
 msgstr ""
-"Änderungen verwerfen?\n"
+"Änderungen zurücksetzen?\n"
 "\n"
-"Alle noch nicht committeten Änderungen würden verloren gehen.\n"
+"Wenn Sie zurücksetzen, gehen alle noch nicht eingetragenen Änderungen "
+"verloren.\n"
 "\n"
-"Änderungen jetzt verwerfen?"
+"Änderungen jetzt zurücksetzen?"
 
-#: lib/merge.tcl:246
+#: lib/merge.tcl:239
 msgid "Aborting"
 msgstr "Abbruch"
 
-#: lib/merge.tcl:247
+#: lib/merge.tcl:239
 msgid "files reset"
 msgstr "Dateien zurückgesetzt"
 
-#: lib/merge.tcl:277
+#: lib/merge.tcl:267
 msgid "Abort failed."
 msgstr "Abbruch fehlgeschlagen."
 
-#: lib/merge.tcl:279
+#: lib/merge.tcl:269
 msgid "Abort completed.  Ready."
 msgstr "Abbruch durchgeführt. Bereit."
+
+#: lib/mergetool.tcl:8
+msgid "Force resolution to the base version?"
+msgstr "Konflikt durch Basisversion ersetzen?"
+
+#: lib/mergetool.tcl:9
+msgid "Force resolution to this branch?"
+msgstr "Konflikt durch diesen Zweig ersetzen?"
+
+#: lib/mergetool.tcl:10
+msgid "Force resolution to the other branch?"
+msgstr "Konflikt durch anderen Zweig ersetzen?"
+
+#: lib/mergetool.tcl:14
+#, tcl-format
+msgid ""
+"Note that the diff shows only conflicting changes.\n"
+"\n"
+"%s will be overwritten.\n"
+"\n"
+"This operation can be undone only by restarting the merge."
+msgstr ""
+"Hinweis: Der Vergleich zeigt nur konfliktverursachende Änderungen an.\n"
+"\n"
+"»%s« wird überschrieben.\n"
+"\n"
+"Diese Operation kann nur rückgängig gemacht werden, wenn die\n"
+"Zusammenführung erneut gestartet wird."
+
+#: lib/mergetool.tcl:45
+#, tcl-format
+msgid "File %s seems to have unresolved conflicts, still stage?"
+msgstr "Datei »%s« hat nicht aufgelöste Konflikte. Trotzdem bereitstellen?"
+
+#: lib/mergetool.tcl:60
+#, tcl-format
+msgid "Adding resolution for %s"
+msgstr "Auflösung hinzugefügt für %s"
+
+#: lib/mergetool.tcl:141
+msgid "Cannot resolve deletion or link conflicts using a tool"
+msgstr ""
+"Konflikte durch gelöschte Dateien oder symbolische Links können nicht durch "
+"das Zusamenführungswerkzeug gelöst werden."
+
+#: lib/mergetool.tcl:146
+msgid "Conflict file does not exist"
+msgstr "Konflikt-Datei existiert nicht"
+
+#: lib/mergetool.tcl:264
+#, tcl-format
+msgid "Not a GUI merge tool: '%s'"
+msgstr "Kein GUI Zusammenführungswerkzeug: »%s«"
+
+#: lib/mergetool.tcl:268
+#, tcl-format
+msgid "Unsupported merge tool '%s'"
+msgstr "Unbekanntes Zusammenführungswerkzeug: »%s«"
+
+#: lib/mergetool.tcl:303
+msgid "Merge tool is already running, terminate it?"
+msgstr "Zusammenführungswerkzeug läuft bereits. Soll es abgebrochen werden?"
+
+#: lib/mergetool.tcl:323
+#, tcl-format
+msgid ""
+"Error retrieving versions:\n"
+"%s"
+msgstr ""
+"Fehler beim Abrufen der Dateiversionen:\n"
+"%s"
+
+#: lib/mergetool.tcl:343
+#, tcl-format
+msgid ""
+"Could not start the merge tool:\n"
+"\n"
+"%s"
+msgstr ""
+"Zusammenführungswerkzeug konnte nicht gestartet werden:\n"
+"\n"
+"%s"
+
+#: lib/mergetool.tcl:347
+msgid "Running merge tool..."
+msgstr "Zusammenführungswerkzeug starten..."
+
+#: lib/mergetool.tcl:375 lib/mergetool.tcl:383
+msgid "Merge tool failed."
+msgstr "Zusammenführungswerkzeug fehlgeschlagen."
+
+#: lib/option.tcl:11
+#, tcl-format
+msgid "Invalid global encoding '%s'"
+msgstr "Ungültige globale Zeichenkodierung »%s«"
+
+#: lib/option.tcl:19
+#, tcl-format
+msgid "Invalid repo encoding '%s'"
+msgstr "Ungültige Archiv-Zeichenkodierung »%s«"
+
+#: lib/option.tcl:117
+msgid "Restore Defaults"
+msgstr "Voreinstellungen wiederherstellen"
+
+#: lib/option.tcl:121
+msgid "Save"
+msgstr "Speichern"
+
+#: lib/option.tcl:131
+#, tcl-format
+msgid "%s Repository"
+msgstr "Projektarchiv %s"
+
+#: lib/option.tcl:132
+msgid "Global (All Repositories)"
+msgstr "Global (Alle Projektarchive)"
+
+#: lib/option.tcl:138
+msgid "User Name"
+msgstr "Benutzername"
+
+#: lib/option.tcl:139
+msgid "Email Address"
+msgstr "E-Mail-Adresse"
+
+#: lib/option.tcl:141
+msgid "Summarize Merge Commits"
+msgstr "Zusammenführungs-Versionen zusammenfassen"
+
+#: lib/option.tcl:142
+msgid "Merge Verbosity"
+msgstr "Ausführlichkeit der Zusammenführen-Meldungen"
+
+#: lib/option.tcl:143
+msgid "Show Diffstat After Merge"
+msgstr "Vergleichsstatistik nach Zusammenführen anzeigen"
+
+#: lib/option.tcl:144
+msgid "Use Merge Tool"
+msgstr "Zusammenführungswerkzeug"
+
+#: lib/option.tcl:146
+msgid "Trust File Modification Timestamps"
+msgstr "Auf Dateiänderungsdatum verlassen"
+
+#: lib/option.tcl:147
+msgid "Prune Tracking Branches During Fetch"
+msgstr "Übernahmezweige aufräumen während Anforderung"
+
+#: lib/option.tcl:148
+msgid "Match Tracking Branches"
+msgstr "Passend zu Übernahmezweig"
+
+#: lib/option.tcl:149
+msgid "Blame Copy Only On Changed Files"
+msgstr "Kopie-Annotieren nur bei geänderten Dateien"
+
+#: lib/option.tcl:150
+msgid "Minimum Letters To Blame Copy On"
+msgstr "Mindestzahl Zeichen für Kopie-Annotieren"
+
+#: lib/option.tcl:151
+msgid "Blame History Context Radius (days)"
+msgstr "Anzahl Tage für Historien-Kontext"
+
+#: lib/option.tcl:152
+msgid "Number of Diff Context Lines"
+msgstr "Anzahl der Kontextzeilen beim Vergleich"
+
+#: lib/option.tcl:153
+msgid "Commit Message Text Width"
+msgstr "Textbreite der Versionsbeschreibung"
+
+#: lib/option.tcl:154
+msgid "New Branch Name Template"
+msgstr "Namensvorschlag für neue Zweige"
+
+#: lib/option.tcl:155
+msgid "Default File Contents Encoding"
+msgstr "Voreingestellte Zeichenkodierung"
+
+#: lib/option.tcl:203
+msgid "Change"
+msgstr "Ändern"
+
+#: lib/option.tcl:230
+msgid "Spelling Dictionary:"
+msgstr "Wörterbuch Rechtschreibprüfung:"
+
+#: lib/option.tcl:254
+msgid "Change Font"
+msgstr "Schriftart ändern"
+
+#: lib/option.tcl:258
+#, tcl-format
+msgid "Choose %s"
+msgstr "%s wählen"
+
+#: lib/option.tcl:264
+msgid "pt."
+msgstr "pt."
+
+#: lib/option.tcl:278
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#: lib/option.tcl:314
+msgid "Failed to completely save options:"
+msgstr "Optionen konnten nicht gespeichert werden:"
+
+#: lib/remote_add.tcl:19
+msgid "Add Remote"
+msgstr "Externes Archiv hinzufügen"
+
+#: lib/remote_add.tcl:24
+msgid "Add New Remote"
+msgstr "Neues externes Archiv hinzufügen"
+
+#: lib/remote_add.tcl:28 lib/tools_dlg.tcl:36
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: lib/remote_add.tcl:37
+msgid "Remote Details"
+msgstr "Einzelheiten des externen Archivs"
+
+#: lib/remote_add.tcl:50
+msgid "Location:"
+msgstr "Adresse:"
+
+#: lib/remote_add.tcl:62
+msgid "Further Action"
+msgstr "Weitere Aktion jetzt"
+
+#: lib/remote_add.tcl:65
+msgid "Fetch Immediately"
+msgstr "Gleich anfordern"
+
+#: lib/remote_add.tcl:71
+msgid "Initialize Remote Repository and Push"
+msgstr "Externes Archiv initialisieren und dahin versenden"
+
+#: lib/remote_add.tcl:77
+msgid "Do Nothing Else Now"
+msgstr "Nichts tun"
+
+#: lib/remote_add.tcl:101
+msgid "Please supply a remote name."
+msgstr "Bitte geben Sie einen Namen des externen Archivs an."
+
+#: lib/remote_add.tcl:114
+#, tcl-format
+msgid "'%s' is not an acceptable remote name."
+msgstr "»%s« ist kein zulässiger Name eines externen Archivs."
+
+#: lib/remote_add.tcl:125
+#, tcl-format
+msgid "Failed to add remote '%s' of location '%s'."
+msgstr "Fehler beim Hinzufügen des externen Archivs »%s« aus Herkunftsort »%s«."
+
+#: lib/remote_add.tcl:133 lib/transport.tcl:6
+#, tcl-format
+msgid "fetch %s"
+msgstr "»%s« anfordern"
+
+#: lib/remote_add.tcl:134
+#, tcl-format
+msgid "Fetching the %s"
+msgstr "»%s« anfordern"
+
+#: lib/remote_add.tcl:157
+#, tcl-format
+msgid "Do not know how to initialize repository at location '%s'."
+msgstr "Initialisieren eines externen Archivs an Adresse »%s« ist nicht möglich."
+
+#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:63
+#: lib/transport.tcl:81
+#, tcl-format
+msgid "push %s"
+msgstr "»%s« versenden..."
+
+#: lib/remote_add.tcl:164
+#, tcl-format
+msgid "Setting up the %s (at %s)"
+msgstr "Einrichten von »%s« an »%s«"
+
+#: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34
+msgid "Delete Branch Remotely"
+msgstr "Zweig in externem Archiv löschen"
+
+#: lib/remote_branch_delete.tcl:47
+msgid "From Repository"
+msgstr "In Projektarchiv"
+
+#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:134
+msgid "Remote:"
+msgstr "Externes Archiv:"
+
+#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:149
+msgid "Arbitrary Location:"
+msgstr "Adresse:"
+
+#: lib/remote_branch_delete.tcl:84
+msgid "Branches"
+msgstr "Zweige"
+
+#: lib/remote_branch_delete.tcl:109
+msgid "Delete Only If"
+msgstr "Nur löschen, wenn"
+
+#: lib/remote_branch_delete.tcl:111
+msgid "Merged Into:"
+msgstr "Zusammengeführt mit:"
+
+#: lib/remote_branch_delete.tcl:152
+msgid "A branch is required for 'Merged Into'."
+msgstr "Für »Zusammenführen mit« muss ein Zweig angegeben werden."
+
+#: lib/remote_branch_delete.tcl:184
+#, tcl-format
+msgid ""
+"The following branches are not completely merged into %s:\n"
+"\n"
+" - %s"
+msgstr ""
+"Folgende Zweige sind noch nicht mit »%s« zusammengeführt:\n"
+"\n"
+" - %s"
+
+#: lib/remote_branch_delete.tcl:189
+#, tcl-format
+msgid ""
+"One or more of the merge tests failed because you have not fetched the "
+"necessary commits.  Try fetching from %s first."
+msgstr ""
+"Ein oder mehrere Zusammenführungen sind fehlgeschlagen, da Sie nicht die "
+"notwendigen Versionen vorher angefordert haben.  Sie sollten versuchen, "
+"zuerst von »%s« anzufordern."
+
+#: lib/remote_branch_delete.tcl:207
+msgid "Please select one or more branches to delete."
+msgstr "Bitte wählen Sie mindestens einen Zweig, der gelöscht werden soll."
+
+#: lib/remote_branch_delete.tcl:226
+#, tcl-format
+msgid "Deleting branches from %s"
+msgstr "Zweige auf »%s« werden gelöscht"
+
+#: lib/remote_branch_delete.tcl:292
+msgid "No repository selected."
+msgstr "Kein Projektarchiv ausgewählt."
+
+#: lib/remote_branch_delete.tcl:297
+#, tcl-format
+msgid "Scanning %s..."
+msgstr "»%s« laden..."
+
+#: lib/remote.tcl:163
+msgid "Remove Remote"
+msgstr "Externes Archiv entfernen"
+
+#: lib/remote.tcl:168
+msgid "Prune from"
+msgstr "Aufräumen von"
+
+#: lib/remote.tcl:173
+msgid "Fetch from"
+msgstr "Anfordern von"
+
+#: lib/remote.tcl:215
+msgid "Push to"
+msgstr "Versenden nach"
+
+#: lib/search.tcl:21
+msgid "Find:"
+msgstr "Suchen:"
+
+#: lib/search.tcl:23
+msgid "Next"
+msgstr "Nächster"
+
+#: lib/search.tcl:24
+msgid "Prev"
+msgstr "Voriger"
+
+#: lib/search.tcl:25
+msgid "Case-Sensitive"
+msgstr "Groß-/Kleinschreibung unterscheiden"
+
+#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
+msgid "Cannot write shortcut:"
+msgstr "Fehler beim Schreiben der Verknüpfung:"
+
+#: lib/shortcut.tcl:137
+msgid "Cannot write icon:"
+msgstr "Fehler beim Erstellen des Icons:"
+
+#: lib/spellcheck.tcl:57
+msgid "Unsupported spell checker"
+msgstr "Rechtschreibprüfungsprogramm nicht unterstützt"
+
+#: lib/spellcheck.tcl:65
+msgid "Spell checking is unavailable"
+msgstr "Rechtschreibprüfung nicht verfügbar"
+
+#: lib/spellcheck.tcl:68
+msgid "Invalid spell checking configuration"
+msgstr "Unbenutzbare Konfiguration der Rechtschreibprüfung"
+
+#: lib/spellcheck.tcl:70
+#, tcl-format
+msgid "Reverting dictionary to %s."
+msgstr "Wörterbuch auf %s zurückgesetzt."
+
+#: lib/spellcheck.tcl:73
+msgid "Spell checker silently failed on startup"
+msgstr "Rechtschreibprüfungsprogramm mit Fehler abgebrochen"
+
+#: lib/spellcheck.tcl:80
+msgid "Unrecognized spell checker"
+msgstr "Unbekanntes Rechtschreibprüfungsprogramm"
+
+#: lib/spellcheck.tcl:186
+msgid "No Suggestions"
+msgstr "Keine Vorschläge"
+
+#: lib/spellcheck.tcl:388
+msgid "Unexpected EOF from spell checker"
+msgstr "Unerwartetes EOF vom Rechtschreibprüfungsprogramm"
+
+#: lib/spellcheck.tcl:392
+msgid "Spell Checker Failed"
+msgstr "Rechtschreibprüfung fehlgeschlagen"
+
+#: lib/sshkey.tcl:31
+msgid "No keys found."
+msgstr "Keine Schlüssel gefunden."
+
+#: lib/sshkey.tcl:34
+#, tcl-format
+msgid "Found a public key in: %s"
+msgstr "Öffentlicher Schlüssel gefunden in: %s"
+
+#: lib/sshkey.tcl:40
+msgid "Generate Key"
+msgstr "Schlüssel erzeugen"
+
+#: lib/sshkey.tcl:56
+msgid "Copy To Clipboard"
+msgstr "In Zwischenablage kopieren"
+
+#: lib/sshkey.tcl:70
+msgid "Your OpenSSH Public Key"
+msgstr "Ihr OpenSSH öffenlicher Schlüssel"
+
+#: lib/sshkey.tcl:78
+msgid "Generating..."
+msgstr "Erzeugen..."
+
+#: lib/sshkey.tcl:84
+#, tcl-format
+msgid ""
+"Could not start ssh-keygen:\n"
+"\n"
+"%s"
+msgstr ""
+"Konnte »ssh-keygen« nicht starten:\n"
+"\n"
+"%s"
+
+#: lib/sshkey.tcl:111
+msgid "Generation failed."
+msgstr "Schlüsselerzeugung fehlgeschlagen."
+
+#: lib/sshkey.tcl:118
+msgid "Generation succeeded, but no keys found."
+msgstr "Schlüsselerzeugung erfolgreich, aber keine Schlüssel gefunden."
+
+#: lib/sshkey.tcl:121
+#, tcl-format
+msgid "Your key is in: %s"
+msgstr "Ihr Schlüssel ist abgelegt in: %s"
+
+#: lib/status_bar.tcl:83
+#, tcl-format
+msgid "%s ... %*i of %*i %s (%3i%%)"
+msgstr "%s ... %*i von %*i %s (%3i%%)"
+
+#: lib/tools_dlg.tcl:22
+msgid "Add Tool"
+msgstr "Werkzeug hinzufügen"
+
+#: lib/tools_dlg.tcl:28
+msgid "Add New Tool Command"
+msgstr "Neues Kommando für Werkzeug hinzufügen"
+
+#: lib/tools_dlg.tcl:33
+msgid "Add globally"
+msgstr "Global hinzufügen"
+
+#: lib/tools_dlg.tcl:45
+msgid "Tool Details"
+msgstr "Einzelheiten des Werkzeugs"
+
+#: lib/tools_dlg.tcl:48
+msgid "Use '/' separators to create a submenu tree:"
+msgstr "Benutzen Sie einen Schrägstrich »/«, um Untermenüs zu erstellen:"
+
+#: lib/tools_dlg.tcl:61
+msgid "Command:"
+msgstr "Kommando:"
+
+#: lib/tools_dlg.tcl:74
+msgid "Show a dialog before running"
+msgstr "Bestätigungsfrage vor Starten anzeigen"
+
+#: lib/tools_dlg.tcl:80
+msgid "Ask the user to select a revision (sets $REVISION)"
+msgstr "Benutzer nach Version fragen (setzt $REVISION)"
+
+#: lib/tools_dlg.tcl:85
+msgid "Ask the user for additional arguments (sets $ARGS)"
+msgstr "Benutzer nach zusätzlichen Argumenten fragen (setzt $ARGS)"
+
+#: lib/tools_dlg.tcl:92
+msgid "Don't show the command output window"
+msgstr "Kein Ausgabefenster zeigen"
+
+#: lib/tools_dlg.tcl:97
+msgid "Run only if a diff is selected ($FILENAME not empty)"
+msgstr "Nur starten, wenn ein Vergleich gewählt ist ($FILENAME ist nicht leer)"
+
+#: lib/tools_dlg.tcl:121
+msgid "Please supply a name for the tool."
+msgstr "Bitte geben Sie einen Werkzeugnamen an."
+
+#: lib/tools_dlg.tcl:129
+#, tcl-format
+msgid "Tool '%s' already exists."
+msgstr "Werkzeug »%s« existiert bereits."
+
+#: lib/tools_dlg.tcl:151
+#, tcl-format
+msgid ""
+"Could not add tool:\n"
+"%s"
+msgstr ""
+"Werkzeug konnte nicht hinzugefügt werden:\n"
+"\n"
+"%s"
+
+#: lib/tools_dlg.tcl:190
+msgid "Remove Tool"
+msgstr "Werkzeug entfernen"
+
+#: lib/tools_dlg.tcl:196
+msgid "Remove Tool Commands"
+msgstr "Werkzeugkommandos entfernen"
+
+#: lib/tools_dlg.tcl:200
+msgid "Remove"
+msgstr "Entfernen"
+
+#: lib/tools_dlg.tcl:236
+msgid "(Blue denotes repository-local tools)"
+msgstr "(Werkzeuge für lokales Archiv werden in Blau angezeigt)"
+
+#: lib/tools_dlg.tcl:297
+#, tcl-format
+msgid "Run Command: %s"
+msgstr "Kommando aufrufen: %s"
+
+#: lib/tools_dlg.tcl:311
+msgid "Arguments"
+msgstr "Argumente"
+
+#: lib/tools_dlg.tcl:348
+msgid "OK"
+msgstr "Ok"
+
+#: lib/tools.tcl:75
+#, tcl-format
+msgid "Running %s requires a selected file."
+msgstr "Um »%s« zu starten, muss eine Datei ausgewählt sein."
+
+#: lib/tools.tcl:90
+#, tcl-format
+msgid "Are you sure you want to run %s?"
+msgstr "Wollen Sie %s wirklich starten?"
+
+#: lib/tools.tcl:110
+#, tcl-format
+msgid "Tool: %s"
+msgstr "Werkzeug: %s"
+
+#: lib/tools.tcl:111
+#, tcl-format
+msgid "Running: %s"
+msgstr "Starten: %s"
+
+#: lib/tools.tcl:149
+#, tcl-format
+msgid "Tool completed successfully: %s"
+msgstr "Werkzeug erfolgreich abgeschlossen: %s"
+
+#: lib/tools.tcl:151
+#, tcl-format
+msgid "Tool failed: %s"
+msgstr "Werkzeug fehlgeschlagen: %s"
+
+#: lib/transport.tcl:7
+#, tcl-format
+msgid "Fetching new changes from %s"
+msgstr "Neue Änderungen von »%s« holen"
+
+#: lib/transport.tcl:18
+#, tcl-format
+msgid "remote prune %s"
+msgstr "Aufräumen von »%s«"
+
+#: lib/transport.tcl:19
+#, tcl-format
+msgid "Pruning tracking branches deleted from %s"
+msgstr "Übernahmezweige aufräumen und entfernen, die in »%s« gelöscht wurden"
+
+#: lib/transport.tcl:26
+#, tcl-format
+msgid "Pushing changes to %s"
+msgstr "Änderungen nach »%s« versenden"
+
+#: lib/transport.tcl:64
+#, tcl-format
+msgid "Mirroring to %s"
+msgstr "Spiegeln nach %s"
+
+#: lib/transport.tcl:82
+#, tcl-format
+msgid "Pushing %s %s to %s"
+msgstr "%s %s nach %s versenden"
+
+#: lib/transport.tcl:100
+msgid "Push Branches"
+msgstr "Zweige versenden"
+
+#: lib/transport.tcl:114
+msgid "Source Branches"
+msgstr "Lokale Zweige"
+
+#: lib/transport.tcl:131
+msgid "Destination Repository"
+msgstr "Ziel-Projektarchiv"
+
+#: lib/transport.tcl:169
+msgid "Transfer Options"
+msgstr "Netzwerk-Einstellungen"
+
+#: lib/transport.tcl:171
+msgid "Force overwrite existing branch (may discard changes)"
+msgstr ""
+"Überschreiben von existierenden Zweigen erzwingen (könnte Änderungen löschen)"
+
+#: lib/transport.tcl:175
+msgid "Use thin pack (for slow network connections)"
+msgstr "Kompaktes Datenformat benutzen (für langsame Netzverbindungen)"
+
+#: lib/transport.tcl:179
+msgid "Include tags"
+msgstr "Mit Markierungen übertragen"
diff --git a/third_party/git/git-gui/po/git-gui.pot b/third_party/git/git-gui/po/git-gui.pot
index b79ed4e133..0c94f9c2c6 100644
--- a/third_party/git/git-gui/po/git-gui.pot
+++ b/third_party/git/git-gui/po/git-gui.pot
@@ -8,42 +8,41 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-02-08 22:54+0100\n"
+"POT-Creation-Date: 2010-01-26 15:47-0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: git-gui.sh:847
+#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
+#: git-gui.sh:922
+msgid "git-gui: fatal error"
+msgstr ""
+
+#: git-gui.sh:743
 #, tcl-format
 msgid "Invalid font specified in %s:"
 msgstr ""
 
-#: git-gui.sh:901
+#: git-gui.sh:779
 msgid "Main Font"
 msgstr ""
 
-#: git-gui.sh:902
+#: git-gui.sh:780
 msgid "Diff/Console Font"
 msgstr ""
 
-#: git-gui.sh:917 git-gui.sh:931 git-gui.sh:944 git-gui.sh:1034 git-gui.sh:1053
-#: git-gui.sh:3212
-msgid "git-gui: fatal error"
-msgstr ""
-
-#: git-gui.sh:918
+#: git-gui.sh:794
 msgid "Cannot find git in PATH."
 msgstr ""
 
-#: git-gui.sh:945
+#: git-gui.sh:821
 msgid "Cannot parse Git version string:"
 msgstr ""
 
-#: git-gui.sh:970
+#: git-gui.sh:839
 #, tcl-format
 msgid ""
 "Git version cannot be determined.\n"
@@ -55,518 +54,473 @@ msgid ""
 "Assume '%s' is version 1.5.0?\n"
 msgstr ""
 
-#: git-gui.sh:1267
+#: git-gui.sh:1128
 msgid "Git directory not found:"
 msgstr ""
 
-#: git-gui.sh:1301
+#: git-gui.sh:1146
 msgid "Cannot move to top of working directory:"
 msgstr ""
 
-#: git-gui.sh:1309
+#: git-gui.sh:1154
 msgid "Cannot use bare repository:"
 msgstr ""
 
-#: git-gui.sh:1317
+#: git-gui.sh:1162
 msgid "No working directory"
 msgstr ""
 
-#: git-gui.sh:1491 lib/checkout_op.tcl:306
+#: git-gui.sh:1334 lib/checkout_op.tcl:306
 msgid "Refreshing file status..."
 msgstr ""
 
-#: git-gui.sh:1551
+#: git-gui.sh:1390
 msgid "Scanning for modified files ..."
 msgstr ""
 
-#: git-gui.sh:1629
+#: git-gui.sh:1454
 msgid "Calling prepare-commit-msg hook..."
 msgstr ""
 
-#: git-gui.sh:1646
+#: git-gui.sh:1471
 msgid "Commit declined by prepare-commit-msg hook."
 msgstr ""
 
-#: git-gui.sh:1804 lib/browser.tcl:252
+#: git-gui.sh:1629 lib/browser.tcl:246
 msgid "Ready."
 msgstr ""
 
-#: git-gui.sh:1968
+#: git-gui.sh:1787
 #, tcl-format
-msgid ""
-"Display limit (gui.maxfilesdisplayed = %s) reached, not showing all %s files."
+msgid "Displaying only %s of %s files."
 msgstr ""
 
-#: git-gui.sh:2091
+#: git-gui.sh:1913
 msgid "Unmodified"
 msgstr ""
 
-#: git-gui.sh:2093
+#: git-gui.sh:1915
 msgid "Modified, not staged"
 msgstr ""
 
-#: git-gui.sh:2094 git-gui.sh:2106
+#: git-gui.sh:1916 git-gui.sh:1924
 msgid "Staged for commit"
 msgstr ""
 
-#: git-gui.sh:2095 git-gui.sh:2107
+#: git-gui.sh:1917 git-gui.sh:1925
 msgid "Portions staged for commit"
 msgstr ""
 
-#: git-gui.sh:2096 git-gui.sh:2108
+#: git-gui.sh:1918 git-gui.sh:1926
 msgid "Staged for commit, missing"
 msgstr ""
 
-#: git-gui.sh:2098
+#: git-gui.sh:1920
 msgid "File type changed, not staged"
 msgstr ""
 
-#: git-gui.sh:2099 git-gui.sh:2100
-msgid "File type changed, old type staged for commit"
-msgstr ""
-
-#: git-gui.sh:2101
+#: git-gui.sh:1921
 msgid "File type changed, staged"
 msgstr ""
 
-#: git-gui.sh:2102
-msgid "File type change staged, modification not staged"
-msgstr ""
-
-#: git-gui.sh:2103
-msgid "File type change staged, file missing"
-msgstr ""
-
-#: git-gui.sh:2105
+#: git-gui.sh:1923
 msgid "Untracked, not staged"
 msgstr ""
 
-#: git-gui.sh:2110
+#: git-gui.sh:1928
 msgid "Missing"
 msgstr ""
 
-#: git-gui.sh:2111
+#: git-gui.sh:1929
 msgid "Staged for removal"
 msgstr ""
 
-#: git-gui.sh:2112
+#: git-gui.sh:1930
 msgid "Staged for removal, still present"
 msgstr ""
 
-#: git-gui.sh:2114 git-gui.sh:2115 git-gui.sh:2116 git-gui.sh:2117
-#: git-gui.sh:2118 git-gui.sh:2119
+#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
+#: git-gui.sh:1936 git-gui.sh:1937
 msgid "Requires merge resolution"
 msgstr ""
 
-#: git-gui.sh:2164
-msgid "Couldn't find gitk in PATH"
+#: git-gui.sh:1972
+msgid "Starting gitk... please wait..."
 msgstr ""
 
-#: git-gui.sh:2210 git-gui.sh:2245
-#, tcl-format
-msgid "Starting %s... please wait..."
+#: git-gui.sh:1984
+msgid "Couldn't find gitk in PATH"
 msgstr ""
 
-#: git-gui.sh:2224
+#: git-gui.sh:2043
 msgid "Couldn't find git gui in PATH"
 msgstr ""
 
-#: git-gui.sh:2726 lib/choose_repository.tcl:53
+#: git-gui.sh:2455 lib/choose_repository.tcl:36
 msgid "Repository"
 msgstr ""
 
-#: git-gui.sh:2727
+#: git-gui.sh:2456
 msgid "Edit"
 msgstr ""
 
-#: git-gui.sh:2729 lib/choose_rev.tcl:567
+#: git-gui.sh:2458 lib/choose_rev.tcl:561
 msgid "Branch"
 msgstr ""
 
-#: git-gui.sh:2732 lib/choose_rev.tcl:554
+#: git-gui.sh:2461 lib/choose_rev.tcl:548
 msgid "Commit@@noun"
 msgstr ""
 
-#: git-gui.sh:2735 lib/merge.tcl:127 lib/merge.tcl:174
+#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
 msgid "Merge"
 msgstr ""
 
-#: git-gui.sh:2736 lib/choose_rev.tcl:563
+#: git-gui.sh:2465 lib/choose_rev.tcl:557
 msgid "Remote"
 msgstr ""
 
-#: git-gui.sh:2739
+#: git-gui.sh:2468
 msgid "Tools"
 msgstr ""
 
-#: git-gui.sh:2748
+#: git-gui.sh:2477
 msgid "Explore Working Copy"
 msgstr ""
 
-#: git-gui.sh:2763
-msgid "Git Bash"
-msgstr ""
-
-#: git-gui.sh:2772
+#: git-gui.sh:2483
 msgid "Browse Current Branch's Files"
 msgstr ""
 
-#: git-gui.sh:2776
+#: git-gui.sh:2487
 msgid "Browse Branch Files..."
 msgstr ""
 
-#: git-gui.sh:2781
+#: git-gui.sh:2492
 msgid "Visualize Current Branch's History"
 msgstr ""
 
-#: git-gui.sh:2785
+#: git-gui.sh:2496
 msgid "Visualize All Branch History"
 msgstr ""
 
-#: git-gui.sh:2792
+#: git-gui.sh:2503
 #, tcl-format
 msgid "Browse %s's Files"
 msgstr ""
 
-#: git-gui.sh:2794
+#: git-gui.sh:2505
 #, tcl-format
 msgid "Visualize %s's History"
 msgstr ""
 
-#: git-gui.sh:2799 lib/database.tcl:40
+#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
 msgid "Database Statistics"
 msgstr ""
 
-#: git-gui.sh:2802 lib/database.tcl:33
+#: git-gui.sh:2513 lib/database.tcl:34
 msgid "Compress Database"
 msgstr ""
 
-#: git-gui.sh:2805
+#: git-gui.sh:2516
 msgid "Verify Database"
 msgstr ""
 
-#: git-gui.sh:2812 git-gui.sh:2816 git-gui.sh:2820
+#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
+#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
 msgid "Create Desktop Icon"
 msgstr ""
 
-#: git-gui.sh:2828 lib/choose_repository.tcl:209 lib/choose_repository.tcl:217
+#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
 msgid "Quit"
 msgstr ""
 
-#: git-gui.sh:2836
+#: git-gui.sh:2547
 msgid "Undo"
 msgstr ""
 
-#: git-gui.sh:2839
+#: git-gui.sh:2550
 msgid "Redo"
 msgstr ""
 
-#: git-gui.sh:2843 git-gui.sh:3461
+#: git-gui.sh:2554 git-gui.sh:3109
 msgid "Cut"
 msgstr ""
 
-#: git-gui.sh:2846 git-gui.sh:3464 git-gui.sh:3540 git-gui.sh:3633
+#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
 #: lib/console.tcl:69
 msgid "Copy"
 msgstr ""
 
-#: git-gui.sh:2849 git-gui.sh:3467
+#: git-gui.sh:2560 git-gui.sh:3115
 msgid "Paste"
 msgstr ""
 
-#: git-gui.sh:2852 git-gui.sh:3470 lib/remote_branch_delete.tcl:39
-#: lib/branch_delete.tcl:28
+#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
+#: lib/remote_branch_delete.tcl:38
 msgid "Delete"
 msgstr ""
 
-#: git-gui.sh:2856 git-gui.sh:3474 git-gui.sh:3637 lib/console.tcl:71
+#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
 msgid "Select All"
 msgstr ""
 
-#: git-gui.sh:2865
+#: git-gui.sh:2576
 msgid "Create..."
 msgstr ""
 
-#: git-gui.sh:2871
+#: git-gui.sh:2582
 msgid "Checkout..."
 msgstr ""
 
-#: git-gui.sh:2877
+#: git-gui.sh:2588
 msgid "Rename..."
 msgstr ""
 
-#: git-gui.sh:2882
+#: git-gui.sh:2593
 msgid "Delete..."
 msgstr ""
 
-#: git-gui.sh:2887
+#: git-gui.sh:2598
 msgid "Reset..."
 msgstr ""
 
-#: git-gui.sh:2897
+#: git-gui.sh:2608
 msgid "Done"
 msgstr ""
 
-#: git-gui.sh:2899
+#: git-gui.sh:2610
 msgid "Commit@@verb"
 msgstr ""
 
-#: git-gui.sh:2908 git-gui.sh:3400
+#: git-gui.sh:2619 git-gui.sh:3050
+msgid "New Commit"
+msgstr ""
+
+#: git-gui.sh:2627 git-gui.sh:3057
 msgid "Amend Last Commit"
 msgstr ""
 
-#: git-gui.sh:2918 git-gui.sh:3361 lib/remote_branch_delete.tcl:101
+#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
 msgid "Rescan"
 msgstr ""
 
-#: git-gui.sh:2924
+#: git-gui.sh:2643
 msgid "Stage To Commit"
 msgstr ""
 
-#: git-gui.sh:2930
+#: git-gui.sh:2649
 msgid "Stage Changed Files To Commit"
 msgstr ""
 
-#: git-gui.sh:2936
+#: git-gui.sh:2655
 msgid "Unstage From Commit"
 msgstr ""
 
-#: git-gui.sh:2942 lib/index.tcl:521
+#: git-gui.sh:2661 lib/index.tcl:412
 msgid "Revert Changes"
 msgstr ""
 
-#: git-gui.sh:2950 git-gui.sh:3700 git-gui.sh:3731
+#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
 msgid "Show Less Context"
 msgstr ""
 
-#: git-gui.sh:2954 git-gui.sh:3704 git-gui.sh:3735
+#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
 msgid "Show More Context"
 msgstr ""
 
-#: git-gui.sh:2961 git-gui.sh:3374 git-gui.sh:3485
+#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
 msgid "Sign Off"
 msgstr ""
 
-#: git-gui.sh:2977
+#: git-gui.sh:2696
 msgid "Local Merge..."
 msgstr ""
 
-#: git-gui.sh:2982
+#: git-gui.sh:2701
 msgid "Abort Merge..."
 msgstr ""
 
-#: git-gui.sh:2994 git-gui.sh:3022
+#: git-gui.sh:2713 git-gui.sh:2741
 msgid "Add..."
 msgstr ""
 
-#: git-gui.sh:2998
+#: git-gui.sh:2717
 msgid "Push..."
 msgstr ""
 
-#: git-gui.sh:3002
+#: git-gui.sh:2721
 msgid "Delete Branch..."
 msgstr ""
 
-#: git-gui.sh:3012 git-gui.sh:3666
+#: git-gui.sh:2731 git-gui.sh:3292
 msgid "Options..."
 msgstr ""
 
-#: git-gui.sh:3023
+#: git-gui.sh:2742
 msgid "Remove..."
 msgstr ""
 
-#: git-gui.sh:3032 lib/choose_repository.tcl:67
+#: git-gui.sh:2751 lib/choose_repository.tcl:50
 msgid "Help"
 msgstr ""
 
-#: git-gui.sh:3036 git-gui.sh:3040 lib/choose_repository.tcl:61
-#: lib/choose_repository.tcl:70 lib/about.tcl:14
+#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
+#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
 #, tcl-format
 msgid "About %s"
 msgstr ""
 
-#: git-gui.sh:3064
+#: git-gui.sh:2783
 msgid "Online Documentation"
 msgstr ""
 
-#: git-gui.sh:3067 lib/choose_repository.tcl:64 lib/choose_repository.tcl:73
+#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
 msgid "Show SSH Key"
 msgstr ""
 
-#: git-gui.sh:3097 git-gui.sh:3229
-msgid "usage:"
-msgstr ""
-
-#: git-gui.sh:3101 git-gui.sh:3233
-msgid "Usage"
-msgstr ""
-
-#: git-gui.sh:3182 lib/blame.tcl:575
-msgid "Error"
-msgstr ""
-
-#: git-gui.sh:3213
+#: git-gui.sh:2893
 #, tcl-format
 msgid "fatal: cannot stat path %s: No such file or directory"
 msgstr ""
 
-#: git-gui.sh:3246
+#: git-gui.sh:2926
 msgid "Current Branch:"
 msgstr ""
 
-#: git-gui.sh:3271
-msgid "Unstaged Changes"
+#: git-gui.sh:2947
+msgid "Staged Changes (Will Commit)"
 msgstr ""
 
-#: git-gui.sh:3293
-msgid "Staged Changes (Will Commit)"
+#: git-gui.sh:2967
+msgid "Unstaged Changes"
 msgstr ""
 
-#: git-gui.sh:3367
+#: git-gui.sh:3017
 msgid "Stage Changed"
 msgstr ""
 
-#: git-gui.sh:3386 lib/transport.tcl:137
+#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
 msgid "Push"
 msgstr ""
 
-#: git-gui.sh:3413
+#: git-gui.sh:3071
 msgid "Initial Commit Message:"
 msgstr ""
 
-#: git-gui.sh:3414
+#: git-gui.sh:3072
 msgid "Amended Commit Message:"
 msgstr ""
 
-#: git-gui.sh:3415
+#: git-gui.sh:3073
 msgid "Amended Initial Commit Message:"
 msgstr ""
 
-#: git-gui.sh:3416
+#: git-gui.sh:3074
 msgid "Amended Merge Commit Message:"
 msgstr ""
 
-#: git-gui.sh:3417
+#: git-gui.sh:3075
 msgid "Merge Commit Message:"
 msgstr ""
 
-#: git-gui.sh:3418
+#: git-gui.sh:3076
 msgid "Commit Message:"
 msgstr ""
 
-#: git-gui.sh:3477 git-gui.sh:3641 lib/console.tcl:73
+#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
 msgid "Copy All"
 msgstr ""
 
-#: git-gui.sh:3501 lib/blame.tcl:106
+#: git-gui.sh:3149 lib/blame.tcl:104
 msgid "File:"
 msgstr ""
 
-#: git-gui.sh:3549 lib/choose_repository.tcl:1100
-msgid "Open"
-msgstr ""
-
-#: git-gui.sh:3629
+#: git-gui.sh:3255
 msgid "Refresh"
 msgstr ""
 
-#: git-gui.sh:3650
+#: git-gui.sh:3276
 msgid "Decrease Font Size"
 msgstr ""
 
-#: git-gui.sh:3654
+#: git-gui.sh:3280
 msgid "Increase Font Size"
 msgstr ""
 
-#: git-gui.sh:3662 lib/blame.tcl:296
+#: git-gui.sh:3288 lib/blame.tcl:281
 msgid "Encoding"
 msgstr ""
 
-#: git-gui.sh:3673
+#: git-gui.sh:3299
 msgid "Apply/Reverse Hunk"
 msgstr ""
 
-#: git-gui.sh:3678
+#: git-gui.sh:3304
 msgid "Apply/Reverse Line"
 msgstr ""
 
-#: git-gui.sh:3684 git-gui.sh:3794 git-gui.sh:3805
-msgid "Revert Hunk"
-msgstr ""
-
-#: git-gui.sh:3689 git-gui.sh:3801 git-gui.sh:3812
-msgid "Revert Line"
-msgstr ""
-
-#: git-gui.sh:3694 git-gui.sh:3791
-msgid "Undo Last Revert"
-msgstr ""
-
-#: git-gui.sh:3713
+#: git-gui.sh:3323
 msgid "Run Merge Tool"
 msgstr ""
 
-#: git-gui.sh:3718
+#: git-gui.sh:3328
 msgid "Use Remote Version"
 msgstr ""
 
-#: git-gui.sh:3722
+#: git-gui.sh:3332
 msgid "Use Local Version"
 msgstr ""
 
-#: git-gui.sh:3726
+#: git-gui.sh:3336
 msgid "Revert To Base"
 msgstr ""
 
-#: git-gui.sh:3744
+#: git-gui.sh:3354
 msgid "Visualize These Changes In The Submodule"
 msgstr ""
 
-#: git-gui.sh:3748
+#: git-gui.sh:3358
 msgid "Visualize Current Branch History In The Submodule"
 msgstr ""
 
-#: git-gui.sh:3752
+#: git-gui.sh:3362
 msgid "Visualize All Branch History In The Submodule"
 msgstr ""
 
-#: git-gui.sh:3757
+#: git-gui.sh:3367
 msgid "Start git gui In The Submodule"
 msgstr ""
 
-#: git-gui.sh:3793
+#: git-gui.sh:3389
 msgid "Unstage Hunk From Commit"
 msgstr ""
 
-#: git-gui.sh:3797
+#: git-gui.sh:3391
 msgid "Unstage Lines From Commit"
 msgstr ""
 
-#: git-gui.sh:3798 git-gui.sh:3809
-msgid "Revert Lines"
-msgstr ""
-
-#: git-gui.sh:3800
+#: git-gui.sh:3393
 msgid "Unstage Line From Commit"
 msgstr ""
 
-#: git-gui.sh:3804
+#: git-gui.sh:3396
 msgid "Stage Hunk For Commit"
 msgstr ""
 
-#: git-gui.sh:3808
+#: git-gui.sh:3398
 msgid "Stage Lines For Commit"
 msgstr ""
 
-#: git-gui.sh:3811
+#: git-gui.sh:3400
 msgid "Stage Line For Commit"
 msgstr ""
 
-#: git-gui.sh:3861
+#: git-gui.sh:3424
 msgid "Initializing..."
 msgstr ""
 
-#: git-gui.sh:4017
+#: git-gui.sh:3541
 #, tcl-format
 msgid ""
 "Possible environment issues exist.\n"
@@ -577,14 +531,14 @@ msgid ""
 "\n"
 msgstr ""
 
-#: git-gui.sh:4046
+#: git-gui.sh:3570
 msgid ""
 "\n"
 "This is due to a known issue with the\n"
 "Tcl binary distributed by Cygwin."
 msgstr ""
 
-#: git-gui.sh:4051
+#: git-gui.sh:3575
 #, tcl-format
 msgid ""
 "\n"
@@ -595,2072 +549,1846 @@ msgid ""
 "~/.gitconfig file.\n"
 msgstr ""
 
-#: lib/spellcheck.tcl:57
-msgid "Unsupported spell checker"
+#: lib/about.tcl:26
+msgid "git-gui - a graphical user interface for Git."
 msgstr ""
 
-#: lib/spellcheck.tcl:65
-msgid "Spell checking is unavailable"
+#: lib/blame.tcl:72
+msgid "File Viewer"
 msgstr ""
 
-#: lib/spellcheck.tcl:68
-msgid "Invalid spell checking configuration"
+#: lib/blame.tcl:78
+msgid "Commit:"
 msgstr ""
 
-#: lib/spellcheck.tcl:70
-#, tcl-format
-msgid "Reverting dictionary to %s."
+#: lib/blame.tcl:271
+msgid "Copy Commit"
 msgstr ""
 
-#: lib/spellcheck.tcl:73
-msgid "Spell checker silently failed on startup"
+#: lib/blame.tcl:275
+msgid "Find Text..."
 msgstr ""
 
-#: lib/spellcheck.tcl:80
-msgid "Unrecognized spell checker"
+#: lib/blame.tcl:284
+msgid "Do Full Copy Detection"
 msgstr ""
 
-#: lib/spellcheck.tcl:186
-msgid "No Suggestions"
+#: lib/blame.tcl:288
+msgid "Show History Context"
 msgstr ""
 
-#: lib/spellcheck.tcl:388
-msgid "Unexpected EOF from spell checker"
+#: lib/blame.tcl:291
+msgid "Blame Parent Commit"
 msgstr ""
 
-#: lib/spellcheck.tcl:392
-msgid "Spell Checker Failed"
+#: lib/blame.tcl:450
+#, tcl-format
+msgid "Reading %s..."
 msgstr ""
 
-#: lib/transport.tcl:6 lib/remote_add.tcl:132
-#, tcl-format
-msgid "fetch %s"
+#: lib/blame.tcl:557
+msgid "Loading copy/move tracking annotations..."
 msgstr ""
 
-#: lib/transport.tcl:7
-#, tcl-format
-msgid "Fetching new changes from %s"
+#: lib/blame.tcl:577
+msgid "lines annotated"
 msgstr ""
 
-#: lib/transport.tcl:18
-#, tcl-format
-msgid "remote prune %s"
+#: lib/blame.tcl:769
+msgid "Loading original location annotations..."
 msgstr ""
 
-#: lib/transport.tcl:19
-#, tcl-format
-msgid "Pruning tracking branches deleted from %s"
+#: lib/blame.tcl:772
+msgid "Annotation complete."
 msgstr ""
 
-#: lib/transport.tcl:25
-msgid "fetch all remotes"
+#: lib/blame.tcl:802
+msgid "Busy"
 msgstr ""
 
-#: lib/transport.tcl:26
-msgid "Fetching new changes from all remotes"
+#: lib/blame.tcl:803
+msgid "Annotation process is already running."
 msgstr ""
 
-#: lib/transport.tcl:40
-msgid "remote prune all remotes"
+#: lib/blame.tcl:842
+msgid "Running thorough copy detection..."
 msgstr ""
 
-#: lib/transport.tcl:41
-msgid "Pruning tracking branches deleted from all remotes"
+#: lib/blame.tcl:910
+msgid "Loading annotation..."
 msgstr ""
 
-#: lib/transport.tcl:54 lib/transport.tcl:92 lib/transport.tcl:110
-#: lib/remote_add.tcl:162
-#, tcl-format
-msgid "push %s"
+#: lib/blame.tcl:963
+msgid "Author:"
 msgstr ""
 
-#: lib/transport.tcl:55
-#, tcl-format
-msgid "Pushing changes to %s"
+#: lib/blame.tcl:967
+msgid "Committer:"
 msgstr ""
 
-#: lib/transport.tcl:93
-#, tcl-format
-msgid "Mirroring to %s"
+#: lib/blame.tcl:972
+msgid "Original File:"
 msgstr ""
 
-#: lib/transport.tcl:111
-#, tcl-format
-msgid "Pushing %s %s to %s"
+#: lib/blame.tcl:1020
+msgid "Cannot find HEAD commit:"
 msgstr ""
 
-#: lib/transport.tcl:132
-msgid "Push Branches"
+#: lib/blame.tcl:1075
+msgid "Cannot find parent commit:"
 msgstr ""
 
-#: lib/transport.tcl:141 lib/checkout_op.tcl:580 lib/remote_add.tcl:34
-#: lib/browser.tcl:292 lib/branch_checkout.tcl:30 lib/branch_rename.tcl:32
-#: lib/choose_font.tcl:45 lib/option.tcl:127 lib/tools_dlg.tcl:41
-#: lib/tools_dlg.tcl:202 lib/tools_dlg.tcl:345 lib/remote_branch_delete.tcl:43
-#: lib/branch_create.tcl:37 lib/branch_delete.tcl:34 lib/merge.tcl:178
-msgid "Cancel"
+#: lib/blame.tcl:1090
+msgid "Unable to display parent"
 msgstr ""
 
-#: lib/transport.tcl:147
-msgid "Source Branches"
+#: lib/blame.tcl:1091 lib/diff.tcl:320
+msgid "Error loading diff:"
 msgstr ""
 
-#: lib/transport.tcl:162
-msgid "Destination Repository"
+#: lib/blame.tcl:1231
+msgid "Originally By:"
 msgstr ""
 
-#: lib/transport.tcl:165 lib/remote_branch_delete.tcl:51
-msgid "Remote:"
+#: lib/blame.tcl:1237
+msgid "In File:"
 msgstr ""
 
-#: lib/transport.tcl:187 lib/remote_branch_delete.tcl:72
-msgid "Arbitrary Location:"
+#: lib/blame.tcl:1242
+msgid "Copied Or Moved Here By:"
 msgstr ""
 
-#: lib/transport.tcl:205
-msgid "Transfer Options"
+#: lib/branch_checkout.tcl:14 lib/branch_checkout.tcl:19
+msgid "Checkout Branch"
 msgstr ""
 
-#: lib/transport.tcl:207
-msgid "Force overwrite existing branch (may discard changes)"
+#: lib/branch_checkout.tcl:23
+msgid "Checkout"
 msgstr ""
 
-#: lib/transport.tcl:211
-msgid "Use thin pack (for slow network connections)"
+#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
+#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
+#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
+#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
+#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
+#: lib/transport.tcl:108
+msgid "Cancel"
 msgstr ""
 
-#: lib/transport.tcl:215
-msgid "Include tags"
+#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 lib/tools_dlg.tcl:328
+msgid "Revision"
 msgstr ""
 
-#: lib/transport.tcl:229
-#, tcl-format
-msgid "%s (%s): Push"
+#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:280
+msgid "Options"
 msgstr ""
 
-#: lib/checkout_op.tcl:85
-#, tcl-format
-msgid "Fetching %s from %s"
+#: lib/branch_checkout.tcl:39 lib/branch_create.tcl:92
+msgid "Fetch Tracking Branch"
 msgstr ""
 
-#: lib/checkout_op.tcl:133
-#, tcl-format
-msgid "fatal: Cannot resolve %s"
+#: lib/branch_checkout.tcl:44
+msgid "Detach From Local Branch"
 msgstr ""
 
-#: lib/checkout_op.tcl:146 lib/sshkey.tcl:58 lib/console.tcl:81
-#: lib/database.tcl:30
-msgid "Close"
+#: lib/branch_create.tcl:22
+msgid "Create Branch"
 msgstr ""
 
-#: lib/checkout_op.tcl:175
-#, tcl-format
-msgid "Branch '%s' does not exist."
+#: lib/branch_create.tcl:27
+msgid "Create New Branch"
 msgstr ""
 
-#: lib/checkout_op.tcl:194
-#, tcl-format
-msgid "Failed to configure simplified git-pull for '%s'."
+#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
+msgid "Create"
 msgstr ""
 
-#: lib/checkout_op.tcl:202 lib/branch_rename.tcl:102
-#, tcl-format
-msgid "Branch '%s' already exists."
+#: lib/branch_create.tcl:40
+msgid "Branch Name"
 msgstr ""
 
-#: lib/checkout_op.tcl:229
-#, tcl-format
-msgid ""
-"Branch '%s' already exists.\n"
-"\n"
-"It cannot fast-forward to %s.\n"
-"A merge is required."
+#: lib/branch_create.tcl:43 lib/remote_add.tcl:39 lib/tools_dlg.tcl:50
+msgid "Name:"
 msgstr ""
 
-#: lib/checkout_op.tcl:243
-#, tcl-format
-msgid "Merge strategy '%s' not supported."
+#: lib/branch_create.tcl:58
+msgid "Match Tracking Branch Name"
 msgstr ""
 
-#: lib/checkout_op.tcl:262
-#, tcl-format
-msgid "Failed to update '%s'."
+#: lib/branch_create.tcl:66
+msgid "Starting Revision"
 msgstr ""
 
-#: lib/checkout_op.tcl:274
-msgid "Staging area (index) is already locked."
+#: lib/branch_create.tcl:72
+msgid "Update Existing Branch:"
 msgstr ""
 
-#: lib/checkout_op.tcl:289
-msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan.  A "
-"rescan must be performed before the current branch can be changed.\n"
-"\n"
-"The rescan will be automatically started now.\n"
+#: lib/branch_create.tcl:75
+msgid "No"
 msgstr ""
 
-#: lib/checkout_op.tcl:345
-#, tcl-format
-msgid "Updating working directory to '%s'..."
+#: lib/branch_create.tcl:80
+msgid "Fast Forward Only"
 msgstr ""
 
-#: lib/checkout_op.tcl:346
-msgid "files checked out"
+#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
+msgid "Reset"
 msgstr ""
 
-#: lib/checkout_op.tcl:377
-#, tcl-format
-msgid "Aborted checkout of '%s' (file level merging is required)."
+#: lib/branch_create.tcl:97
+msgid "Checkout After Creation"
 msgstr ""
 
-#: lib/checkout_op.tcl:378
-msgid "File level merge required."
+#: lib/branch_create.tcl:131
+msgid "Please select a tracking branch."
 msgstr ""
 
-#: lib/checkout_op.tcl:382
+#: lib/branch_create.tcl:140
 #, tcl-format
-msgid "Staying on branch '%s'."
+msgid "Tracking branch %s is not a branch in the remote repository."
 msgstr ""
 
-#: lib/checkout_op.tcl:453
-msgid ""
-"You are no longer on a local branch.\n"
-"\n"
-"If you wanted to be on a branch, create one now starting from 'This Detached "
-"Checkout'."
+#: lib/branch_create.tcl:153 lib/branch_rename.tcl:86
+msgid "Please supply a branch name."
 msgstr ""
 
-#: lib/checkout_op.tcl:504 lib/checkout_op.tcl:508
+#: lib/branch_create.tcl:164 lib/branch_rename.tcl:106
 #, tcl-format
-msgid "Checked out '%s'."
+msgid "'%s' is not an acceptable branch name."
 msgstr ""
 
-#: lib/checkout_op.tcl:536
-#, tcl-format
-msgid "Resetting '%s' to '%s' will lose the following commits:"
+#: lib/branch_delete.tcl:15
+msgid "Delete Branch"
 msgstr ""
 
-#: lib/checkout_op.tcl:558
-msgid "Recovering lost commits may not be easy."
+#: lib/branch_delete.tcl:20
+msgid "Delete Local Branch"
 msgstr ""
 
-#: lib/checkout_op.tcl:563
-#, tcl-format
-msgid "Reset '%s'?"
+#: lib/branch_delete.tcl:37
+msgid "Local Branches"
 msgstr ""
 
-#: lib/checkout_op.tcl:568 lib/tools_dlg.tcl:336 lib/merge.tcl:170
-msgid "Visualize"
+#: lib/branch_delete.tcl:52
+msgid "Delete Only If Merged Into"
 msgstr ""
 
-#: lib/checkout_op.tcl:572 lib/branch_create.tcl:85
-msgid "Reset"
+#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
+msgid "Always (Do not perform merge checks)"
 msgstr ""
 
-#: lib/checkout_op.tcl:636
+#: lib/branch_delete.tcl:103
 #, tcl-format
+msgid "The following branches are not completely merged into %s:"
+msgstr ""
+
+#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
 msgid ""
-"Failed to set current branch.\n"
-"\n"
-"This working directory is only partially switched.  We successfully updated "
-"your files, but failed to update an internal Git file.\n"
+"Recovering deleted branches is difficult.\n"
 "\n"
-"This should not have occurred.  %s will now close and give up."
+"Delete the selected branches?"
 msgstr ""
 
-#: lib/remote_add.tcl:20
+#: lib/branch_delete.tcl:141
 #, tcl-format
-msgid "%s (%s): Add Remote"
-msgstr ""
-
-#: 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:41 lib/tools_dlg.tcl:51 lib/branch_create.tcl:44
-msgid "Name:"
-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"
+msgid ""
+"Failed to delete branches:\n"
+"%s"
 msgstr ""
 
-#: lib/remote_add.tcl:75
-msgid "Do Nothing Else Now"
+#: lib/branch_rename.tcl:14 lib/branch_rename.tcl:22
+msgid "Rename Branch"
 msgstr ""
 
-#: lib/remote_add.tcl:100
-msgid "Please supply a remote name."
+#: lib/branch_rename.tcl:26
+msgid "Rename"
 msgstr ""
 
-#: lib/remote_add.tcl:113
-#, tcl-format
-msgid "'%s' is not an acceptable remote name."
+#: lib/branch_rename.tcl:36
+msgid "Branch:"
 msgstr ""
 
-#: lib/remote_add.tcl:124
-#, tcl-format
-msgid "Failed to add remote '%s' of location '%s'."
+#: lib/branch_rename.tcl:39
+msgid "New Name:"
 msgstr ""
 
-#: lib/remote_add.tcl:133
-#, tcl-format
-msgid "Fetching the %s"
+#: lib/branch_rename.tcl:75
+msgid "Please select a branch to rename."
 msgstr ""
 
-#: lib/remote_add.tcl:156
+#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
 #, tcl-format
-msgid "Do not know how to initialize repository at location '%s'."
+msgid "Branch '%s' already exists."
 msgstr ""
 
-#: lib/remote_add.tcl:163
+#: lib/branch_rename.tcl:117
 #, tcl-format
-msgid "Setting up the %s (at %s)"
+msgid "Failed to rename '%s'."
 msgstr ""
 
 #: lib/browser.tcl:17
 msgid "Starting..."
 msgstr ""
 
-#: lib/browser.tcl:27
-#, tcl-format
-msgid "%s (%s): File Browser"
+#: lib/browser.tcl:26
+msgid "File Browser"
 msgstr ""
 
-#: lib/browser.tcl:132 lib/browser.tcl:149
+#: lib/browser.tcl:126 lib/browser.tcl:143
 #, tcl-format
 msgid "Loading %s..."
 msgstr ""
 
-#: lib/browser.tcl:193
+#: lib/browser.tcl:187
 msgid "[Up To Parent]"
 msgstr ""
 
-#: lib/browser.tcl:275
-#, tcl-format
-msgid "%s (%s): Browse Branch Files"
-msgstr ""
-
-#: lib/browser.tcl:282
+#: lib/browser.tcl:267 lib/browser.tcl:273
 msgid "Browse Branch Files"
 msgstr ""
 
-#: lib/browser.tcl:288 lib/choose_repository.tcl:437
-#: lib/choose_repository.tcl:524 lib/choose_repository.tcl:533
-#: lib/choose_repository.tcl:1115
+#: lib/browser.tcl:278 lib/choose_repository.tcl:398
+#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
+#: lib/choose_repository.tcl:1028
 msgid "Browse"
 msgstr ""
 
-#: lib/browser.tcl:297 lib/branch_checkout.tcl:35 lib/tools_dlg.tcl:321
-msgid "Revision"
-msgstr ""
-
-#: lib/index.tcl:6
-msgid "Unable to unlock the index."
-msgstr ""
-
-#: lib/index.tcl:30
-msgid "Index Error"
-msgstr ""
-
-#: lib/index.tcl:32
-msgid ""
-"Updating the Git index failed.  A rescan will be automatically started to "
-"resynchronize git-gui."
-msgstr ""
-
-#: lib/index.tcl:43
-msgid "Continue"
-msgstr ""
-
-#: lib/index.tcl:46
-msgid "Unlock Index"
-msgstr ""
-
-#: lib/index.tcl:77 lib/index.tcl:146 lib/index.tcl:220 lib/index.tcl:587
-#: lib/choose_repository.tcl:999
-msgid "files"
-msgstr ""
-
-#: lib/index.tcl:326
-msgid "Unstaging selected files from commit"
-msgstr ""
-
-#: lib/index.tcl:330
+#: lib/checkout_op.tcl:85
 #, tcl-format
-msgid "Unstaging %s from commit"
+msgid "Fetching %s from %s"
 msgstr ""
 
-#: lib/index.tcl:369
-msgid "Ready to commit."
+#: lib/checkout_op.tcl:133
+#, tcl-format
+msgid "fatal: Cannot resolve %s"
 msgstr ""
 
-#: lib/index.tcl:378
-msgid "Adding selected files"
+#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
+#: lib/sshkey.tcl:53
+msgid "Close"
 msgstr ""
 
-#: lib/index.tcl:382
+#: lib/checkout_op.tcl:175
 #, tcl-format
-msgid "Adding %s"
+msgid "Branch '%s' does not exist."
 msgstr ""
 
-#: lib/index.tcl:412
+#: lib/checkout_op.tcl:194
 #, tcl-format
-msgid "Stage %d untracked files?"
+msgid "Failed to configure simplified git-pull for '%s'."
 msgstr ""
 
-#: lib/index.tcl:420
-msgid "Adding all changed files"
+#: lib/checkout_op.tcl:229
+#, tcl-format
+msgid ""
+"Branch '%s' already exists.\n"
+"\n"
+"It cannot fast-forward to %s.\n"
+"A merge is required."
 msgstr ""
 
-#: lib/index.tcl:503
+#: lib/checkout_op.tcl:243
 #, tcl-format
-msgid "Revert changes in file %s?"
+msgid "Merge strategy '%s' not supported."
 msgstr ""
 
-#: lib/index.tcl:508
+#: lib/checkout_op.tcl:262
 #, tcl-format
-msgid "Revert changes in these %i files?"
+msgid "Failed to update '%s'."
 msgstr ""
 
-#: lib/index.tcl:517
-msgid "Any unstaged changes will be permanently lost by the revert."
+#: lib/checkout_op.tcl:274
+msgid "Staging area (index) is already locked."
 msgstr ""
 
-#: lib/index.tcl:520 lib/index.tcl:563
-msgid "Do Nothing"
+#: lib/checkout_op.tcl:289
+msgid ""
+"Last scanned state does not match repository state.\n"
+"\n"
+"Another Git program has modified this repository since the last scan.  A "
+"rescan must be performed before the current branch can be changed.\n"
+"\n"
+"The rescan will be automatically started now.\n"
 msgstr ""
 
-#: lib/index.tcl:545
+#: lib/checkout_op.tcl:345
 #, tcl-format
-msgid "Delete untracked file %s?"
+msgid "Updating working directory to '%s'..."
 msgstr ""
 
-#: lib/index.tcl:550
-#, tcl-format
-msgid "Delete these %i untracked files?"
+#: lib/checkout_op.tcl:346
+msgid "files checked out"
 msgstr ""
 
-#: lib/index.tcl:560
-msgid "Files will be permanently deleted."
+#: lib/checkout_op.tcl:376
+#, tcl-format
+msgid "Aborted checkout of '%s' (file level merging is required)."
 msgstr ""
 
-#: lib/index.tcl:564
-msgid "Delete Files"
+#: lib/checkout_op.tcl:377
+msgid "File level merge required."
 msgstr ""
 
-#: lib/index.tcl:586
-msgid "Deleting"
+#: lib/checkout_op.tcl:381
+#, tcl-format
+msgid "Staying on branch '%s'."
 msgstr ""
 
-#: lib/index.tcl:665
-msgid "Encountered errors deleting files:\n"
+#: lib/checkout_op.tcl:452
+msgid ""
+"You are no longer on a local branch.\n"
+"\n"
+"If you wanted to be on a branch, create one now starting from 'This Detached "
+"Checkout'."
 msgstr ""
 
-#: lib/index.tcl:674
+#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
 #, tcl-format
-msgid "None of the %d selected files could be deleted."
+msgid "Checked out '%s'."
 msgstr ""
 
-#: lib/index.tcl:679
+#: lib/checkout_op.tcl:535
 #, tcl-format
-msgid "%d of the %d selected files could not be deleted."
+msgid "Resetting '%s' to '%s' will lose the following commits:"
 msgstr ""
 
-#: lib/index.tcl:726
-msgid "Reverting selected files"
+#: lib/checkout_op.tcl:557
+msgid "Recovering lost commits may not be easy."
 msgstr ""
 
-#: lib/index.tcl:730
+#: lib/checkout_op.tcl:562
 #, tcl-format
-msgid "Reverting %s"
+msgid "Reset '%s'?"
 msgstr ""
 
-#: lib/branch_checkout.tcl:16
-#, tcl-format
-msgid "%s (%s): Checkout Branch"
+#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
+msgid "Visualize"
 msgstr ""
 
-#: lib/branch_checkout.tcl:21
-msgid "Checkout Branch"
+#: lib/checkout_op.tcl:635
+#, tcl-format
+msgid ""
+"Failed to set current branch.\n"
+"\n"
+"This working directory is only partially switched.  We successfully updated "
+"your files, but failed to update an internal Git file.\n"
+"\n"
+"This should not have occurred.  %s will now close and give up."
 msgstr ""
 
-#: lib/branch_checkout.tcl:26
-msgid "Checkout"
+#: lib/choose_font.tcl:39
+msgid "Select"
 msgstr ""
 
-#: lib/branch_checkout.tcl:39 lib/option.tcl:310 lib/branch_create.tcl:69
-msgid "Options"
+#: lib/choose_font.tcl:53
+msgid "Font Family"
 msgstr ""
 
-#: lib/branch_checkout.tcl:42 lib/branch_create.tcl:92
-msgid "Fetch Tracking Branch"
+#: lib/choose_font.tcl:74
+msgid "Font Size"
 msgstr ""
 
-#: lib/branch_checkout.tcl:47
-msgid "Detach From Local Branch"
+#: lib/choose_font.tcl:91
+msgid "Font Example"
 msgstr ""
 
-#: lib/status_bar.tcl:263
-#, tcl-format
-msgid "%s ... %*i of %*i %s (%3i%%)"
+#: lib/choose_font.tcl:103
+msgid ""
+"This is example text.\n"
+"If you like this text, it can be your font."
 msgstr ""
 
-#: lib/remote.tcl:200
-msgid "Push to"
+#: lib/choose_repository.tcl:28
+msgid "Git Gui"
 msgstr ""
 
-#: lib/remote.tcl:218
-msgid "Remove Remote"
+#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
+msgid "Create New Repository"
 msgstr ""
 
-#: lib/remote.tcl:223
-msgid "Prune from"
+#: lib/choose_repository.tcl:93
+msgid "New..."
 msgstr ""
 
-#: lib/remote.tcl:228
-msgid "Fetch from"
+#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
+msgid "Clone Existing Repository"
 msgstr ""
 
-#: lib/remote.tcl:249 lib/remote.tcl:253 lib/remote.tcl:258 lib/remote.tcl:264
-msgid "All"
+#: lib/choose_repository.tcl:106
+msgid "Clone..."
 msgstr ""
 
-#: lib/branch_rename.tcl:15
-#, tcl-format
-msgid "%s (%s): Rename Branch"
+#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
+msgid "Open Existing Repository"
 msgstr ""
 
-#: lib/branch_rename.tcl:23
-msgid "Rename Branch"
+#: lib/choose_repository.tcl:119
+msgid "Open..."
 msgstr ""
 
-#: lib/branch_rename.tcl:28
-msgid "Rename"
+#: lib/choose_repository.tcl:132
+msgid "Recent Repositories"
 msgstr ""
 
-#: lib/branch_rename.tcl:38
-msgid "Branch:"
+#: lib/choose_repository.tcl:138
+msgid "Open Recent Repository:"
 msgstr ""
 
-#: lib/branch_rename.tcl:46
-msgid "New Name:"
+#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
+#: lib/choose_repository.tcl:320
+#, tcl-format
+msgid "Failed to create repository %s:"
 msgstr ""
 
-#: lib/branch_rename.tcl:81
-msgid "Please select a branch to rename."
+#: lib/choose_repository.tcl:391
+msgid "Directory:"
 msgstr ""
 
-#: lib/branch_rename.tcl:92 lib/branch_create.tcl:154
-msgid "Please supply a branch name."
+#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
+#: lib/choose_repository.tcl:1052
+msgid "Git Repository"
 msgstr ""
 
-#: lib/branch_rename.tcl:112 lib/branch_create.tcl:165
+#: lib/choose_repository.tcl:448
 #, tcl-format
-msgid "'%s' is not an acceptable branch name."
+msgid "Directory %s already exists."
 msgstr ""
 
-#: lib/branch_rename.tcl:123
+#: lib/choose_repository.tcl:452
 #, tcl-format
-msgid "Failed to rename '%s'."
-msgstr ""
-
-#: lib/choose_font.tcl:41
-msgid "Select"
-msgstr ""
-
-#: lib/choose_font.tcl:55
-msgid "Font Family"
+msgid "File %s already exists."
 msgstr ""
 
-#: lib/choose_font.tcl:76
-msgid "Font Size"
+#: lib/choose_repository.tcl:466
+msgid "Clone"
 msgstr ""
 
-#: lib/choose_font.tcl:93
-msgid "Font Example"
+#: lib/choose_repository.tcl:479
+msgid "Source Location:"
 msgstr ""
 
-#: lib/choose_font.tcl:105
-msgid ""
-"This is example text.\n"
-"If you like this text, it can be your font."
+#: lib/choose_repository.tcl:490
+msgid "Target Directory:"
 msgstr ""
 
-#: lib/option.tcl:11
-#, tcl-format
-msgid "Invalid global encoding '%s'"
+#: lib/choose_repository.tcl:502
+msgid "Clone Type:"
 msgstr ""
 
-#: lib/option.tcl:19
-#, tcl-format
-msgid "Invalid repo encoding '%s'"
+#: lib/choose_repository.tcl:508
+msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
 msgstr ""
 
-#: lib/option.tcl:119
-msgid "Restore Defaults"
+#: lib/choose_repository.tcl:514
+msgid "Full Copy (Slower, Redundant Backup)"
 msgstr ""
 
-#: lib/option.tcl:123
-msgid "Save"
+#: lib/choose_repository.tcl:520
+msgid "Shared (Fastest, Not Recommended, No Backup)"
 msgstr ""
 
-#: lib/option.tcl:133
+#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
+#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
+#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
 #, tcl-format
-msgid "%s Repository"
-msgstr ""
-
-#: 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"
+msgid "Not a Git repository: %s"
 msgstr ""
 
-#: lib/option.tcl:144
-msgid "Merge Verbosity"
+#: lib/choose_repository.tcl:592
+msgid "Standard only available for local repository."
 msgstr ""
 
-#: lib/option.tcl:145
-msgid "Show Diffstat After Merge"
+#: lib/choose_repository.tcl:596
+msgid "Shared only available for local repository."
 msgstr ""
 
-#: lib/option.tcl:146
-msgid "Use Merge Tool"
+#: lib/choose_repository.tcl:617
+#, tcl-format
+msgid "Location %s already exists."
 msgstr ""
 
-#: lib/option.tcl:148
-msgid "Trust File Modification Timestamps"
+#: lib/choose_repository.tcl:628
+msgid "Failed to configure origin"
 msgstr ""
 
-#: lib/option.tcl:149
-msgid "Prune Tracking Branches During Fetch"
+#: lib/choose_repository.tcl:640
+msgid "Counting objects"
 msgstr ""
 
-#: lib/option.tcl:150
-msgid "Match Tracking Branches"
+#: lib/choose_repository.tcl:641
+msgid "buckets"
 msgstr ""
 
-#: lib/option.tcl:151
-msgid "Use Textconv For Diffs and Blames"
+#: lib/choose_repository.tcl:665
+#, tcl-format
+msgid "Unable to copy objects/info/alternates: %s"
 msgstr ""
 
-#: lib/option.tcl:152
-msgid "Blame Copy Only On Changed Files"
+#: lib/choose_repository.tcl:701
+#, tcl-format
+msgid "Nothing to clone from %s."
 msgstr ""
 
-#: lib/option.tcl:153
-msgid "Maximum Length of Recent Repositories List"
+#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
+#: lib/choose_repository.tcl:929
+msgid "The 'master' branch has not been initialized."
 msgstr ""
 
-#: lib/option.tcl:154
-msgid "Minimum Letters To Blame Copy On"
+#: lib/choose_repository.tcl:716
+msgid "Hardlinks are unavailable.  Falling back to copying."
 msgstr ""
 
-#: lib/option.tcl:155
-msgid "Blame History Context Radius (days)"
+#: lib/choose_repository.tcl:728
+#, tcl-format
+msgid "Cloning from %s"
 msgstr ""
 
-#: lib/option.tcl:156
-msgid "Number of Diff Context Lines"
+#: lib/choose_repository.tcl:759
+msgid "Copying objects"
 msgstr ""
 
-#: lib/option.tcl:157
-msgid "Additional Diff Parameters"
+#: lib/choose_repository.tcl:760
+msgid "KiB"
 msgstr ""
 
-#: lib/option.tcl:158
-msgid "Commit Message Text Width"
+#: lib/choose_repository.tcl:784
+#, tcl-format
+msgid "Unable to copy object: %s"
 msgstr ""
 
-#: lib/option.tcl:159
-msgid "New Branch Name Template"
+#: lib/choose_repository.tcl:794
+msgid "Linking objects"
 msgstr ""
 
-#: lib/option.tcl:160
-msgid "Default File Contents Encoding"
+#: lib/choose_repository.tcl:795
+msgid "objects"
 msgstr ""
 
-#: lib/option.tcl:161
-msgid "Warn before committing to a detached head"
+#: lib/choose_repository.tcl:803
+#, tcl-format
+msgid "Unable to hardlink object: %s"
 msgstr ""
 
-#: lib/option.tcl:162
-msgid "Staging of untracked files"
+#: lib/choose_repository.tcl:858
+msgid "Cannot fetch branches and objects.  See console output for details."
 msgstr ""
 
-#: lib/option.tcl:163
-msgid "Show untracked files"
+#: lib/choose_repository.tcl:869
+msgid "Cannot fetch tags.  See console output for details."
 msgstr ""
 
-#: lib/option.tcl:164
-msgid "Tab spacing"
+#: lib/choose_repository.tcl:893
+msgid "Cannot determine HEAD.  See console output for details."
 msgstr ""
 
-#: lib/option.tcl:182 lib/option.tcl:197 lib/option.tcl:220 lib/option.tcl:282
-#: lib/database.tcl:57
+#: lib/choose_repository.tcl:902
 #, tcl-format
-msgid "%s:"
-msgstr ""
-
-#: lib/option.tcl:210
-msgid "Change"
+msgid "Unable to cleanup %s"
 msgstr ""
 
-#: lib/option.tcl:254
-msgid "Spelling Dictionary:"
+#: lib/choose_repository.tcl:908
+msgid "Clone failed."
 msgstr ""
 
-#: lib/option.tcl:284
-msgid "Change Font"
+#: lib/choose_repository.tcl:915
+msgid "No default branch obtained."
 msgstr ""
 
-#: lib/option.tcl:288
+#: lib/choose_repository.tcl:926
 #, tcl-format
-msgid "Choose %s"
+msgid "Cannot resolve %s as a commit."
 msgstr ""
 
-#: lib/option.tcl:294
-msgid "pt."
+#: lib/choose_repository.tcl:938
+msgid "Creating working directory"
 msgstr ""
 
-#: lib/option.tcl:308
-msgid "Preferences"
+#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
+#: lib/index.tcl:198
+msgid "files"
 msgstr ""
 
-#: lib/option.tcl:345
-msgid "Failed to completely save options:"
+#: lib/choose_repository.tcl:968
+msgid "Initial file checkout failed."
 msgstr ""
 
-#: lib/encoding.tcl:443
-msgid "Default"
+#: lib/choose_repository.tcl:1011
+msgid "Open"
 msgstr ""
 
-#: lib/encoding.tcl:448
-#, tcl-format
-msgid "System (%s)"
+#: lib/choose_repository.tcl:1021
+msgid "Repository:"
 msgstr ""
 
-#: lib/encoding.tcl:459 lib/encoding.tcl:465
-msgid "Other"
+#: lib/choose_repository.tcl:1072
+#, tcl-format
+msgid "Failed to open repository %s:"
 msgstr ""
 
-#: lib/tools.tcl:76
-#, tcl-format
-msgid "Running %s requires a selected file."
+#: lib/choose_rev.tcl:53
+msgid "This Detached Checkout"
 msgstr ""
 
-#: lib/tools.tcl:92
-#, tcl-format
-msgid "Are you sure you want to run %1$s on file \"%2$s\"?"
+#: lib/choose_rev.tcl:60
+msgid "Revision Expression:"
 msgstr ""
 
-#: lib/tools.tcl:96
-#, tcl-format
-msgid "Are you sure you want to run %s?"
+#: lib/choose_rev.tcl:74
+msgid "Local Branch"
 msgstr ""
 
-#: lib/tools.tcl:118
-#, tcl-format
-msgid "Tool: %s"
+#: lib/choose_rev.tcl:79
+msgid "Tracking Branch"
 msgstr ""
 
-#: lib/tools.tcl:119
-#, tcl-format
-msgid "Running: %s"
+#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538
+msgid "Tag"
 msgstr ""
 
-#: lib/tools.tcl:158
+#: lib/choose_rev.tcl:317
 #, tcl-format
-msgid "Tool completed successfully: %s"
+msgid "Invalid revision: %s"
 msgstr ""
 
-#: lib/tools.tcl:160
-#, tcl-format
-msgid "Tool failed: %s"
+#: lib/choose_rev.tcl:338
+msgid "No revision selected."
 msgstr ""
 
-#: lib/mergetool.tcl:8
-msgid "Force resolution to the base version?"
+#: lib/choose_rev.tcl:346
+msgid "Revision expression is empty."
 msgstr ""
 
-#: lib/mergetool.tcl:9
-msgid "Force resolution to this branch?"
+#: lib/choose_rev.tcl:531
+msgid "Updated"
 msgstr ""
 
-#: lib/mergetool.tcl:10
-msgid "Force resolution to the other branch?"
+#: lib/choose_rev.tcl:559
+msgid "URL"
 msgstr ""
 
-#: lib/mergetool.tcl:14
-#, tcl-format
+#: lib/commit.tcl:9
 msgid ""
-"Note that the diff shows only conflicting changes.\n"
-"\n"
-"%s will be overwritten.\n"
+"There is nothing to amend.\n"
 "\n"
-"This operation can be undone only by restarting the merge."
-msgstr ""
-
-#: lib/mergetool.tcl:45
-#, tcl-format
-msgid "File %s seems to have unresolved conflicts, still stage?"
+"You are about to create the initial commit.  There is no commit before this "
+"to amend.\n"
 msgstr ""
 
-#: lib/mergetool.tcl:60
-#, tcl-format
-msgid "Adding resolution for %s"
+#: lib/commit.tcl:18
+msgid ""
+"Cannot amend while merging.\n"
+"\n"
+"You are currently in the middle of a merge that has not been fully "
+"completed.  You cannot amend the prior commit unless you first abort the "
+"current merge activity.\n"
 msgstr ""
 
-#: lib/mergetool.tcl:141
-msgid "Cannot resolve deletion or link conflicts using a tool"
+#: lib/commit.tcl:48
+msgid "Error loading commit data for amend:"
 msgstr ""
 
-#: lib/mergetool.tcl:146
-msgid "Conflict file does not exist"
+#: lib/commit.tcl:75
+msgid "Unable to obtain your identity:"
 msgstr ""
 
-#: lib/mergetool.tcl:246
-#, tcl-format
-msgid "Not a GUI merge tool: '%s'"
+#: lib/commit.tcl:80
+msgid "Invalid GIT_COMMITTER_IDENT:"
 msgstr ""
 
-#: lib/mergetool.tcl:275
+#: lib/commit.tcl:129
 #, tcl-format
-msgid "Unsupported merge tool '%s'"
-msgstr ""
-
-#: lib/mergetool.tcl:310
-msgid "Merge tool is already running, terminate it?"
+msgid "warning: Tcl does not support encoding '%s'."
 msgstr ""
 
-#: lib/mergetool.tcl:330
-#, tcl-format
+#: lib/commit.tcl:149
 msgid ""
-"Error retrieving versions:\n"
-"%s"
+"Last scanned state does not match repository state.\n"
+"\n"
+"Another Git program has modified this repository since the last scan.  A "
+"rescan must be performed before another commit can be created.\n"
+"\n"
+"The rescan will be automatically started now.\n"
 msgstr ""
 
-#: lib/mergetool.tcl:350
+#: lib/commit.tcl:172
 #, tcl-format
 msgid ""
-"Could not start the merge tool:\n"
+"Unmerged files cannot be committed.\n"
 "\n"
-"%s"
-msgstr ""
-
-#: lib/mergetool.tcl:354
-msgid "Running merge tool..."
-msgstr ""
-
-#: lib/mergetool.tcl:382 lib/mergetool.tcl:390
-msgid "Merge tool failed."
+"File %s has merge conflicts.  You must resolve them and stage the file "
+"before committing.\n"
 msgstr ""
 
-#: lib/tools_dlg.tcl:22
+#: lib/commit.tcl:180
 #, tcl-format
-msgid "%s (%s): Add Tool"
-msgstr ""
-
-#: lib/tools_dlg.tcl:28
-msgid "Add New Tool Command"
-msgstr ""
-
-#: lib/tools_dlg.tcl:34
-msgid "Add globally"
+msgid ""
+"Unknown file state %s detected.\n"
+"\n"
+"File %s cannot be committed by this program.\n"
 msgstr ""
 
-#: lib/tools_dlg.tcl:46
-msgid "Tool Details"
+#: lib/commit.tcl:188
+msgid ""
+"No changes to commit.\n"
+"\n"
+"You must stage at least 1 file before you can commit.\n"
 msgstr ""
 
-#: lib/tools_dlg.tcl:49
-msgid "Use '/' separators to create a submenu tree:"
+#: lib/commit.tcl:203
+msgid ""
+"Please supply a commit message.\n"
+"\n"
+"A good commit message has the following format:\n"
+"\n"
+"- First line: Describe in one sentence what you did.\n"
+"- Second line: Blank\n"
+"- Remaining lines: Describe why this change is good.\n"
 msgstr ""
 
-#: lib/tools_dlg.tcl:60
-msgid "Command:"
+#: lib/commit.tcl:234
+msgid "Calling pre-commit hook..."
 msgstr ""
 
-#: lib/tools_dlg.tcl:71
-msgid "Show a dialog before running"
+#: lib/commit.tcl:249
+msgid "Commit declined by pre-commit hook."
 msgstr ""
 
-#: lib/tools_dlg.tcl:77
-msgid "Ask the user to select a revision (sets $REVISION)"
+#: lib/commit.tcl:272
+msgid "Calling commit-msg hook..."
 msgstr ""
 
-#: lib/tools_dlg.tcl:82
-msgid "Ask the user for additional arguments (sets $ARGS)"
+#: lib/commit.tcl:287
+msgid "Commit declined by commit-msg hook."
 msgstr ""
 
-#: lib/tools_dlg.tcl:89
-msgid "Don't show the command output window"
+#: lib/commit.tcl:300
+msgid "Committing changes..."
 msgstr ""
 
-#: lib/tools_dlg.tcl:94
-msgid "Run only if a diff is selected ($FILENAME not empty)"
+#: lib/commit.tcl:316
+msgid "write-tree failed:"
 msgstr ""
 
-#: lib/tools_dlg.tcl:118
-msgid "Please supply a name for the tool."
+#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
+msgid "Commit failed."
 msgstr ""
 
-#: lib/tools_dlg.tcl:126
+#: lib/commit.tcl:334
 #, tcl-format
-msgid "Tool '%s' already exists."
+msgid "Commit %s appears to be corrupt"
 msgstr ""
 
-#: lib/tools_dlg.tcl:148
-#, tcl-format
+#: lib/commit.tcl:339
 msgid ""
-"Could not add tool:\n"
-"%s"
-msgstr ""
-
-#: lib/tools_dlg.tcl:187
-#, tcl-format
-msgid "%s (%s): Remove Tool"
-msgstr ""
-
-#: lib/tools_dlg.tcl:193
-msgid "Remove Tool Commands"
+"No changes to commit.\n"
+"\n"
+"No files were modified by this commit and it was not a merge commit.\n"
+"\n"
+"A rescan will be automatically started now.\n"
 msgstr ""
 
-#: lib/tools_dlg.tcl:198
-msgid "Remove"
+#: lib/commit.tcl:346
+msgid "No changes to commit."
 msgstr ""
 
-#: lib/tools_dlg.tcl:231
-msgid "(Blue denotes repository-local tools)"
+#: lib/commit.tcl:360
+msgid "commit-tree failed:"
 msgstr ""
 
-#: lib/tools_dlg.tcl:283
-#, tcl-format
-msgid "%s (%s):"
+#: lib/commit.tcl:381
+msgid "update-ref failed:"
 msgstr ""
 
-#: lib/tools_dlg.tcl:292
+#: lib/commit.tcl:469
 #, tcl-format
-msgid "Run Command: %s"
-msgstr ""
-
-#: lib/tools_dlg.tcl:306
-msgid "Arguments"
-msgstr ""
-
-#: lib/tools_dlg.tcl:341
-msgid "OK"
-msgstr ""
-
-#: lib/search.tcl:48
-msgid "Find:"
-msgstr ""
-
-#: lib/search.tcl:50
-msgid "Next"
-msgstr ""
-
-#: lib/search.tcl:51
-msgid "Prev"
-msgstr ""
-
-#: lib/search.tcl:52
-msgid "RegExp"
+msgid "Created commit %s: %s"
 msgstr ""
 
-#: lib/search.tcl:54
-msgid "Case"
+#: lib/console.tcl:59
+msgid "Working... please wait..."
 msgstr ""
 
-#: lib/shortcut.tcl:8 lib/shortcut.tcl:43 lib/shortcut.tcl:75
-#, tcl-format
-msgid "%s (%s): Create Desktop Icon"
+#: lib/console.tcl:186
+msgid "Success"
 msgstr ""
 
-#: lib/shortcut.tcl:24 lib/shortcut.tcl:65
-msgid "Cannot write shortcut:"
+#: lib/console.tcl:200
+msgid "Error: Command Failed"
 msgstr ""
 
-#: lib/shortcut.tcl:140
-msgid "Cannot write icon:"
+#: lib/database.tcl:43
+msgid "Number of loose objects"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:29
-#, tcl-format
-msgid "%s (%s): Delete Branch Remotely"
+#: lib/database.tcl:44
+msgid "Disk space used by loose objects"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:34
-msgid "Delete Branch Remotely"
+#: lib/database.tcl:45
+msgid "Number of packed objects"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:48
-msgid "From Repository"
+#: lib/database.tcl:46
+msgid "Number of packs"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:88
-msgid "Branches"
+#: lib/database.tcl:47
+msgid "Disk space used by packed objects"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:110
-msgid "Delete Only If"
+#: lib/database.tcl:48
+msgid "Packed objects waiting for pruning"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:112
-msgid "Merged Into:"
+#: lib/database.tcl:49
+msgid "Garbage files"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:120 lib/branch_delete.tcl:53
-msgid "Always (Do not perform merge checks)"
+#: lib/database.tcl:72
+msgid "Compressing the object database"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:153
-msgid "A branch is required for 'Merged Into'."
+#: lib/database.tcl:83
+msgid "Verifying the object database with fsck-objects"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:185
+#: lib/database.tcl:107
 #, tcl-format
 msgid ""
-"The following branches are not completely merged into %s:\n"
+"This repository currently has approximately %i loose objects.\n"
 "\n"
-" - %s"
+"To maintain optimal performance it is strongly recommended that you compress "
+"the database.\n"
+"\n"
+"Compress the database now?"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:190
+#: lib/date.tcl:25
 #, tcl-format
-msgid ""
-"One or more of the merge tests failed because you have not fetched the "
-"necessary commits.  Try fetching from %s first."
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:208
-msgid "Please select one or more branches to delete."
+msgid "Invalid date from Git: %s"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:218 lib/branch_delete.tcl:115
+#: lib/diff.tcl:64
+#, tcl-format
 msgid ""
-"Recovering deleted branches is difficult.\n"
+"No differences detected.\n"
 "\n"
-"Delete the selected branches?"
+"%s has no changes.\n"
+"\n"
+"The modification date of this file was updated by another application, but "
+"the content within the file was not changed.\n"
+"\n"
+"A rescan will be automatically started to find other files which may have "
+"the same state."
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:227
+#: lib/diff.tcl:104
 #, tcl-format
-msgid "Deleting branches from %s"
+msgid "Loading diff of %s..."
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:300
-msgid "No repository selected."
+#: lib/diff.tcl:125
+msgid ""
+"LOCAL: deleted\n"
+"REMOTE:\n"
 msgstr ""
 
-#: lib/remote_branch_delete.tcl:305
-#, tcl-format
-msgid "Scanning %s..."
+#: lib/diff.tcl:130
+msgid ""
+"REMOTE: deleted\n"
+"LOCAL:\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:45
-msgid "Git Gui"
+#: lib/diff.tcl:137
+msgid "LOCAL:\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:104 lib/choose_repository.tcl:427
-msgid "Create New Repository"
+#: lib/diff.tcl:140
+msgid "REMOTE:\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:110
-msgid "New..."
+#: lib/diff.tcl:202 lib/diff.tcl:319
+#, tcl-format
+msgid "Unable to display %s"
 msgstr ""
 
-#: lib/choose_repository.tcl:117 lib/choose_repository.tcl:511
-msgid "Clone Existing Repository"
+#: lib/diff.tcl:203
+msgid "Error loading file:"
 msgstr ""
 
-#: lib/choose_repository.tcl:128
-msgid "Clone..."
+#: lib/diff.tcl:210
+msgid "Git Repository (subproject)"
 msgstr ""
 
-#: lib/choose_repository.tcl:135 lib/choose_repository.tcl:1105
-msgid "Open Existing Repository"
+#: lib/diff.tcl:222
+msgid "* Binary file (not showing content)."
 msgstr ""
 
-#: lib/choose_repository.tcl:141
-msgid "Open..."
+#: lib/diff.tcl:227
+#, tcl-format
+msgid ""
+"* Untracked file is %d bytes.\n"
+"* Showing only first %d bytes.\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:154
-msgid "Recent Repositories"
+#: lib/diff.tcl:233
+#, tcl-format
+msgid ""
+"\n"
+"* Untracked file clipped here by %s.\n"
+"* To see the entire file, use an external editor.\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:164
-msgid "Open Recent Repository:"
+#: lib/diff.tcl:482
+msgid "Failed to unstage selected hunk."
 msgstr ""
 
-#: lib/choose_repository.tcl:331 lib/choose_repository.tcl:338
-#: lib/choose_repository.tcl:345
-#, tcl-format
-msgid "Failed to create repository %s:"
+#: lib/diff.tcl:489
+msgid "Failed to stage selected hunk."
 msgstr ""
 
-#: lib/choose_repository.tcl:422 lib/branch_create.tcl:33
-msgid "Create"
+#: lib/diff.tcl:568
+msgid "Failed to unstage selected line."
 msgstr ""
 
-#: lib/choose_repository.tcl:432
-msgid "Directory:"
+#: lib/diff.tcl:576
+msgid "Failed to stage selected line."
 msgstr ""
 
-#: lib/choose_repository.tcl:462 lib/choose_repository.tcl:588
-#: lib/choose_repository.tcl:1139
-msgid "Git Repository"
+#: lib/encoding.tcl:443
+msgid "Default"
 msgstr ""
 
-#: lib/choose_repository.tcl:487
+#: lib/encoding.tcl:448
 #, tcl-format
-msgid "Directory %s already exists."
+msgid "System (%s)"
 msgstr ""
 
-#: lib/choose_repository.tcl:491
-#, tcl-format
-msgid "File %s already exists."
+#: lib/encoding.tcl:459 lib/encoding.tcl:465
+msgid "Other"
 msgstr ""
 
-#: lib/choose_repository.tcl:506
-msgid "Clone"
+#: lib/error.tcl:20 lib/error.tcl:114
+msgid "error"
 msgstr ""
 
-#: lib/choose_repository.tcl:519
-msgid "Source Location:"
+#: lib/error.tcl:36
+msgid "warning"
 msgstr ""
 
-#: lib/choose_repository.tcl:528
-msgid "Target Directory:"
+#: lib/error.tcl:94
+msgid "You must correct the above errors before committing."
 msgstr ""
 
-#: lib/choose_repository.tcl:538
-msgid "Clone Type:"
+#: lib/index.tcl:6
+msgid "Unable to unlock the index."
 msgstr ""
 
-#: lib/choose_repository.tcl:543
-msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
+#: lib/index.tcl:15
+msgid "Index Error"
 msgstr ""
 
-#: lib/choose_repository.tcl:548
-msgid "Full Copy (Slower, Redundant Backup)"
+#: lib/index.tcl:17
+msgid ""
+"Updating the Git index failed.  A rescan will be automatically started to "
+"resynchronize git-gui."
 msgstr ""
 
-#: lib/choose_repository.tcl:553
-msgid "Shared (Fastest, Not Recommended, No Backup)"
+#: lib/index.tcl:28
+msgid "Continue"
 msgstr ""
 
-#: lib/choose_repository.tcl:560
-msgid "Recursively clone submodules too"
+#: lib/index.tcl:31
+msgid "Unlock Index"
 msgstr ""
 
-#: lib/choose_repository.tcl:594 lib/choose_repository.tcl:641
-#: lib/choose_repository.tcl:790 lib/choose_repository.tcl:864
-#: lib/choose_repository.tcl:1145 lib/choose_repository.tcl:1153
+#: lib/index.tcl:289
 #, tcl-format
-msgid "Not a Git repository: %s"
+msgid "Unstaging %s from commit"
 msgstr ""
 
-#: lib/choose_repository.tcl:630
-msgid "Standard only available for local repository."
+#: lib/index.tcl:328
+msgid "Ready to commit."
 msgstr ""
 
-#: lib/choose_repository.tcl:634
-msgid "Shared only available for local repository."
+#: lib/index.tcl:341
+#, tcl-format
+msgid "Adding %s"
 msgstr ""
 
-#: lib/choose_repository.tcl:655
+#: lib/index.tcl:398
 #, tcl-format
-msgid "Location %s already exists."
+msgid "Revert changes in file %s?"
 msgstr ""
 
-#: lib/choose_repository.tcl:666
-msgid "Failed to configure origin"
+#: lib/index.tcl:400
+#, tcl-format
+msgid "Revert changes in these %i files?"
 msgstr ""
 
-#: lib/choose_repository.tcl:678
-msgid "Counting objects"
+#: lib/index.tcl:408
+msgid "Any unstaged changes will be permanently lost by the revert."
 msgstr ""
 
-#: lib/choose_repository.tcl:679
-msgid "buckets"
+#: lib/index.tcl:411
+msgid "Do Nothing"
 msgstr ""
 
-#: lib/choose_repository.tcl:703
-#, tcl-format
-msgid "Unable to copy objects/info/alternates: %s"
+#: lib/index.tcl:429
+msgid "Reverting selected files"
 msgstr ""
 
-#: lib/choose_repository.tcl:740
+#: lib/index.tcl:433
 #, tcl-format
-msgid "Nothing to clone from %s."
+msgid "Reverting %s"
 msgstr ""
 
-#: lib/choose_repository.tcl:742 lib/choose_repository.tcl:962
-#: lib/choose_repository.tcl:974
-msgid "The 'master' branch has not been initialized."
+#: lib/merge.tcl:13
+msgid ""
+"Cannot merge while amending.\n"
+"\n"
+"You must finish amending this commit before starting any type of merge.\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:755
-msgid "Hardlinks are unavailable.  Falling back to copying."
+#: lib/merge.tcl:27
+msgid ""
+"Last scanned state does not match repository state.\n"
+"\n"
+"Another Git program has modified this repository since the last scan.  A "
+"rescan must be performed before a merge can be performed.\n"
+"\n"
+"The rescan will be automatically started now.\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:769
+#: lib/merge.tcl:45
 #, tcl-format
-msgid "Cloning from %s"
+msgid ""
+"You are in the middle of a conflicted merge.\n"
+"\n"
+"File %s has merge conflicts.\n"
+"\n"
+"You must resolve them, stage the file, and commit to complete the current "
+"merge.  Only then can you begin another merge.\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:800
-msgid "Copying objects"
+#: lib/merge.tcl:55
+#, tcl-format
+msgid ""
+"You are in the middle of a change.\n"
+"\n"
+"File %s is modified.\n"
+"\n"
+"You should complete the current commit before starting a merge.  Doing so "
+"will help you abort a failed merge, should the need arise.\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:801
-msgid "KiB"
+#: lib/merge.tcl:107
+#, tcl-format
+msgid "%s of %s"
 msgstr ""
 
-#: lib/choose_repository.tcl:825
+#: lib/merge.tcl:120
 #, tcl-format
-msgid "Unable to copy object: %s"
+msgid "Merging %s and %s..."
 msgstr ""
 
-#: lib/choose_repository.tcl:837
-msgid "Linking objects"
+#: lib/merge.tcl:131
+msgid "Merge completed successfully."
 msgstr ""
 
-#: lib/choose_repository.tcl:838
-msgid "objects"
+#: lib/merge.tcl:133
+msgid "Merge failed.  Conflict resolution is required."
 msgstr ""
 
-#: lib/choose_repository.tcl:846
+#: lib/merge.tcl:158
 #, tcl-format
-msgid "Unable to hardlink object: %s"
-msgstr ""
-
-#: lib/choose_repository.tcl:903
-msgid "Cannot fetch branches and objects.  See console output for details."
+msgid "Merge Into %s"
 msgstr ""
 
-#: lib/choose_repository.tcl:914
-msgid "Cannot fetch tags.  See console output for details."
+#: lib/merge.tcl:177
+msgid "Revision To Merge"
 msgstr ""
 
-#: lib/choose_repository.tcl:938
-msgid "Cannot determine HEAD.  See console output for details."
+#: lib/merge.tcl:212
+msgid ""
+"Cannot abort while amending.\n"
+"\n"
+"You must finish amending this commit.\n"
 msgstr ""
 
-#: lib/choose_repository.tcl:947
-#, tcl-format
-msgid "Unable to cleanup %s"
+#: lib/merge.tcl:222
+msgid ""
+"Abort merge?\n"
+"\n"
+"Aborting the current merge will cause *ALL* uncommitted changes to be lost.\n"
+"\n"
+"Continue with aborting the current merge?"
 msgstr ""
 
-#: lib/choose_repository.tcl:953
-msgid "Clone failed."
+#: lib/merge.tcl:228
+msgid ""
+"Reset changes?\n"
+"\n"
+"Resetting the changes will cause *ALL* uncommitted changes to be lost.\n"
+"\n"
+"Continue with resetting the current changes?"
 msgstr ""
 
-#: lib/choose_repository.tcl:960
-msgid "No default branch obtained."
+#: lib/merge.tcl:239
+msgid "Aborting"
 msgstr ""
 
-#: lib/choose_repository.tcl:971
-#, tcl-format
-msgid "Cannot resolve %s as a commit."
+#: lib/merge.tcl:239
+msgid "files reset"
 msgstr ""
 
-#: lib/choose_repository.tcl:998
-msgid "Creating working directory"
+#: lib/merge.tcl:267
+msgid "Abort failed."
 msgstr ""
 
-#: lib/choose_repository.tcl:1028
-msgid "Initial file checkout failed."
+#: lib/merge.tcl:269
+msgid "Abort completed.  Ready."
 msgstr ""
 
-#: lib/choose_repository.tcl:1072
-msgid "Cloning submodules"
+#: lib/mergetool.tcl:8
+msgid "Force resolution to the base version?"
 msgstr ""
 
-#: lib/choose_repository.tcl:1087
-msgid "Cannot clone submodules."
+#: lib/mergetool.tcl:9
+msgid "Force resolution to this branch?"
 msgstr ""
 
-#: lib/choose_repository.tcl:1110
-msgid "Repository:"
+#: lib/mergetool.tcl:10
+msgid "Force resolution to the other branch?"
 msgstr ""
 
-#: lib/choose_repository.tcl:1159
+#: lib/mergetool.tcl:14
 #, tcl-format
-msgid "Failed to open repository %s:"
-msgstr ""
-
-#: lib/about.tcl:26
-msgid "git-gui - a graphical user interface for Git."
+msgid ""
+"Note that the diff shows only conflicting changes.\n"
+"\n"
+"%s will be overwritten.\n"
+"\n"
+"This operation can be undone only by restarting the merge."
 msgstr ""
 
-#: lib/blame.tcl:74
+#: lib/mergetool.tcl:45
 #, tcl-format
-msgid "%s (%s): File Viewer"
-msgstr ""
-
-#: lib/blame.tcl:80
-msgid "Commit:"
+msgid "File %s seems to have unresolved conflicts, still stage?"
 msgstr ""
 
-#: lib/blame.tcl:282
-msgid "Copy Commit"
+#: lib/mergetool.tcl:60
+#, tcl-format
+msgid "Adding resolution for %s"
 msgstr ""
 
-#: lib/blame.tcl:286
-msgid "Find Text..."
+#: lib/mergetool.tcl:141
+msgid "Cannot resolve deletion or link conflicts using a tool"
 msgstr ""
 
-#: lib/blame.tcl:290
-msgid "Goto Line..."
+#: lib/mergetool.tcl:146
+msgid "Conflict file does not exist"
 msgstr ""
 
-#: lib/blame.tcl:299
-msgid "Do Full Copy Detection"
+#: lib/mergetool.tcl:264
+#, tcl-format
+msgid "Not a GUI merge tool: '%s'"
 msgstr ""
 
-#: lib/blame.tcl:303
-msgid "Show History Context"
+#: lib/mergetool.tcl:268
+#, tcl-format
+msgid "Unsupported merge tool '%s'"
 msgstr ""
 
-#: lib/blame.tcl:306
-msgid "Blame Parent Commit"
+#: lib/mergetool.tcl:303
+msgid "Merge tool is already running, terminate it?"
 msgstr ""
 
-#: lib/blame.tcl:468
+#: lib/mergetool.tcl:323
 #, tcl-format
-msgid "Reading %s..."
+msgid ""
+"Error retrieving versions:\n"
+"%s"
 msgstr ""
 
-#: lib/blame.tcl:596
-msgid "Loading copy/move tracking annotations..."
+#: lib/mergetool.tcl:343
+#, tcl-format
+msgid ""
+"Could not start the merge tool:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: lib/blame.tcl:613
-msgid "lines annotated"
+#: lib/mergetool.tcl:347
+msgid "Running merge tool..."
 msgstr ""
 
-#: lib/blame.tcl:815
-msgid "Loading original location annotations..."
+#: lib/mergetool.tcl:375 lib/mergetool.tcl:383
+msgid "Merge tool failed."
 msgstr ""
 
-#: lib/blame.tcl:818
-msgid "Annotation complete."
+#: lib/option.tcl:11
+#, tcl-format
+msgid "Invalid global encoding '%s'"
 msgstr ""
 
-#: lib/blame.tcl:849
-msgid "Busy"
+#: lib/option.tcl:19
+#, tcl-format
+msgid "Invalid repo encoding '%s'"
 msgstr ""
 
-#: lib/blame.tcl:850
-msgid "Annotation process is already running."
+#: lib/option.tcl:117
+msgid "Restore Defaults"
 msgstr ""
 
-#: lib/blame.tcl:889
-msgid "Running thorough copy detection..."
+#: lib/option.tcl:121
+msgid "Save"
 msgstr ""
 
-#: lib/blame.tcl:957
-msgid "Loading annotation..."
+#: lib/option.tcl:131
+#, tcl-format
+msgid "%s Repository"
 msgstr ""
 
-#: lib/blame.tcl:1010
-msgid "Author:"
+#: lib/option.tcl:132
+msgid "Global (All Repositories)"
 msgstr ""
 
-#: lib/blame.tcl:1014
-msgid "Committer:"
+#: lib/option.tcl:138
+msgid "User Name"
 msgstr ""
 
-#: lib/blame.tcl:1019
-msgid "Original File:"
+#: lib/option.tcl:139
+msgid "Email Address"
 msgstr ""
 
-#: lib/blame.tcl:1067
-msgid "Cannot find HEAD commit:"
+#: lib/option.tcl:141
+msgid "Summarize Merge Commits"
 msgstr ""
 
-#: lib/blame.tcl:1122
-msgid "Cannot find parent commit:"
+#: lib/option.tcl:142
+msgid "Merge Verbosity"
 msgstr ""
 
-#: lib/blame.tcl:1137
-msgid "Unable to display parent"
+#: lib/option.tcl:143
+msgid "Show Diffstat After Merge"
 msgstr ""
 
-#: lib/blame.tcl:1138 lib/diff.tcl:345
-msgid "Error loading diff:"
+#: lib/option.tcl:144
+msgid "Use Merge Tool"
 msgstr ""
 
-#: lib/blame.tcl:1279
-msgid "Originally By:"
+#: lib/option.tcl:146
+msgid "Trust File Modification Timestamps"
 msgstr ""
 
-#: lib/blame.tcl:1285
-msgid "In File:"
+#: lib/option.tcl:147
+msgid "Prune Tracking Branches During Fetch"
 msgstr ""
 
-#: lib/blame.tcl:1290
-msgid "Copied Or Moved Here By:"
+#: lib/option.tcl:148
+msgid "Match Tracking Branches"
 msgstr ""
 
-#: lib/diff.tcl:77
-#, tcl-format
-msgid ""
-"No differences detected.\n"
-"\n"
-"%s has no changes.\n"
-"\n"
-"The modification date of this file was updated by another application, but "
-"the content within the file was not changed.\n"
-"\n"
-"A rescan will be automatically started to find other files which may have "
-"the same state."
+#: lib/option.tcl:149
+msgid "Blame Copy Only On Changed Files"
 msgstr ""
 
-#: lib/diff.tcl:117
-#, tcl-format
-msgid "Loading diff of %s..."
+#: lib/option.tcl:150
+msgid "Minimum Letters To Blame Copy On"
 msgstr ""
 
-#: lib/diff.tcl:143
-msgid ""
-"LOCAL: deleted\n"
-"REMOTE:\n"
+#: lib/option.tcl:151
+msgid "Blame History Context Radius (days)"
 msgstr ""
 
-#: lib/diff.tcl:148
-msgid ""
-"REMOTE: deleted\n"
-"LOCAL:\n"
+#: lib/option.tcl:152
+msgid "Number of Diff Context Lines"
 msgstr ""
 
-#: lib/diff.tcl:155
-msgid "LOCAL:\n"
+#: lib/option.tcl:153
+msgid "Commit Message Text Width"
 msgstr ""
 
-#: lib/diff.tcl:158
-msgid "REMOTE:\n"
+#: lib/option.tcl:154
+msgid "New Branch Name Template"
 msgstr ""
 
-#: lib/diff.tcl:220 lib/diff.tcl:344
-#, tcl-format
-msgid "Unable to display %s"
+#: lib/option.tcl:155
+msgid "Default File Contents Encoding"
 msgstr ""
 
-#: lib/diff.tcl:221
-msgid "Error loading file:"
+#: lib/option.tcl:203
+msgid "Change"
 msgstr ""
 
-#: lib/diff.tcl:227
-msgid "Git Repository (subproject)"
+#: lib/option.tcl:230
+msgid "Spelling Dictionary:"
 msgstr ""
 
-#: lib/diff.tcl:239
-msgid "* Binary file (not showing content)."
+#: lib/option.tcl:254
+msgid "Change Font"
 msgstr ""
 
-#: lib/diff.tcl:244
+#: lib/option.tcl:258
 #, tcl-format
-msgid ""
-"* Untracked file is %d bytes.\n"
-"* Showing only first %d bytes.\n"
+msgid "Choose %s"
 msgstr ""
 
-#: lib/diff.tcl:250
-#, tcl-format
-msgid ""
-"\n"
-"* Untracked file clipped here by %s.\n"
-"* To see the entire file, use an external editor.\n"
+#: lib/option.tcl:264
+msgid "pt."
 msgstr ""
 
-#: lib/diff.tcl:583
-msgid "Failed to unstage selected hunk."
+#: lib/option.tcl:278
+msgid "Preferences"
 msgstr ""
 
-#: lib/diff.tcl:591
-msgid "Failed to revert selected hunk."
+#: lib/option.tcl:314
+msgid "Failed to completely save options:"
 msgstr ""
 
-#: lib/diff.tcl:594
-msgid "Failed to stage selected hunk."
+#: lib/remote.tcl:163
+msgid "Remove Remote"
 msgstr ""
 
-#: lib/diff.tcl:687
-msgid "Failed to unstage selected line."
+#: lib/remote.tcl:168
+msgid "Prune from"
 msgstr ""
 
-#: lib/diff.tcl:696
-msgid "Failed to revert selected line."
+#: lib/remote.tcl:173
+msgid "Fetch from"
 msgstr ""
 
-#: lib/diff.tcl:700
-msgid "Failed to stage selected line."
+#: lib/remote.tcl:215
+msgid "Push to"
 msgstr ""
 
-#: lib/diff.tcl:889
-msgid "Failed to undo last revert."
+#: lib/remote_add.tcl:19
+msgid "Add Remote"
 msgstr ""
 
-#: lib/sshkey.tcl:34
-msgid "No keys found."
+#: lib/remote_add.tcl:24
+msgid "Add New Remote"
 msgstr ""
 
-#: lib/sshkey.tcl:37
-#, tcl-format
-msgid "Found a public key in: %s"
+#: lib/remote_add.tcl:28 lib/tools_dlg.tcl:36
+msgid "Add"
 msgstr ""
 
-#: lib/sshkey.tcl:43
-msgid "Generate Key"
+#: lib/remote_add.tcl:37
+msgid "Remote Details"
 msgstr ""
 
-#: lib/sshkey.tcl:61
-msgid "Copy To Clipboard"
+#: lib/remote_add.tcl:50
+msgid "Location:"
 msgstr ""
 
-#: lib/sshkey.tcl:75
-msgid "Your OpenSSH Public Key"
+#: lib/remote_add.tcl:62
+msgid "Further Action"
 msgstr ""
 
-#: lib/sshkey.tcl:83
-msgid "Generating..."
+#: lib/remote_add.tcl:65
+msgid "Fetch Immediately"
 msgstr ""
 
-#: lib/sshkey.tcl:89
-#, tcl-format
-msgid ""
-"Could not start ssh-keygen:\n"
-"\n"
-"%s"
+#: lib/remote_add.tcl:71
+msgid "Initialize Remote Repository and Push"
 msgstr ""
 
-#: lib/sshkey.tcl:116
-msgid "Generation failed."
+#: lib/remote_add.tcl:77
+msgid "Do Nothing Else Now"
 msgstr ""
 
-#: lib/sshkey.tcl:123
-msgid "Generation succeeded, but no keys found."
+#: lib/remote_add.tcl:101
+msgid "Please supply a remote name."
 msgstr ""
 
-#: lib/sshkey.tcl:126
+#: lib/remote_add.tcl:114
 #, tcl-format
-msgid "Your key is in: %s"
+msgid "'%s' is not an acceptable remote name."
 msgstr ""
 
-#: lib/branch_create.tcl:23
+#: lib/remote_add.tcl:125
 #, tcl-format
-msgid "%s (%s): Create Branch"
-msgstr ""
-
-#: lib/branch_create.tcl:28
-msgid "Create New Branch"
-msgstr ""
-
-#: lib/branch_create.tcl:42
-msgid "Branch Name"
-msgstr ""
-
-#: lib/branch_create.tcl:57
-msgid "Match Tracking Branch Name"
-msgstr ""
-
-#: lib/branch_create.tcl:66
-msgid "Starting Revision"
+msgid "Failed to add remote '%s' of location '%s'."
 msgstr ""
 
-#: lib/branch_create.tcl:72
-msgid "Update Existing Branch:"
+#: lib/remote_add.tcl:133 lib/transport.tcl:6
+#, tcl-format
+msgid "fetch %s"
 msgstr ""
 
-#: lib/branch_create.tcl:75
-msgid "No"
+#: lib/remote_add.tcl:134
+#, tcl-format
+msgid "Fetching the %s"
 msgstr ""
 
-#: lib/branch_create.tcl:80
-msgid "Fast Forward Only"
+#: lib/remote_add.tcl:157
+#, tcl-format
+msgid "Do not know how to initialize repository at location '%s'."
 msgstr ""
 
-#: lib/branch_create.tcl:97
-msgid "Checkout After Creation"
+#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:63
+#: lib/transport.tcl:81
+#, tcl-format
+msgid "push %s"
 msgstr ""
 
-#: lib/branch_create.tcl:132
-msgid "Please select a tracking branch."
+#: lib/remote_add.tcl:164
+#, tcl-format
+msgid "Setting up the %s (at %s)"
 msgstr ""
 
-#: lib/branch_create.tcl:141
-#, tcl-format
-msgid "Tracking branch %s is not a branch in the remote repository."
+#: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34
+msgid "Delete Branch Remotely"
 msgstr ""
 
-#: lib/console.tcl:59
-msgid "Working... please wait..."
+#: lib/remote_branch_delete.tcl:47
+msgid "From Repository"
 msgstr ""
 
-#: lib/console.tcl:186
-msgid "Success"
+#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:134
+msgid "Remote:"
 msgstr ""
 
-#: lib/console.tcl:200
-msgid "Error: Command Failed"
+#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:149
+msgid "Arbitrary Location:"
 msgstr ""
 
-#: lib/line.tcl:17
-msgid "Goto Line:"
+#: lib/remote_branch_delete.tcl:84
+msgid "Branches"
 msgstr ""
 
-#: lib/line.tcl:23
-msgid "Go"
+#: lib/remote_branch_delete.tcl:109
+msgid "Delete Only If"
 msgstr ""
 
-#: lib/choose_rev.tcl:52
-msgid "This Detached Checkout"
+#: lib/remote_branch_delete.tcl:111
+msgid "Merged Into:"
 msgstr ""
 
-#: lib/choose_rev.tcl:60
-msgid "Revision Expression:"
+#: lib/remote_branch_delete.tcl:152
+msgid "A branch is required for 'Merged Into'."
 msgstr ""
 
-#: lib/choose_rev.tcl:72
-msgid "Local Branch"
+#: lib/remote_branch_delete.tcl:184
+#, tcl-format
+msgid ""
+"The following branches are not completely merged into %s:\n"
+"\n"
+" - %s"
 msgstr ""
 
-#: lib/choose_rev.tcl:77
-msgid "Tracking Branch"
+#: lib/remote_branch_delete.tcl:189
+#, tcl-format
+msgid ""
+"One or more of the merge tests failed because you have not fetched the "
+"necessary commits.  Try fetching from %s first."
 msgstr ""
 
-#: lib/choose_rev.tcl:82 lib/choose_rev.tcl:544
-msgid "Tag"
+#: lib/remote_branch_delete.tcl:207
+msgid "Please select one or more branches to delete."
 msgstr ""
 
-#: lib/choose_rev.tcl:321
+#: lib/remote_branch_delete.tcl:226
 #, tcl-format
-msgid "Invalid revision: %s"
+msgid "Deleting branches from %s"
 msgstr ""
 
-#: lib/choose_rev.tcl:342
-msgid "No revision selected."
+#: lib/remote_branch_delete.tcl:292
+msgid "No repository selected."
 msgstr ""
 
-#: lib/choose_rev.tcl:350
-msgid "Revision expression is empty."
+#: lib/remote_branch_delete.tcl:297
+#, tcl-format
+msgid "Scanning %s..."
 msgstr ""
 
-#: lib/choose_rev.tcl:537
-msgid "Updated"
+#: lib/search.tcl:21
+msgid "Find:"
 msgstr ""
 
-#: lib/choose_rev.tcl:565
-msgid "URL"
+#: lib/search.tcl:23
+msgid "Next"
 msgstr ""
 
-#: lib/commit.tcl:9
-msgid ""
-"There is nothing to amend.\n"
-"\n"
-"You are about to create the initial commit.  There is no commit before this "
-"to amend.\n"
+#: lib/search.tcl:24
+msgid "Prev"
 msgstr ""
 
-#: lib/commit.tcl:18
-msgid ""
-"Cannot amend while merging.\n"
-"\n"
-"You are currently in the middle of a merge that has not been fully "
-"completed.  You cannot amend the prior commit unless you first abort the "
-"current merge activity.\n"
+#: lib/search.tcl:25
+msgid "Case-Sensitive"
 msgstr ""
 
-#: lib/commit.tcl:56
-msgid "Error loading commit data for amend:"
+#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
+msgid "Cannot write shortcut:"
 msgstr ""
 
-#: lib/commit.tcl:83
-msgid "Unable to obtain your identity:"
+#: lib/shortcut.tcl:137
+msgid "Cannot write icon:"
 msgstr ""
 
-#: lib/commit.tcl:88
-msgid "Invalid GIT_COMMITTER_IDENT:"
+#: lib/spellcheck.tcl:57
+msgid "Unsupported spell checker"
 msgstr ""
 
-#: lib/commit.tcl:138
-#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
+#: lib/spellcheck.tcl:65
+msgid "Spell checking is unavailable"
 msgstr ""
 
-#: lib/commit.tcl:158
-msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan.  A "
-"rescan must be performed before another commit can be created.\n"
-"\n"
-"The rescan will be automatically started now.\n"
+#: lib/spellcheck.tcl:68
+msgid "Invalid spell checking configuration"
 msgstr ""
 
-#: lib/commit.tcl:182
+#: lib/spellcheck.tcl:70
 #, tcl-format
-msgid ""
-"Unmerged files cannot be committed.\n"
-"\n"
-"File %s has merge conflicts.  You must resolve them and stage the file "
-"before committing.\n"
+msgid "Reverting dictionary to %s."
 msgstr ""
 
-#: lib/commit.tcl:190
-#, tcl-format
-msgid ""
-"Unknown file state %s detected.\n"
-"\n"
-"File %s cannot be committed by this program.\n"
+#: lib/spellcheck.tcl:73
+msgid "Spell checker silently failed on startup"
 msgstr ""
 
-#: lib/commit.tcl:198
-msgid ""
-"No changes to commit.\n"
-"\n"
-"You must stage at least 1 file before you can commit.\n"
+#: lib/spellcheck.tcl:80
+msgid "Unrecognized spell checker"
 msgstr ""
 
-#: lib/commit.tcl:213
-msgid ""
-"Please supply a commit message.\n"
-"\n"
-"A good commit message has the following format:\n"
-"\n"
-"- First line: Describe in one sentence what you did.\n"
-"- Second line: Blank\n"
-"- Remaining lines: Describe why this change is good.\n"
+#: lib/spellcheck.tcl:186
+msgid "No Suggestions"
 msgstr ""
 
-#: lib/commit.tcl:244
-msgid "Calling pre-commit hook..."
+#: lib/spellcheck.tcl:388
+msgid "Unexpected EOF from spell checker"
 msgstr ""
 
-#: lib/commit.tcl:259
-msgid "Commit declined by pre-commit hook."
+#: lib/spellcheck.tcl:392
+msgid "Spell Checker Failed"
 msgstr ""
 
-#: lib/commit.tcl:278
-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 "
-"changes and it can be difficult to retrieve them later from the reflog. You "
-"should probably cancel this commit and create a new branch to continue.\n"
-" \n"
-" Do you really want to proceed with your Commit?"
+#: lib/sshkey.tcl:31
+msgid "No keys found."
 msgstr ""
 
-#: lib/commit.tcl:299
-msgid "Calling commit-msg hook..."
+#: lib/sshkey.tcl:34
+#, tcl-format
+msgid "Found a public key in: %s"
 msgstr ""
 
-#: lib/commit.tcl:314
-msgid "Commit declined by commit-msg hook."
+#: lib/sshkey.tcl:40
+msgid "Generate Key"
 msgstr ""
 
-#: lib/commit.tcl:327
-msgid "Committing changes..."
+#: lib/sshkey.tcl:56
+msgid "Copy To Clipboard"
 msgstr ""
 
-#: lib/commit.tcl:344
-msgid "write-tree failed:"
+#: lib/sshkey.tcl:70
+msgid "Your OpenSSH Public Key"
 msgstr ""
 
-#: lib/commit.tcl:345 lib/commit.tcl:395 lib/commit.tcl:422
-msgid "Commit failed."
+#: lib/sshkey.tcl:78
+msgid "Generating..."
 msgstr ""
 
-#: lib/commit.tcl:362
+#: lib/sshkey.tcl:84
 #, tcl-format
-msgid "Commit %s appears to be corrupt"
-msgstr ""
-
-#: lib/commit.tcl:367
 msgid ""
-"No changes to commit.\n"
-"\n"
-"No files were modified by this commit and it was not a merge commit.\n"
+"Could not start ssh-keygen:\n"
 "\n"
-"A rescan will be automatically started now.\n"
-msgstr ""
-
-#: lib/commit.tcl:374
-msgid "No changes to commit."
+"%s"
 msgstr ""
 
-#: lib/commit.tcl:394
-msgid "commit-tree failed:"
+#: lib/sshkey.tcl:111
+msgid "Generation failed."
 msgstr ""
 
-#: lib/commit.tcl:421
-msgid "update-ref failed:"
+#: lib/sshkey.tcl:118
+msgid "Generation succeeded, but no keys found."
 msgstr ""
 
-#: lib/commit.tcl:514
+#: lib/sshkey.tcl:121
 #, tcl-format
-msgid "Created commit %s: %s"
+msgid "Your key is in: %s"
 msgstr ""
 
-#: lib/branch_delete.tcl:16
+#: lib/status_bar.tcl:83
 #, tcl-format
-msgid "%s (%s): Delete Branch"
-msgstr ""
-
-#: lib/branch_delete.tcl:21
-msgid "Delete Local Branch"
+msgid "%s ... %*i of %*i %s (%3i%%)"
 msgstr ""
 
-#: lib/branch_delete.tcl:39
-msgid "Local Branches"
+#: lib/tools.tcl:75
+#, tcl-format
+msgid "Running %s requires a selected file."
 msgstr ""
 
-#: lib/branch_delete.tcl:51
-msgid "Delete Only If Merged Into"
+#: lib/tools.tcl:90
+#, tcl-format
+msgid "Are you sure you want to run %s?"
 msgstr ""
 
-#: lib/branch_delete.tcl:103
+#: lib/tools.tcl:110
 #, tcl-format
-msgid "The following branches are not completely merged into %s:"
+msgid "Tool: %s"
 msgstr ""
 
-#: lib/branch_delete.tcl:131
+#: lib/tools.tcl:111
 #, tcl-format
-msgid " - %s:"
+msgid "Running: %s"
 msgstr ""
 
-#: lib/branch_delete.tcl:141
+#: lib/tools.tcl:149
 #, tcl-format
-msgid ""
-"Failed to delete branches:\n"
-"%s"
+msgid "Tool completed successfully: %s"
 msgstr ""
 
-#: lib/date.tcl:25
+#: lib/tools.tcl:151
 #, tcl-format
-msgid "Invalid date from Git: %s"
+msgid "Tool failed: %s"
 msgstr ""
 
-#: lib/database.tcl:42
-msgid "Number of loose objects"
+#: lib/tools_dlg.tcl:22
+msgid "Add Tool"
 msgstr ""
 
-#: lib/database.tcl:43
-msgid "Disk space used by loose objects"
+#: lib/tools_dlg.tcl:28
+msgid "Add New Tool Command"
 msgstr ""
 
-#: lib/database.tcl:44
-msgid "Number of packed objects"
+#: lib/tools_dlg.tcl:33
+msgid "Add globally"
 msgstr ""
 
-#: lib/database.tcl:45
-msgid "Number of packs"
+#: lib/tools_dlg.tcl:45
+msgid "Tool Details"
 msgstr ""
 
-#: lib/database.tcl:46
-msgid "Disk space used by packed objects"
+#: lib/tools_dlg.tcl:48
+msgid "Use '/' separators to create a submenu tree:"
 msgstr ""
 
-#: lib/database.tcl:47
-msgid "Packed objects waiting for pruning"
+#: lib/tools_dlg.tcl:61
+msgid "Command:"
 msgstr ""
 
-#: lib/database.tcl:48
-msgid "Garbage files"
+#: lib/tools_dlg.tcl:74
+msgid "Show a dialog before running"
 msgstr ""
 
-#: lib/database.tcl:66
-#, tcl-format
-msgid "%s (%s): Database Statistics"
+#: lib/tools_dlg.tcl:80
+msgid "Ask the user to select a revision (sets $REVISION)"
 msgstr ""
 
-#: lib/database.tcl:72
-msgid "Compressing the object database"
+#: lib/tools_dlg.tcl:85
+msgid "Ask the user for additional arguments (sets $ARGS)"
 msgstr ""
 
-#: lib/database.tcl:83
-msgid "Verifying the object database with fsck-objects"
+#: lib/tools_dlg.tcl:92
+msgid "Don't show the command output window"
 msgstr ""
 
-#: lib/database.tcl:107
-#, tcl-format
-msgid ""
-"This repository currently has approximately %i loose objects.\n"
-"\n"
-"To maintain optimal performance it is strongly recommended that you compress "
-"the database.\n"
-"\n"
-"Compress the database now?"
+#: lib/tools_dlg.tcl:97
+msgid "Run only if a diff is selected ($FILENAME not empty)"
 msgstr ""
 
-#: lib/error.tcl:20
-#, tcl-format
-msgid "%s: error"
+#: lib/tools_dlg.tcl:121
+msgid "Please supply a name for the tool."
 msgstr ""
 
-#: lib/error.tcl:36
+#: lib/tools_dlg.tcl:129
 #, tcl-format
-msgid "%s: warning"
+msgid "Tool '%s' already exists."
 msgstr ""
 
-#: lib/error.tcl:80
+#: lib/tools_dlg.tcl:151
 #, tcl-format
-msgid "%s hook failed:"
+msgid ""
+"Could not add tool:\n"
+"%s"
 msgstr ""
 
-#: lib/error.tcl:96
-msgid "You must correct the above errors before committing."
+#: lib/tools_dlg.tcl:190
+msgid "Remove Tool"
 msgstr ""
 
-#: lib/error.tcl:116
-#, tcl-format
-msgid "%s (%s): error"
+#: lib/tools_dlg.tcl:196
+msgid "Remove Tool Commands"
 msgstr ""
 
-#: lib/merge.tcl:13
-msgid ""
-"Cannot merge while amending.\n"
-"\n"
-"You must finish amending this commit before starting any type of merge.\n"
+#: lib/tools_dlg.tcl:200
+msgid "Remove"
 msgstr ""
 
-#: lib/merge.tcl:27
-msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan.  A "
-"rescan must be performed before a merge can be performed.\n"
-"\n"
-"The rescan will be automatically started now.\n"
+#: lib/tools_dlg.tcl:236
+msgid "(Blue denotes repository-local tools)"
 msgstr ""
 
-#: lib/merge.tcl:45
+#: lib/tools_dlg.tcl:297
 #, tcl-format
-msgid ""
-"You are in the middle of a conflicted merge.\n"
-"\n"
-"File %s has merge conflicts.\n"
-"\n"
-"You must resolve them, stage the file, and commit to complete the current "
-"merge.  Only then can you begin another merge.\n"
+msgid "Run Command: %s"
 msgstr ""
 
-#: lib/merge.tcl:55
-#, tcl-format
-msgid ""
-"You are in the middle of a change.\n"
-"\n"
-"File %s is modified.\n"
-"\n"
-"You should complete the current commit before starting a merge.  Doing so "
-"will help you abort a failed merge, should the need arise.\n"
+#: lib/tools_dlg.tcl:311
+msgid "Arguments"
 msgstr ""
 
-#: lib/merge.tcl:108
-#, tcl-format
-msgid "%s of %s"
+#: lib/tools_dlg.tcl:348
+msgid "OK"
 msgstr ""
 
-#: lib/merge.tcl:126
+#: lib/transport.tcl:7
 #, tcl-format
-msgid "Merging %s and %s..."
+msgid "Fetching new changes from %s"
 msgstr ""
 
-#: lib/merge.tcl:137
-msgid "Merge completed successfully."
+#: lib/transport.tcl:18
+#, tcl-format
+msgid "remote prune %s"
 msgstr ""
 
-#: lib/merge.tcl:139
-msgid "Merge failed.  Conflict resolution is required."
+#: lib/transport.tcl:19
+#, tcl-format
+msgid "Pruning tracking branches deleted from %s"
 msgstr ""
 
-#: lib/merge.tcl:156
+#: lib/transport.tcl:26
 #, tcl-format
-msgid "%s (%s): Merge"
+msgid "Pushing changes to %s"
 msgstr ""
 
-#: lib/merge.tcl:164
+#: lib/transport.tcl:64
 #, tcl-format
-msgid "Merge Into %s"
+msgid "Mirroring to %s"
 msgstr ""
 
-#: lib/merge.tcl:183
-msgid "Revision To Merge"
+#: lib/transport.tcl:82
+#, tcl-format
+msgid "Pushing %s %s to %s"
 msgstr ""
 
-#: lib/merge.tcl:218
-msgid ""
-"Cannot abort while amending.\n"
-"\n"
-"You must finish amending this commit.\n"
+#: lib/transport.tcl:100
+msgid "Push Branches"
 msgstr ""
 
-#: lib/merge.tcl:228
-msgid ""
-"Abort merge?\n"
-"\n"
-"Aborting the current merge will cause *ALL* uncommitted changes to be lost.\n"
-"\n"
-"Continue with aborting the current merge?"
+#: lib/transport.tcl:114
+msgid "Source Branches"
 msgstr ""
 
-#: lib/merge.tcl:234
-msgid ""
-"Reset changes?\n"
-"\n"
-"Resetting the changes will cause *ALL* uncommitted changes to be lost.\n"
-"\n"
-"Continue with resetting the current changes?"
+#: lib/transport.tcl:131
+msgid "Destination Repository"
 msgstr ""
 
-#: lib/merge.tcl:246
-msgid "Aborting"
+#: lib/transport.tcl:169
+msgid "Transfer Options"
 msgstr ""
 
-#: lib/merge.tcl:247
-msgid "files reset"
+#: lib/transport.tcl:171
+msgid "Force overwrite existing branch (may discard changes)"
 msgstr ""
 
-#: lib/merge.tcl:277
-msgid "Abort failed."
+#: lib/transport.tcl:175
+msgid "Use thin pack (for slow network connections)"
 msgstr ""
 
-#: lib/merge.tcl:279
-msgid "Abort completed.  Ready."
+#: lib/transport.tcl:179
+msgid "Include tags"
 msgstr ""
diff --git a/third_party/git/git-gui/po/glossary/de.po b/third_party/git/git-gui/po/glossary/de.po
index 4c5f233ee5..35764d1d22 100644
--- a/third_party/git/git-gui/po/glossary/de.po
+++ b/third_party/git/git-gui/po/glossary/de.po
@@ -6,11 +6,10 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: git-gui glossary\n"
-"POT-Creation-Date: 2020-01-26 22:26+0100\n"
-"PO-Revision-Date: 2020-02-09 21:22+0100\n"
+"POT-Creation-Date: 2008-01-07 21:20+0100\n"
+"PO-Revision-Date: 2008-02-16 21:48+0100\n"
 "Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
 "Language-Team: German \n"
-"Language: de_DE\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -20,9 +19,6 @@ msgid ""
 "English Term (Dear translator: This file will never be visible to the user!)"
 msgstr ""
 "Deutsche Übersetzung.\n"
-"Git-core glossary:\n"
-"  https://github.com/ruester/git-po-de/wiki/Translation-Guidelines\n"
-"\n"
 "Andere deutsche SCM:\n"
 "  http://tortoisesvn.net/docs/release/TortoiseSVN_de/index.html und http://"
 "tortoisesvn.tigris.org/svn/tortoisesvn/trunk/Languages/Tortoise_de.po "
@@ -36,77 +32,33 @@ msgstr ""
 "  http://rapidsvn.tigris.org/svn/rapidsvn/trunk/src/locale/de/rapidsvn.po "
 "(username=guest, password empty, schlecht)"
 
-#. "prematurely stop and abandon an operation"
-msgid "abort"
-msgstr "abbrechen"
-
 #. ""
 msgid "amend"
 msgstr "nachbessern (ergänzen)"
 
-#. "a commit that succeeds the current one in git's graph of commits (not necessarily directly)"
-msgid "ancestor"
-msgstr "Vorgänger-Commit"
-
 #. ""
 msgid "annotate"
 msgstr "annotieren"
 
-#. "The person who initially created (authored) a commit"
-msgid "author"
-msgstr "Autor"
-
-#. "a repository with only .git directory, without working directory"
-msgid "bare repository"
-msgstr "bloßes Projektarchiv"
-
-#. "a parent version of the current file"
-msgid "base"
-msgstr "Ursprung"
-
-#. ""
-msgid "bisect"
-msgstr "binäre Suche [noun], binäre Suche benutzen [verb]"
-
-#. "get the authors responsible for each line in a file"
-msgid "blame"
-msgstr "annotieren"
-
-#.      ""
-msgid "blob"
-msgstr "Blob"
-
 #. "A 'branch' is an active line of development."
 msgid "branch [noun]"
-msgstr "Branch"
+msgstr "Zweig"
 
 #. ""
 msgid "branch [verb]"
-msgstr "branchen"
+msgstr "verzweigen"
 
 #. ""
 msgid "checkout [noun]"
 msgstr ""
-"Arbeitskopie (Checkout; Erstellung einer Arbeitskopie; Auscheck? Source "
-"Safe: Auscheckvorgang)"
+"Arbeitskopie (Erstellung einer Arbeitskopie; Auscheck? Ausspielung? Abruf? "
+"Source Safe: Auscheckvorgang)"
 
 #. "The action of updating the working tree to a revision which was stored in the object database."
 msgid "checkout [verb]"
 msgstr ""
-"Arbeitskopie erstellen; Branch auschecken [checkout a branch] (umstellen? "
-"Source Safe: auschecken)"
-
-#. "to select and apply a single commit to the current HEAD without merging"
-msgid "cherry-pick"
-msgstr "cherry-pick (pflücken?)"
-
-#. "a commit that directly succeeds the current one in git's graph of commits"
-msgid "child commit"
-msgstr "Kind-Commit"
-
-#. "clean the state of the git repository, often after manually stopped operation"
-msgid "cleanup"
-msgstr "aufräumen"
+"Arbeitskopie erstellen; Zweig umstellen [checkout a branch] (auschecken? "
+"ausspielen? abrufen? Source Safe: auschecken)"
 
 #. ""
 msgid "clone [verb]"
@@ -114,98 +66,39 @@ msgstr "klonen"
 
 #. "A single point in the git history."
 msgid "commit [noun]"
-msgstr "Commit (Version?)"
+msgstr ""
+"Version; Eintragung; Änderung (Buchung?, Eintragung?, Übertragung?, "
+"Sendung?, Übergabe?, Einspielung?, Ablagevorgang?)"
 
 #. "The action of storing a new snapshot of the project's state in the git history."
 msgid "commit [verb]"
 msgstr ""
-"committen (eintragen?, TortoiseSVN: übertragen; Source Safe: einchecken)"
-
-#. "a message that gets attached with any commit"
-msgid "commit message"
-msgstr "Commit-Beschreibung (Meldung?, Nachricht?; Source Safe: Kommentar)"
-
-#.   "The person who committed a commit (to the current branch), which might be different than the author."
-msgid "committer"
-msgstr "Committer"
-
-#. "a commit that precedes the current one in git's graph of commits (not necessarily directly)"
-msgid "descendant"
-msgstr "Nachfolger-Commit"
-
-#.       "checkout of a revision rather than some head"
-msgid "detached HEAD"
-msgstr "losgelöster HEAD / Branchspitze"
-
-#. "checkout of a revision rather than some head"
-msgid "detached checkout"
-msgstr "losgelöster Commit (von Branch losgelöster Commit?)"
+"eintragen (TortoiseSVN: übertragen; Source Safe: einchecken; senden?, "
+"übergeben?, einspielen?, einpflegen?, ablegen?)"
 
 #. ""
 msgid "diff [noun]"
-msgstr "Vergleich (Diff? Source Safe: Unterschiede)"
+msgstr "Vergleich (Source Safe: Unterschiede)"
 
 #. ""
 msgid "diff [verb]"
 msgstr "vergleichen"
 
-#.   ""
-msgid "directory"
-msgstr "Verzeichnis"
-
-#. "A fast-forward merge is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
-msgid "fast-forward"
-msgstr "vorspulen"
+#. "A fast-forward is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
+msgid "fast forward merge"
+msgstr "Schnellzusammenführung"
 
 #. "Fetching a branch means to get the branch's head from a remote repository, to find out which objects are missing from the local object database, and to get them, too."
 msgid "fetch"
 msgstr "anfordern (holen?)"
 
-#. "any merge strategy that works on a file by file basis"
-msgid "file level merging"
-msgstr "Datei-basiertes zusammenführen"
-
-#.      ""
-msgid "file"
-msgstr "Datei"
-
-#. "the last revision in a branch"
-msgid "head"
-msgstr "HEAD / Branchspitze"
-
-#. "script that gets executed automatically on some event"
-msgid "hook"
-msgstr "Hook (in der dt. Informatik wohl als Einschubmethode bezeichnet)"
-
 #. "One context of consecutive lines in a whole patch, which consists of many such hunks"
 msgid "hunk"
-msgstr "Patch-Block (Kontext?)"
+msgstr "Kontext"
 
 #. "A collection of files. The index is a stored version of your working tree."
 msgid "index (in git-gui: staging area)"
-msgstr ""
-"Bereitstellung (sofern der git index gemeint ist. In git-gui sowieso: "
-"staging area)"
-
-#. "the first checkout during a clone operation"
-msgid "initial checkout"
-msgstr "Erstellen der Arbeitskopie, auschecken"
-
-#. "The very first commit in a repository"
-msgid "initial commit"
-msgstr "Allererster Commit"
-
-#. "a branch that resides in the local git repository"
-msgid "local branch"
-msgstr "Lokaler Branch"
-
-#. "a Git object that is not part of any pack"
-msgid "loose object"
-msgstr "loses Objekt"
-
-#. "a branch called by convention 'master' that exists in a newly created git repository"
-msgid "master branch"
-msgstr "Master-Branch"
+msgstr "Bereitstellung"
 
 #. "A successful merge results in the creation of a new commit representing the result of the merge."
 msgid "merge [noun]"
@@ -219,212 +112,78 @@ msgstr "zusammenführen"
 msgid "message"
 msgstr "Beschreibung (Meldung?, Nachricht?; Source Safe: Kommentar)"
 
-#. "a remote called by convention 'origin' that the current git repository has been cloned from"
-msgid "origin"
-msgstr "origin"
-
-#.       ""
-msgid "orphan commit"
-msgstr "verwaister Commit"
-
-#.  ""
-msgid "orphan reference"
-msgstr "verwaiste Referenz"
-
-#. "a file containing many git objects packed together"
-msgid "pack [noun]"
-msgstr "Pack-Datei"
-
-#.     "the process of creating a pack file"
-msgid "pack [verb]"
-msgstr "Pack-Datei erstellen"
-
-#. "a Git object part of some pack"
-msgid "packed object"
-msgstr "gepacktes Objekt"
-
-#. "a commit that directly precedes the current one in git's graph of commits"
-msgid "parent commit"
-msgstr "Eltern-Commit"
-
-msgid "patch"
-msgstr "Patch"
-
-#. "The path to a file"
-msgid "path"
-msgstr "Pfad"
-
-#. "Delete all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
+#. "Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
 msgid "prune"
-msgstr "veraltete Branches entfernen (aufräumen?, entfernen?)"
+msgstr "aufräumen (entfernen?)"
 
 #. "Pulling a branch means to fetch it and merge it."
 msgid "pull"
-msgstr ""
-"übernehmen (pull? ziehen? Vorsicht: zusammenführen = merge, aber pull kann "
-"auch rebase bewirken)"
+msgstr "übernehmen (ziehen?)"
 
 #. "Pushing a branch means to get the branch's head ref from a remote repository, and ... (well, can someone please explain it for mere mortals?)"
 msgid "push"
 msgstr "versenden (ausliefern? hochladen? verschicken? schieben?)"
 
-#. "The process of rebasing one set of commits on top of another branch's head"
-msgid "rebase [noun]"
-msgstr "der Rebase (das Umpflanzen)"
-
-#. "Re-apply one set of commits on top of another branch's head. Contrary to merge."
-msgid "rebase [verb]"
-msgstr "rebase (umpflanzen)"
-
 #. ""
 msgid "redo"
 msgstr "wiederholen"
 
-#.   ""
-msgid "reference"
-msgstr "Referenz"
-
-#. "the log file containing all states of the HEAD reference (in other words past pristine states of the working copy)"
-msgid "reflog"
-msgstr "Commit-Log, »reflog«"
-
-msgid "refmap"
-msgstr "Refmap"
-
-#. ""
-msgid "refspec"
-msgstr "Refspec"
-
-#. "The adjective for anything which is outside of the current (local) repository"
-msgid "remote [adj]"
-msgstr "Extern (Andere?, Gegenseite?, Entfernte?, Server?)"
-
-#.       "A branch in any other ('remote') repository"
-msgid "remote branch"
-msgstr "Externer branch"
-
-#.   "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
-msgid "remote repository"
-msgstr "Externes Repository"
+#. "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
+msgid "remote"
+msgstr "Andere Archive (Gegenseite?, Entfernte?, Server?)"
 
 #. "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)"
 msgid "repository"
-msgstr "Repository"
+msgstr "Projektarchiv"
 
 #. ""
 msgid "reset"
-msgstr "umsetzen (reset to commit), Änderungen verwerfen (reset to HEAD)"
-
-#. "decide which changes from alternative versions of a file should persist in Git"
-msgid "resolve (a conflict)"
-msgstr "auflösen (einen Konflikt)"
-
-#. "abandon changes and go to pristine version"
-msgid "revert changes"
-msgstr ""
-"verwerfen (bei git-reset bzw. checkout), zurücknehmen (bei git-revert, also "
-"mit neuem commit; umkehren?)"
+msgstr "zurücksetzen (zurückkehren?)"
 
 #. ""
 msgid "revert"
-msgstr ""
-"verwerfen (bei git-reset bzw. checkout), zurücknehmen (bei git-revert, also "
-"mit neuem commit; umkehren?)"
-
-#. "expression that signifies a revision in git"
-msgid "revision expression"
-msgstr "Version Regexp-Ausdruck"
+msgstr "verwerfen (bei git-reset), revidieren (bei git-revert, also mit neuem commit)"
 
 #. "A particular state of files and directories which was stored in the object database."
 msgid "revision"
-msgstr ""
-"Version (aber was macht das Wort revision hier im Git?? TortoiseSVN: "
-"Revision; Source Safe: Version)"
+msgstr "Version (TortoiseSVN: Revision; Source Safe: Version)"
 
 #. ""
 msgid "sign off"
-msgstr "abzeichnen (signieren? gegenzeichnen?, freizeichnen?)"
+msgstr "abzeichnen (gegenzeichnen?, freizeichnen?, absegnen?)"
 
-#.     "see: staging area. In some areas of git this is called 'index'."
-msgid "stage [noun], index"
-msgstr "Bereitstellung"
-
-#. "add some content of files and directories to the staging area in preparation for a commit"
-msgid "stage [verb]"
-msgstr "bereitstellen"
-
-#. "The place where changes from files are marked to be included for the next commit. In some areas of git this is called 'index'."
+#. ""
 msgid "staging area"
 msgstr "Bereitstellung"
 
-#. "The place (stack) where changes can be temporarily saved without committing"
-msgid "stash [noun]"
-msgstr "der Stash"
-
-#. "temporarily save changes in a stack without committing"
-msgid "stash [verb]"
-msgstr "in Stash speichern; \"stash\" benutzen"
-
 #. ""
 msgid "status"
 msgstr "Status"
 
-#. ""
-msgid "submodule"
-msgstr "Submodul (Untermodul?)"
-
-#. "A ref pointing to some commit object. In other words: A label on a specific commit."
+#. "A ref pointing to a tag or commit object"
 msgid "tag [noun]"
-msgstr "Tag (Markierung?)"
+msgstr "Markierung"
 
-#. "The process of creating a tag at a specific commit object"
+#. ""
 msgid "tag [verb]"
-msgstr "taggen (markieren?)"
-
-#. "The person who created a tag"
-msgid "tagger"
-msgstr "Tag-Ersteller (Markierungs-Ersteller?)"
-
-#. "file whose content is tracked/not tracked by git"
-msgid "tracked/untracked"
-msgstr "versioniert/unversioniert"
+msgstr "markieren"
 
 #. "A regular git branch that is used to follow changes from another repository."
 msgid "tracking branch"
-msgstr "Tracking-Branch (Verfolgungsbranch? Übernahmebranch?)"
-
-#. ""
-msgid "trailer"
-msgstr "Anhang"
-
-#. "1. tree object, 2. directory tree"
-msgid "tree"
-msgstr "1. Baum-Objekt, 2. Verzeichnisbaum"
+msgstr "Übernahmezweig"
 
 #. ""
 msgid "undo"
 msgstr "rückgängig"
 
-#. "Remove content of files from the staging area again so that it will not be part of the next commit"
-msgid "unstage"
-msgstr "aus Bereitstellung herausnehmen"
-
-#. "Retrieving the temporarily saved changes back again from the stash"
-msgid "unstash [verb]"
-msgstr "aus Stash zurückladen"
-
 #. ""
 msgid "update"
 msgstr "aktualisieren"
 
 #. ""
-msgid "upstream branch"
-msgstr "Upstream-Branch"
-
-#. ""
 msgid "verify"
 msgstr "überprüfen"
 
 #. "The tree of actual checked out files."
-msgid "working directory, working copy, working tree"
+msgid "working copy, working tree"
 msgstr "Arbeitskopie"
diff --git a/third_party/git/git-gui/po/glossary/git-gui-glossary.pot b/third_party/git/git-gui/po/glossary/git-gui-glossary.pot
index 4e66e0da3a..40eb3e9c07 100644
--- a/third_party/git/git-gui/po/glossary/git-gui-glossary.pot
+++ b/third_party/git/git-gui/po/glossary/git-gui-glossary.pot
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2020-01-26 22:26+0100\n"
+"POT-Creation-Date: 2008-01-07 21:20+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,46 +18,14 @@ msgstr ""
 msgid "English Term (Dear translator: This file will never be visible to the user!)"
 msgstr ""
 
-#. "prematurely stop and abandon an operation"
-msgid "abort"
-msgstr ""
-
 #. ""
 msgid "amend"
 msgstr ""
 
-#. "a commit that succeeds the current one in git's graph of commits (not necessarily directly)"
-msgid "ancestor"
-msgstr ""
-
 #. ""
 msgid "annotate"
 msgstr ""
 
-#. "The person who initially created (authored) a commit"
-msgid "author"
-msgstr ""
-
-#. "a repository with only .git directory, without working directory"
-msgid "bare repository"
-msgstr ""
-
-#. "a parent version of the current file"
-msgid "base"
-msgstr ""
-
-#. ""
-msgid "bisect"
-msgstr ""
-
-#. "get the authors responsible for each line in a file"
-msgid "blame"
-msgstr ""
-
-#.      ""
-msgid "blob"
-msgstr ""
-
 #. "A 'branch' is an active line of development."
 msgid "branch [noun]"
 msgstr ""
@@ -74,18 +42,6 @@ msgstr ""
 msgid "checkout [verb]"
 msgstr ""
 
-#. "to select and apply a single commit to the current HEAD without merging"
-msgid "cherry-pick"
-msgstr ""
-
-#. "a commit that directly succeeds the current one in git's graph of commits"
-msgid "child commit"
-msgstr ""
-
-#. "clean the state of the git repository, often after manually stopped operation"
-msgid "cleanup"
-msgstr ""
-
 #. ""
 msgid "clone [verb]"
 msgstr ""
@@ -98,26 +54,6 @@ msgstr ""
 msgid "commit [verb]"
 msgstr ""
 
-#. "a message that gets attached with any commit"
-msgid "commit message"
-msgstr ""
-
-#.   "The person who committed a commit (to the current branch), which might be different than the author."
-msgid "committer"
-msgstr ""
-
-#. "a commit that precedes the current one in git's graph of commits (not necessarily directly)"
-msgid "descendant"
-msgstr ""
-
-#.       "checkout of a revision rather than some head"
-msgid "detached HEAD"
-msgstr ""
-
-#. "checkout of a revision rather than some head"
-msgid "detached checkout"
-msgstr ""
-
 #. ""
 msgid "diff [noun]"
 msgstr ""
@@ -126,34 +62,14 @@ msgstr ""
 msgid "diff [verb]"
 msgstr ""
 
-#.   ""
-msgid "directory"
-msgstr ""
-
-#. "A fast-forward merge is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
-msgid "fast-forward"
+#. "A fast-forward is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
+msgid "fast forward merge"
 msgstr ""
 
 #. "Fetching a branch means to get the branch's head from a remote repository, to find out which objects are missing from the local object database, and to get them, too."
 msgid "fetch"
 msgstr ""
 
-#. "any merge strategy that works on a file by file basis"
-msgid "file level merging"
-msgstr ""
-
-#.      ""
-msgid "file"
-msgstr ""
-
-#. "the last revision in a branch"
-msgid "head"
-msgstr ""
-
-#. "script that gets executed automatically on some event"
-msgid "hook"
-msgstr ""
-
 #. "One context of consecutive lines in a whole patch, which consists of many such hunks"
 msgid "hunk"
 msgstr ""
@@ -162,26 +78,6 @@ msgstr ""
 msgid "index (in git-gui: staging area)"
 msgstr ""
 
-#. "the first checkout during a clone operation"
-msgid "initial checkout"
-msgstr ""
-
-#. "The very first commit in a repository"
-msgid "initial commit"
-msgstr ""
-
-#. "a branch that resides in the local git repository"
-msgid "local branch"
-msgstr ""
-
-#. "a Git object that is not part of any pack"
-msgid "loose object"
-msgstr ""
-
-#. "a branch called by convention 'master' that exists in a newly created git repository"
-msgid "master branch"
-msgstr ""
-
 #. "A successful merge results in the creation of a new commit representing the result of the merge."
 msgid "merge [noun]"
 msgstr ""
@@ -194,42 +90,7 @@ msgstr ""
 msgid "message"
 msgstr ""
 
-#. "a remote called by convention 'origin' that the current git repository has been cloned from"
-msgid "origin"
-msgstr ""
-
-#.       ""
-msgid "orphan commit"
-msgstr ""
-
-#.  ""
-msgid "orphan reference"
-msgstr ""
-
-#. "a file containing many git objects packed together"
-msgid "pack [noun]"
-msgstr ""
-
-#.     "the process of creating a pack file"
-msgid "pack [verb]"
-msgstr ""
-
-#. "a Git object part of some pack"
-msgid "packed object"
-msgstr ""
-
-#. "a commit that directly precedes the current one in git's graph of commits"
-msgid "parent commit"
-msgstr ""
-
-msgid "patch" ""
-msgstr ""
-
-#. "The path to a file"
-msgid "path"
-msgstr ""
-
-#. "Delete all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
+#. "Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
 msgid "prune"
 msgstr ""
 
@@ -241,43 +102,12 @@ msgstr ""
 msgid "push"
 msgstr ""
 
-#. "The process of rebasing one set of commits on top of another branch's head"
-msgid "rebase [noun]"
-msgstr ""
-
-#. "Re-apply one set of commits on top of another branch's head. Contrary to merge."
-msgid "rebase [verb]"
-msgstr ""
-
 #. ""
 msgid "redo"
 msgstr ""
 
-#.   ""
-msgid "reference"
-msgstr ""
-
-#. "the log file containing all states of the HEAD reference (in other words past pristine states of the working copy)"
-msgid "reflog"
-msgstr ""
-
-msgid "refmap"       ""
-msgstr ""
-
-#. ""
-msgid "refspec"
-msgstr ""
-
-#. "The adjective for anything which is outside of the current (local) repository"
-msgid "remote [adj]"
-msgstr ""
-
-#.       "A branch in any other ('remote') repository"
-msgid "remote branch"
-msgstr ""
-
-#.   "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
-msgid "remote repository"
+#. "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
+msgid "remote"
 msgstr ""
 
 #. "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)"
@@ -288,22 +118,10 @@ msgstr ""
 msgid "reset"
 msgstr ""
 
-#. "decide which changes from alternative versions of a file should persist in Git"
-msgid "resolve (a conflict)"
-msgstr ""
-
-#. "abandon changes and go to pristine version"
-msgid "revert changes"
-msgstr ""
-
 #. ""
 msgid "revert"
 msgstr ""
 
-#. "expression that signifies a revision in git"
-msgid "revision expression"
-msgstr ""
-
 #. "A particular state of files and directories which was stored in the object database."
 msgid "revision"
 msgstr ""
@@ -312,87 +130,39 @@ msgstr ""
 msgid "sign off"
 msgstr ""
 
-#.     "see: staging area. In some areas of git this is called 'index'."
-msgid "stage [noun], index"
-msgstr ""
-
-#. "add some content of files and directories to the staging area in preparation for a commit"
-msgid "stage [verb]"
-msgstr ""
-
-#. "The place where changes from files are marked to be included for the next commit. In some areas of git this is called 'index'."
+#. ""
 msgid "staging area"
 msgstr ""
 
-#. "The place (stack) where changes can be temporarily saved without committing"
-msgid "stash [noun]"
-msgstr ""
-
-#. "temporarily save changes in a stack without committing"
-msgid "stash [verb]"
-msgstr ""
-
 #. ""
 msgid "status"
 msgstr ""
 
-#. ""
-msgid "submodule"
-msgstr ""
-
-#. "A ref pointing to some commit object. In other words: A label on a specific commit."
+#. "A ref pointing to a tag or commit object"
 msgid "tag [noun]"
 msgstr ""
 
-#. "The process of creating a tag at a specific commit object"
+#. ""
 msgid "tag [verb]"
 msgstr ""
 
-#. "The person who created a tag"
-msgid "tagger"
-msgstr ""
-
-#. "file whose content is tracked/not tracked by git"
-msgid "tracked/untracked"
-msgstr ""
-
 #. "A regular git branch that is used to follow changes from another repository."
 msgid "tracking branch"
 msgstr ""
 
 #. ""
-msgid "trailer"
-msgstr ""
-
-#. "1. tree object, 2. directory tree"
-msgid "tree"
-msgstr ""
-
-#. ""
 msgid "undo"
 msgstr ""
 
-#. "Remove content of files from the staging area again so that it will not be part of the next commit"
-msgid "unstage"
-msgstr ""
-
-#. "Retrieving the temporarily saved changes back again from the stash"
-msgid "unstash [verb]"
-msgstr ""
-
 #. ""
 msgid "update"
 msgstr ""
 
 #. ""
-msgid "upstream branch"
-msgstr ""
-
-#. ""
 msgid "verify"
 msgstr ""
 
 #. "The tree of actual checked out files."
-msgid "working directory, working copy, working tree"
+msgid "working copy, working tree"
 msgstr ""
 
diff --git a/third_party/git/git-gui/po/glossary/git-gui-glossary.txt b/third_party/git/git-gui/po/glossary/git-gui-glossary.txt
index 48b9f10e57..409304692d 100644
--- a/third_party/git/git-gui/po/glossary/git-gui-glossary.txt
+++ b/third_party/git/git-gui/po/glossary/git-gui-glossary.txt
@@ -1,96 +1,67 @@
 "English Term (Dear translator: This file will never be visible to the user!)"	"English Definition (Dear translator: This file will never be visible to the user! It should only serve as a tool for you, the translator. Nothing more.)"
-"abort"	"prematurely stop and abandon an operation"
 "amend"	""
-"ancestor"	"a commit that succeeds the current one in git's graph of commits (not necessarily directly)"
 "annotate"	""
-"author"	"The person who initially created (authored) a commit"
-"bare repository"	"a repository with only .git directory, without working directory"
-"base"	"a parent version of the current file"
-"bisect"	""
-"blame"	"get the authors responsible for each line in a file"
-"blob"	     ""
 "branch [noun]"	"A 'branch' is an active line of development."
 "branch [verb]"	""
 "checkout [noun]"	""
 "checkout [verb]"	"The action of updating the working tree to a revision which was stored in the object database."
-"cherry-pick"	"to select and apply a single commit to the current HEAD without merging"
-"child commit"	"a commit that directly succeeds the current one in git's graph of commits"
-"cleanup"	"clean the state of the git repository, often after manually stopped operation"
 "clone [verb]"	""
 "commit [noun]"	"A single point in the git history."
 "commit [verb]"	"The action of storing a new snapshot of the project's state in the git history."
-"commit message"	"a message that gets attached with any commit"
-"committer"	  "The person who committed a commit (to the current branch), which might be different than the author."
-"descendant"	"a commit that precedes the current one in git's graph of commits (not necessarily directly)"
-"detached HEAD"	      "checkout of a revision rather than some head"
-"detached checkout"	"checkout of a revision rather than some head"
 "diff [noun]"	""
 "diff [verb]"	""
-"directory"	  ""
-"fast-forward"	"A fast-forward merge is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
+"fast forward merge"	"A fast-forward is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
 "fetch"	"Fetching a branch means to get the branch's head from a remote repository, to find out which objects are missing from the local object database, and to get them, too."
-"file level merging"	"any merge strategy that works on a file by file basis"
-"file"	     ""
-"head"	"the last revision in a branch"
-"hook"	"script that gets executed automatically on some event"
 "hunk"	"One context of consecutive lines in a whole patch, which consists of many such hunks"
 "index (in git-gui: staging area)"	"A collection of files. The index is a stored version of your working tree."
-"initial checkout"	"the first checkout during a clone operation"
-"initial commit"	"The very first commit in a repository"
-"local branch"	"a branch that resides in the local git repository"
-"loose object"	"a Git object that is not part of any pack"
-"master branch"	"a branch called by convention 'master' that exists in a newly created git repository"
 "merge [noun]"	"A successful merge results in the creation of a new commit representing the result of the merge."
 "merge [verb]"	"To bring the contents of another branch into the current branch."
 "message"	""
-"origin"	"a remote called by convention 'origin' that the current git repository has been cloned from"
-"orphan commit"	      ""
-"orphan reference"	 ""
-"pack [noun]"	"a file containing many git objects packed together"
-"pack [verb]"	    "the process of creating a pack file"
-"packed object"	"a Git object part of some pack"
-"parent commit"	"a commit that directly precedes the current one in git's graph of commits"
-"patch" ""
-"path"	"The path to a file"
-"prune"	"Delete all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
+"prune"	"Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
 "pull"	"Pulling a branch means to fetch it and merge it."
 "push"	"Pushing a branch means to get the branch's head ref from a remote repository, and ... (well, can someone please explain it for mere mortals?)"
-"rebase [noun]"	"The process of rebasing one set of commits on top of another branch's head"
-"rebase [verb]"	"Re-apply one set of commits on top of another branch's head. Contrary to merge."
 "redo"	""
-"reference"	  ""
-"reflog"	"the log file containing all states of the HEAD reference (in other words past pristine states of the working copy)"
-"refmap"       ""
-"refspec"	""
-"remote [adj]"	"The adjective for anything which is outside of the current (local) repository"
-"remote branch"	      "A branch in any other ('remote') repository"
-"remote repository"	  "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
+"remote"	"An other repository ('remote'). One might have a set of remotes whose branches one tracks."
 "repository"	"A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)"
 "reset"	""
-"resolve (a conflict)"	"decide which changes from alternative versions of a file should persist in Git"
-"revert changes"	"abandon changes and go to pristine version"
 "revert"	""
-"revision expression"	"expression that signifies a revision in git"
 "revision"	"A particular state of files and directories which was stored in the object database."
 "sign off"	""
-"stage [noun], index"	    "see: staging area. In some areas of git this is called 'index'."
-"stage [verb]"	"add some content of files and directories to the staging area in preparation for a commit"
-"staging area"	"The place where changes from files are marked to be included for the next commit. In some areas of git this is called 'index'."
-"stash [noun]"	"The place (stack) where changes can be temporarily saved without committing"
-"stash [verb]"	"temporarily save changes in a stack without committing"
+"staging area"	""
 "status"	""
-"submodule"	""
-"tag [noun]"	"A ref pointing to some commit object. In other words: A label on a specific commit."
-"tag [verb]"	"The process of creating a tag at a specific commit object"
-"tagger"	"The person who created a tag"
-"tracked/untracked"	"file whose content is tracked/not tracked by git"
+"tag [noun]"	"A ref pointing to a tag or commit object"
+"tag [verb]"	""
 "tracking branch"	"A regular git branch that is used to follow changes from another repository."
-"trailer"	""
-"tree"	"1. tree object, 2. directory tree"
 "undo"	""
-"unstage"	"Remove content of files from the staging area again so that it will not be part of the next commit"
-"unstash [verb]"	"Retrieving the temporarily saved changes back again from the stash"
 "update"	""
-"upstream branch"	""
 "verify"	""
-"working directory, working copy, working tree"	"The tree of actual checked out files."
+"working copy, working tree"	"The tree of actual checked out files."
+"ancestor"	"a commit that succeeds the current one in git's graph of commits (not necessarily directly)"
+"abort"	"prematurely stop and abandon an operation"
+"bare repository"	"a repository with only .git directory, without working directory"
+"base"	"a parent version of the current file"
+"blame"	"get the authors responsible for each line in a file"
+"cherry-pick"	"to select and apply a single commit without merging"
+"child"	"a commit that directly succeeds the current one in git's graph of commits"
+"cleanup"	"clean the state of the git repository, often after manually stopped operation"
+"commit message"	"a message that gets attached with any commit"
+"descendant"	"a commit that precedes the current one in git's graph of commits (not necessarily directly)"
+"detached checkout"	"checkout of a revision rather than a some head"
+"file level merging"	"any merge strategy that works on a file by file basis"
+"head"	"the last revision in a branch"
+"hook"	"script that gets executed automatically on some event"
+"initial checkout"	"the first checkout during a clone operation"
+"local branch"	"a branch that resides in the local git repository"
+"loose object"	"a Git object that is not part of any pack"
+"master branch"	"a branch called by convention 'master' that exists in a newly created git repository"
+"origin"	"a remote called by convention 'origin' that the current git repository has been cloned from"
+"pack [noun]"	"a file containing many git objects packed together"
+"packed object"	"a Git object part of some pack"
+"parent"	"a commit that directly precedes the current one in git's graph of commits"
+"reflog"	"the log file containing all states of the HEAD reference (in other words past pristine states of the working copy)"
+"resolve (a conflict)"	"decide which changes from alternative versions of a file should persist in Git"
+"revert changes"	"abandon changes and go to pristine version"
+"revision expression"	"expression that signifies a revision in git"
+"stage/unstage"	"add some content of files and directories to the staging area in preparation for a commit"
+"stash"	"temporarily save changes in a stack without committing"
+"tracked/untracked"	"file whose content is tracked/not tracked by git"
diff --git a/third_party/git/git-gui/po/ja.po b/third_party/git/git-gui/po/ja.po
index 2f61153ab9..208651c1af 100644
--- a/third_party/git/git-gui/po/ja.po
+++ b/third_party/git/git-gui/po/ja.po
@@ -4,15 +4,14 @@
 #
 # しらいし ななこ <nanako3@bluebottle.com>, 2007.
 # Satoshi Yasushima <s.yasushima@gmail.com>, 2016.
-# KIDANI Akito <a.kid.1985@gmail.com>, 2019.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: git-gui\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-05-27 17:52+0900\n"
-"PO-Revision-Date: 2019-10-13 23:20+0900\n"
-"Last-Translator: KIDANI Akito <a.kid.1985@gmail.com>\n"
+"PO-Revision-Date: 2016-06-22 12:50+0900\n"
+"Last-Translator: Satoshi Yasushima <s.yasushima@gmail.com>\n"
 "Language-Team: Japanese\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
@@ -662,7 +661,7 @@ msgstr ""
 #: lib/merge.tcl:108
 #, tcl-format
 msgid "%s of %s"
-msgstr "%2$s の %1$s ブランチ"
+msgstr "%s の %s ブランチ"
 
 #: lib/merge.tcl:122
 #, tcl-format
@@ -957,7 +956,7 @@ msgstr "エラー: コマンドが失敗しました"
 #: lib/checkout_op.tcl:85
 #, tcl-format
 msgid "Fetching %s from %s"
-msgstr "%2$s から %1$s をフェッチしています"
+msgstr "%s から %s をフェッチしています"
 
 #: lib/checkout_op.tcl:133
 #, tcl-format