1. 13 11月, 2008 3 次提交
    • A
      gitk: Fix commit encoding support · 590915da
      Alexander Gavrilov 提交于
      This commit fixes two problems with commit encodings:
      
      1) git-log actually uses i18n.logoutputencoding to generate
         its output, and falls back to i18n.commitencoding only
         when that option is not set.  Thus, gitk should use its
         value to read the results, if available.
      
      2) The readcommit function did not process encodings at all.
         This led to randomly appearing misconverted commits if
         the commit encoding differed from the current locale.
      
      Now commit messages should be displayed correctly, except
      when logoutputencoding is set to an encoding that cannot
      represent charecters in the message.  For example, it is
      impossible to convert Japanese characters from Shift-JIS
      to CP-1251 (although the reverse conversion works).
      
      The reason for using git log to read the commit and then getting
      Tcl to convert its output is that is essentially what happens in
      the normal path through getcommitlines, hence there is less chance
      for unintended differences in how commits are processed in
      getcommitlines and do_readcommit.
      Signed-off-by: NAlexander Gavrilov <angavrilov@gmail.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      590915da
    • A
      gitk: Fix transient windows on Win32 and MacOS · e7d64008
      Alexander Gavrilov 提交于
      Transient windows cause problems on these platforms:
      
      - On Win32 the windows appear in the top left corner
        of the screen. In order to fix it, this patch causes
        them to be explicitly centered on their parents by
        an idle handler.
      
      - On MacOS with Tk 8.4 they appear without a title bar.
        Since it is clearly unacceptable, this patch disables
        transient on that platform.
      Signed-off-by: NAlexander Gavrilov <angavrilov@gmail.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      e7d64008
    • A
      gitk: Add accelerators to frequently used menu commands · cea07cf8
      Alexander Gavrilov 提交于
      This commit documents keyboard accelerators used for menu
      commands in the menu, as it is usually done, and adds some
      more, e.g. F4 to invoke Edit View (or New View if the current
      view is the un-editable "All files" view).
      
      The changes include a workaround for handling Shift-F4 on
      systems where XKB binds special XF86_Switch_VT_* symbols
      to Ctrl-Alt-F* combinations.  Tk often receives these codes
      when Shift-F* is pressed, so it is necessary to bind the
      relevant actions to them as well.
      Signed-off-by: NAlexander Gavrilov <angavrilov@gmail.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      cea07cf8
  2. 09 11月, 2008 1 次提交
  3. 08 11月, 2008 2 次提交
    • A
      gitk: Implement a user-friendly Edit View dialog · 218a900b
      Alexander Gavrilov 提交于
      Originally gitk required the user to specify all limiting
      options manually in the same field with the list of commits.
      It is rather unfriendly for new users, who may not know
      which options can be used, or, indeed, that it is possible
      to specify them at all.
      
      This commit modifies the dialog to present the most useful
      options as individual fields.  Note that options that may
      be useful to an extent, but produce a severely broken view,
      are deliberately not included.
      
      It is still possible to specify options in the commit list
      field, but when the dialog is reopened, they will be extracted
      into their own separate fields.
      Signed-off-by: NAlexander Gavrilov <angavrilov@gmail.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      218a900b
    • P
      gitk: Improve cherry-pick error handling · 887a791f
      Paul Mackerras 提交于
      This adds to the regexps that are used to work out what sort of error
      we encountered in trying to do a cherry-pick so that it recognizes
      some additional common error messages.  It adds a confirmation dialog
      when the error is a merge conflict so the user can choose whether or
      not to run git citool.  Finally, it arranges to update the display
      after a cherry-pick failed so that any local changes made by the
      cherry-pick become visible.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      887a791f
  4. 07 11月, 2008 3 次提交
  5. 04 11月, 2008 2 次提交
    • P
      gitk: Cope with unmerged files in local changes · 48a81b7c
      Paul Mackerras 提交于
      This modifies gettreediffline so that it when we get both a "U" line
      and an "M" line for the same file in the output from git diff-files
      or git diff-index --cached (used when the user clicks on a fake commit)
      we don't add the same filename to the treediff list twice.
      
      This also makes getblobdiffline recognize the "* Unmerged path ..."
      lines we get when we ask for the actual diffs, and makes a tiny
      optimization in makediffhdr.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      48a81b7c
    • P
      gitk: Make "show origin of this line" work on fake commits · fc4977e1
      Paul Mackerras 提交于
      This makes the "Show origin of this line" menu item work correctly
      on the fake commits that gitk shows for local uncommitted changes.
      With the fake commit for changes that aren't checked in to the index,
      we can actually get a 3-way diff shown, which means we might have to
      blame either the parent or the commit being merged in (which we get
      from .git/MERGE_HEAD).
      
      If the parent is the fake commit which shows the changes that have
      been checked in to the index, then we need to get the SHA1 of the blob
      for the version of the file that is in the index, then use git cat-file
      blob to get the contents of the blob, and give that to git blame with --contents - so that git blame will do the blame on the index version
      of the file.  In that case, we might get the all-zeroes SHA1 back from
      git blame, meaning that the line is new in the index version of the
      file, so then we have to use $nullid2 (the pseudo-SHA1 of the fake
      commit for the checked-in changes).
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      fc4977e1
  6. 02 11月, 2008 1 次提交
    • P
      gitk: Unify handling of merge diffs with normal 2-way diffs · 8b07dca1
      Paul Mackerras 提交于
      This adds code to getblobdiffline to make it able to recognize and
      display merge diffs (i.e. N-way diffs for N >= 3) as well as normal
      two-way diffs.  This means that it can also correctly display the
      3-way diff of the local changes when the git repository is in the
      middle of a merge with conflicts.
      
      This also removes getmergediffline and changes mergediff to invoke
      getblobdiffline rather than getmergediffline.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      8b07dca1
  7. 27 10月, 2008 3 次提交
    • P
      gitk: Make the background color of marked lines configurable · e3e901be
      Paul Mackerras 提交于
      This makes it possible for the user to configure the background color
      of lines that are "marked".  At the moment only the "show the origin
      of this line" function marks lines.  This also makes the user's choice
      persistent by saving it in ~/.gitk.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      e3e901be
    • P
      gitk: Add a menu item to show where a given line comes from · 8a897742
      Paul Mackerras 提交于
      This adds a menu item to the pop-up menu for the diff display window
      which makes gitk find which commit added the line (via git blame)
      and show that commit, with the line highlighted with a light-blue
      background.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      8a897742
    • P
      gitk: Fix some off-by-one errors in computing which line to blame · 190ec52c
      Paul Mackerras 提交于
      When walking back from the line where a right-click happened to the
      previous hunk separator line to calculate the line number to work on,
      we were counting every line including the one clicked on.  That isn't
      right; if the user clicked on the line immediately after the hunk
      separator then the correct line number would be the one from the
      hunk separator.  Therefore this looks at the clicked-on line to work
      out which parent to blame (or whether to blame the current commit),
      and then looks only at the preceding lines to work out the offset from
      the line number in the hunk separator.
      
      This also fixes an off-by-one error when we are showing files rather
      than diffs.  In this case diff_menu_filebase is the line number of
      the banner showing the file name, so the first line of the file is
      at line $diff_menu_filebase + 1.
      
      This also simplifies the code in find_hunk_blamespec a bit and arranges
      that we don't pop up the context menu if the user clicks on a file
      separator line or a hunk separator line.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      190ec52c
  8. 26 10月, 2008 1 次提交
  9. 21 10月, 2008 3 次提交
    • A
      gitk: Fix file list context menu for merge commits · 2df6442f
      Alexander Gavrilov 提交于
      Currently it displays an ugly error box, because the treediffs array
      is not filled for such commits.  This fixes it by making
      getmergediffline add the filenames it sees to the treediffs array
      like gettreediffline does.
      Signed-off-by: NAlexander Gavrilov <angavrilov@gmail.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      2df6442f
    • A
      gitk: Allow forcing branch creation if it already exists · bee866fa
      Alexander Gavrilov 提交于
      If gitk knows that the branch the user tries to create exists,
      it should ask whether it should overwrite it.  This way the user
      can either decide to choose a new name, or move the head while
      preserving the reflog.
      Signed-off-by: NAlexander Gavrilov <angavrilov@gmail.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      bee866fa
    • P
      gitk: Turn short SHA1 names into links too · d375ef9b
      Paul Mackerras 提交于
      This changes the link detection logic to accept strings of between 6
      and 40 hex characters as a possible SHA1 ID of another commit, rather
      than insisting on seeing the full 40 hex characters.
      
      To make the logic that turns a possible link into an actual link work
      with abbreviated IDs, this changes the way the commitinterest array is
      used, and puts the code that deals with it in a pair of new functions.
      The commitinterest array is now indexed by just the first 4 characters
      of the interesting SHA1 ID, and each element is a list of id + command
      pairs.  This also pulls out the logic for expanding an abbreviated
      SHA1 to the list of matching full IDs into its own function (the way
      it is done is still the same slow way it was done before, which should
      be improved some day).
      
      This also fixes the bug where clicking on a link would take you to the
      wrong commit if the line number of the target had changed since the
      link was made.
      
      This is based on a patch by Linus Torvalds, but totally rewritten by me.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      d375ef9b
  10. 18 10月, 2008 1 次提交
    • P
      gitk: Regenerate .po files · 79056034
      Paul Mackerras 提交于
      This is the result of running make update-po and removing or fixing
      the strings that were fuzzily matched.  The ones that were fixed were
      the ones where the only change was "git rev-list" to "git log", and
      the "about gitk" message where the copyright year got updated.
      
      To get xgettext to see the menu labels as needing translation, it
      was necessary for arrange for them to be preceded by "mc".  This
      therefore changes makemenu to ignore the first element in each
      menu item so that it can be "mc" in the makemenu call.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      79056034
  11. 17 10月, 2008 1 次提交
    • P
      gitk: New way of constructing menus that allows for Alt+letter accelerators · f2d0bbbd
      Paul Mackerras 提交于
      This is inspired by patches from Robin Rosenberg but takes a different
      approach.  This adds a "makemenu" procedure for constructing menus
      that allows the menu layout to be specified in a clear fashion, and
      provides one place where the alt+letter accelerators can be detected
      and handled.
      
      The alt+letter accelerator is specified by putting an ampersand (&)
      before the letter for the accelerator in the menu item name.  (Two
      ampersands in succession produce one ampersand in the menu item as
      it appears on screen.)  This is handled in makemenu.
      
      We also add an mca procedure which is like mc but also does the
      ampersand translation, for use when we want to refer to a menu item
      by name.  The mca name and the locations where we use it were
      shamelessly stolen from Robin Rosenberg's patch.
      
      This doesn't actually add any alt+letter accelerators yet.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      f2d0bbbd
  12. 16 10月, 2008 2 次提交
  13. 15 10月, 2008 1 次提交
    • P
      gitk: Clean up file encoding code and add enable/disable option · 39ee47ef
      Paul Mackerras 提交于
      This adds an option allowing the user to select whether gitk should
      look up per-file encoding settings using git check-attr or not.  If
      not, gitk uses the global encoding set in the git config (as reported
      by git config --get gui.encoding) for all files, or if that is not
      set, then the system encoding.
      
      The option is controlled by a checkbox in the Edit->Preferences
      window, and defaults to off for now because git check-attr is so
      slow.  When the user turns it on we discard any cached diff file
      lists in treediffs, because we may not have encodings cached for
      the files listed in those lists, meaning that getblobdiffline will
      do it for each file, which will be really really slow.
      
      This adjusts the limit of how many paths cache_gitattr passes to each
      instance of git check-attr depending on whether we're running under
      windows or not.  Passing only 30 doesn't effectively amortize the
      startup costs of git check-attr, but it's all we can do under windows
      because of the 32k limit on arguments to a command.  Under other OSes
      we pass up to 1000.
      
      Similarly we adjust how many lines gettreediffline processes depending
      on whether we are doing per-file encodings so that we don't run for
      too long.  When we are, 500 seems to be a reasonable limit, leading
      to gettreediffline taking about 60-70ms under Linux (almost all of
      which is in cache_gitattr, unfortunately).  This means that we can
      take out the update call in cache_gitattr.
      
      This adds a simple cache on [tclencoding].  Now that we get repeated
      calls to translate the same encoding, this is useful.
      
      This reindents the new code added in the last couple of commits to
      conform to the gitk 4-space indent and makes various other improvements:
      use regexp in gitattr and cache_gitattr instead of split + join + regsub,
      make gui_encoding be the value from [tclencoding] to avoid having to
      do [tcl_encoding $gui_encoding] in each call to get_path_encoding,
      and print a warning message at startup if $gui_encoding isn't
      supported by Tcl.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      39ee47ef
  14. 14 10月, 2008 2 次提交
    • A
      gitk: Implement batch lookup and caching of encoding attrs · 4db09304
      Alexander Gavrilov 提交于
      When the diff contains thousands of files, calling git-check-attr once
      per file is very slow.  With this patch gitk does attribute lookup in
      batches of 30 files while reading the diff file list, which leads to a
      very noticeable speedup.
      
      It may be possible to reimplement this even more efficiently, if
      git-check-attr is modified to support a --stdin-paths option.
      Additionally, it should quote the ':' character in file paths, or
      provide a more robust way of column separation.
      Signed-off-by: NAlexander Gavrilov <angavrilov@gmail.com>
      Tested-by: NJohannes Sixt <johannes.sixt@telecom.at>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      4db09304
    • A
      gitk: Enhance file encoding support · 09c7029d
      Alexander Gavrilov 提交于
      This allows the encoding to be specified for file contents and used
      when displaying files and diffs in the bottom-left pane.  When
      displaying diffs, the encoding for each diff hunk is that for the file
      that the diff hunk is from, so it can change through the course of the
      diff.
      
      The encoding for file contents is determined as follows:
      
      - File encoding defaults to the system encoding.
      - It can be overridden by setting the gui.encoding option.
      - Finally, the 'encoding' attribute is checked on
        per-file basis; it has the last word.
      
      Note: Since git-check-attr does not provide support for reading
      attributes from trees, attribute lookup is done using files from the
      working directory.
      
      This also extends the range of supported encoding names, adding
      ShiftJIS and Shift-JIS as aliases for Shift_JIS, and allowing
      cp-*, cp_*, ibm-*, ibm_*, jis-* and jis_* as aliases for cp*,
      ibm* and jis* respectively.
      
      This also fixes some bugs in handling of non-ASCII filenames.  Core
      git apparently supports only locale-encoded filenames, so processing
      is done using the system encoding.
      Signed-off-by: NAlexander Gavrilov <angavrilov@gmail.com>
      Tested-by: NJohannes Sixt <johannes.sixt@telecom.at>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      09c7029d
  15. 22 9月, 2008 3 次提交
  16. 26 8月, 2008 2 次提交
  17. 11 8月, 2008 1 次提交
  18. 04 8月, 2008 1 次提交
  19. 03 8月, 2008 1 次提交
  20. 31 7月, 2008 6 次提交