1. 22 1月, 2007 10 次提交
    • S
      git-gui: Pad new branch name input box. · f8a1518d
      Shawn O. Pearce 提交于
      The new branch name input box was showing up too close to the labelframe
      border, it was basically right on top of it on Windows.  This didn't
      look right when compared to the Starting Revision's expression input
      field, as that had a 5 pixel padding.
      
      So I've put the new name input box into its own frame and padded that
      frame by 5 pixels, making the UI more consistent.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      f8a1518d
    • S
      git-gui: Correct unmerged file detection at commit time. · 14efcc74
      Shawn O. Pearce 提交于
      Its impossible to commit an index which has unmerged stages.
      
      Unfortunately a bug in git-gui allowed the user to try to do exactly that,
      as we broke out of our file scanning loop as soon as we found a valid AMD
      index state.  That's wrong, as the files are coming back from our array
      in pseudo-random order; an unmerged file may get returned only after all
      merged files.
      
      I also noticed the grammer around here in our dialog boxes still used
      the term 'include', so this has been updated to reflect current usage.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      14efcc74
    • S
      git-gui: Add Refresh to diff viewer context menu. · 68c30b4a
      Shawn O. Pearce 提交于
      Sometimes you want to just force the diff to redisplay itself without
      rescanning every file in the filesystem (as that can be very costly
      on large projects and slow operating systems).  Now you can force a
      diff-only refresh from the context menu.  Previously you could also
      do this by reclicking on the file name in the UI, but it may not be
      obvious to all users, having a context menu option makes it more
      clear.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      68c30b4a
    • S
      git-gui: Correct disappearing unstaged files. · a4b1786b
      Shawn O. Pearce 提交于
      A prior commit tried to use the old index state for the old working
      directory state during a UI refresh of a file.  This caused files
      which were being unstaged (and thus becoming unmodified) to drop
      out of the working directory side of the display, at least until
      the user performed a rescan to force the UI to redisplay everything.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      a4b1786b
    • S
      git-gui: Clear diff from viewer if the side changed. · 6bdc9299
      Shawn O. Pearce 提交于
      If the user switches the currently shown file from one side of the UI
      to the other then how its diff is presented would be different.  And
      leaving the old diff up is downright confusing.
      
      Since the diff is probably not interesting to the user after the switch
      we should just clear the diff viewer.  This saves the user time, as they
      won't need to wait for us to reload the diff.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      6bdc9299
    • S
      git-gui: Fix bug in unmerged file display. · 079d0d50
      Shawn O. Pearce 提交于
      We were not correctly setting the old state of an index display to
      _ if the index was previously unmerged.   This caused us to try and
      update a U->M when resolving a merge conflict but we were unable to
      do so as the icon did not exist in the index viewer.  Tk did not
      like being asked to modify an icon which was undefined.
      
      Now we always transform both the old and the new states for both
      sides (index and working directory) prior to updating the UI.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      079d0d50
    • S
      git-gui: Improve diff --cc viewing for unmerged files. · fec4a785
      Shawn O. Pearce 提交于
      Now that we are using 'git diff' to display unmerged working directory
      files we are getting 'diff --cc' output rather than 'diff --combined'
      output.  Further the markers in the first two columns actually make
      sense here, we shouldn't attempt to rewrite them to something else.
      
      I've added 'diff --cc *' to the skip list in our diff viewer, as that
      particular line is not very interesting to display.
      
      I've completely refactored how we perform detection of the state of a
      line during diff parsing; we now report an error message if we don't
      understand the particular state of any given line.  This way we know
      if we aren't tagging something we maybe should have tagged in the UI.
      
      I've also added special display of the standard conflict hunk markers
      (<<<<<<<, =======, >>>>>>>).  These are formatted without a patch op
      as the patch op is always '+' or '++' (meaning the line has been added
      relative to the committed state) and are displayed in orange bold text,
      sort of like the @@ or @@@ marker line is at the start of each hunk.
      
      In a 3 way merge diff hunks which came from our HEAD are shown with a
      azure2 background, and hunks which came from the incoming MERGE_HEAD
      are displayed with a 'light goldenrod yellow' background.  This makes
      the two different hunks clearly visible within the file.  Hunks which
      are ++ or -- (added or deleted relative to both parents) are shown
      without any background at all.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      fec4a785
    • S
      git-gui: Improve the display of merge conflicts. · 3b4db3c1
      Shawn O. Pearce 提交于
      If a file has a merge conflict we want it to show up in the 'Changed
      But Not Updated' file list rather than the 'Changes To Be Committed'
      file list.  This way the user can mostly ignore the left side (the
      HEAD<->index comparsion) while resolving a merge and instead focus
      on the merge conflicts, which are just shown on the right hand side.
      
      This requires detecting the U state in the index side and drawing
      it as though it were _, then forcing the working directory side to
      have a U state.  We have to delay this until presentation time as
      we don't want to change our internal state data to be different
      from what Git is telling us (I tried, the patch for that was ugly
      and didn't work).
      
      When showing a working directory diff and its a merge conflict we
      don't want to use diff-files as this would wind up showing any
      automatically merged hunks obtained from MERGE_HEAD in the diff.
      These are not usually very interesting as they were completed by
      the system.  Instead we just want to see the conflicts.  Fortunately
      the diff porcelain-ish frontend (aka 'git diff') detects the case of
      an unmerged file and generates a --cc diff against HEAD and MERGE_HEAD.
      So we now force any working directory diff with an index state of 'U'
      to go through that difference path.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      3b4db3c1
    • S
      git-gui: Remove combined diff showing behavior. · 82cb8706
      Shawn O. Pearce 提交于
      The combined diff format can be very confusing, especially to new users
      who may not even be familiar with a standard two way diff format.  So
      for files which are already staged for commit and which are modifed in
      the working directory we should show two different diffs, depending on
      which side the user clicked on.
      
      If the user clicks on the "Changes To Be Committed" side then we should
      show them the PARENT<->index difference.  This is the set of changes they
      will actually commit.
      
      If the user clicks on the "Changed But Not Updated" side we should show
      them the index<->working directory difference.  This is the set of changes
      which will not be committed, as they have not been staged into the index.
      This is especially useful when merging, as the "Changed But Not Updated"
      files are the ones that need merge conflict resolution, and the diff here
      is the conflict hunks and/or any evil merge created by the user.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      82cb8706
    • S
      git-gui: Refactor current_diff -> current_diff_path. · 20a53c02
      Shawn O. Pearce 提交于
      We now need to keep track of which side the current diff is for,
      HEAD<->index or index<->working directory.  Consequently we need
      an additional "current diff" variable to tell us which side the
      diff is for.  Since this is really only necessary in reshow_diff
      I'm going to declare a new global, rather than try to shove both
      the path and the side into current_diff.
      
      To keep things clear later on, I'm renaming current_diff to
      current_diff_path.  There is no functionality change in this
      commit.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      20a53c02
  2. 21 1月, 2007 30 次提交