Add forward and back buttons and make SHA1 IDs clickable links.
When we display the commit message in the details pane, any string
of 40 [0-9a-f] characters that corresponds to a SHA1 ID that we
know about gets turned into a clickable link, and displayed in
blue and underlined.
We now keep a history of commits that we have looked at, and we
have forward and back buttons for moving within the history list.
Compress the graph horizontally if it gets too wide.
If the graph gets to use more than a certain percentage (default 50%)
of the width of the top-left pane, we now reduce the amount of space
allowed for each graph line. This means it doesn't look quite as
nice but you can still see the headline for the commit. (Currently
the only way to customize the percentage is to edit your ~/.gitk
file manually.)
Specifically this should fix the following errors:
wrong # args: should be "startdiff ids" (fix from Junio Hamano)
can't read "filelines(....)": no such element in array
can't unset "treepending": no such variable
Improve the merge display when the result differs from all parents.
Now we see if the result is quite similar to one of the parents, and
if it is, display the result as a diff from that parent. If the result
is similar to more than one parent, pick the one that it's most
similar to.
Some places assumed .git is the GIT_DIR, resulting heads and
tags not showing when it was run like "GIT_DIR=. gitk --all".
This is not a contrived example --- I rely on it to verify
my private copy of git.git repository before pushing it out.
Define a single procedure "gitdir" and use it.
Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Paul Mackerras <paulus@samba.org>
Display the diffs for a merge in a unified fashion.
Stuff that ended up in the result is shown in bold with a "+" at the
beginning of the line; stuff that didn't is in the normal font with
a "-" at the beginning of the line. The color shows which parent
the stuff was in; red for the first parent, blue for the second, then
green, purple, brown, and the rest are grey. If the result is different
from all of the parents it is shown in black (and bold).
Calculate the list of interesting files for a merge.
If there is a GCA for the parents of the merge, then a file is
interesting if some parent has a version that is different from both
the child and the GCA. If there is no GCA (e.g. for a merge that
pulls in an external project) then a file is interesting if the child's
version is different from all of the parents.
Next step is to actually show the differences for the interesting
files...
We display the files where the child differs from the first parent
first in black in the file list window, followed by the second parent
in blue, and so on using different colors for each parent (provided
you don't have more than 6 parents; if you do we cycle around).
Make searching in files changed faster, and fix some bugs.
We now kick off a single git-diff-tree -r --stdin and feed it all
the commit pairs we want to know about, instead of doing a separate
git-diff-tree invocation for each.
"Files" matches the find string against each of the files modified
by each commit, and can do exact, case-ignoring or regexp matching.
"Pickaxe" uses git-diff-tree -S'string' and can only do exact
matching. I called it "pickaxe" rather than "find within patch"
since it only finds commits where the string is present in the child
but not the parents or vice versa, and "pickaxe" is what the author
of that feature calls it.
Add a menu item for writing out a commit to a file.
This just invokes git-diff-tree. Also changed the readonly entry
widgets in the "write patch" and "generate tag" windows to have
flat relief, so it doesn't look like you should be able to modify
what's in them.
Fix a bug where we would corrupt the stuff read from git-rev-list.
If we have a very long commit message, and we end up getting a
bufferfull of data from git-rev-list that all belongs to one commit,
we ended up throwing away the data from a previous read that should
have been included. The result was a error message about not being
able to parse the output of git-rev-list.
Also, if the git-rev-list output that we can't parse is long, only put
the first 80 chars in the error message. Otherwise we end up with an
enormous error window.
Check for the existence of the git directory on startup.
Check that $GIT_DIR (or .git, if GIT_DIR is not set) is a directory.
This means we can give a more informative error message if the user
runs gitk somewhere that isn't a git repository.
Add commit row context menu and handle left-click on graph lines
Right-click on a context row now brings up a menu allowing the user to
generate a diff between that row and the selected row. Left-click on
a graph line shows the parent and children connected by the line in
the details pane. Left-click on a circle in the graph selects that
commit. Left-click elsewhere in the graph does nothing.
When displaying a diff, the bottom-right file list box behaves
slightly differently now; instead of eliding all other files' diffs,
it now just scrolls the details pane so that the selected file's diff
starts at the top of the pane.
Since the diffs can be rather large, arrange for an update to be done
every 100ms while reading diffs.
Also removed the CVS revision keywords and bumped the version number
to 1.2.
With --header, git-rev-list gives us the contents of the commit
in-line, so we don't need to exec a git-cat-file to get it, and we
don't need the readobj command either.
Also fixed a residual problem with handling the commit that
has a parent listed twice.
Draw graph lines as one continuous line where possible
Added context menu on lines
Added headline display when the mouse hovers over a line
Removed some debug messages
Use git-rev-list instead of git-rev-tree.
Fix bug in changing font size in entry widgets.
Fix bug with B1 click before anything has been drawn.
Use "units" and "pages" instead of "u" and "p" for tk8.5.
More fixes for geometry restoration
Make up/down/pgup/pgdn work again
Return in find string entry does find
Scale circles and lines with font size
Fix scrolling to make entire selected line visible
Use white circle for commits not listed but put in to terminate lines
Fix diff parsing for created and deleted files
Error popups on error conditions rather than stderr msgs
Stop . bindings firing on find string entry keypresses
Fix geometry saving/restoring a bit
Show the terminal commits
Highlight comment matches in the comment window
Show the diffs when a commit is selected
Selecting in the listbox reduces the text view to just the
diff for the file(s) selected
Added -c option for color-by-committer
Added some more key bindings