Commit Graph

69 Commits

Author SHA1 Message Date
Shawn O. Pearce
de5f6d5d17 git-gui: Add or unstage based on the specific icon used.
Rather than relying on the file state and just inverting it, we should
look at which file icon the user clicked on.  If they clicked on the
one in the "Changes To Be Committed" list then they want to unstage
the file.  If they clicked on the icon in the "Changed But Not Updated"
list then they want to add the file to the commit.  This should be much
more reliable about capturing the user's intent then looking at the file
state.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:23 -05:00
Shawn O. Pearce
93e912c5e6 git-gui: Refactor add/remove proc names to align with reality.
Now that core Git refers to resetting paths in the index as "unstaging"
the paths we should do the same in git-gui, both internally in our code
and also within the menu action name.  The same follows for our staging
logic, as core Git refers to this as 'add'.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:23 -05:00
Shawn O. Pearce
ac39160cd2 git-gui: Cleanup state descriptions.
Updated the state descriptions for individual file states to try and
make them more closely align with what git-runstatus might display.
This way a user who is reading Git documentation will be less confused
by our descriptions.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:23 -05:00
Shawn O. Pearce
5989a57734 git-gui: Remove invalid DM state.
The DM state cannot really happen.  Its implying that the file has
been deleted in the index, but the file in the working directory has
been modified relative to the file in the index.  This is complete
nonsense, the file doesn't exist in the index for it to be different
against!

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:22 -05:00
Shawn O. Pearce
b4b2b8454b git-gui: Correct DD file state to be only D_.
Apparently my earlier suspicion that the file state DD was a bug was
correct.  A file which has been deleted from the working directory and
from the index will always get the state of D_ during a rescan.  Thus
the only valid state for this to have is D_.  We should always use only
D_ internally during our state changes.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:22 -05:00
Shawn O. Pearce
21e409ad7f git-gui: Convert UI to use 'staged for commit' interface.
This is a rather drastic change to the git-gui user interface, but it
doesn't really look any different yet.  I've taken the two lists and
converted them to being "changes to be committed" and "changed but
not updated".  These lists correspond to the same lists output by
git-runstatus based on how files differ in the HEAD<->index and the
index<->working directory comparsions it performs.

This change is meant to correlate with the change in Git 1.5.0 where
we have brought the index more into the foreground and are trying to
teach users to make use of it as part of their daily operations.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:22 -05:00
Shawn O. Pearce
0812665e57 git-gui: Start file status display refactoring.
I'm going to refactor the way file status information gets displayed
so it more closely aligns with the way 'git-runstatus' displays the
differences between HEAD<->index and index<->working directory.  To
that end the other file list is going to be changed to be the working
directory difference.  So this change renames it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:21 -05:00
Shawn O. Pearce
c2faa43677 git-gui: Display the directory we are entering during startup.
If the user has many git-gui icons it may be confusing when they
start one which git-gui is still coming up.  So on the windows
systems we now include an echo statement which displays the full
pathname of the working directory we are trying to enter into.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:21 -05:00
Shawn O. Pearce
dccfa6727e git-gui: Make the gitk starting message match our usual format.
Because we usually say "Operation... please wait..." we should do
the same thing when starting gitk.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:21 -05:00
Shawn O. Pearce
c2758a17cb git-gui: Allow [gitdir ...] to act as [file join [gitdir] ...].
Because it is such a common idiom to use [gitdir] along with [file join]
to locate the path of an item within the .git directory of the current
repository we might as well allow gitdir to act as a wrapper for the
file join operation.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:21 -05:00
Shawn O. Pearce
c950c66ed9 git-gui: Cleanup usage of gitdir global variable.
The gitdir global variable is essentially read-only, and is used rather
frequently.  So are appname and reponame.  Needing to constantly declare
'global appname' just so we can access the value as $appname is downright
annoying and redundant.  So instead I'm declaring these as procedures and
changing all uses to invoke the procedure rather than access the global
directly.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:20 -05:00
Shawn O. Pearce
16d18b853b git-gui: Refactor reponame computation.
We use reponame in a number of locations, and every time its always the
same value.  Instead of computing this multiple times with code that was
copied and pasted around we can compute it once immediately after the
global gitdir has been computed and set.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:20 -05:00
Shawn O. Pearce
8ff487c737 git-gui: Suggest when running 'git gc' may be worthwhile.
Users often forget to repack their object database, then start to
complain about how slow it is to perform common operations after
they have collected thousands of loose objects in their objects
directory.  A simple repack usually restores performance.

During startup git-gui now asks git-count-objects how many loose
objects exist, and if this number exceeds a hardcoded threshold
we suggest that the user compress the database (aka run 'git gc')
at this time.  I've hardcoded this to 2000 objects on non-Windows
systems as there the filesystems tend to handle the ~8 objects
per directory just fine.  On Windows NTFS and FAT are just so slow
that we really start to lag when more than 200 loose objects exist,
so the hardcoded threshold is much lower there.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:20 -05:00
Shawn O. Pearce
f7b9f6e440 git-gui: Don't offer my miga hack if its configuration file isn't present.
I really hate that I have this specialized hack within git-gui, but
its here.  The hack shouldn't be offered unless miga's required .pvcsrc
file is in the top level of the repository's working directory.  If
this file is missing miga will fail to startup properly, and the user
cannot wouldn't be able to use it within this directory.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:19 -05:00
Shawn O. Pearce
9806311592 git-gui: Allow the user to copy the version data to the clipboard.
If a user wants to report an issue they will likely want to include
the version number with their issue report.  This may be difficult
to enter if the version number includes an abbreviated commit SHA1
on the end of it.  So we now give the user a context menu option
on the version box which allows them to copy all of the relevant
version data to the clipboard, ready for pasting into a report.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:19 -05:00
Shawn O. Pearce
f1cee4e6d1 git-gui: Ensure version number is always current.
I'm stealing the exact logic used by core Git within its own Makefile to
setup the version number within scripts and executables.  This way we
can be sure that the version number is always updated after a commit,
and that the version number also reflects when it is coming from a dirty
working directory (and is thus pretty worthless).

I've cleaned up some of the version display code in the about dialog too.
There were simply too many blank lines in the bottom section where we
showed the version data.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:19 -05:00
Shawn O. Pearce
0499b24ad6 git-gui: Display the full GPL copyright notice in about dialog.
We're a true GPL program, and we're interactive.  We should show the
entire GPL notice and disclaimer of warranty in our about dialog upon
request by the user, as well as include it in the header of our source.
Perhaps overkill, but is recommended by our license.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:19 -05:00
Shawn O. Pearce
2f4479fb17 git-gui: Display the git-gui version in the Help->About dialog.
Now that we know what version git-gui is, the about dialog should
display it to the end-user.  This way users can find out what version
they have before they report a problem or request a feature.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:18 -05:00
Shawn O. Pearce
41bdcda373 git-gui: Modified makefile to embed version into git-gui script.
We want to embed the version of git-gui directly into the script file,
so that we can display it properly in the about dialog.  Consequently
I've refactored the Makefile process to act like the one in core git.git
with regards to shell scripts, allowing git-gui to be constructed by a
sed replacement performed on git-gui.sh.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:18 -05:00