Commit Graph

15173 Commits

Author SHA1 Message Date
Pierre Habouzit
5817da0143 git-blame: migrate to incremental parse-option [1/2]
This step merely moves the parser to an incremental version, still using
parse_revisions.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08 15:40:51 -07:00
Pierre Habouzit
02e542206f revisions: split handle_revision_opt() from setup_revisions()
Add two fields to struct rev_info:

 - .def to store --default argument; and
 - .show_merge 1-bit field.

handle_revision_opt() is able to deal with any revision option, and
consumes them, and leaves revision arguments or pseudo arguments
(like --all, --not, ...) in place.

For now setup_revisions() does a pass of handle_revision_opt() again
so that code not using it in a parse-opt parser still work the same.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08 15:29:40 -07:00
Junio C Hamano
8bb65883d1 Merge branch 'jc/blame' (early part) into HEAD
* 'jc/blame' (early part):
  git-blame --reverse
  builtin-blame.c: allow more than 16 parents
  builtin-blame.c: move prepare_final() into a separate function.
  rev-list --children
  revision traversal: --children option

Conflicts:

	Documentation/rev-list-options.txt
	revision.c
2008-07-08 15:25:44 -07:00
Shawn O. Pearce
1db4a75c8d Remove unnecessary pack-*.keep file after successful git-clone
Once a clone is successful we no longer need to hold onto the
.keep file created by the transport.  Delete the file so we
can later repack the complete repository.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08 14:47:04 -07:00
Eric Raible
caf1899699 Documentation: tweak use case in "git stash save --keep-index"
The documentation suggests using "git stash apply" in the
--keep-index workflow even though doing so will lead to clutter
in the stash.  And given that the changes are about to be
committed anyway "git stash pop" is more sensible.

Additionally the text preceeding the example claims that it
works for "two or more commits", but the example itself is
really tailored for just two.  Expanding it just a little
makes it clear how the procedure generalizes to N commits.

Finally the example is annotated with some commentary to
explain things on a line-by-line basis.
2008-07-08 13:59:08 -07:00
Jeff King
d1a4489a56 avoid null SHA1 in oldest reflog
When the user specifies a ref by a reflog entry older than
one we have (e.g., "HEAD@{20 years ago"}), we issue a
warning and give them the "from" value of the oldest reflog
entry. That is, we say "we don't know what happened before
this entry, but before this we know we had some particular
SHA1".

However, the oldest reflog entry is often a creation event
such as clone or branch creation. In this case, the entry
claims that the ref went from "00000..." (the null sha1) to
the new value, and the reflog lookup returns the null sha1.

While this is technically correct (the entry tells us that
the ref didn't exist at the specified time) it is not
terribly useful to the end user. What they probably want
instead is "the oldest useful sha1 that this ref ever had".
This patch changes the behavior such that if the oldest ref
would return the null sha1, it instead returns the first
value the ref ever had.

We never discovered this problem in the test scripts because
we created "fake" reflogs that had only a specified segment
of history. This patch updates the tests with a creation
event at the beginning of history.

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08 13:57:27 -07:00
Jeff King
0b294c0abf make deleting a missing ref more quiet
If git attempts to delete a ref, but the unlink of the ref
file fails, we print a message to stderr. This is usually a
good thing, but if the error is ENOENT, then it indicates
that the ref has _already_ been deleted. And since that's
our goal, it doesn't make sense to complain to the user.

This harmonizes the error reporting behavior for the
unpacked and packed cases; the packed case already printed
nothing on ENOENT, but the unpacked printed unconditionally.

Additionally, send-pack would, when deleting the tracking
ref corresponding to a remote delete, print "Failed to
delete" on any failure. This can be a misleading
message, since we actually _did_ delete at the remote side,
but we failed to delete locally. Rather than make the
message more precise, let's just eliminate it entirely; the
delete_ref routine already takes care of printing out a much
more specific message about what went wrong.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08 13:05:11 -07:00
Junio C Hamano
30161e73d1 Merge branch 'qq/maint' into maint
* qq/maint:
  run_command(): respect GIT_TRACE
2008-07-08 13:05:06 -07:00
Eric Hanchrow
ea449615d8 Documentation: fix broken "linkgit" links
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08 13:02:11 -07:00
Eric Hanchrow
843c81dcf4 user-manual: typo and grammar fixes
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-08 13:00:47 -07:00
Junio C Hamano
c636d0e2bc Merge branch 'lt/racy-empty' into maint
* lt/racy-empty:
  racy-git: an empty blob has a fixed object name
2008-07-08 00:19:17 -07:00
Junio C Hamano
bed625540a Merge branch 'qq/maint'
* qq/maint:
  run_command(): respect GIT_TRACE

Conflicts:

	run-command.c
2008-07-07 16:42:08 -07:00
Jakub Narebski
e67c9e3952 gitweb: Describe projects_index format in more detail
Update and extend information about $projects_list file format in
gitweb/README and in gitweb/INSTALL.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-07 16:35:00 -07:00
Junio C Hamano
2c95fcf4f9 Merge branch 'js/maint-daemon-syslog'
* js/maint-daemon-syslog:
  git daemon: avoid calling syslog() from a signal handler
2008-07-07 16:32:46 -07:00
Junio C Hamano
07e2fbcb90 Merge branch 'maint'
* maint:
  git-svn.perl: workaround assertions in svn library 1.5.0
2008-07-07 16:31:55 -07:00
Junio C Hamano
39f319f4d5 Merge branch 'qq/maint' (early part) into maint
* 'qq/maint' (early part):
  git-svn.perl: workaround assertions in svn library 1.5.0
  mailinfo: feed the correct line length to decode_transfer_encoding()
  git-clone: remove leftover debugging fprintf().
  Fix "config_error_nonbool" used with value instead of key
  clone -q: honor "quiet" option over native transports.
  attribute documentation: keep EXAMPLE at end
  builtin-commit.c: Use 'git_config_string' to get 'commit.template'
  http.c: Use 'git_config_string' to clean up SSL config.
  diff.c: Use 'git_config_string' to get 'diff.external'
  convert.c: Use 'git_config_string' to get 'smudge' and 'clean'
  builtin-log.c: Use 'git_config_string' to get 'format.subjectprefix' and 'format.suffix'
  Documentation cvs: Clarify when a bare repository is needed
  Documentation: be precise about which date --pretty uses
2008-07-07 16:09:17 -07:00
Johannes Schindelin
f95ebf7429 Allow cherry-picking root commits
A root commit couldn't be cherry-picked.  But its semantics can be
defined as simply merging two trees by overlaying disjoint parts
and merging overlapping files without any common ancestor.  You
should be able to rebase originally independent branches on top of
another branch by using this.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-07 13:23:42 -07:00
Johannes Schindelin
8852f5d704 run_command(): respect GIT_TRACE
When GIT_TRACE is set, the user is most likely wanting to see an external
command that is about to be executed.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-07 13:16:33 -07:00
Gerrit Pape
2fe403e745 git-svn.perl: workaround assertions in svn library 1.5.0
With subversion 1.5.0 (C and perl libraries) the git-svn selftest
t9101-git-svn-props.sh fails at test 25 and 26.  The following commands
cause assertions in the svn library

 $ cd deeply
 $ git-svn propget svn:ignore .
 perl: /build/buildd/subversion-1.5.0dfsg1/subversion/libsvn_ra/ra_loader.c:674: svn_ra_get_dir: Assertion `*path != '/'' failed.
 Aborted

 $ git-svn propget svn:ignore ..
 perl: /build/buildd/subversion-1.5.0dfsg1/subversion/libsvn_subr/path.c:120: svn_path_join: Assertion `is_canonical(component, clen)' failed.

With this commit, git-svn makes sure the path doesn't start with a
slash, and is not a dot, working around these assertions.

The breakage was reported by Lucas Nussbaum through
 http://bugs.debian.org/489108

Signed-off-by: Gerrit Pape <pape@smarden.org>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-07 12:56:16 -07:00
Junio C Hamano
92371226ac Update draft release notes for 1.6.0
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-07 02:19:46 -07:00
Junio C Hamano
86d7244321 Merge branch 'jc/rerere'
* jc/rerere:
  rerere.autoupdate
  t4200: fix rerere test
  rerere: remove dubious "tail_optimization"
  git-rerere: detect unparsable conflicts
  rerere: rerere_created_at() and has_resolution() abstraction
2008-07-07 02:17:28 -07:00
Junio C Hamano
17d778e710 Merge branch 'dr/ceiling'
* dr/ceiling:
  Eliminate an unnecessary chdir("..")
  Add support for GIT_CEILING_DIRECTORIES
  Fold test-absolute-path into test-path-utils
  Implement normalize_absolute_path

Conflicts:

	cache.h
	setup.c
2008-07-07 02:17:23 -07:00
Junio C Hamano
5e97f464df Merge branch 'db/no-git-config'
* db/no-git-config:
  Only use GIT_CONFIG in "git config", not other programs

Conflicts:

	Documentation/RelNotes-1.6.0.txt
2008-07-07 02:17:14 -07:00
Junio C Hamano
5f2f71f6af Merge branch 'js/import-zip'
* js/import-zip:
  Add another fast-import example, this time for .zip files
2008-07-07 02:16:55 -07:00
Junio C Hamano
585ad90c80 Merge branch 'maint'
* maint:
  Fix grammar in git-rev-parse(1).
2008-07-07 02:11:28 -07:00
Junio C Hamano
8c992d16cb Merge branch 'qq/maint'
* qq/maint:
  mailinfo: feed the correct line length to decode_transfer_encoding()
  git-clone: remove leftover debugging fprintf().
2008-07-07 02:09:38 -07:00
Adam Brewster
22568f0a33 Teach git-bundle to read revision arguments from stdin like git-rev-list.
This patch allows the caller to feed the revision parameters to git-bundle
from its standard input.  This way, a script do not have to worry about
limitation of the length of command line.

Documentation/git-bundle.txt says that git-bundle takes arguments acceptable
to git-rev-list.  Obviously some arguments that git-rev-list handles don't
make sense for git-bundle (e.g. --bisect) but --stdin is pretty reasonable.

Signed-off-by: Adam Brewster <adambrewster@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-07 01:31:24 -07:00
Dmitry Potapov
bf11d4613c completion.bash: add 'skip' and 'run' to git-bisect
Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-07 01:06:22 -07:00
Junio C Hamano
6fc2a25e62 mailinfo: feed the correct line length to decode_transfer_encoding()
When handling a MIME multipart message, multi-part boundary lines are eaten
by a call to handle_boundary() function from the main loop of handle_body(),
and after that happens, we should update the line length correctly, because
handle_boundary() udpates line[] with new data.

This was caused by a thinko in 9aa2309 (mailinfo: apply the same fix not
to lose NULs in BASE64 and QP codepaths, 2008-05-25).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-06 22:59:51 -07:00
Abhijit Menon-Sen
4a588075c5 Add a test for "git stash branch"
Make sure that applying the stash to a new branch after a conflicting
change doesn't result in an error when you try to commit.

Signed-off-by: Abhijit Menon-Sen <ams@toroid.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-06 22:58:56 -07:00
Junio C Hamano
f556388747 git-apply --directory: make --root more similar to GNU diff
Applying a patch in the directory that is different from what the patch
records is done with --directory option in GNU diff.  The --root option we
introduced previously does the same, and we can call it the same way to
give users more familiar feel.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-06 19:33:08 -07:00
Alex Riesen
77cb7bc232 git-clone: remove leftover debugging fprintf().
Acked-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-06 19:25:29 -07:00
Mikael Magnusson
faf466ffb1 Fix grammar in git-rev-parse(1).
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-06 19:20:50 -07:00
Johannes Schindelin
a5a9126bb4 git daemon: avoid calling syslog() from a signal handler
Signal handlers should never call syslog(), as that can raise signals
of its own.

Instead, call the syslog() from the master process.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-06 19:10:31 -07:00
Junio C Hamano
87fb597d4e Merge git://repo.or.cz/git-gui
* git://repo.or.cz/git-gui:
  git-gui: Implement "Stage/Unstage Line"
  git-gui: Don't select the wrong file if the last listed file is staged.
  git-gui: Fix accidental staged state toggle when clicking top pixel row
  git-gui: Move on to the next filename after staging/unstaging a change
2008-07-06 12:55:34 -07:00
Junio C Hamano
926ab840cd branch -r -v: do not spit out garbage
The codepath to emit relationship between the branch and what it tracks
forgot to initialize a string buffer stat[] to empty when showing a
tracking branch.  This moves the emptying so that the buffer starts as
empty and stays so when no information is added to fix this issue.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-06 02:54:56 -07:00
Jeff King
4e10738a93 Allow per-command pager config
There is great debate over whether some commands should set
up a pager automatically. This patch allows individuals to
set their own pager preferences for each command, overriding
the default. For example, to disable the pager for git
status:

  git config pager.status false

If "--pager" or "--no-pager" is specified on the command
line, it takes precedence over the config option.

There are two caveats:

  - you can turn on the pager for plumbing commands.
    Combined with "core.pager = always", this will probably
    break a lot of things. Don't do it.

  - This only works for builtin commands. The reason is
    somewhat complex:

    Calling git_config before we do setup_git_directory
    has bad side effects, because it wants to know where
    the git_dir is to find ".git/config". Unfortunately,
    we cannot call setup_git_directory indiscriminately,
    because some builtins (like "init") break if we do.

    For builtins, this is OK, since we can just wait until
    after we call setup_git_directory. But for aliases, we
    don't know until we expand (recursively) which command
    we're doing. This should not be a huge problem for
    aliases, which can simply use "--pager" or "--no-pager"
    in the alias as appropriate.

    For external commands, however, we don't know we even
    have an external command until we exec it, and by then
    it is too late to check the config.

    An alternative approach would be to have a config mode
    where we don't bother looking at .git/config, but only
    at the user and system config files. This would make the
    behavior consistent across builtins, aliases, and
    external commands, at the cost of not allowing per-repo
    pager config for at all.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-06 02:20:24 -07:00
Junio C Hamano
44701c67fd Merge branch 'qq/maint'
* qq/maint:
  Fix "config_error_nonbool" used with value instead of key
2008-07-06 00:35:13 -07:00
Miklos Vajna
af9a01e1c2 hg-to-git: use git init instead of git init-db
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 23:35:12 -07:00
Miklos Vajna
96f2395951 hg-to-git: rewrite "git-frotz" to "git frotz"
This is not just nice but necessary since git-frotz is no longer in
PATH.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 23:35:12 -07:00
Miklos Vajna
2553ede5a9 hg-to-git: abort if the project directory is not a hg repo
Check the exit code of the first hg command, and abort to avoid a later
ValueError exception.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 23:35:11 -07:00
Miklos Vajna
6376cffaeb hg-to-git: avoid raising a string exception
This fixes the following warning:
hg-to-git.py:92: DeprecationWarning: raising a string exception is deprecated

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 23:35:11 -07:00
Miklos Vajna
f45ed32c40 INSTALL: Update section about git-frotz form.
The old text stated that 'git-frotz' can be always used instead of 'git
frotz' which is no longer true.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 23:31:42 -07:00
Christian Couder
c96a6d3660 Fix "config_error_nonbool" used with value instead of key
The function "config_error_nonbool", that is defined in "config.c",
is used to report an error when a config key in the config file
should have a corresponding value but it hasn't.

So the parameter to this function should be the key and not the
value, because the value is undefined. And it could crash if the
value is used.

This patches fixes two occurences where the value was passed
instead of the key.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 23:31:09 -07:00
Christian Couder
3ecb171d2b Fix "config_error_nonbool" used with value instead of key
The function "config_error_nonbool", that is defined in "config.c",
is used to report an error when a config key in the config file
should have a corresponding value but it hasn't.

So the parameter to this function should be the key and not the
value, because the value is undefined. And it could crash if the
value is used.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 23:30:38 -07:00
Junio C Hamano
08b51f51e6 Merge branch 'qq/maint'
* qq/maint:
  clone -q: honor "quiet" option over native transports.
  attribute documentation: keep EXAMPLE at end
  builtin-commit.c: Use 'git_config_string' to get 'commit.template'
  http.c: Use 'git_config_string' to clean up SSL config.
  diff.c: Use 'git_config_string' to get 'diff.external'
  convert.c: Use 'git_config_string' to get 'smudge' and 'clean'
  builtin-log.c: Use 'git_config_string' to get 'format.subjectprefix' and 'format.suffix'
  Documentation cvs: Clarify when a bare repository is needed
  Documentation: be precise about which date --pretty uses

Conflicts:

	Documentation/gitattributes.txt
2008-07-05 18:33:16 -07:00
Junio C Hamano
9b37322950 clone -q: honor "quiet" option over native transports.
The earlier built-in conversion seems to have broken "git-clone"; this
teaches the command to honor the "-q" option again when talking to the
remote end over native transports (file://, git:// and ssh://).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 18:32:36 -07:00
Junio C Hamano
8a33dd8b6e attribute documentation: keep EXAMPLE at end
The document gives overall definition of states in DESCRIPTION, describes
various aspects of git operations that can be influenced in EFFECTS, and
finally gives examples in the EXAMPLE section.  Archive creation however
was somehow documented after the EXAMPLE section, not insode EFFECTS.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 18:31:15 -07:00
Brian Hetro
984c6e7ec1 builtin-commit.c: Use 'git_config_string' to get 'commit.template'
Signed-off-by: Brian Hetro <whee@smaertness.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 17:42:54 -07:00
Brian Hetro
7ef8ea7035 http.c: Use 'git_config_string' to clean up SSL config.
Signed-off-by: Brian Hetro <whee@smaertness.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-05 17:42:46 -07:00