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

8870 commits

Author SHA1 Message Date
Johannes Schindelin
084ae0a7bd reflog inspection: introduce shortcut "-g"
A short-hand "-g" for "git log --walk-reflogs" and "git
show-branch --reflog" makes it easier to access the reflog
info.

[jc: added -g to show-branch for symmetry]

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-24 15:13:47 -08:00
Johannes Schindelin
e955ae957c annotate: use pager
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-24 15:08:31 -08:00
Jakub Narebski
83cd10a056 t/t1300-repo-config.sh: value continued on next line
Documentation/config.txt:
  Variable value ending in a '`\`' is continued on the next line in the
  customary UNIX fashion.

Test it.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-23 17:35:48 -08:00
Junio C Hamano
d7ebd53d37 git-checkout -m: fix merge case
Commit c1a4278e switched the "merging checkout" implementation
from 3-way read-tree to merge-recursive, but forgot that
merge-recursive will signal an unmerged state with its own exit
status code.  This prevented the clean-up phase (paths cleanly
merged should not be updated in the index) from running.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-23 16:58:13 -08:00
Shawn O. Pearce
59885273c3 git-gui: Handle commit encoding better.
Git prefers that all log messages are encoding in UTF-8.  So now when
git-gui generates the commit message it converts the commit message
text from the internal Tcl Unicode representation into a UTF-8 file.
The file is then fed as stdin to git-commit-tree.  I had to start
using a file here rather than feeding the message in with << as
<< uses the system encoding, which we may not want.

When we reload a commit message via git-cat-file we are getting the
raw byte stream, with no encoding performed by Git itself.  So unless
the new 'encoding' header appears in the message we should probably
assume it is utf-8 encoded; but if the header is present we need to
use whatever it claims.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 04:40:21 -05:00
Shawn O. Pearce
51a989ba5a git-gui: Honor system encoding for filenames.
Since git operates on filenames using the operating system encoding
any data we are receiving from it by way of a pipe, or sending to it
by way of a pipe must be formatted in that encoding.  This should
be the same as the Tcl system encoding, as its the encoding that
applications should be using to converse with the operating system.

Sadly this does not fix the gitweb/test file in git.git on Macs;
that's due to something really broken happening in the filesystem.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 04:07:18 -05:00
Shawn O. Pearce
0565246a7c git-gui: Remove spurious newline in untracked file display.
This newline is stupid; it doesn't get put here unless the file
is very large, and then its just sort of out of place.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 03:30:02 -05:00
Shawn O. Pearce
4e62e2725e git-gui: Don't try to tag the 'Binary files * and * differ' line.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 03:25:17 -05:00
Shawn O. Pearce
d3596fd948 git-gui: When possible show the type of an untracked file.
Users may want to know what a file is before they add it to the
repository, especially if its a binary file.  So when possible
invoke 'file' on the path and try to get its output.  Since
this is strictly advice to the user we won't bother to report
any failures from our attempt to run `file`.

Since some file commands also output the path name they were
given we look for that case and strip it off the front of the
returned output before placing it into the diff viewer.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 03:18:37 -05:00
Shawn O. Pearce
19b41e4559 git-gui: Limit display of large untracked files.
Our internal diff viewer displays untracked files to help users see if
they should become tracked, or not.  It is not meant as a full file
viewer that handles any sort of input.  Consequently it is rather
unreasonable for users to expect us to show them very large files.
Some users may click on a very big file (and not know its very big)
then get surprised when Tk takes a long time to load the content and
render it, especially if their memory is tight and their OS starts to
swap processes out.

Instead we now limit the amount of data we load to the first 128 KiB
of any untracked file.  If the file is larger than 128 KiB we display
a warning message at the top of our diff viewer to notify the user
that we are not going to load the entire thing.  Users should be able
to recognize a file just by its first 128 KiB and determine if it
should be added to the repository or not.

Since we are loading 128 KiB we may as well scan it to see if the
file is binary.  So I've removed the "first 8000 bytes" rule and
just allowed git-gui to scan the entire data chunk that it read in.
This is probably faster anyway if Tcl's [string range] command winds
up making a copy of the data.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 02:33:58 -05:00
Shawn O. Pearce
464c9ffee4 git-gui: Don't show content of untracked binary files.
A binary file can be very large, and showing the complete content of
one is horribly ugly and confusing.  So we now use the same rule that
core Git uses; if there is a NUL byte (\0) within the first 8000 bytes
of the file we assume it is binary and refuse to show the content.

Given that we have loaded the entire content of the file into memory
we probably could just afford to search the whole thing, but we also
probably should not load multi-megabyte binary files either.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 02:08:09 -05:00
Shawn O. Pearce
124355d32c git-gui: Always start a rescan on an empty diff.
If we got an empty diff its probably because the modification time of
the file was changed but the file content hasn't been changed.  Typically
this happens because an outside program modified the file and git-gui
was told to not run 'update-index --refresh', as the user generally
trusts file modification timestamps.  But we can also get an empty diff
when a program undos a file change and still updates the modification
timestamp upon saving, but has undone the file back to the same as what
is in the index or in PARENT.

So even if gui.trustmtime is false we should still run a rescan on
an empty diff.  This change also lets us cleanup the dialog message
that we show when this case occurs, as its no longer got anything to
do with Trust File Modification Timestamps.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 01:48:50 -05:00
Shawn O. Pearce
e54a1bd122 git-gui: Ignore 'No newline at end of file' marker line.
If one or both versions of the file don't have a newline at the end
of the file we get a line telling us so in the diff output.  This
shouldn't be tagged, nor should it generate a warning about not
being tagged.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 01:48:50 -05:00
Shawn O. Pearce
75e78c8a1b git-gui: Fix 'Select All' action on Windows.
Sometimes the Select All action from our context menus doesn't work
unless the text field its supposed to act on has focus.  I'm not
really sure why adding the sel tag requires having focus.  It
technically should not be required to update the sel tag membership,
but perhaps there is a bug in Tcl/Tk 8.4.1 on Windows which is
causing this odd behavior.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 01:48:50 -05:00
Shawn O. Pearce
e0c781b347 git-gui: Don't attempt to tag new file/deleted file headers in diffs.
We don't want to tag these new file/delete file lines, as they aren't
actually that interesting.  Its quite clear from the diff itself that
the file is a new file or is a deleted file (as the entire thing will
appear in the diff).

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-23 01:48:49 -05:00
Junio C Hamano
c9a8992569 reflog gc: a tag that does not point at a commit is not a crime.
Although unusual, tags can point at any object.  Warning only
once is fine, but warning every time about the same tag gets
annoying.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 21:39:03 -08:00
Jeff King
222664e74d contrib/vim: update syntax for changed commit template
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 20:40:26 -08:00
Jeff King
90f70a910a format-patch: fix bug with --stdout in a subdirectory
We set the output directory to the git subdirectory prefix if one has
not already been specified. However, in the case of --stdout, we
explicitly _don't_ want the output directory to be set. The result was
that "git-format-patch --stdout" in a directory besides the project root
produced the "standard output, or directory, which one?" error message.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 19:46:19 -08:00
Junio C Hamano
83e24dce14 [PATCH] honor --author even with --amend, -C, and -c.
Earlier code discarded GIT_AUTHOR_DATE taken from the base
commit when --author was specified.  This was often wrong as
that use is likely to fix the spelling of author's name.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 19:40:57 -08:00
Junio C Hamano
5e207b4bf8 .mailmap: fix screw-ups in Uwe's name
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 16:25:15 -08:00
Shawn O. Pearce
46aaf90b49 git-gui: Force an update-index --refresh on unchanged files.
Its possible for external programs to update file modification dates of
many files within a repository.  I've seen this on Windows with a popular
virus scanner, sadly enough.  If the user has Trust File Modification
Timestamp enabled and the virus scanner touches a large number of files
it can be annoying trying to clear them out of the 'Changed But Not
Updated' file list by clicking on them one at a time to load the diff.

So now we force a rescan as soon as one such file is found, and for
just that rescan we disable the Trust File Modification Timestamp option
thereby allowing Git to update the modification dates in the index.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-22 17:10:38 -05:00
Eric Wong
cea70cf881 git-svn: remove leading slash when printing removed directories
Not sure why it was there in the first place, we always do our
work relative to the URL we're connected to; even if that URL is
the root of the repository, so the leading slash is pointless...
Lets be consistent when printing things for the user to see.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 13:15:50 -08:00
Peter Eriksen
8276c0070f sha1_file.c: Avoid multiple calls to find_pack_entry().
We used to call find_pack_entry() twice from read_sha1_file() in order
to avoid printing an error message, when the object did not exist.  This
is fixed by moving the call to error() to the only place it really
could be called.

Signed-off-by: Peter Eriksen <s022018@student.dtu.dk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 13:11:46 -08:00
Jakub Narebski
e136f33b5f Documentation/config.txt: Document config file syntax better
Separate part of Documentation/config.txt which deals with git config file
syntax into "Syntax" subsection, and expand it.  Add information about
subsections, boolean values, escaping and escape sequences in string
values, and continuing variable value on the next line.

Add also proxy settings to config file example to show example of
partially enclosed in double quotes string value.

Parts based on comments by Junio C Hamano, Johannes Schindelin,
config.c, and the smb.conf(5) man page.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 12:54:02 -08:00
Junio C Hamano
bf3f67ba71 cvsimport: activate -a option, really.
An earlier commit ded9f400 added $opt_a support to disable the
cvsps grace period mechanism, but forgot to tell the option
parser about it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 12:20:14 -08:00
Alex Riesen
67e4baf826 Cleanup uninitialized value in chomp
which happens if you use ActiveState Perl and a
pipe workaround specially for it.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 09:44:26 -08:00
Alex Riesen
bed118d6bb Force Activestate Perl to tie git command pipe handle to a handle class
Otherwise it tries to tie it to a scalar and complains about missing
method. Dunno why, may be ActiveState brokenness again.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 09:44:26 -08:00
Alex Riesen
d3b1785f3f Insert ACTIVESTATE_STRING in Git.pm
Also add "git" to the pipe parameters, otherwise it does not work at all, as
no git commands are usable out of git context.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-22 09:44:25 -08:00
Linus Torvalds
18af29f247 fsck-objects: refactor checking for connectivity
This separates the connectivity check into separate codepaths,
one for reachable objects and the other for unreachable ones,
while adding a lot of comments to explain what is going on.

When checking an unreachable object, unlike a reachable one, we
do not have to complain if it does not exist (we used to
complain about a missing blob even when the only thing that
references it is a tree that is dangling).  Also we do not have
to check and complain about objects that are referenced by an
unreachable object.

This makes the messages from fsck-objects a lot less noisy and
more useful.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-21 23:35:47 -08:00
Junio C Hamano
e3ff4b2447 git-gc: do not run git-prune by default.
git-prune is not safe when run uncontrolled in parallel while
other git operations are creating new objects.  To avoid
mistakes, do not run git-prune by default from git-gc.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-21 23:28:28 -08:00
Junio C Hamano
a0022eebf3 shallow repository: disable unsupported operations for now.
We currently do not support fetching/cloning from a shallow repository
nor pushing into one.  Make sure these are not attempted so that we
do not have to worry about corrupting repositories needlessly.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-21 22:23:58 -08:00
Junio C Hamano
f43117a6c1 is_repository_shallow(): prototype fix.
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-21 22:22:23 -08:00
Junio C Hamano
ec587fde0a Make sure git_connect() always give two file descriptors.
Earlier, git_connect() returned the same fd twice or two
separate fds, depending on the way the connection was made (when
we are talking to the other end over a single socket, we used
the same fd twice, and when our end is connected to a pipepair
we used two).

This forced callers who do close() and dup() to really care
which was which, and most of the existing callers got this
wrong, although without much visible ill effect.  Many were
closing the same fd twice when we are talking over a single
socket, and one was leaking a fd.

This fixes it to uniformly use two separate fds, so if somebody
wants to close only reader side can just do close() on it
without worrying about it accidentally also closing the writer
side or vice versa.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-21 21:51:01 -08:00
Junio C Hamano
026aa93818 Revert "prune: --grace=time"
This reverts commit 9b088c4e39.

Protecting 'mature' objects does not make it any safer.  We should
admit that git-prune is inherently unsafe when run in parallel with
other operations without involving unwarranted locking overhead,
and with the latest git, even rebase and reset would not immediately
create crufts anyway.
2007-01-21 21:29:57 -08:00
Junio C Hamano
1bb914603a Documentation/tutorial-2: Fix interesting typo in an example.
Marco Candrian noticed that one cat-file example refers to a
blob object that is never used in the example sequence.

The bug is interesting in that the output from the botched
sample command is consistent with the incorrect blob object
name ;-).

Signed-off-by: Junio C Hamano <junkio@cox.net>
2007-01-21 21:24:49 -08:00
Shawn O. Pearce
8ce0316484 git-gui: Don't format the mode line of a diff.
We sometimes see a mode line show up in a diff if the file mode was
changed.  But its not something we format specially.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 23:11:47 -05:00
J. Bruce Fields
17217090cf user-manual: update git-gc discussion
It appears git-gc will no longer prune automatically, so we don't
need to tell people not to do other stuff while running it.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
2007-01-21 23:03:36 -05:00
Shawn O. Pearce
f5925d934f git-gui: Create missing branch head on initial commit.
If we are making an initial commit our branch head did not exist when
we scanned for all heads during startup.  Consequently we won't have
it in our branch menu.  So force it to be put there after the ref was
created.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:59 -05:00
Shawn O. Pearce
c5a1eb889c git-gui: Slightly tweak new window geometry.
I didn't really like the way a new git-gui launched in a new repository
as the window geometry wasn't quite the best layou.  So this is a minor
tweak to try and get space distributed around the window better.

By decreasing the widths we're also able to shrink the gui smaller
without Tk clipping content at the edge of the window.  A nice feature.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:59 -05:00
Shawn O. Pearce
d4dd034ab5 git-gui: Update todo list with finished and new items.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:59 -05:00
Shawn O. Pearce
9c10deab6c git-gui: Correctly categorize tracking branches and heads.
Up until now git-gui did not support the new wildcard syntax used to
fetch any remote branch into a tracking branch during 'git fetch'. Now
if we identify a tracking branch as ending with the string '/*' then
we use for-each-ref to print out the reference names which may have
been fetched by that pattern.  We also now correctly filter any
tracking branches out of refs/heads, if they user has placed any there.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:59 -05:00
Shawn O. Pearce
4343434307 git-gui: Automatically toggle the relevant radio buttons.
When the user selects a starting revision from one of our offered popup
lists (local branches or tracking branches) or enters in an expression
in the expression input field we should automatically activate the
corresponding radio button for them.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:58 -05:00
Shawn O. Pearce
b36ffe800d git-gui: Fully select a field when entering into it.
If the user is tabbing through fields in the options dialog they are
likely to want to just enter a new value for the field, rather than
edit the value in-place.  This is easier if we select the entire value
upon focusing into the field.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:58 -05:00
Shawn O. Pearce
f250091b77 git-gui: Improve keyboard traversal in dialogs.
When we are in a dialog such as the new branch dialog or our options
dialog we should permit the user to traverse around through the available
widgets with their Tab/Shift-Tab key combinations.  So in any single
line text field where we don't want tab characters to actually be
inserted into the value rebind Tab and Shift-Tab to honor what the
tk_focusPrev and tk_focusNext scripts recommend.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:58 -05:00
Shawn O. Pearce
c845692d75 git-gui: Allow user to specify a branch name pattern.
Typically I'm creating all new branches with the same prefix, e.g. 'sp/'.
So its handy to be able to setup a repository (or global) level config
option for git gui which contains this initial prefix.  Once set then
git-gui will load it into the new branch name field whenever a new
branch is being created.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:57 -05:00
Shawn O. Pearce
e754d6efe7 git-gui: Give a better error message on an empty branch name.
New branches must have a name.  An empty one is not a valid ref, but the
generic message "We do not like '' as a branch name." is just too vague
or difficult to read.  So detect the missing name early and tell the
user it must be entered.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:57 -05:00
Shawn O. Pearce
19e283f5c2 git-gui: Don't offer tracking branches if none exist.
I refactored the common code related to tracking branch listing into
a new procedure all_tracking_branches.  This saves a few lines and
should make the create and delete dialogs easier to maintain.

We now don't offer a radio button to create from a tracking branch
or merge-check a tracking branch if there are no tracking branches
known to git-gui.  This prevents us from creating an empty option
list and letting the user try to shoot themselves in the foot by
asking us to work against an empty initial revision.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:57 -05:00
Shawn O. Pearce
3c23697739 git-gui: Never line wrap in file lists.
Some of my file paths in some of my repositories are very long, this
is rather typical in Java projects where the path name contains a deep
package structure and then the file name itself is rather long and
(hopefully) descriptive.  Seeing these paths line wrap in the file lists
looks absolutely horrible.  The entire rendering is almost unreadable.

Now we draw both horizontal and vertical scrollbars for both file lists,
and we never line wrap within the list text itself.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:57 -05:00
Shawn O. Pearce
ca52156618 git-gui: Make diff viewer colors match gitk's defaults.
Because users who use git-gui are likely to also be using gitk, we
should at least match gitk's default colors and formatting within the
diff viewer.

Unfortunately this meant that I needed to change the background colors
of the hunks in a 'diff --cc' output, as the green used for 'added line'
was completely unreadable on the old color.  We now use ivory1 to show
hunks which came from HEAD/parent^1, which are the portions that the
current branch has contributed, and are probably the user's own changes.
We use a very light blue for the portions which came from FETCH_HEAD,
as this makes the changes made by the other branch stand out more in the
diff.

I've also modified the hunk header lines to be blue, as that is how gitk
is showing them.

Apparently I forgot to raise the sel tag above everything else in the
diff viewer, which meant that selections in the diff viewer were not
visible if they were made on a 'diff --cc' hunk which had a background.
Its now the higest priority tag, ensuring the selection is always visible
and readable.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:56 -05:00
Shawn O. Pearce
37d2a1c9fa git-gui: Correctly ignore '* Unmerged path' during diff.
If a path is really unmerged, such as because it has been deleted and
also modifed, we cannot obtain a diff for it.  Instead Git is sending
back '* Unmerged path <blah>' for file <blah>.  We should display this
line as-is as our tag selecting switches don't recognize it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-01-21 22:47:56 -05:00