Commit Graph

679 Commits

Author SHA1 Message Date
Paul Mackerras
6cd80496e9 gitk: Resize panes correctly when reducing window size
The resizeclistpanes and resizecdetpanes procedures attempt to keep
the horizontal proportions of the panes of the gitk window
approximately constant when the gitk window is resized.  However, if
the size is reduced enough that an existing sash position would go
outside the window, Tk moves the sash to the left to keep it inside
the window (without moving other sash positions to keep the
proportions).  This happens before these resize procedures get
control, and so they work with incorrect proportions.

To fix this, we record the sash positions we set previously and use
those previously-set sash positions rather than the current sash
positions when computing the proportions.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2020-10-03 15:20:33 +10:00
Denton Liu
e244588eb6 gitk: replace tabs with spaces
The source code is a mix of tabs and spaces. The indentation style
currently is four spaces per indent level but uses tabs every other
level (at eight spaces). Fix this inconsistent spacing and tabbing by
just using a space-indent for everything.

This was done mechanically by running:

	$ expand -i gitk >gitk.new
	$ mv gitk.new gitk

This patch should be empty with `--ignore-all-space`.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2020-10-03 14:55:38 +10:00
Роман Донченко
a99bc27aec gitk: fix the context menu not appearing in the presence of submodule diffs
Currently, submodule diffs can cause the diff context menu to fail
to appear because of a couple bugs in parseblobdiffline:

* it appends the submodule name to ctext_file_lines instead of
  a line number, which breaks the binary search in find_ctext_fileinfo;

* it can desynchronize ctext_file_names and ctext_file_lines
  by appending to the former but not the latter, which also breaks
  find_ctext_fileinfo.

Fix both of these.

Note: a side effect of this patch is that the context menu also
starts appearing when you right-click on submodule diffs (and not just
regular diffs). The menu is non-functional in this case, though,
since you can't run blame on submodules.

Signed-off-by: Роман Донченко <dpb@corrigendum.ru>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2020-04-13 15:11:18 +10:00
Johannes Sixt
2faa6cdc5e gitk: Un-hide selection in areas with non-default background color
The recently introduced background for the tags that highlight
added and removed text takes precedence over the background color
of the selection. But selected text is more important than the
highlighted text. Make the highlighting tags the lowest priority.

The same argument holds for the file separator and the highlight
of search results. Therefore, make them also low-priority. But
search results are a bit more important; therefore, keep them
above the other tags.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2020-04-13 14:36:15 +10:00
Stefan Dotterweich
113ce1243f gitk: add diff lines background colors
Not using colored background for added and removed lines is a missed
opportunity to make diff lines easier to grasp visually.

Use a subtle red/green background by default. Make the font slightly darker
to improve contrast.

Signed-off-by: Stefan Dotterweich <stefandotterweich@gmx.de>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2020-04-13 14:36:15 +10:00
Junio C Hamano
e272a77964 gitk: be prepared to be run in a bare repository
784b7e2f ("gitk: Fix "External diff" with separate work tree",
2011-04-04) added an unconditional call to "git rev-parse
--show-toplevel" to set up a global variable quite early in the
course of the program, so that the location of the working tree can
later be known if/when the user chooses to run the external diff via
the external_diff_get_one_file proc.  Before that change, the
external diff code used to assume that the parent directory of ".git"
directory is the top-level of the working tree.

Recent versions of git however notices that "rev-parse --show-toplevel"
executed in a bare repository is an error, which makes gitk stop,
even before the user could attempt to run external diff.

Use the gitworktree helper introduced in 65bb0bda ("gitk: Fix the
display of files when filtered by path", 2011-12-13), which is
prepared to see failures from "rev-parse --show-toplevel" and other
means it tries to find the top-level of the working tree instead to
work around this issue.  The resulting value in $worktree global,
when run in a bare repository, is bogus, but the code is not
prepared to run external diff correctly without a working tree
anyway ;-)

[paulus@ozlabs.org - folded in fix from Eric Sunshine]

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2020-04-13 14:36:05 +10:00
Eric Huber
c1a63459ed gitk: Preserve window dimensions on exit when not using ttk themes
Bug was: gitk would overwrite the botwidth setting in .gitk with
a nonsense value when not using tk themes. Moving the affected
line within the conditional results in the expected behavior.

Signed-off-by: Eric Huber <echuber2@illinois.edu>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2019-12-15 16:31:52 +11:00
Роман Донченко
f177c49a97 gitk: don't highlight files after submodules as submodules
gitk applies submodule highlighting (coloring lines starting with
"  >" and "  <") when `currdiffsubmod` is not an empty string.
However, it fails to reset `currdiffsubmod` after a submodule diff
ends, so any file diffs following a submodule diff will still be
highlighted as if they were submodule diffs.

There are two problems with the way gitk tries to reset `currdiffsubmod`:

1. The code says `set $currdiffsubmod` instead of `set currdiffsubmod`,
   so it actually sets the variable whose name is the submodule path
   instead.

2. It tries to do it after the first line in a submodule diff, which
   is incorrect, since submodule diffs can contain multiple lines.

Fix this by resetting `currdiffsubmod` when a file diff starts.

Signed-off-by: Роман Донченко <dpb@corrigendum.ru>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2019-12-15 15:30:50 +11:00
Kazuhiro Kato
d4247e0602 gitk: fix branch name encoding error
After "git checkout -b '漢字'" to create a branch with UTF-8
character in it, "gitk" shows the branch name incorrectly, as it
forgets to turn the bytes read from the "git show-ref" command
into Unicode characters.

Signed-off-by: Kazuhiro Kato <kato-k@ksysllc.co.jp>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2019-12-15 15:28:12 +11:00
Beat Bolli
b8b60957ce gitk: rename "commit summary" to "commit reference"
Now that the commit reference format has a canonical name, let's use this
name in gitk's UI and implementation.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
[dl: based the patch on gitk's tree]
Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2019-12-15 15:21:59 +11:00
Denton Liu
2a4ac71ffb gitk: rename zh_CN.po to zh_cn.po
When running make from a clean environment, all of the *.po files should
be converted into *.msg files. After that, when make is run without any
changes, make should not do anything.

After beffae768a (gitk: Add Chinese (zh_CN) translation, 2017-03-11),
zh_CN.po was introduced. When make was run, a zh_cn.msg file was
generated (notice the lowercase). However, since make is case-sensitive,
it expects zh_CN.po to generate a zh_CN.msg file so make will keep
reattempting to generate a zh_CN.msg so successive make invocations
result in

    Generating catalog po/zh_cn.msg
    msgfmt --statistics --tcl po/zh_cn.po -l zh_cn -d po/
    317 translated messages.

happening continuously.

Rename zh_CN.po to zh_cn.po so that when make generates the zh_cn.msg
file, it will realize that it was successfully generated and only run
once.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-09-17 14:58:12 -07:00
Gabriele Mazzotta
9ea831a2a6 gitk: Do not mistake unchanged lines for submodule changes
Unchanged lines are prefixed with a white-space, thus unchanged lines
starting with either " <" or " >" are mistaken for submodule changes.
Check if a line starts with either "  <" or "  >" only if we are listing
the changes of a submodule.

Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2019-09-14 09:35:43 +10:00
Paul Wise
d7cc4fb001 gitk: Use right colour for remote refs in the "Tags and heads" dialog
Makes it easier to see which refs are local and which refs are remote.
Adds consistency with the remote background colour in the graph display.

Signed-off-by: Paul Wise <pabs3@bonedaddy.net>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2019-09-14 09:35:43 +10:00
YanKe
beffae768a gitk: Add Chinese (zh_CN) translation
Signed-off-by: YanKe <imyanke@163.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2019-09-14 09:35:40 +10:00
Paul Mackerras
3441de5b9c gitk: Make web links clickable
This makes gitk look for http or https URLs in the commit description
and make the URLs clickable.  Clicking on them will invoke an external
web browser with the URL.

The web browser command is by default "xdg-open" on Linux, "open" on
MacOS, and "cmd /c start" on Windows.  The command can be changed in
the preferences window, and it can include parameters as well as the
command name.  If it is set to the empty string then URLs will no
longer be made clickable.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2019-08-29 11:27:59 +10:00
Alexander Shopov
dec59817c1 gitk: Update Bulgarian translation (317t)
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2019-03-14 20:16:17 +11:00
David Aguilar
7f03c6e328 gitk: Remove translated message from comments
"make update-po" fails because a previously untranslated string
has now been translated:

	Updating po/sv.po
	po/sv.po:1388: duplicate message definition...
	po/sv.po:380: ...this is the location of the first definition

Remove the duplicate message definition.

Reported-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2017-01-18 21:12:45 +11:00
Dimitriy Ryazantcev
8fef3f36b7 gitk: ru.po: Update Russian translation
Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-31 16:37:42 +11:00
Paul Mackerras
fbf426478e gitk: Update copyright notice to 2016
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 20:46:42 +11:00
Markus Hitter
18ae912082 gitk: Clear array 'commitinfo' on reload
After a reload we might have an entirely different set of commits,
so keeping all of them leaks memory. Remove them all because
re-creating them is not more expensive than testing wether they're
still valid. Lazy (re-)creation is already well established, so
a missing entry can't cause harm.

Signed-off-by: Markus Hitter <mah@jump-ing.de>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 20:39:37 +11:00
Markus Hitter
0748f41eb8 gitk: Remove closed file descriptors from $blobdifffd
One shouldn't have descriptors of already closed files around.

The first idea to deal with this (previously) ever growing array
was to remove it entirely, but it's needed to detect start of a
new diff with ths old diff not yet done. This happens when a user
clicks on the same commit in the commit list repeatedly without
delay.

Signed-off-by: Markus Hitter <mah@jump-ing.de>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 20:39:37 +11:00
Markus Hitter
106a6d9d85 gitk: Turn off undo manager in the text widget
The diff text widget is read-only, so there's zero point in
building an undo stack. This change reduces memory consumption of
this widget by about 95%.

Memory usage of the whole program for viewing a reference commit
before; 579'692'744 bytes, after: 32'724'446 bytes.

Test procedure:

 - Choose a largish commit and check it out. In this case one with
   90'802 lines, 5'006'902 bytes.

 - Have a Tcl version with memory debugging enabled. This is,
   build one with --enable-symbols=mem passed to configure.

 - Instrument Gitk to regularly show a memory dump. E.g. by adding
   these code lines at the very bottom:

     proc memDump {} {
         catch {
             set output [memory info]
             puts $output
         }

         after 3000 memDump
     }

     memDump

 - Start Gitk, it'll load this largish commit into the diff text
   field automatically (because it's the current commit).

 - Wait until memory consumption levels out and note the numbers.

Note that the numbers reported by [memory info] are much smaller
than the ones reported in 'top' (1.75 GB vs. 105 MB in this case),
likely due to all the instrumentation coming with the debug
version of Tcl.

Signed-off-by: Markus Hitter <mah@jump-ing.de>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 20:39:37 +11:00
Satoshi Yasushima
75517bf2c1 gitk: Fix Japanese translation for "marked commit"
Signed-off-by: Satoshi Yasushima <s.yasushima@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 20:36:40 +11:00
Stefan Dotterweich
d92aa57039 gitk: Fix missing commits when using -S or -G
When -S or -G is used as a filter option, the resulting commit list
rarely contains all matching commits. Only a certain number of commits
are displayed and the rest are missing.

"git log --boundary -S" does not return as many boundary commits as you
might expect. gitk makes up for this in closevarcs() by adding missing
parent (boundary) commits. However, it does not change $numcommits,
which limits how many commits are shown. In the end, some commits at the
end of the commit list are simply not shown.

Change $numcommits whenever a missing parent is added to the current
view.

Signed-off-by: Stefan Dotterweich <stefandotterweich@gmx.de>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 11:38:29 +11:00
Paul Mackerras
6e8fda5fd2 gitk: Use explicit RGB green instead of "lime"
Some systems don't recognize "lime" as a color, leading to errors when
gitk is run.  What we want is a bright green, so use "#00ff00" instead.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 11:34:22 +11:00
Vasco Almeida
2239d07f5a gitk: Add Portuguese translation
Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 11:33:45 +11:00
Vasco Almeida
944e1c8ede gitk: Makefile: create install bin directory
Force creation of destination bin directory.  Without this, gitk
would fail to install if this directory didn't already exist.

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 11:01:12 +11:00
Rogier Goossens
7f00f4c0de gitk: Include commit title in branch dialog
Hi,

I made another branch dialog related change, included in this message.
It applies on top of my other two patches.

Rogier.

------- 8< ------------------- 8< --------------

Only the SHA1 was included. It's convenient to have the title
mentioned as well.

Signed-off-by: Rogier Goossens <goossens.rogier@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 09:24:46 +11:00
Rogier Goossens
02e6a0601b gitk: Allow checking out a remote branch
Git allows checking out remote branches, creating a local tracking
branch in the process. Allow gitk to do this as well, provided a
local branch of the same name does not yet exist.

Signed-off-by: Rogier Goossens <goossens.rogier@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 09:24:46 +11:00
Rogier Goossens
5a046c5267 gitk: Add a 'rename' option to the branch context menu
Signed-off-by: Rogier Goossens <goossens.rogier@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2016-12-12 09:24:46 +11:00
Guillermo S. Romero
22a713c72d gitk: Follow themed bgcolor in help dialogs
Make Help > About & Key bindings dialogs readable if theme
has changed font color to something incompatible with white.

Signed-off-by: Guillermo S. Romero <gsromero@infernal-iceberg.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2016-03-19 14:12:21 +11:00
Jean-Noel Avila
ffbd0d77eb gitk: fr.po: Sync translations with git
Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2016-03-19 14:08:52 +11:00
Jean-Noel Avila
3782d70676 gitk: Update French translation (311t)
Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2016-03-19 14:08:52 +11:00
Ralf Thielow
fec7b51ec4 gitk: Update German translation
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2016-03-19 14:07:34 +11:00
Alexander Shopov
37afa4010f gitk: Update Bulgarian translation (311t)
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2016-03-19 14:06:37 +11:00
Paul Mackerras
0de75aafb6 Merge branch 'ja.po' of https://github.com/qykth-git/gitk 2015-12-19 13:33:16 +11:00
Paul Mackerras
04d04c071e Merge branch 'color-fix' of https://github.com/qykth-git/gitk 2015-12-19 13:29:35 +11:00
Peter Krefting
4f7214bf19 gitk: sv.po: Update Swedish translation (311t)
Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2015-12-12 13:48:20 +11:00
Giuseppe Bilotta
cae4b60a98 gitk: Let .bleft.mid widgets 'breathe'
The widgets on top of the diff window are very tightly packed. Make
them breathe a little by adding an 'i'-spaced padding between them.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2015-12-12 13:43:53 +11:00
Giuseppe Bilotta
6cb73c84e1 gitk: Match ttk fonts to gitk fonts
The fonts set in setoptions aren't consistently picked up by ttk, which
uses its own predefined fonts. This is noticeable when switching
between using and not using ttk with custom fonts or in HiDPI settings
(where the default TTK fonts do _not_ respect tk sclaing).

Fix by mapping the ttk fontset to the one used by gitk internally.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2015-12-12 13:43:52 +11:00
YOKOTA Hiroshi
a1420cd320 gitk: Update revision date in Japanese PO file
Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 15:17:20 +09:00
YOKOTA Hiroshi
e25f12247e gitk: Update "Language:" header
msgfmt(1) wants this header.

Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 15:17:20 +09:00
YOKOTA Hiroshi
e82470ac8c gitk: Improve translation message
Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 15:17:20 +09:00
YOKOTA Hiroshi
0f8b604f91 gitk: Remove unused line
Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 15:17:19 +09:00
YOKOTA Hiroshi
0ded623a5f gitk: Update year
Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 15:17:19 +09:00
YOKOTA Hiroshi
6c54103e77 gitk: Change last translator line
Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 15:17:19 +09:00
YOKOTA Hiroshi
c670cf3518 gitk: Update fuzzy messages
Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 15:17:12 +09:00
YOKOTA Hiroshi
b9d3c9652e gitk: Update Japanese translation
Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 14:52:27 +09:00
YOKOTA Hiroshi
8032ab360a gitk: Fix translation around copyright sign
Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 14:52:27 +09:00
YOKOTA Hiroshi
a23630dec5 gitk: Update Japanese translation
Signed-off-by: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>
2015-11-12 14:52:27 +09:00