1. 05 8月, 2008 1 次提交
  2. 30 7月, 2008 1 次提交
    • S
      git-gui: Fix gitk search in $PATH to work on Windows · 79317e5d
      Shawn O. Pearce 提交于
      Back in 15430be5 ("Look for gitk in $PATH, not $LIBEXEC/git-core")
      git-gui learned to use [_which gitk] to locate where gitk's script
      is as Git 1.6 will install gitk to $prefix/bin (in $PATH) and all
      of the other tools are in $gitexecdir.
      
      This failed on Windows because _which adds the ".exe" suffix as it
      searches for the program on $PATH, under the assumption that we can
      only execute something from Tcl if it is a proper Windows executable.
      
      When scanning for gitk on Windows we need to omit the ".exe" suffix.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      79317e5d
  3. 27 7月, 2008 1 次提交
  4. 26 7月, 2008 1 次提交
  5. 17 7月, 2008 3 次提交
  6. 08 7月, 2008 1 次提交
  7. 02 7月, 2008 1 次提交
    • J
      git-gui: Implement "Stage/Unstage Line" · 5821988f
      Johannes Sixt 提交于
      This adds a context menu entry below "Stage/Unstage Hunk" that stages or
      unstages just the line under the mouse pointer.
      
      This is by itself useful, for example, if there are unrelated changes in
      the same hunk and the hunk cannot be split by reducing the context.
      
      The feature can also be used to split a hunk by staging a number of
      additions (or unstaging a number of removals) until there are enough
      context lines that the hunk gets split.
      
      The implementation reads the complete hunk that the line lives in, and
      constructs a new hunk by picking existing context lines, removing unneeded
      change lines and transforming other change lines to context lines. The
      resulting hunk is fed through 'git apply' just like in the "Stage/Unstage
      Hunk" case.
      Signed-off-by: NJohannes Sixt <johannes.sixt@telecom.at>
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      5821988f
  8. 26 6月, 2008 1 次提交
  9. 21 6月, 2008 1 次提交
  10. 14 6月, 2008 1 次提交
    • A
      git-gui: Move on to the next filename after staging/unstaging a change · 8a965b8e
      Abhijit Menon-Sen 提交于
      Suppose the "Unstaged Changes" pane contains a list of files, and one of
      them is selected (i.e., that diff is currently being displayed). If one
      clicks on the icon to stage the change, git-gui clears the diff and one
      has to click on another filename to see the next diff in the list.
      
      This patch changes that behaviour. If one clicks on the icon to stage
      (or unstage) the file whose diff is being displayed, git-gui will move
      on to the next filename in the list and display that diff instead of a
      blank diff pane. If the selected file was at the end of the list, the
      diff pane will display the previous diff instead; if the selected file
      was the only one listed, the diff pane will become blank.
      
      If no diff is currently being displayed, this patch changes nothing.
      Signed-off-by: NAbhijit Menon-Sen <ams@toroid.org>
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      8a965b8e
  11. 22 5月, 2008 1 次提交
    • S
      git-gui: Handle workdir detection when CYGWIN=nowinsymlinks · 7f83aa2d
      Shawn O. Pearce 提交于
      If the user has put nowinsymlinks into their CYGWIN environment
      variable any symlinks created by a Cygwin process (e.g. ln -s)
      will not have the ".lnk" suffix.  In this case workdir is still
      a workdir, but our detection of looking for "info.lnk" fails
      as the symlink is actually a normal file called "info".
      
      Instead we just always use Cygwin's test executable to see if
      info/exclude is a file.  If it is, we assume from there on it
      can be read by git-ls-files --others and is thus safe to use
      on the command line.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      7f83aa2d
  12. 21 5月, 2008 1 次提交
    • S
      git-gui: Add a --trace command line option · 16dd62ac
      Shawn O. Pearce 提交于
      Often new Git users want to know what commands git-gui uses to make
      changes, so they can learn the command line interface by mimicking
      what git-gui does in response to GUI actions.  Showing the direct
      commands being executed is easy enough to implement but this is of
      little value to end-users because git-gui frequently directly calls
      plumbing, not porcelain.
      
      Since the code is already written and tested, its fairly harmless
      to include.  It may not help a new end-user, but it can help with
      debugging git-gui or reverse-engineering its logic to further make
      changes to it or implement another GUI for Git.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      16dd62ac
  13. 09 5月, 2008 1 次提交
    • S
      git-gui: Setup branch.remote,merge for shorthand git-pull · fe70225d
      Shawn O. Pearce 提交于
      When creating new branches if branch.autosetupmerge is not set, or
      is set to true or always and we have been given a remote tracking
      branch as the starting point for a new branch we want to create the
      necessary configuration options in .git/config for the new branch
      so that a no argument git-pull on the command line pulls from the
      remote repository's branch.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      fe70225d
  14. 05 4月, 2008 1 次提交
  15. 04 4月, 2008 1 次提交
  16. 02 4月, 2008 1 次提交
  17. 15 3月, 2008 1 次提交
    • S
      git-gui: Don't translate the special Apple menu · 442b3caa
      Shawn O. Pearce 提交于
      Peter Karlsson pointed out there is no value in translating the
      string "Apple", as this is used as the dummy label for the Apple
      menu on Mac OS X systems.
      
      The Apple menu is actually not the menu with the Apple corporate
      logo, but the menu next to it, which shows the name of the
      application and is typically called the application menu.  Most users
      of git-gui see this menu titled as "Git Gui".  The actual label of
      this menu comes from our Info.plist file and cannot be specified
      by any other means.  Translating this string in the Tcl PO files
      is not necessary.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      442b3caa
  18. 08 3月, 2008 1 次提交
  19. 06 3月, 2008 1 次提交
  20. 20 2月, 2008 1 次提交
  21. 12 2月, 2008 1 次提交
    • S
      git-gui: Automatically spell check commit messages as the user types · 95b002ee
      Shawn O. Pearce 提交于
      Many user friendly tools like word processors, email editors and web
      browsers allow users to spell check the message they are writing
      as they type it, making it easy to identify a common misspelling
      of a word and correct it on the fly.
      
      We now open a bi-directional pipe to Aspell and feed the message
      text the user is editing off to the program about once every 300
      milliseconds.  This is frequent enough that the user sees the results
      almost immediately, but is not so frequent as to cause significant
      additional load on the system.  If the user has modified the message
      text during the last 300 milliseconds we delay until the next period,
      ensuring that we avoid flooding the Aspell process with a lot of
      text while the user is actively typing their message.
      
      We wait to send the current message buffer to Aspell until the user
      is at a word boundary, thus ensuring that we are not likely to ask
      for misspelled word detection on a word that the user is actively
      typing, as most words are misspelled when only partially typed,
      even if the user has thus far typed it correctly.
      
      Misspelled words are highlighted in red and are given an underline,
      causing the word to stand out from the others in the buffer.  This is
      a very common user interface idiom for displaying misspelled words,
      but differs from one platform to the next in slight variations.
      For example the Mac OS X system prefers using a dashed red underline,
      leaving the word in the original text color.  Unfortunately the
      control that Tk gives us over text display is not powerful enough
      to handle such formatting so we have to work with the least common
      denominator.
      
      The top suggestions for a misspelling are saved in an array and
      offered to the user when they right-click (or on the Mac ctrl-click)
      a misspelled word.  Selecting an entry from this menu will replace
      the misspelling with the correction shown.  Replacement is integrated
      with the undo/redo stack so undoing a replacement will restore the
      misspelled original text.
      
      If Aspell could not be started during git-gui launch we silently eat
      the error and run without spell checking support.  This way users
      who do not have Aspell in their $PATH can continue to use git-gui,
      although they will not get the advanced spelling functionality.
      
      If Aspell started successfully the version line and language are
      shown in git-gui's about box, below the Tcl/Tk versions.  This way
      the user can verify the Aspell function has been activated.
      
      If Aspell crashes while we are running we inform the user with an
      error dialog and then disable Aspell entirely for the rest of this
      git-gui session.  This prevents us from fork-bombing the system
      with Aspell instances that always crash when presented with the
      current message text, should there be a bug in either Aspell or in
      git-gui's output to it.
      
      We escape all input lines with ^, as recommended by the Aspell manual
      page, as this allows Aspell to properly ignore any input line that is
      otherwise looking like a command (e.g. ! to enable terse output).  By
      using this escape however we need to correct all word offsets by -1 as
      Aspell is apparently considering the ^ escape to be part of the line's
      character count, but our Tk text widget obviously does not.
      
      Available dictionaries are offered in the Options dialog, allowing
      the user to select the language they want to spellcheck commit
      messages with for the current repository, as well as the global
      user setting that all repositories inherit.
      
      Special thanks to Adam Flott for suggesting connecting git-gui
      to Aspell for the purpose of spell checking the commit message,
      and to Wincent Colaiuta for the idea to wait for a word boundary
      before passing the message over for checking.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      95b002ee
  22. 21 1月, 2008 1 次提交
    • S
      git-gui: Consolidate hook execution code into a single function · ed76cb70
      Shawn O. Pearce 提交于
      The code we use to test if a hook is executable or not differs on
      Cygwin from the normal POSIX case.  Rather then repeating that for
      all three hooks we call in our commit code path we can place the
      common logic into a global procedure and invoke it when necessary.
      
      This also lets us get rid of the ugly "|& cat" we were using before
      as we can now rely on the Tcl 8.4 feature of "2>@1" or fallback to
      the "|& cat" when necessary.
      
      The post-commit hook is now run through the same API, but its outcome
      does not influence the commit status.  As a result we now show any of
      the errors from the post-commit hook in a dialog window, instead of on
      the user's tty that was used to launch git-gui.  This resolves a long
      standing bug related to not getting errors out of the post-commit hook
      when launched under git-gui.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      ed76cb70
  23. 14 12月, 2007 1 次提交
  24. 08 11月, 2007 1 次提交
  25. 01 11月, 2007 1 次提交
  26. 26 10月, 2007 1 次提交
  27. 17 10月, 2007 1 次提交
  28. 13 10月, 2007 1 次提交
  29. 12 10月, 2007 5 次提交
    • S
      git-gui: offer a list of recent repositories on startup · 24f7c64b
      Steffen Prohaska 提交于
      If git-gui is started outside a work tree the repository chooser
      will offer a list of recently opened repositories.  Clicking on
      any list entry directly opens the repository.
      
      The list of recently opened repositories is stored in the config
      as the multi-valued option gui.recentrepo. If the list grows beyond
      10 entries it will be truncated by removing one of the older entries.
      
      Only repositories that are opened through the repository chooser
      will get added to the recent list.  Repositories opened from the
      shell will not yet be added to the recent list, as users are likely
      to have a way to easily return to the same directory via their shell.
      
      [sp: This is actually a combined work from both Steffen and myself.
           Most of the ideas are Steffen's, as is the basic outline of
           the code, but any outstanding bugs are entirely my fault.]
      Signed-off-by: NSteffen Prohaska <prohaska@zib.de>
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      24f7c64b
    • S
      git-gui: Support LFs embedded in config file values · 85f7a94b
      Shawn O. Pearce 提交于
      Using the new --null option added to git-config in git 1.5.3 we
      can safely accept LFs that are embedded in configuration options.
      This does require a completely different configuration file parser
      then the pre 1.5.3 version as we are splitting on very different
      values.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      85f7a94b
    • S
      git-gui: Refactor git-config --list parsing · f00d504a
      Shawn O. Pearce 提交于
      The parsing for the output of `git config --list` is the same for
      both the global options and the current repository's options so we
      can really just use the same parser between them.
      
      I'm currently just refactoring the parser so we can use a different
      one depending on the version of git available to us at runtime.  My
      next change will add support for 1.5.3's --null option.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      f00d504a
    • S
      git-gui: Move load_config procedure below git-version selection · 69f85ffa
      Shawn O. Pearce 提交于
      To better handle configuration options that contain LFs in their
      values we want to use the new -z option available in git-config
      version 1.5.3 and later.  To configure load_config based upon the
      git version we need to move thos below the git-version computation.
      
      No logic changes yet, just a minor reordering of the code.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      69f85ffa
    • J
      git-gui: Change main window layout to support wider screens · a0592d3f
      Johannes Sixt 提交于
      The layout is changed to have the file lists at the left (Unstaged
      Changes at the top, Staged Changes below it) and the diff window
      at the right (with the commit area below it).
      
        +----------+---------------------+
        | Unstaged |  Diff area          |
        |          |                     |
        |          |                     |
        |          |                     |
        +----------+                     |
        | Staged   |                     |
        |          +---------------------+
        |          |  Commit area        |
        |          |                     |
        +----------+---------------------+
      
      The advantages are:
      
        - The height of the file lists can be adjusted independently to
          fit the files that they contain.
        - The diff viewer is higher.
      
      On wide screens it is ok that the main window is now generally
      wider, too.
      Signed-off-by: NJohannes Sixt <johannes.sixt@telecom.at>
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      a0592d3f
  30. 10 10月, 2007 4 次提交
    • S
      git-gui: add directory git-gui is located in to PATH (on Windows) · be700fe3
      Steffen Prohaska 提交于
      This commit modifies PATH to include a good guess where git
      could be found. The first location to search for executable is
      the directory git-gui is installed in. This is a good guess for
      a sane installation.
      
      Even if git is not available in PATH, git-gui is now able
      to find it. Hence git-gui can be passed to wish as an absolute
      path without caring about the environment.
      
      We must modify PATH to be able to spawn shell based git commands.
      For builtins it would be sufficient to located them and execute
      them with their absolute path. But for shell based git commmands
      PATH needs to be modified.
      Signed-off-by: NSteffen Prohaska <prohaska@zib.de>
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      be700fe3
    • S
      git-gui: Shorten the staged/unstaged changes title bar text · c73ce762
      Shawn O. Pearce 提交于
      The titles for the staged and unstaged areas were usually opening
      up too narrow by default, causing the text to be clipped by Tcl as
      it tried to center the text in the middle of the available area.
      This meant that users who were new to git-gui did not get to see
      the entire header and may be unclear about what the different lists
      are.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      c73ce762
    • S
      git-gui: Bind Cmd-, to Preferences on Mac OS X · 13824e2d
      Shawn O. Pearce 提交于
      A Mac OS X UI convention is to have Cmd-, be the accelerator key
      for the preferences window, which by convention is located in the
      apple menu under a separator below the about command.  We also now
      call this "Preferences..." as that is the conventional term used
      in English.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      13824e2d
    • S
      git-gui: Consolidate the Fetch and Push menus into a Remote menu · 6bdf5e5f
      Shawn O. Pearce 提交于
      Sometimes the Fetch menu looks really odd, such as if you are in a
      repository that has no remotes configured when you start git-gui.
      Here we didn't have any items to add to the Fetch menu so it was a
      tad confusing for the end-user to see an empty menu on the menu bar.
      
      We now place all of the commands related to fetching and pushing of
      changes into a single "Remote" menu.  This way we have a better class
      of bucket that we can drop additional remote related items into such
      as doing a remote merge or editing the remote configuration specs.
      
      The shortcuts to execute fetch/remote prune/push on existing remote
      specifications are now actually submenus listing the remotes by name.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      6bdf5e5f
  31. 08 10月, 2007 1 次提交