Commit Graph

13167 Commits

Author SHA1 Message Date
Jeff King
9a1805a872 add a "basic" diff config callback
The diff porcelain uses git_diff_ui_config to set
porcelain-ish config options, like automatically turning on
color. The plumbing specifically avoids calling this
function, since it doesn't want things like automatic color
or rename detection.

However, some diff options should be set for both plumbing
and porcelain. For example, one can still turn on color in
git-diff-files using the --color command line option. This
means we want the color config from color.diff.* (so that
once color is on, we use the user's preferred scheme), but
_not_ the color.diff variable.

We split the diff config into "ui" and "basic", where
"basic" is suitable for use by plumbing (so _most_ things
affecting the output should still go into the "ui" part).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-04 16:05:23 -08:00
Martin Koegler
061d6b9a7b receive-pack: reject invalid refnames
Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-04 15:59:43 -08:00
Jim Meyering
872c930dcb Don't access line[-1] for a zero-length "line" from fgets.
A NUL byte at beginning of file, or just after a newline
would provoke an invalid buf[-1] access in a few places.

* builtin-grep.c (cmd_grep): Don't access buf[-1].
* builtin-pack-objects.c (get_object_list): Likewise.
* builtin-rev-list.c (read_revisions_from_stdin): Likewise.
* bundle.c (read_bundle_header): Likewise.
* server-info.c (read_pack_info_file): Likewise.
* transport.c (insert_packed_refs): Likewise.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-04 12:28:58 -08:00
Junio C Hamano
95bf4bd4f7 git-clean: make "Would remove ..." path relative to cwd again
The rewrite changed the output to use the path relative to the
top of the work tree without a good reason.  This fixes it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-03 19:04:37 -08:00
Jim Meyering
790296fd88 Fix grammar nits in documentation and in code comments.
Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-03 09:15:17 -08:00
Junio C Hamano
698a68be7b Uninline prefixcmp()
Now the routine is an open-coded loop that avoids an extra
strlen() in the previous implementation, it got a bit too big to
be inlined.  Uninlining it makes code footprint smaller but the
result still retains the avoidance of strlen() cost.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-03 01:23:12 -08:00
Junio C Hamano
257f3020f6 Update callers of check_ref_format()
This updates send-pack and fast-import to use symbolic constants
for checking the return values from check_ref_format(), and also
futureproof the logic in lock_any_ref_for_update() to explicitly
name the case that is usually considered an error but is Ok for
this particular use.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-02 11:20:09 -08:00
Eric Wong
321b1842dc git-svn: unlink index files that were globbed, too
commit 3157dd9e89 (git-svn: unlink
internal index files after operations) introduced unlinking
index files after fetching.  However, this missed indices for
refs that were created by globbing branches and tags.  This will
track all refs we ever touch during a fetch and unlink them at
exit time.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-02 10:44:22 -08:00
Eric Wong
7dfa16b9dc git-svn: allow dcommit --no-rebase to commit multiple, dependent changes
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-02 10:43:54 -08:00
Martin Koegler
eab827072d receive-pack: check object type of sha1 before using them as commits
Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-02 02:28:54 -08:00
Johannes Schindelin
99a6a97b1b Optimize prefixcmp()
Certain codepaths (notably "git log --pretty=format...") use
prefixcmp() extensively, with very short prefixes.  In those cases,
calling strlen() is a wasteful operation, so avoid it.

Initial patch by Marco Costalba.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-02 02:28:54 -08:00
Junio C Hamano
5f7b202a7f lock_any_ref_for_update(): reject wildcard return from check_ref_format
Recent check_ref_format() returns -3 as well as -1 (general
error) and -2 (less than two levels).  The caller was explicitly
checking for -1, to allow "HEAD" but still needed to disallow
bogus refs.

This introduces symbolic constants for the return values from
check_ref_format() to make them read better and more
meaningful.  Normal ref creation codepath can still treat
non-zero return values as errors.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-02 02:28:54 -08:00
Jeff King
49b9362fd3 git-reset: refuse to do hard reset in a bare repository
It makes no sense since there is no working tree. A soft
reset should be fine, though.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-02 02:28:54 -08:00
Jeff King
02e5ba4ae6 config: handle lack of newline at end of file better
The config parsing routines use the static global
'config_file' to store the FILE* pointing to the current
config file being parsed. The function get_next_char()
automatically converts an EOF on this file to a newline for
the convenience of its callers, and it sets config_file to
NULL to indicate that EOF was reached.

This throws away useful information, though, since some
routines want to call ftell on 'config_file' to find out
exactly _where_ the routine ended. In the case of a key
ending at EOF boundary, we ended up segfaulting in some
cases (changing that key or adding another key in its
section), or failing to provide the necessary newline
(adding a new section).

This patch adds a new flag to indicate EOF and uses that
instead of setting config_file to NULL. It also makes sure
to add newlines where necessary for truncated input. All
three included tests fail without the patch.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-02 02:28:54 -08:00
Junio C Hamano
c477553b2f Merge branch 'maint' of git://linux-nfs.org/~bfields/git
* 'maint' of git://linux-nfs.org/~bfields/git:
  Documentation/user-manual.txt: fix typo
  Documentation: fix remote.<name>.skipDefaultUpdate description
2007-12-31 09:23:55 -08:00
Gustaf Hendeby
57283291b5 Documentation/user-manual.txt: fix typo
Signed-off-by: Gustaf Hendeby <hendeby@isy.liu.se>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2007-12-31 11:27:15 -05:00
J. Bruce Fields
f18b1c55e5 Documentation: fix remote.<name>.skipDefaultUpdate description
Fix the subcommand name.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2007-12-31 11:27:15 -05:00
Paul Mackerras
a495e5a908 gitk: Recode de.po to UTF-8
Somehow de.po got recoded to latin-1 in the process of committing it.
This recodes it back to UTF-8.

Signed-off-by: Paul Mackerras <paulus@samba.org>
2007-12-31 12:49:13 +11:00
Junio C Hamano
ab11903225 git-rebase -i: clean-up error check codepath.
After replaying a single change, the code performed a number of checks,
but some of them were for sanity checking, failures from which should
make the command abort, and others were checks to see if it should make
a new commit object.  Stringing them together with "&&" was wrong.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-30 12:51:42 -08:00
Junio C Hamano
8ad1065e58 git-rebase -i behaves better on commits with incomplete messages
The commit message template when squashing multiple commits is
prepared by concatenating the messages of existing commits
together.  If the messages from some of them end with incomplete
lines, this would result in a suboptimal message template.  Make
sure that we add a terminating LF after each commit message.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-30 12:37:59 -08:00
Grégoire Barbier
d6ed263fc7 Fix double-free() in http-push.c:remote_exists()
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-30 12:24:13 -08:00
Bernt Hansen
a6d5888fa1 git-gui: Make commit log messages end with a newline
Concatenating commit log messages from multiple commits works better
when all of the commits end with a clean line break.

Its good to be strict in what you create, and lenient in what you
accept, and since we're creating here, we should always try to
Do The Right Thing(tm).

Signed-off-by: Bernt Hansen <bernt@alumni.uwaterloo.ca>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2007-12-29 21:03:55 -05:00
Peter Karlsson
f0e8692a09 Added Swedish translation. 2007-12-29 21:00:14 -05:00
Junio C Hamano
441ed4131b "git pull --tags": error out with a better message.
When "git pull --tags" is run without any other arguments, the
standard error message "You told me to fetch and merge stuff but
there is nothing to merge!  You might want to fix your config"
is given.

While the error may be technically correct, fixing the config
would not help, as "git pull --tags" itself tells "git fetch"
not to use the configured refspecs.

This commit makes "git pull --tags" to issue a different error
message to avoid confusion.  This is merely an interim solution.

In the longer term, it would be a better approach to change the
semantics of --tags option to make "git fetch" and "git pull"
to:

 (1) behave as if no --tags was given (so an explicit refspec on
     the command line overrides configured ones, or no explicit
     refspecs on the command line takes configured ones); but

 (2) no auto-following of tags is made even when using
     configured refspecs; and

 (3) fetch all tags as not-for-merge entries".

Then we would not need to have this separate error message, as
the ordinary merge will happen even with the --tags option.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-28 21:01:24 -08:00
Miklos Vajna
3f4bc3e048 git-sh-setup: document git_editor() and get_author_ident_from_commit()
These 2 functions were missing from the manpage.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-28 16:11:29 -08:00
Junio C Hamano
c45857019c Documentation/git-submodule.txt: typofix
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-27 23:29:53 -08:00
Junio C Hamano
bbff2dce2b GIT 1.5.4-rc2
Although everybody was quiet during the Christmas holiday, it's been
a week since -rc1, so here is -rc2.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-26 18:16:52 -08:00
Junio C Hamano
49e6be571e Merge branch 'rs/pretty-safety'
* rs/pretty-safety:
  Make "--pretty=format" parser a bit more careful.
2007-12-26 17:52:40 -08:00
René Scharfe
7ed0988adc Make "--pretty=format" parser a bit more careful.
When a commit message that does not have a terminating LF is
read in and the memory that was allocated to read it happens to
have a LF immediately after that, the code was not careful and
went past the terminating NUL.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-26 17:52:32 -08:00
Junio C Hamano
e25cfae667 contrib: resurrect scripted git-revert.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-26 17:38:00 -08:00
Junio C Hamano
97d0c52980 Merge branch 'ar/commit-cleanup'
* ar/commit-cleanup:
  Allow selection of different cleanup modes for commit messages
  builtin-commit: avoid double-negation in the code.
  builtin-commit: fix amending of the initial commit
  t7005: do not exit inside test.
2007-12-26 17:35:38 -08:00
Junio C Hamano
d56250911f Fix rewrite_diff() name quoting.
This moves the logic to quote two paths (prefix + path) in
C-style introduced in the previous commit from the
dump_quoted_path() in combine-diff.c to quote.c, and uses it to
fix rewrite_diff() that never C-quoted the pathnames correctly.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-26 17:13:36 -08:00
Junio C Hamano
462a15bc82 combine-diff: Fix path quoting
Earlier when showing combined diff, the filenames on the ---/+++
header lines were quoted incorrectly.  a/ (or b/) prefix was
output literally and then the path was output, with c-quoting.

This fixes the quoting logic, and while at it, adjusts the code
to use the customizable prefix (a_prefix and b_prefix)
introduced recently.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-26 16:51:19 -08:00
Junio C Hamano
25db465a34 Fix documentation of --first-parent in git-log and copy it to git-rev-list
Credit goes to Avi Kivity for noticing the lack of description in
rev-list manual page.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-26 16:05:54 -08:00
Arjen Laarhoven
0faf2da7e5 Fix "git log --diff-filter" bug
In commit b7bb760d5e (Fix revision
log diff setup, avoid unnecessary diff generation) an optimization was
made to avoid unnecessary diff generation.  This was partly fixed in
99516e35d0 (Fix embarrassing "git log
--follow" bug).  The '--diff-filter' option also needs the diff machinery
in action.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-26 11:57:36 -08:00
Shawn O. Pearce
c8deb5a146 Improve error messages when int/long cannot be parsed from config
If a config file has become mildly corrupted due to a missing LF
we may discover some other option joined up against the end of a
numeric value.  For example:

	[section]
	number = 1auto

where the "auto" flag was meant to occur on the next line, below
"number", but the missing LF has caused it to no longer be its
own option.  Instead the word "auto" is parsed as a 'unit factor'
for the value of "number".

Before this change we got the confusing error message:

  fatal: unknown unit: 'auto'

which told us nothing about where the problem appeared.  Now we get:

  fatal: bad config value for 'aninvalid.unit'

which at least points the user in the right direction of where to
search for the incorrectly formatted configuration file.

Noticed by erikh on #git, which received the original error from
a simple `git checkout -b` due to a midly corrupted config.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-26 11:37:45 -08:00
Jeff King
3a969ef1d6 cvsimport: die on cvsps errors
We were not previously checking the exit status of cvsps at
all. If it exited before producing any useful output, we
ended up with an empty import, which caused a spew of
confusing error messages from other parts of git:

$ git-cvsimport foo
Initialized empty Git repository in ...
some error from cvsps
fatal: refs/heads/origin: not a valid SHA1
fatal: master: not a valid SHA1
warning: You appear to be on a branch yet to be born.
warning: Forcing checkout of HEAD.
fatal: just how do you expect me to merge 0 trees?
checkout failed: 256

Now we get:

$ git-cvsimport foo
Initialized empty Git repository in ...
some error from cvsps
git-cvsimport: fatal: cvsps reported error

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Martin Langhoff <martin@catalyst.net.nz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-23 22:33:07 -08:00
Gustaf Hendeby
ba4c32bdd5 shortlog manpage documentation: work around asciidoc markup issues
We wanted to have a list in which one (and the sole, as it happen to
be) item in it is ".mailmap", but do not seem to be able to convince
AsciiDoc to format it correctly for manpages.  Reformat it into a
paragraph that describes the said file to work around the issue.

Signed-off-by: Gustaf Hendeby <hendeby@isy.liu.se>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-23 10:40:25 -08:00
Junio C Hamano
0e545f7516 Documentation: describe 'union' low-level merge driver
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 23:14:59 -08:00
Alex Riesen
5f06573743 Allow selection of different cleanup modes for commit messages
Although we traditionally stripped away excess blank lines, trailing
whitespaces and lines that begin with "#" from the commit log message,
sometimes the message just has to be the way user wants it.

For instance, a commit message template can contain lines that begin with
"#", the message must be kept as close to its original source as possible
if you are converting from a foreign SCM, or maybe the message has a shell
script including its comments for future reference.

The cleanup modes are default, verbatim, whitespace and strip. The
default mode depends on if the message is being edited and will either
strip whitespace and comments (if editor active) or just strip the
whitespace (for where the message is given explicitely).

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 19:55:07 -08:00
Junio C Hamano
4803466f62 builtin-commit: avoid double-negation in the code.
The flag no_edit meant "we have got final message from the user
and will not editing it any further", but there were quite a few
places that needed to check !no_edit.  Rename the variable to
use_editor and reverse the logic everywhere.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 19:45:06 -08:00
Junio C Hamano
d616a23964 builtin-commit: fix amending of the initial commit
When amending initial commit without editor, the command
incorrectly barfed because the check to see if there is anything
to commit referenced the non-existent HEAD^1.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 19:45:06 -08:00
Junio C Hamano
7263881253 t7005: do not exit inside test.
The way to signal failure is to leave non-zero in $?, not abort
the entire test.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 19:45:06 -08:00
Jim Meyering
cc21682793 Don't dereference NULL upon lookup failure.
Instead, signal the error just like the case we do upon encountering
an object with an unknown type.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 11:15:38 -08:00
Wincent Colaiuta
97bc00a490 Emit helpful status for accidental "git stash" save
If the user types "git stash" mistakenly thinking that this will list
their stashes he/she may be surprised to see that it actually saved
a new stash and reset their working tree and index.

In the worst case they might not know how to recover the state. So
help them by telling them exactly what was saved and also how to
restore it immediately.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 11:15:22 -08:00
Pierre Habouzit
2f7ee089df parse-options: Add a gitcli(5) man page.
This page should hold every information about the git ways to parse command
lines, and best practices to be used for scripting.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
2007-12-22 10:26:08 -08:00
Pierre Habouzit
c43a24834a Force the sticked form for options with optional arguments.
This forbids "git tag -n <number> -l" we allowed earlier, so
adjust t7004 while at it.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
2007-12-22 10:26:08 -08:00
Junio C Hamano
5e2de4f9bb Fix $EDITOR regression introduced by rewrite in C.
When git-tag and git-commit launches the editor, they used to
honor EDITOR="editor -options args..." but recent rewrite in C
insisted on $EDITOR to be the path to the editor executable.

This restores the older behaviour.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 10:26:08 -08:00
Stefan Sperling
77190eb9b8 Small comment fix for git-cvsimport.
Signed-off-by: Stefan Sperling <stsp@stsp.name>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 00:23:17 -08:00
Gustaf Hendeby
0e0278baad Make git send-email accept $EDITOR with arguments
Currently git send-email does not accept $EDITOR with arguments, eg,
emacs -nw, when starting an editor to produce a cover letter.  This
patch changes this by letting the shell handle the option parsing.

Signed-off-by:  Gustaf Hendeby <hendeby@isy.liu.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-12-22 00:21:30 -08:00