Commit graph

479 commits

Author SHA1 Message Date
Dave Dulson
dfb891e351 gitk: Enable gitk to create tags with messages
Currently, tags created using the "create tag" dialog in gitk are
always lightweight tags, i.e., they don't have any annotation
(message).  This enables the user to specify a message; if they do,
gitk will create an unsigned, annotated tag object.

Signed-off-by: David Dulson <dave@dulson.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2010-01-12 22:04:46 +11:00
Miklos Vajna
be8e40df75 gitk: Update Hungarian translation
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2010-01-12 22:04:46 +11:00
Laszlo Papp
7e705ec185 gitk: Add Hungarian translation
[Junio C Hamano <gitster@pobox.com>: Fix a couple of wrapped lines]

Signed-off-by: Laszlo Papp <djszapi@archlinux.us>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2010-01-12 21:40:41 +11:00
Christian Couder
c2f2dab971 gitk: Add "--no-replace-objects" option
Replace refs are useful to change some git objects after they
have started to be shared between different repositories. One
might want to ignore them to see the original state, and
"--no-replace-objects" option can be used from the command
line to do so.

This option simply sets the GIT_NO_REPLACE_OBJECTS environment
variable, and that is enough to make gitk ignore replace refs.

The GIT_NO_REPLACE_OBJECTS is set to "1" instead of "" as it is
safer on some platforms, thanks to Johannes Sixt and Michael J
Gruber.

Tested-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-12-14 10:08:18 +11:00
Pat Thoyts
a80e82f6ee gitk: Fix selection of tags
When a tag is clicked an error is raised due to a missing parameter in
a function call.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-19 20:32:45 +11:00
Pat Thoyts
1924d1bc0d gitk: Default to the system colours on Windows
Also convert a button to use the themed widget set.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-14 21:28:26 +11:00
Paul Mackerras
7a0ebbf829 gitk: Merge branch 'dev' into master
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-14 21:26:31 +11:00
Mizar
63ea915e16 gitk: Update Japanese translation
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-14 21:21:08 +11:00
Markus Heidelberg
a4390ace1a gitk: Fix "git gui blame" invocation when called from top-level directory
When run in the top-level directory of a git repository, "git
rev-parse --git-dir" doesn't return an absolute path, but merely
".git", so the selected file for "git gui blame" has a relative path.
The function make_relative then tries to make the already relative
path relative, which results in a path like "../../../../Makefile"
with as many ".." as there are elements of [pwd].

This regression was introduced by commit 9712b81 (gitk: Fix bugs in
blaming code, 2008-12-06), which fixed "git gui blame" when called from
subdirs.

This also fixes it for bare repositories.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-14 21:19:12 +11:00
Sitaram Chamarty
70a5fc443a gitk: Disable checkout of remote branches
At the command line, trying to check out a remote branch gives you a
detailed warning message, but the gitk GUI currently allows it without
any fuss.

Since the GUI is often used by people much less familiar with git, it
seems reasonable to make the GUI more restrictive than the command line,
not less.

This prevents a lot of detached HEAD commits by new users.

Signed-off-by: Sitaram Chamarty <sitaramc@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-14 21:19:11 +11:00
Paul Mackerras
51a7e8b654 gitk: Improve appearance of radiobuttons and checkbuttons
Commit 5497f7a23a ("gitk: Add configuration
for UI colour scheme") added a call to tk_setPalette at startup.
Unfortunately, tk_setPalette always chooses a dark red color for
the selectColor value if none is given explicitly, and this makes
checkbuttons and radiobuttons look rather bad.

This restores the previous appearance by specifying selectColor
explicitly.  For light backgrounds we use white for selectColor, and
for dark backgrounds we use black.  The formula and threshold for
distinguishing light from dark are the same as used in tk_setPalette
for choosing the foreground color.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-14 21:15:01 +11:00
Bernt Hansen
8d849957d8 gitk: Skip translation of "wrong Tcl version" message
We check the required Tcl version number before we setup msgcat for
language translation.  If the Tcl version is too old just display the
untranslated error text.

The caller of show_error can now pass an alternative function for mc.
The Tcl list function turns the translation into a no-op.

This fixes the error:
    Error in startup script: invalid command name "mc"
when attempting to start gitk with Tcl 8.3.

Tested with both Tcl 8.3 and 8.4.

Signed-off-by: Bernt Hansen <bernt@norang.ca>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-03 22:28:42 +11:00
Mizar
d40bc70ab8 gitk: Add Japanese translation
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-03 22:28:42 +11:00
Jens Lehmann
5c838d23aa gitk: Use the --submodule option for displaying diffs when available
When displaying diffs in a submodule, this makes gitk display the
headlines of the commits being diffed, instead of just showing
not-quite-helpful SHA-1 pairs, if the underlying git installation
supports this.  That makes it much easier to evaluate the changes, as
it eliminates the need to start a gitk inside the submodule and use
the superprojects hashes there to find out what the commits are about.

Since the --submodule option of git diff is new in git version 1.6.6,
this only uses the --submodule option when a git version of 1.6.6 or
higher is detected.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-03 22:28:42 +11:00
Jens Lehmann
90a7792541 gitk: Fix diffing committed -> staged (typo in diffcmd)
When highlighting a commit, using the context menu over the staged changes
and then selecting "Diff this -> selected" the diff was empty.  The same
happened when highlighting the staged changes and using "Diff selected ->
this" over a commit.  The reason was a copy/paste error in [diffcmd].
This fixes it.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-03 22:28:34 +11:00
Guillermo S. Romero
5497f7a23a gitk: Add configuration for UI colour scheme
This adds an option to control the global colour scheme in the
Edit > Preferences dialog so that the whole interface can have
a non-default main colour.

Signed-off-by: Guillermo S. Romero <gsromero@infernal-iceberg.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-11-03 22:28:20 +11:00
Pat Thoyts
9bedb0e185 gitk: Work around leftover temporary save file
If a file exists and is hidden on Windows the Tcl open command will
fail as the attributes provided in the CREAT call fail to match those
of the existing file.  Forcing removal of the temporary file before we
begin solves any problems caused by previous failures to save the
application settings.  An alternative would be to remove the hidden
attribute before calling 'open'.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-09-21 13:04:48 +10:00
Paul Mackerras
aa43561ac0 gitk: Don't compare fake children when comparing commits
This fixes a bug where the compare-commits function would advance
to a fake node (one representing local changes, either checked in
but not committed, or not checked in) and then get an error when
trying to get the patch-id.  This fixes it by only considering the
real children of each commit.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-09-10 21:58:40 +10:00
Paul Mackerras
c21398be6d gitk: Show diff of commits at end of compare-commits output
When comparing a string of commits, when we find two non-merge commits
that differ, we now write the two commits to files and diff the files.
This pulls out the logic for creating a temporary directory from
external_diff into a separate procedure so that the new diffcommits
procedure can use it.

Because the diff command returns an exit status of 1 when the files
differ, and Tcl treats that as an error, this adds catch {} around the
close statements in getblobdiffline.

At present this only removes the temporary files when gitk exits.  It
should remove them when the diff is done.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-09-10 21:46:28 +10:00
Paul Mackerras
4a3da5d91a gitk: Show diff of commits at end of compare-commits output
When comparing a string of commits, when we find two non-merge commits
that differ, we now write the two commits to files and diff the files.
This pulls out the logic for creating a temporary directory from
external_diff into a separate procedure so that the new diffcommits
procedure can use it.

Because the diff command returns an exit status of 1 when the files
differ, and Tcl treats that as an error, this adds catch {} around the
close statements in getblobdiffline.

At present this only removes the temporary files when gitk exits.  It
should remove them when the diff is done.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-09-07 10:08:21 +10:00
Paul Mackerras
0cc08ff7dd gitk: Add a user preference to enable/disable use of themed widgets
Also move the hide-remotes option up into the commit display options
in the Edit->Preferences panel, since it affects the commit display
more than the diff display.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-09-05 22:06:46 +10:00
Paul Mackerras
eae7d64a2d Merge branch 'master' into dev 2009-09-05 17:34:03 +10:00
Peter Krefting
b53bb301f5 gitk: Update Swedish translation (280t0f0u)
Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-08-14 09:18:01 +10:00
Thomas Rast
9bf3acfada gitk: Parse arbitrary commit-ish in SHA1 field
We only accepted either SHA1s or heads/tags that have been read.  This
meant the user could not, e.g., enter HEAD to go back to the current
commit.

This adds code to call out to git rev-parse --verify if all other
methods of interpreting the string the user entered fail.
(git-rev-parse alone is not enough as we really want a single
revision.)

The error paths change slighly, because we now know from the rev-parse
invocation whether the expression was valid at all.  The previous
"unknown" path is now only triggered if the revision does exist, but
is not in the current view display.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-08-13 21:49:12 +10:00
Thomas Rast
2b1fbf90aa gitk: Fix direction of symmetric difference in optimized mode
ee66e08 (gitk: Make updates go faster, 2008-05-09) implemented an
optimized mode where gitk parses the arguments with rev-parse, and
manually reads history in chunks.  As mentioned in the commit message,
symmetric differences are a problem there:

    One wrinkle is that we have to turn symmetric diff arguments (of the
    form a...b) back into symmetric diff form so that --left-right still
    works, as git rev parse turns a...b into a b ^merge_base(a,b).

However, git-rev-parse returns a...b in the swapped order

    b a ^merge_base(a,b)

This has been the case since at least 1f8115b (the state of master at
the time of the abovementioned ee66e08; Merge branch 'maint',
2008-05-08).  So gitk flipped the sides of symmetric differences
whenever it was in optimized mode.

Fix this by swapping the sides of the reconstruction code.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-08-13 21:49:11 +10:00
Thomas Rast
ffe15297b0 gitk: New option to hide remote refs
In repositories with lots of remotes, looking at the history in gitk
can be borderline insane with all the red labels for remote refs.
Introduce a new option in the preferences that makes gitk ignore
remote refs entirely, so they don't take up space in the display.

Wished-for-by: Thell Fowler <tbfowler4@gmail.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-08-13 21:49:10 +10:00
Johannes Sixt
097e111822 gitk: Do not hard-code "encoding" in attribute lookup functions
Commit 39ee47e (Clean up file encoding code and add enable/disable option,
2008-10-15) rewrote the attribute lookup functions gitattr and
cache_gitattr, but in the process hard-coded the attribute name "encoding"
instead of using the functions' parameters. This fixes it.

This is not a serious regression because currently all callers look only
for "encoding".

Further note that this fix assumes that future callers will not pass an
attribute name that contains regex special characters.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-08-13 21:49:09 +10:00
Markus Heidelberg
a41ddbb649 gitk: Allow diff view without context lines
Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-25 09:46:31 +10:00
Michele Ballabio
e0a0199581 gitk: Add another string to translation
Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-25 09:46:31 +10:00
Dirk Suesserott
f687aaa833 gitk: Add option 'Simple history' to the options menu
When clicked, the option --simplify-by-decoration is added to gitk/git log.
This yields to a simplified history where only decorated commits are shown,
i.e. those with a yellow tag or a green branch flag.

Signed-off-by: Dirk Suesserott <newsletter@dirk.my1.cc>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-25 09:46:31 +10:00
Pat Thoyts
194bbf6cc8 gitk: Handle msysGit version during version comparisons
msysGit generates version strings with text appended which cannot
be used with vcompare; trying to use them generates a Tcl error.
Limit git_version to the first three digits which are the real git
version to avoid this error.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-19 08:57:29 +10:00
Elijah Newren
13d40b618a gitk: Make more options easily accessible from Edit View dialog
Commit 218a900bd8 added a number of new
individual fields for the Edit View dialog to make them more accessible
to end users, while still allowing all options to be specified in the
"arguments to git log" field.  This extends the dialog further, to
include refs, author, committer, commit message, and patch contents.
As before everything still remains accessible from the "arguments to
git log" input field.

Additionally, this provides hints for the format of the various input
fields (for example, listing some sample date strings in different
formats), and puts related query items into subsections to make it
easier to digest the number of options that exist.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-16 21:09:08 +10:00
Paul Mackerras
a8138733fc gitk: Check git version before using --textconv flag
Commit 785b7535 ("gitk: use --textconv to generate diff text")
added the --textconv flag to the git diff commands used to
display commit diffs.  Since some people use newer gitk with older
git installations, this adds a check on the git version to check
that it understands --textconv before using it.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-16 21:08:44 +10:00
Johannes Sixt
b5cda49040 gitk: Use --textconv to generate diff text
For the most part gitk's focus is on showing history and changes in
a human readable form.  For this reason, it makes sense to generate
the patch text in the diff view using --textconv so that textconv
drivers are used if they are defined.

gitk can also generate patches, but we do not use --textconv because
such patches could not be applied.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-16 21:08:05 +10:00
Christian Stimming
5e402e54e7 gitk: Update German translation.
Signed-off-by: Christian Stimming <stimming@tuhh.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-16 20:35:58 +10:00
Pat Thoyts
3cb1f9c982 gitk: Fix errors in the theme patch
This fixes a typo in the commit selection combobox that prevented it
from working properly, and sets the width of the widget.  This also
fixes show_error to handle errors arising before the gui is fully
configured (ie: invalid command line parameters)

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-16 20:17:46 +10:00
Pat Thoyts
d93f1713b0 gitk: Use themed tk widgets
With Tk 8.5+, this uses the themed widgets to improve the appearance
on Windows and MacOSX.  On X11 less difference is apparent, but users
can select alternate themes by setting *TkTheme in the resource
database (eg: *TkTheme: clam).

With Tk 8.6 there is a built-in font selection dialog.  This will make
use of that when available, as on Windows and MacOSX it calls the
native font selection dialog.

[paulus@samba.org - folded in subsequent patch to restore saved
pane sizes for ttk widgets, and trimmed trailing whitespace.]

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-01 09:35:09 +10:00
Paul Mackerras
fced800806 Merge branch 'master' into dev 2009-05-01 09:34:57 +10:00
Alex Riesen
ad7ef5b88d gitk: Add Russian translation
Thanks go to Dmitry Potapov for proofreading and suggested translation
of the word 'merge'.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-05-01 09:34:24 +10:00
Paul Mackerras
6f63fc18b6 gitk: Fix compare-commits function when we have local changes
This fixes a bug in the compare-commits function added in commit
010509f2 ("gitk: Add a command to compare two strings of commits")
where gitk would show an error dialog if the comparison of commits
got to a fake commit (one showing local changes).  It extends
getpatchid to handle these fake commits by using [diffcmd] to get
the git diff command variant to use, and also handles the situation
where an error occurs.

Now that we can have the fake commit IDs showing up, which are
00..00 and 00..01, the short ID is ambiguous.  To make sure the links
point to the right commit, this adds a new [appendshortlink] procedure
which takes the full link destination, and uses that rather than
appendwithlinks.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-21 22:22:31 +10:00
Pat Thoyts
478afad697 gitk: Avoid crash if closed while reading references
As recorded in msysGit issue 125, if the user closes gitk while it
reports itself as still reading references then Tk will crash in the
geometry management code.  This has been fixed for Tk 8.5.7 and above.
This patch avoids the problem by flushing outstanding geometry events
before calling the readrefs procedure.

See also http://code.google.com/p/msysgit/issues/detail?id=125

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-17 22:52:15 +10:00
Pat Thoyts
b575b2f1f4 gitk: Handle external diff tool with spaces in the path
This fixes the launching of external diff to handle a diff tool
that has spaces in the path.  This ensures a correctly formed
tcl list is passed to the open command with a single pipe character
prefixing the list (as per the tcl manual page for open).

The specific fault observed was that selecting WinMerge as the diff
tool from the default installed location in Program Files failed to
be launched from the context menu.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-17 22:47:49 +10:00
Pat Thoyts
c876dbadc2 gitk: Remember and restore the window state with the geometry
This records the window state in ~/.gitk.  On startup, if the gitk
window was previously maximized (zoomed), then we restore that state.

Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-17 22:47:49 +10:00
Michele Ballabio
b6e192dbf7 gitk: Map KP_Divide to focus the search box
Commit 97bed034 changed the behavior of the '/' key on the keyboard,
but the '/' on the keypad was left unused.  They now both do the same
thing.

Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-17 22:47:48 +10:00
Michele Ballabio
b56e0a9afd gitk: Mark some more strings for translation
Signed-off-by: Michele Ballabio <barra_cuda@katamail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-17 22:47:48 +10:00
Christian Stimming
84b4b832eb gitk: Mark forgotten string for translation
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-17 22:47:48 +10:00
Paul Mackerras
9832e4f29b gitk: Make .gitk a hidden file under windows
This sets the hidden attribute on the ~/.gitk file so it doesn't
appear in the windows user profile.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-17 22:47:48 +10:00
Paul Mackerras
010509f2de gitk: Add a command to compare two strings of commits
This adds a row context menu command to compare this commit and its
descendants with the marked commit and its descendants.  The results
are shown in the bottom-left pane.  Commits are compared by checking
whether their headlines are the same and their patches have the same
patch ID as generated by git patch-id.

Merges are ignored and skipped over (as long as they have one
descendant).  If two commits have the same patch ID then the process
will continue and compare their descendants, as long as they both have
exactly one descendant.  If either commit has 0 or 2 or more descendants,
the comparison stops there.  There is currently a limit of 100
comparisons.

This can be useful for checking whether one string of commits is just
a rebased version of another string of commits.  Mark the end of one
string (i.e. the oldest commit in the string) and invoke "Compare with
marked commit" on the end of the other string.

As this is implemented, the UI will be unresponsive while the results
are being generated.  This should be fixed.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-09 22:10:20 +10:00
Paul Mackerras
b9fdba7ff8 gitk: Add a way to mark a commit, plus a "find descendant" command
This adds a context-menu command to put a mark on this commit.  There
is at most one marked commit at any time, and it is indicated by a box
drawn around the headline.  Once a commit is marked, two other
context-menu commands become available: one to select the marked commit,
and another to find the closest common descendant of this commit and
the marked commit.

The "find common descendant" command uses the displayed parent/child
relationships (i.e. the rewritten parent pointers produced by git log),
not the real parent/child relationships.  Currently the UI will be
unresponsive while gitk is working out the nearest common descendant;
this should be improved in future.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-04-09 09:34:46 +10:00
Daniel A. Steffen
5fdcbb1390 gitk: Fixes for Mac OS X TkAqua
- middle button is B3 on TkAqua
- add horizontal mousehweel scrolling
- nicer default fonts
- use OSX-specific extdifftool
- remove quit menu item, call doquit on quit event
- move about & preferences menu items into apple menu
- don't set menu font

Signed-off-by: Daniel A. Steffen <das@users.sourceforge.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2009-03-23 22:35:38 +11:00