1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-16 14:04:52 +01:00
Commit graph

9335 commits

Author SHA1 Message Date
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
Shawn O. Pearce
c25623321d git-gui: Hide the ugly bash command line from the windows desktop icon.
The user really doesn't need to see the technical details of how we
launch git-gui from within their "desktop icon".  Instead we should hide
the command line from being displayed when the icon launches by putting
@ at the start of the line.  If they really need to see the command we
are running they can edit the batch file.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:18 -05:00
Shawn O. Pearce
4d583c86ec git-gui: Change more 'include' language to 'add'.
I just found a whole slew of places where we still were using the term
'include' rather than 'add' to refer to the act of updating the index
with modifications from the working directory.  To be consistent with
all Git documentation and command line tools, these should be 'add'.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:17 -05:00
Shawn O. Pearce
bdadecbae5 git-gui: Work around odd cygpath bug on Windows.
There appears to be a bug on one of my test systems where cygpath with
the --long-name option is generating a corrupt string that does not
actually refer to sh.exe.  This breaks any desktop icon created by
git-gui as the executable we are trying to invoke does not exist.
Since Cygwin is typically installed as C:\cygwin long path names is
probably not actually necessary to link to the shell.

I also added a small echo to the start of the icon script, as it can
take one of my test systems several seconds to startup git-gui.  This
way the user knows we're starting git-gui, and was politely asked to
wait for the action to complete.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:17 -05:00
Shawn O. Pearce
68cbfb1391 git-gui: Correct wording of the revert confirmation dialog.
We no longer describe updating the index as including changes, as we
now use the add notation used by core Git's command line tools.  So
its confusing to be talking about unincluded changes within the revert
dialog.  Instead we should used language like 'unadded changes'.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:16 -05:00
Shawn O. Pearce
6b0f3f4629 git-gui: Corrected behavior of deleted (but existing in HEAD) files.
Apparently I did not account for the D_ file state.  This can occur when
a file has been marked for deletion by deleting it from the index, and
the file also does not exist in the working directory.  Typically this
happens when the user deletes the file, hits Rescan, then includes the
missing file in the commit, then hits Rescan again.  We don't find the
file in the working directory but its been removed in the index, so the
state becomes D_.

This state should be identical with DD.  I'm not entirely sure why DD
occurs sometimes and D_ others, it would seem like D_ is the state that
should be happening instead of DD, leading me to believe there is a quirk
in git-gui's state manipulation code.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:16 -05:00
Shawn O. Pearce
81c0f29a56 git-gui: Run git-gc rather than git-repack.
Now that git 1.5.0-rc1 and later has a 'git gc' command which performs
all important repository management activites (including reflog pruning,
repacking local objects, unnecessary loose object pruning and rerere cache
expiration) we should run 'gc' when the user wants us to cleanup their
object database for them.

I think the name 'gc' is horrible for a GUI application like git-gui,
so I'm labeling the menu action 'Compress Database' instead.  Hopefully
this will provide some clue to the user about what the action does.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:16 -05:00
Shawn O. Pearce
51e7e568c0 git-gui: Show all fetched branches for remote pulls.
Loop through every remote.<name>.fetch entry and add it as a valid
option in the Pull menu.  This way users can pull any remote branch
that they track, without needing to leave the gui.  Its a rather crude
work around for not having a full merge interface.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:16 -05:00
Shawn O. Pearce
557afe820b git-gui: Created very crude Tools menu, to support miga.
In one particular case I have a tool called 'miga' which users may need
to invoke on their repository.  This is a homegrown tool which is not
(and should be) part of git-gui, but I still want to be able to run it
from within the gui.

Right now I'm taking a shortcut and adding it to the Tools menu if
we are not on Mac OS X and the support script used to launch the tool
exists in the local filesystem.  This is nothing but a complete and
utter hack.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:15 -05:00
Shawn O. Pearce
eae2ce6192 git-gui: Reworded 'Include' to 'Add' to match core Git.
Now that git-add is a first class citizen in core Git (Nico's 366bfcb6)
users may start to expect the term 'add' to refer to the act of including
a file's changes into a commit.  So I'm replacing all uses of the term
'Include' in the UI with 'Add'.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 02:54:15 -05:00
Johannes Schindelin
9c5e66e97d Teach revision machinery about --reverse
The option --reverse reverses the order of the commits.

[jc: with comments on rev_info.reverse from Simon 'corecode' Schubert.]

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 23:46:53 -08:00
Junio C Hamano
eaf6459e4d GIT v1.5.0-rc2
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 23:44:55 -08:00
Matthias Lederhofer
9b088c4e39 prune: --grace=time
This option gives grace period to objects that are unreachable
from the refs from getting pruned.

The default value is 24 hours and may be changed using
gc.prunegrace.

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 23:29:49 -08:00
Johannes Schindelin
a6c730644b --walk-reflogs: do not crash with cyclic reflog ancestry
Since you can reset --hard to any revision you already had, when
traversing the reflog ancestry, we may not free() the commit buffer.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 22:58:42 -08:00
Johannes Schindelin
40ab7c33cd --walk-reflogs: actually find the right commit by date.
Embarassing thinko.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
2007-01-20 21:32:31 -08:00
Junio C Hamano
4d12a47123 Fix --walk-reflog with --pretty=oneline
Now, "git log --abbrev-commit --pretty=o --walk-reflogs HEAD" is
reasonably pleasant to use.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 21:32:31 -08:00
Junio C Hamano
53645a3a62 reflog-walk: build fixes
Dependency on reflog-walk.h was missing in the Makefile, and
reflog-walk.c did not even include it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 21:32:31 -08:00
Junio C Hamano
911cedc95c log --walk-reflog: documentation
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 21:32:31 -08:00
Johannes Schindelin
db055e65d2 --walk-reflogs: disallow uninteresting commits
Do not allow uninteresting commits with --walk-reflogs, since it is
not clear what should be shown in these cases:

	$ git log --walk-reflogs master..next
	$ git log --walk-reflogs ^master

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
2007-01-20 21:32:31 -08:00
Johannes Schindelin
8860fd42fc Teach the revision walker to walk by reflogs with --walk-reflogs
When called with "--walk-reflogs", as long as there are reflogs
available, the walker will take this information into account, rather
than the parent information in the commit object.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 21:32:31 -08:00
Junio C Hamano
bcf3161876 git-rebase: allow rebasing a detached HEAD.
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 21:31:00 -08:00
Junio C Hamano
11a6ddb2c8 branch -f: no reason to forbid updating the current branch in a bare repo.
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 19:19:12 -08:00
Junio C Hamano
453c1e8575 git-tag -d: allow deleting multiple tags at once.
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 19:19:12 -08:00
Johannes Schindelin
68025633e3 Do not verify filenames in a bare repository
For example, it makes no sense to check the presence of a file
named "HEAD" when calling "git log HEAD" in a bare repository.

Noticed by Han-Wen Nienhuys.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
2007-01-20 19:10:26 -08:00
Junio C Hamano
06f6228a90 Stop ignoring Documentation/README
We do not copy this file from elsewhere anymore.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 19:10:26 -08:00
Johannes Schindelin
cd554bb173 apply --cached: fix crash in subdirectory
The static variable "prefix" was shadowed by an unused parameter
of the same name. In case of execution in a subdirectory, the
static variable was accessed, leading to a crash.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
2007-01-20 19:05:20 -08:00
Junio C Hamano
16bfefeebc show-branch --reflog: fix show_date() call
Not passing tz to show_date() is not a fix.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-20 19:02:03 -08:00
Johannes Schindelin
da8f070cee show_date(): fix relative dates
We pass a timestamp (i.e. number of seconds elapsed since Jan 1 1970,
00:00:00 GMT) to the function. So there is no need to "fix" the
timestamp according to the timezone.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
2007-01-20 18:57:47 -08:00
J. Bruce Fields
ef89f701a0 user-manual: add "quick start" as chapter 1
Add a "quick start" guide, modelled after Mercurial's, as the
first chapter.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
2007-01-20 21:41:48 -05:00
Junio C Hamano
b15af07928 show-branch --reflog: tighten input validation.
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-19 22:51:49 -08:00
Junio C Hamano
76a44c5c0b show-branch --reflog: show the reflog message at the top.
This changes the output so the list at the top shows the reflog
message, along with their relative timestamps.

You can use --reflog=<n> to show <n> most recent log entries, or
use --reflog=<n>,<b> to show <n> entries going back from the
entry <b>.  <b> can be either a number (so --reflog=4,20 shows 4
records starting from @{20}) or a timestamp (e.g. --reflog='4,1 day').

Here is a sample output (with --list option):

  $ git show-branch --reflog=10 --list jc/show-reflog
    [jc/show-reflog@{0}] (3 minutes ago) commit (amend): show-branch --ref
    [jc/show-reflog@{1}] (5 minutes ago) reset HEAD^
    [jc/show-reflog@{2}] (14 minutes ago) commit: show-branch --reflog: sho
    [jc/show-reflog@{3}] (14 minutes ago) commit: show-branch --reflog: sho
    [jc/show-reflog@{4}] (18 minutes ago) commit (amend): Extend read_ref_a
    [jc/show-reflog@{5}] (18 minutes ago) commit (amend): Extend read_ref_a
    [jc/show-reflog@{6}] (18 minutes ago) commit (amend): Extend read_ref_a
    [jc/show-reflog@{7}] (18 minutes ago) am: read_ref_at(): allow retrievi
    [jc/show-reflog@{8}] (18 minutes ago) reset --hard HEAD~4
    [jc/show-reflog@{9}] (61 minutes ago) commit: show-branch --reflog: use

This shows what I did more cleanly:

  $ git show-branch --reflog=10 jc/show-reflog
  ! [jc/show-reflog@{0}] (3 minutes ago) commit (amend): show-branch --ref
   ! [jc/show-reflog@{1}] (5 minutes ago) reset HEAD^
    ! [jc/show-reflog@{2}] (14 minutes ago) commit: show-branch --reflog:
     ! [jc/show-reflog@{3}] (14 minutes ago) commit: show-branch --reflog:
      ! [jc/show-reflog@{4}] (18 minutes ago) commit (amend): Extend read_
       ! [jc/show-reflog@{5}] (18 minutes ago) commit (amend): Extend read
        ! [jc/show-reflog@{6}] (18 minutes ago) commit (amend): Extend rea
         ! [jc/show-reflog@{7}] (18 minutes ago) am: read_ref_at(): allow
          ! [jc/show-reflog@{8}] (18 minutes ago) reset --hard HEAD~4
           ! [jc/show-reflog@{9}] (61 minutes ago) commit: show-branch --r
  ----------
  +          [jc/show-reflog@{0}] show-branch --reflog: show the reflog
    +        [jc/show-reflog@{2}] show-branch --reflog: show the reflog
   +++       [jc/show-reflog@{1}] show-branch --reflog: show the reflog
  +++++      [jc/show-reflog@{4}] Extend read_ref_at() to be usable fro
       +     [jc/show-reflog@{5}] Extend read_ref_at() to be usable fro
        +    [jc/show-reflog@{6}] Extend read_ref_at() to be usable fro
         +   [jc/show-reflog@{7}] read_ref_at(): allow retrieving the r
           + [jc/show-reflog@{9}] show-branch --reflog: use updated rea
           + [jc/show-reflog@{9}^] read_ref_at(): allow reporting the c
           + [jc/show-reflog@{9}~2] show-branch --reflog: show the refl
           + [jc/show-reflog@{9}~3] read_ref_at(): allow retrieving the
  ++++++++++ [jc/show-reflog@{8}] dwim_ref(): Separate name-to-ref DWIM

At @{9}, I had a commit to complete 5 patch series, but I wanted
to consolidate two commits that enhances read_ref_at() into one
(they were @{9}^ and @{9}~3), and another two that touch show-branch
into one (@{9} and @{9}~2).

I first saved them with "format-patch -4", and then did a reset
at @{8}.  At @{7}, I applied one of them with "am", and then
used "git-apply" on the other one, and amended the commit at
@{6} (so @{6} and @{7} has the same parent).  I did not like the
log message, so I amended again at @{5}.

Then I cherry-picked @{9}~2 to create @{3} (the log message
shows that it needs to learn to set GIT_REFLOG_ACTION -- it uses
"git-commit" and the log entry is attributed for it).  Another
cherry-pick built @{2} out of @{9}, but what I wanted to do was
to squash these two into one, so I did a "reset HEAD^" at @{1}
and then made the final commit by amending what was at the top.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-19 17:57:53 -08:00
Junio C Hamano
16d7cc90dd Extend read_ref_at() to be usable from places other than sha1_name.
You can pass an extra argument to the function to receive the
reflog message information.  Also when the log does not go back
beyond the point the user asked, the cut-off time and count are
given back to the caller for emitting the error messages as
appropriately.

We could later add configuration for get_sha1_basic() to make it
an error instead of it being just a warning.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-19 17:57:53 -08:00
Junio C Hamano
e86eb6668e dwim_ref(): Separate name-to-ref DWIM code out.
I'll be using this in another function to figure out what to
pass to resolve_ref().

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-19 17:57:53 -08:00
Johannes Schindelin
6f71686e0b config_set_multivar(): disallow newlines in keys
This will no longer work:

$ git repo-config 'key.with
newline' some-value

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
2007-01-19 17:55:14 -08:00
Uwe Kleine-König
d23842fd53 rename --exec to --receive-pack for push and send-pack
For now it's just to get a more descriptive name.  Later we might update the
push protocol to run more than one program on the other end.  Moreover this
matches better the corresponding config option remote.<name>. receivepack.

--exec continues to work

Signed-off-by: Uwe Kleine-König <zeisberg@informatik.uni-freiburg.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-19 17:54:33 -08:00