git/git.git
11 years agoMerge branch 'mm/config-pathname-tilde-expand' into maint
Junio C Hamano [Thu, 3 Dec 2009 21:51:36 +0000 (13:51 -0800)]
Merge branch 'mm/config-pathname-tilde-expand' into maint

* mm/config-pathname-tilde-expand:
  Documentation: avoid xmlto input error
  expand_user_path: expand ~ to $HOME, not to the actual homedir.
  Expand ~ and ~user in core.excludesfile, commit.template

11 years agoMerge branch 'bc/grep-i-F' into maint
Junio C Hamano [Thu, 3 Dec 2009 21:51:26 +0000 (13:51 -0800)]
Merge branch 'bc/grep-i-F' into maint

* bc/grep-i-F:
  grep: Allow case insensitive search of fixed-strings

11 years agoMerge branch 'jk/maint-break-rename-reduce-memory' into maint
Junio C Hamano [Thu, 3 Dec 2009 21:51:21 +0000 (13:51 -0800)]
Merge branch 'jk/maint-break-rename-reduce-memory' into maint

* jk/maint-break-rename-reduce-memory:
  diffcore-rename: reduce memory footprint by freeing blob data early
  diffcore-break: save cnt_data for other phases
  diffcore-break: free filespec data as we go

11 years agoMerge branch 'rj/maint-simplify-cygwin-makefile' into maint
Junio C Hamano [Thu, 3 Dec 2009 21:51:16 +0000 (13:51 -0800)]
Merge branch 'rj/maint-simplify-cygwin-makefile' into maint

* rj/maint-simplify-cygwin-makefile:
  Makefile: merge two Cygwin configuration sections into one

11 years agoMerge branch 'rg/doc-workflow' into maint
Junio C Hamano [Thu, 3 Dec 2009 21:50:41 +0000 (13:50 -0800)]
Merge branch 'rg/doc-workflow' into maint

* rg/doc-workflow:
  Add branch management for releases to gitworkflows

11 years agoMerge branch 'np/maint-sideband-favor-status' into maint
Junio C Hamano [Thu, 3 Dec 2009 21:50:24 +0000 (13:50 -0800)]
Merge branch 'np/maint-sideband-favor-status' into maint

* np/maint-sideband-favor-status:
  give priority to progress messages

11 years agoDocumentation: xmlto 0.0.18 does not know --stringparam
Junio C Hamano [Thu, 3 Dec 2009 19:12:32 +0000 (11:12 -0800)]
Documentation: xmlto 0.0.18 does not know --stringparam

Newer DocBook stylesheets want man.base.url.for.relative.links
parameter set when formatting manpages with external references
to turn them into full URLs, and leave a helpful "you should
set this parameter" message in the output.  Earlier we added
the MAN_BASE_URL make variable to specify the value for it.

When MAN_BASE_URL is not given, it ought to be safe to set the
parameter to empty; it would result in an empty leading path for
older stylesheets that ignore the parameter, and newer ones
would produce the same "relative URL" without the message.

Unfortunately, older xmlto (at least version 0.0.18 released in
early 2004 that comes with RHEL/CentOS 5) does not understand
the --stringparam command line option, so we cannot add the
parameter definition unconditionally to the command line.  Work
it around by passing the parameter only when set.

If you do not have a suitable URL prefix, you can pass a quoted empty
string to it, like so:

    $ make MAN_BASE_URL='""'

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.6.5.4 v1.6.5.4
Junio C Hamano [Thu, 3 Dec 2009 08:08:16 +0000 (00:08 -0800)]
Git 1.6.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoUnconditionally set man.base.url.for.relative.links
Junio C Hamano [Thu, 3 Dec 2009 08:06:52 +0000 (00:06 -0800)]
Unconditionally set man.base.url.for.relative.links

Even setting it to empty is better than leaving it unset as it
prevents the warning cruft from appearing in the output.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation/Makefile: allow man.base.url.for.relative.link to be set from Make
Junio C Hamano [Thu, 3 Dec 2009 02:45:09 +0000 (02:45 +0000)]
Documentation/Makefile: allow man.base.url.for.relative.link to be set from Make

Signed-off-by: Junio C Hamano <junio@kernel.org>
11 years agoPrepare for 1.6.5.4
Junio C Hamano [Wed, 2 Dec 2009 18:29:00 +0000 (10:29 -0800)]
Prepare for 1.6.5.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomerge: do not add standard message when message is given with -m option
Junio C Hamano [Wed, 2 Dec 2009 18:00:58 +0000 (10:00 -0800)]
merge: do not add standard message when message is given with -m option

Even if the user explicitly gave her own message to "git merge", the
command still added its standard merge message.  It resulted in a
useless repetition like this:

    % git merge -m "Merge early part of side branch" `git rev-parse side~2`
    % git show -s
    commit 37217141e7519629353738d5e4e677a15096206f
    Merge: e68e646 a1d2374
    Author: しらいし ななこ <nanako3@lavabit.com>
    Date:   Wed Dec 2 14:33:20 2009 +0900

Merge early part of side branch

Merge commit 'a1d2374f8f52f4e8a53171601a920b538a6cec23'

The gave her own message because she didn't want git to add the
standard message (if she wanted to, she wouldn't have given one,
or she would have prepared it using git-fmt-merge-msg command).

Noticed by Nanako Shiraishi

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDo not misidentify "git merge foo HEAD" as an old-style invocation
Junio C Hamano [Wed, 2 Dec 2009 17:59:35 +0000 (09:59 -0800)]
Do not misidentify "git merge foo HEAD" as an old-style invocation

This was misinterpreted as an ancient style "git merge <message> HEAD
<commit> <commit>..." that merges one (or more) <commit> into the current
branch and record the resulting commit with the given message.  Then a
later sanity check found that there is no <commit> specified and gave
a usage message.

Tested-by: Nanako Shiraishi <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agohelp: Do not unnecessarily look for a repository
David Aguilar [Tue, 1 Dec 2009 19:27:34 +0000 (11:27 -0800)]
help: Do not unnecessarily look for a repository

Although 'git help' actually doesn't need to be run inside a git
repository and uses no repository-specific information, it looks for a git
directory.  Searching for a git directory can be annoying in auto-mount
environments.  With this commit, 'git help' no longer searches for a
repository when run without any options.

7c3baa9 originally modified 'git help -a' to not require a repository.
This applies the same fix for 'git help'.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation: Fix a few i.e./e.g. mix-ups
Michael J Gruber [Tue, 1 Dec 2009 09:19:05 +0000 (10:19 +0100)]
Documentation: Fix a few i.e./e.g. mix-ups

A git bundle can be transported by several means (such as e-mail), not
only by snekaernet, so use e.g. instead of i.e.

The mix-up in git-bundle.txt is obvious.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation: Document --branch option in git clone synopsis
David Soria Parra [Mon, 30 Nov 2009 13:27:52 +0000 (14:27 +0100)]
Documentation: Document --branch option in git clone synopsis

Document the --branch option as [-b <name>] in git clones synopsis.

Signed-off-by: David Soria Parra <dsp@php.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agobuiltin-apply.c: pay attention to -p<n> when determining the name
Junio C Hamano [Wed, 25 Nov 2009 10:56:54 +0000 (02:56 -0800)]
builtin-apply.c: pay attention to -p<n> when determining the name

The patch structure has def_name component that is used to validate the
sanity of a "diff --git" patch by checking pathnames that appear on the
patch header lines for consistency.  The git_header_name() function is
used to compute this out of "diff --git a/... b/..." line, but the code
always stripped one level of prefix (i.e. "a/" and "b/"), without paying
attention to -p<n> option.  Code in find_name() function that parses other
lines in the patch header (e.g. "--- a/..." and "+++ b/..." lines) however
did strip the correct number of leading paths prefixes, and the sanity
check between these computed values failed.

Teach git_header_name() to honor -p<n> option like find_name() function
does.

Found and reported by Steven J. Murdoch who also wrote tests.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agopack-objects: split implications of --all-progress from progress activation
Nicolas Pitre [Mon, 23 Nov 2009 17:43:50 +0000 (12:43 -0500)]
pack-objects: split implications of --all-progress from progress activation

Currently the --all-progress flag is used to use force progress display
during the writing object phase even if output goes to stdout which is
primarily the case during a push operation.  This has the unfortunate
side effect of forcing progress display even if stderr is not a
terminal.

Let's introduce the --all-progress-implied argument which has the same
intent except for actually forcing the activation of any progress
display.  With this, progress display will be automatically inhibited
whenever stderr is not a terminal, or full progress display will be
included otherwise.  This should let people use 'git push' within a cron
job without filling their logs with useless percentage displays.

Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Tested-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoinstaweb: restart server if already running
Stephen Boyd [Mon, 23 Nov 2009 07:09:12 +0000 (23:09 -0800)]
instaweb: restart server if already running

Running 'git instaweb' when an instaweb server is already running will
fail (at least when the port is the same) and overwrite the pid file
used to track the currently running server. This turns out to be
especially annoying when the user tries to stop the previously running
server with 'git instaweb --stop' and is instead greeted with an error
message because the pid file has been destroyed.

Instead of allowing a user to start two instaweb servers, stop the
currently running server first and then start the new one. This should
be fine because it was never really possible to start two instaweb
servers in the first place due to the pid file issue outlined above.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoprune-packed: only show progress when stderr is a tty
Jeff King [Tue, 24 Nov 2009 03:07:42 +0000 (22:07 -0500)]
prune-packed: only show progress when stderr is a tty

This matches the behavior of other git programs, and helps
keep cruft out of things like cron job output.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation: avoid xmlto input error
Junio C Hamano [Sat, 21 Nov 2009 08:37:26 +0000 (00:37 -0800)]
Documentation: avoid xmlto input error

Do not write literal "~/" or "~user" but use "{tilde}/" and "{tilde}user";
otherwise the text between them gets enclosed in
"<subscript>...</subscript>".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoAdd branch management for releases to gitworkflows
Raman Gupta [Thu, 12 Nov 2009 19:46:04 +0000 (14:46 -0500)]
Add branch management for releases to gitworkflows

The current man page does a reasonable job at describing branch management
during the development process, but it does not contain any guidance as to
how the branches are affected by releases.

Add a basic introduction to the branch management undertaken during a
git.git release, so that a reader may gain some insight into how the
integration, maintenance, and topic branches are affected during the
release transition, and is thus able to better design the process for their
own project.

Other release activities such as reviews, testing, and creating
distributions are currently out of scope.

Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com>
Acked-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodiffcore-rename: reduce memory footprint by freeing blob data early
Junio C Hamano [Sat, 21 Nov 2009 06:13:47 +0000 (22:13 -0800)]
diffcore-rename: reduce memory footprint by freeing blob data early

After running one round of estimate_similarity(), filespecs on either
side will have populated their cnt_data fields, and we do not need
the blob text anymore.  We used to retain the blob data to optimize
for smaller projects (not freeing the blob data here would mean that
the final output phase would not have to re-read it), but we are
efficient enough without such optimization for smaller projects anyway,
and freeing memory early will help larger projects.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation: undocument gc'd function graph_release()
Greg Price [Thu, 19 Nov 2009 20:58:29 +0000 (15:58 -0500)]
Documentation: undocument gc'd function graph_release()

graph_release() was removed in 064bfbd.  Cut it from the API
documentation and a comment.

Signed-off-by: Greg Price <price@ksplice.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoexpand_user_path: expand ~ to $HOME, not to the actual homedir.
Matthieu Moy [Thu, 19 Nov 2009 15:21:15 +0000 (16:21 +0100)]
expand_user_path: expand ~ to $HOME, not to the actual homedir.

In 395de250d (Expand ~ and ~user in core.excludesfile, commit.template),
we introduced the mechanism. But expanding ~ using getpw is not what
people overriding $HOME would usually expect. In particular, git looks
for the user's .gitconfig using $HOME, so it's better to be consistent.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoExpand ~ and ~user in core.excludesfile, commit.template
Matthieu Moy [Tue, 17 Nov 2009 17:24:25 +0000 (18:24 +0100)]
Expand ~ and ~user in core.excludesfile, commit.template

These config variables are parsed to substitute ~ and ~user with getpw
entries.

user_path() refactored into new function expand_user_path(), to allow
dynamically allocating the return buffer.

Original patch by Karl Chen, modified by Matthieu Moy, and further
amended by Junio C Hamano.

Signed-off-by: Karl Chen <quarl@quarl.org>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogrep: Allow case insensitive search of fixed-strings
Brian Collins [Fri, 6 Nov 2009 09:22:35 +0000 (01:22 -0800)]
grep: Allow case insensitive search of fixed-strings

"git grep" currently an error when you combine the -F and -i flags.
This isn't in line with how GNU grep handles it.

This patch allows the simultaneous use of those flags.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Brian Collins <bricollins@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodiffcore-break: save cnt_data for other phases
Jeff King [Mon, 16 Nov 2009 16:02:02 +0000 (11:02 -0500)]
diffcore-break: save cnt_data for other phases

The "break" phase works by counting changes between two
blobs with the same path. We do this by splitting the file
into chunks (or lines for text oriented files) and then
keeping a count of chunk hashes.

The "rename" phase counts changes between blobs at two
different paths. However, it uses the exact same set of
chunk hashes (which are immutable for a given sha1).

The rename phase can therefore use the same hash data as
break. Unfortunately, we were throwing this data away after
computing it in the break phase. This patch instead attaches
it to the filespec and lets it live through the rename
phase, working under the assumption that most of the time
that breaks are being computed, renames will be too.

We only do this optimization for files which have actually
been broken, as those ones will be candidates for rename
detection (and it is a time-space tradeoff, so we don't want
to waste space keeping useless data).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodiffcore-break: free filespec data as we go
Jeff King [Mon, 16 Nov 2009 15:56:25 +0000 (10:56 -0500)]
diffcore-break: free filespec data as we go

As we look at each changed file and consider breaking it, we
load the blob data and make a decision about whether to
break, which is independent of any other blobs that might
have changed. However, we keep the data in memory while we
consider breaking all of the other files. Which means that
both versions of every file you are diffing are in memory at
the same time.

This patch instead frees the blob data as we finish with
each file pair, leading to much lower memory usage.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.6.5.3 v1.6.5.3
Junio C Hamano [Mon, 16 Nov 2009 08:05:12 +0000 (00:05 -0800)]
Git 1.6.5.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'bs/maint-pre-commit-hook-sample' into maint
Junio C Hamano [Mon, 16 Nov 2009 08:03:15 +0000 (00:03 -0800)]
Merge branch 'bs/maint-pre-commit-hook-sample' into maint

* bs/maint-pre-commit-hook-sample:
  pre-commit.sample: Diff against the empty tree when HEAD is invalid

11 years agoMerge branch 'jk/maint-add-p-empty' into maint
Junio C Hamano [Mon, 16 Nov 2009 08:02:44 +0000 (00:02 -0800)]
Merge branch 'jk/maint-add-p-empty' into maint

* jk/maint-add-p-empty:
  add-interactive: handle deletion of empty files

11 years agoMerge branch 'js/maint-diff-color-words' into maint
Junio C Hamano [Mon, 16 Nov 2009 08:01:56 +0000 (00:01 -0800)]
Merge branch 'js/maint-diff-color-words' into maint

* js/maint-diff-color-words:
  diff --color-words: bit of clean-up
  diff --color-words -U0: fix the location of hunk headers
  t4034-diff-words: add a test for word diff without context

Conflicts:
diff.c

11 years agoMerge branch 'tz/maint-rpm' into maint
Junio C Hamano [Mon, 16 Nov 2009 07:08:42 +0000 (23:08 -0800)]
Merge branch 'tz/maint-rpm' into maint

* tz/maint-rpm:
  Makefile: Ensure rpm packages can be read by older rpm versions

11 years agoMerge branch 'jk/maint-format-patch-p-suppress-stat' into maint
Junio C Hamano [Mon, 16 Nov 2009 07:07:49 +0000 (23:07 -0800)]
Merge branch 'jk/maint-format-patch-p-suppress-stat' into maint

* jk/maint-format-patch-p-suppress-stat:
  format-patch: make "-p" suppress diffstat

11 years agoMerge branch 'pb/maint-gitweb-blob-lineno' into maint
Junio C Hamano [Mon, 16 Nov 2009 07:07:38 +0000 (23:07 -0800)]
Merge branch 'pb/maint-gitweb-blob-lineno' into maint

* pb/maint-gitweb-blob-lineno:
  gitweb: Fix blob linenr links in pathinfo mode

11 years agoMerge branch 'jk/maint-1.6.3-ls-files-i' into maint
Junio C Hamano [Mon, 16 Nov 2009 07:07:32 +0000 (23:07 -0800)]
Merge branch 'jk/maint-1.6.3-ls-files-i' into maint

* jk/maint-1.6.3-ls-files-i:
  ls-files: unbreak "ls-files -i"

11 years agoMerge branch 'vl/maint-openssl-signature-change' into maint
Junio C Hamano [Mon, 16 Nov 2009 07:07:27 +0000 (23:07 -0800)]
Merge branch 'vl/maint-openssl-signature-change' into maint

* vl/maint-openssl-signature-change:
  imap-send.c: fix compiler warnings for OpenSSL 1.0

11 years agoMerge branch 'jk/maint-push-config' into maint
Junio C Hamano [Mon, 16 Nov 2009 07:07:17 +0000 (23:07 -0800)]
Merge branch 'jk/maint-push-config' into maint

* jk/maint-push-config:
  push: always load default config

11 years agoMerge branch 'sr/blame-incomplete' into maint
Junio C Hamano [Mon, 16 Nov 2009 07:07:07 +0000 (23:07 -0800)]
Merge branch 'sr/blame-incomplete' into maint

* sr/blame-incomplete:
  blame: make sure that the last line ends in an LF

11 years agoMerge branch 'jc/maint-blank-at-eof' into maint
Junio C Hamano [Mon, 16 Nov 2009 07:06:34 +0000 (23:06 -0800)]
Merge branch 'jc/maint-blank-at-eof' into maint

* jc/maint-blank-at-eof:
  diff -B: colour whitespace errors
  diff.c: emit_add_line() takes only the rest of the line
  diff.c: split emit_line() from the first char and the rest of the line
  diff.c: shuffling code around
  diff --whitespace: fix blank lines at end
  core.whitespace: split trailing-space into blank-at-{eol,eof}
  diff --color: color blank-at-eof
  diff --whitespace=warn/error: fix blank-at-eof check
  diff --whitespace=warn/error: obey blank-at-eof
  diff.c: the builtin_diff() deals with only two-file comparison
  apply --whitespace: warn blank but not necessarily empty lines at EOF
  apply --whitespace=warn/error: diagnose blank at EOF
  apply.c: split check_whitespace() into two
  apply --whitespace=fix: detect new blank lines at eof correctly
  apply --whitespace=fix: fix handling of blank lines at the eof

11 years agoMerge branch 'jc/maint-1.6.3-graft-trailing-space' into maint
Junio C Hamano [Mon, 16 Nov 2009 00:38:47 +0000 (16:38 -0800)]
Merge branch 'jc/maint-1.6.3-graft-trailing-space' into maint

* jc/maint-1.6.3-graft-trailing-space:
  info/grafts: allow trailing whitespaces at the end of line

11 years agoMerge branch 'tr/maint-roff-quote' into maint
Junio C Hamano [Mon, 16 Nov 2009 00:38:36 +0000 (16:38 -0800)]
Merge branch 'tr/maint-roff-quote' into maint

* tr/maint-roff-quote:
  Quote ' as \(aq in manpages

11 years agoMerge branch 'ja/fetch-doc' into maint
Junio C Hamano [Mon, 16 Nov 2009 00:38:18 +0000 (16:38 -0800)]
Merge branch 'ja/fetch-doc' into maint

* ja/fetch-doc:
  Documentation/merge-options.txt: order options in alphabetical groups
  Documentation/git-pull.txt: Add subtitles above included option files
  Documentation/fetch-options.txt: order options alphabetically

11 years agoMerge branch 'cb/doc-fetch-pull-merge' into maint
Junio C Hamano [Mon, 16 Nov 2009 00:37:58 +0000 (16:37 -0800)]
Merge branch 'cb/doc-fetch-pull-merge' into maint

* cb/doc-fetch-pull-merge:
  modernize fetch/merge/pull examples

11 years agoMerge branch 'jk/maint-cvsimport-pathname' into maint
Junio C Hamano [Mon, 16 Nov 2009 00:37:53 +0000 (16:37 -0800)]
Merge branch 'jk/maint-cvsimport-pathname' into maint

* jk/maint-cvsimport-pathname:
  cvsimport: fix relative argument filenames

11 years agoMerge branch 'jc/receive-pack-auto' into maint
Junio C Hamano [Mon, 16 Nov 2009 00:37:49 +0000 (16:37 -0800)]
Merge branch 'jc/receive-pack-auto' into maint

* jc/receive-pack-auto:
  receive-pack: run "gc --auto --quiet" and optionally "update-server-info"
  gc --auto --quiet: make the notice a bit less verboase

11 years agoMerge branch 'gb/maint-gitweb-esc-param' into maint
Junio C Hamano [Mon, 16 Nov 2009 00:37:39 +0000 (16:37 -0800)]
Merge branch 'gb/maint-gitweb-esc-param' into maint

* gb/maint-gitweb-esc-param:
  gitweb: fix esc_param

11 years agoMerge branch 'jn/gitweb-patch' into maint
Junio C Hamano [Mon, 16 Nov 2009 00:37:36 +0000 (16:37 -0800)]
Merge branch 'jn/gitweb-patch' into maint

* jn/gitweb-patch:
  gitweb: Do not show 'patch' link for merge commits

11 years agoMakefile: Ensure rpm packages can be read by older rpm versions
Todd Zullinger [Wed, 11 Nov 2009 21:59:52 +0000 (16:59 -0500)]
Makefile: Ensure rpm packages can be read by older rpm versions

The kernel.org hosts where the packages are built are now using Fedora
11, which defaults to sha256 for file digests instead of md5.  Older
versions of rpm can not handle these packages.  Tell rpmbuild to use md5
file digests for better compatibility.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-add.txt: fix formatting of --patch section
Stephen Boyd [Sat, 14 Nov 2009 01:45:46 +0000 (17:45 -0800)]
git-add.txt: fix formatting of --patch section

Extra paragraphs should be prefixed with a plus sign.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogive priority to progress messages
Nicolas Pitre [Wed, 11 Nov 2009 22:24:42 +0000 (17:24 -0500)]
give priority to progress messages

In theory it is possible for sideband channel #2 to be delayed if
pack data is quick to come up for sideband channel #1.  And because
data for channel #2 is read only 128 bytes at a time while pack data
is read 8192 bytes at a time, it is possible for many pack blocks to
be sent to the client before the progress message fifo is emptied,
making the situation even worse.  This would result in totally garbled
progress display on the client's console as local progress gets mixed
with partial remote progress lines.

Let's prevent such situations by giving transmission priority to
progress messages over pack data at all times.

Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocheck-ref-format -h: it does not know the --print option yet
Junio C Hamano [Wed, 11 Nov 2009 04:45:23 +0000 (20:45 -0800)]
check-ref-format -h: it does not know the --print option yet

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomerge: do not setup worktree twice
Jonathan Nieder [Mon, 9 Nov 2009 15:04:58 +0000 (09:04 -0600)]
merge: do not setup worktree twice

Builtins do not need to run setup_worktree() for themselves, since
the builtin machinery runs it for them.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocheck-ref-format: update usage string
Jonathan Nieder [Mon, 9 Nov 2009 15:04:47 +0000 (09:04 -0600)]
check-ref-format: update usage string

'git check-ref-format' has learned --branch and --print options
since the usage string was last updated.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMakefile: merge two Cygwin configuration sections into one
Ramsay Jones [Tue, 27 Oct 2009 19:11:55 +0000 (19:11 +0000)]
Makefile: merge two Cygwin configuration sections into one

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoAdd intermediate build products to .gitignore
Jonathan Nieder [Sun, 8 Nov 2009 22:07:16 +0000 (16:07 -0600)]
Add intermediate build products to .gitignore

Temporaries such as configure.ac+ and Documentation/*.xml+
sometimes remain after an interrupted build.  Tell git not to
track them.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoformat-patch: make "-p" suppress diffstat
Jeff King [Wed, 4 Nov 2009 07:19:40 +0000 (02:19 -0500)]
format-patch: make "-p" suppress diffstat

Once upon a time, format-patch would use its default stat
plus patch format only when no diff format was given on the
command line. This meant that "format-patch -p" would
suppress the stat and show just the patch.

Commit 68daa64 changed this to keep the stat format when we
had an "implicit" patch format, like "-U5". As a side
effect, this meant that an explicit patch format was now
ignored (because cmd_format_patch didn't know the reason
that the format was set way down in diff_opt_parse).

This patch unbreaks what 68daa64 did (while still preserving
what 68daa64 was trying to do), reinstating "-p" to suppress
the default behavior. We do this by parsing "-p" ourselves
in format-patch, and noting whether it was used explicitly.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agopre-commit.sample: Diff against the empty tree when HEAD is invalid
Björn Steinbrink [Thu, 5 Nov 2009 10:57:57 +0000 (11:57 +0100)]
pre-commit.sample: Diff against the empty tree when HEAD is invalid

This was already the case for the old "diff --check" call, but the new
one that checks whether there are any non-ascii file names was missing
it, making that check fail for root commits.

Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogitweb: Fix blob linenr links in pathinfo mode
Petr Baudis [Fri, 6 Nov 2009 15:08:41 +0000 (16:08 +0100)]
gitweb: Fix blob linenr links in pathinfo mode

In pathinfo mode, we use <base href> that refers to the base location
of gitweb in order for various external media links to work well.
However, this means that for the page to refer to itself, it must
regenerate full link, and this is exactly what the blob view page
did not do for line numbers.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoFix documentation grammar typo
Gisle Aas [Wed, 4 Nov 2009 21:57:46 +0000 (22:57 +0100)]
Fix documentation grammar typo

Introduced in 492cf3f (More precise description of 'git describe --abbrev', 2009-10-29)

Signed-off-by: Gisle Aas <gisle@aas.no>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoAllow curl helper to work without a local repository
Daniel Barkalow [Wed, 4 Nov 2009 02:52:35 +0000 (21:52 -0500)]
Allow curl helper to work without a local repository

It's okay to use the curl helper without a local repository, so long
as you don't use "fetch". There aren't any git programs that would try
to use it, and it doesn't make sense to try it (since there's nowhere
to write the results), but we may as well be clear.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoRequire a struct remote in transport_get()
Daniel Barkalow [Wed, 4 Nov 2009 02:38:51 +0000 (21:38 -0500)]
Require a struct remote in transport_get()

cmd_ls_remote() was calling transport_get() with a NULL remote and a
non-NULL url in the case where it was run outside a git
repository. This involved a bunch of ill-tested special
cases. Instead, simply get the struct remote for the URL with
remote_get(), which works fine outside a git repository, and can also
take global options into account.

This fixes a tiny and obscure bug where "git ls-remote" without a repo
didn't support global url.*.insteadOf, even though "git clone" and
"git ls-remote" in any repo did.

Also, enforce that all callers provide a struct remote to transport_get().

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'bg/clone-doc' into maint
Junio C Hamano [Mon, 2 Nov 2009 06:51:04 +0000 (22:51 -0800)]
Merge branch 'bg/clone-doc' into maint

* bg/clone-doc:
  git-clone.txt: Fix grammar and formatting

11 years agoMakefile: add compat/bswap.h to LIB_H
Dmitry V. Levin [Sun, 1 Nov 2009 23:09:05 +0000 (02:09 +0300)]
Makefile: add compat/bswap.h to LIB_H

Starting with commit 51ea55190b6e72c77c96754c1bf2f149a4714848,
git-compat-util.h includes compat/bswap.h

Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoimap-send.c: fix compiler warnings for OpenSSL 1.0
Vietor Liu [Sat, 31 Oct 2009 06:36:03 +0000 (14:36 +0800)]
imap-send.c: fix compiler warnings for OpenSSL 1.0

The openssl/CHANGES file says:

    Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
    pointer and make the SSL_METHOD parameter in SSL_CTX_new,
    SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.

In older versions, unqualified pointers were used, so we unfortunately
cannot unconditionally update the type of the variable we use.

Signed-off-by: Vietor Liu <vietor@vxwo.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodiff --color-words: bit of clean-up
Junio C Hamano [Fri, 30 Oct 2009 17:09:06 +0000 (10:09 -0700)]
diff --color-words: bit of clean-up

When we introduced the "word diff" mode, we could have done one of three
things:

 * change fn_out_consume() to "this is called every time a line worth of
   diff becomes ready from the lower-level diff routine.  This function
   knows two sets of helpers (one for line-oriented diff, another for word
   diff), and each set has various functions to be called at certain
   places (e.g. hunk header, context, ...).  The function's role is to
   inspect the incoming line, and dispatch appropriate helpers to produce
   either line- or word- oriented diff output."

 * introduce fn_out_consume_word_diff() that is "this is called every time
   a line worth of diff becomes ready from the lower-level diff routine,
   and here is what we do to prepare word oriented diff using that line."
   without touching fn_out_consume() at all.

 * Do neither of the above, and keep fn_out_consume() to "this is called
   every time a line worth of diff becomes ready from the lower-level diff
   routine, and here is what we do to output line oriented diff using that
   line."  but sprinkle a handful of 'are we in word-diff mode?  if so do
   this totally different thing' at random places.

This patch is to at least abstract the details of "this totally different
thing" out from the main codepath, in order to improve readability.

We can later refactor it by introducing fn_out_consume_word_diff(), taking
the second route above, but that is a separate topic.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoclone: detect extra arguments
Jonathan Nieder [Thu, 29 Oct 2009 08:10:30 +0000 (03:10 -0500)]
clone: detect extra arguments

If git clone is given more than two non-option arguments, it
silently throws away all but the first one.  Complain instead.

Discovered by comparing the new builtin clone to the old
git-clone.sh.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoclone: fix help on options
Junio C Hamano [Fri, 30 Oct 2009 22:15:36 +0000 (15:15 -0700)]
clone: fix help on options

Fix incorrect description of --recursive, and stop listing the historical
synonym --naked that is not advertised anywhere.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agopush: fix typo in usage
Jeff King [Fri, 30 Oct 2009 15:04:53 +0000 (11:04 -0400)]
push: fix typo in usage

Missing ")".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMore precise description of 'git describe --abbrev'
Gisle Aas [Thu, 29 Oct 2009 21:29:35 +0000 (22:29 +0100)]
More precise description of 'git describe --abbrev'

Also adds a note about why the output in the examples might give
different output today.

Signed-off-by: Gisle Aas <gisle@aas.no>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agols-files: unbreak "ls-files -i"
Jeff King [Fri, 30 Oct 2009 19:05:52 +0000 (15:05 -0400)]
ls-files: unbreak "ls-files -i"

Commit b5227d8 changed the behavior of "ls-files" with
respect to includes, but accidentally broke the "-i" option
The original behavior was:

  1. if no "-i" is given, cull all results according to --exclude*
  2. if "-i" is given, show the inverse of (1)

The broken behavior was:

  1. if no "-i" is given:
     a. for "-o", cull results according to --exclude*
     b. for index files, always show all
  2. if "-i" is given:
     a. for "-o", shows the inverse of (1a)
     b. for index files, always show all

The fixed behavior keeps the new (1b) behavior introduced
by b5227d8, but fixes the (2b) behavior to show only ignored
files, not all files.

This patch also tweaks the documentation. The original text
was somewhat obscure in the first place, but it is also now
inaccurate (the relationship between (1b) and (2b) is not
quite a "reverse").

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agodiff --color-words -U0: fix the location of hunk headers
Johannes Schindelin [Thu, 29 Oct 2009 10:45:03 +0000 (11:45 +0100)]
diff --color-words -U0: fix the location of hunk headers

Colored word diff without context lines firstly printed all the hunk
headers among each other and then printed the diff.

This was due to the code relying on getting at least one context line at
the end of each hunk, where the colored words would be flushed (it is
done that way to be able to ignore rewrapped lines).

Noticed by Markus Heidelberg.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot4034-diff-words: add a test for word diff without context
Markus Heidelberg [Wed, 28 Oct 2009 12:24:30 +0000 (13:24 +0100)]
t4034-diff-words: add a test for word diff without context

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agohelp -a: do not unnecessarily look for a repository
Johannes Schindelin [Fri, 4 Sep 2009 10:22:36 +0000 (12:22 +0200)]
help -a: do not unnecessarily look for a repository

Although 'git help -a' actually doesn't need to be run inside a git
repository and uses no repository-specific information, it looks for a git
directory.  On 'git <TAB><TAB>' the bash completion runs 'git help -a' and
unnecessary searching for a git directory can be annoying in auto-mount
environments.  With this commit, 'git help' no longer searches for a
repository when run with the -a option.

Reported by Vincent Danjean through http://bugs.debian.org/539273

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'maint-1.6.4' into maint
Junio C Hamano [Wed, 28 Oct 2009 07:03:24 +0000 (00:03 -0700)]
Merge branch 'maint-1.6.4' into maint

* maint-1.6.4:
  rebase -i: more graceful handling of invalid commands
  help -i: properly error out if no info viewer can be found

11 years agoDo not try to remove directories when removing old links
Sebastian Schuberth [Tue, 27 Oct 2009 11:23:33 +0000 (12:23 +0100)]
Do not try to remove directories when removing old links

When building Git with MSVC on Windows, directories named after the Git alias
are created for the output files, e.g. there is a "git-merge-index" directory
next to the "git-merge-index.exe" executable in the build root. Previously,
"make all" just checked if "git-merge-index" and "git-merge-index.exe" are the
same file, and if not, tried to remove "git-merge-index". This fails in the
case of "git-merge-index" being a directory, which is why this is checked now.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoadd-interactive: handle deletion of empty files
Jeff King [Wed, 28 Oct 2009 00:52:57 +0000 (20:52 -0400)]
add-interactive: handle deletion of empty files

Usually we show deletion as a big hunk deleting all of the
file's text. However, for files with no content, the diff
shows just the 'deleted file mode ...' line. This patch
cause "add -p" (and related commands) to recognize that line
and explicitly ask about deleting the file.

We only add the "stage this deletion" hunk for empty files,
since other files will already ask about the big content
deletion hunk. We could also change those files to simply
display "stage this deletion", but showing the actual
deleted content is probably what an interactive user wants.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agorebase -i: more graceful handling of invalid commands
Jan Krüger [Tue, 27 Oct 2009 14:58:14 +0000 (15:58 +0100)]
rebase -i: more graceful handling of invalid commands

Currently, when there is an invalid command, the rest of the line is
still treated as if the command had been valid, i.e. rebase -i attempts
to produce a patch, using the next argument as a SHA1 name. If there is
no next argument or an invalid one, very confusing error messages
appear (the line was '.'; path to git-rebase-todo substituted):

Unknown command: .
fatal: ambiguous argument 'Please fix this in the file $somefile.':
unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
fatal: Not a valid object name Please fix this in the file $somefile.
fatal: bad revision 'Please fix this in the file $somefile.'

Instead, verify the validity of the remaining line and error out earlier
if necessary.

Signed-off-by: Jan Krüger <jk@jk.gs>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agohelp -i: properly error out if no info viewer can be found
Gerrit Pape [Tue, 27 Oct 2009 13:31:33 +0000 (13:31 +0000)]
help -i: properly error out if no info viewer can be found

With this commit, git help -i <cmd> prints an error message and exits
non-zero instead of being silent and exit code 0.

Reported by Trent W. Buck through
 http://bugs.debian.org/537664

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agopush: always load default config
Jeff King [Sun, 25 Oct 2009 19:15:22 +0000 (15:15 -0400)]
push: always load default config

This is needed because we want to use the
advice.pushnonfastforward variable.

Previously, we would load the config on demand only when we
needed to look at push.default.  Which meant that "git push"
would load it, but "git push remote" would not, leading to
differing behavior.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGIT 1.6.5.2 v1.6.5.2
Junio C Hamano [Mon, 26 Oct 2009 01:37:56 +0000 (18:37 -0700)]
GIT 1.6.5.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jc/maint-fix-unpack-zlib-check' into maint
Junio C Hamano [Mon, 26 Oct 2009 01:35:59 +0000 (18:35 -0700)]
Merge branch 'jc/maint-fix-unpack-zlib-check' into maint

* jc/maint-fix-unpack-zlib-check:
  Fix incorrect error check while reading deflated pack data

11 years agoMerge branch 'maint-1.6.4' into maint
Junio C Hamano [Sun, 25 Oct 2009 22:34:41 +0000 (15:34 -0700)]
Merge branch 'maint-1.6.4' into maint

* maint-1.6.4:
  ls-files: excludes should not impact tracked files

11 years agoMerge branch 'jk/maint-1.6.3-ls-files-no-ignore-cached' into maint-1.6.4
Junio C Hamano [Sun, 25 Oct 2009 22:34:27 +0000 (15:34 -0700)]
Merge branch 'jk/maint-1.6.3-ls-files-no-ignore-cached' into maint-1.6.4

* jk/maint-1.6.3-ls-files-no-ignore-cached:
  ls-files: excludes should not impact tracked files

11 years agoMerge branch 'jn/maint-1.6.3-check-ref-format-doc' into maint-1.6.4
Junio C Hamano [Sun, 25 Oct 2009 22:34:21 +0000 (15:34 -0700)]
Merge branch 'jn/maint-1.6.3-check-ref-format-doc' into maint-1.6.4

* jn/maint-1.6.3-check-ref-format-doc:
  Documentation: describe check-ref-format --branch

11 years agot7800-difftool: fix the effectless GIT_DIFFTOOL_PROMPT test
Markus Heidelberg [Sat, 24 Oct 2009 23:39:19 +0000 (01:39 +0200)]
t7800-difftool: fix the effectless GIT_DIFFTOOL_PROMPT test

GIT_DIFFTOOL_PROMPT doesn't have any effect if overridden with --prompt.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoWork around option parsing bug in the busybox tar implementation
Andreas Schwab [Sat, 24 Oct 2009 13:06:57 +0000 (15:06 +0200)]
Work around option parsing bug in the busybox tar implementation

The first argument of the tar command is interpreted as a bundle of
letters specifying the mode of operation and additional options, with
any option arguments taken from subsequent words on the command line
as needed.  The implementation of tar in busybox treats this bundle
as if preceded by a dash and then parses it by getopt rules, which
mishandles 'tar xfo -'.  Use 'tar xof -' instead to work this around.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoFix list of released versions in the toc document
Junio C Hamano [Sat, 24 Oct 2009 05:38:44 +0000 (22:38 -0700)]
Fix list of released versions in the toc document

11 years agoMerge branch 'jp/maint-send-email-fold' into maint
Junio C Hamano [Sat, 24 Oct 2009 05:30:42 +0000 (22:30 -0700)]
Merge branch 'jp/maint-send-email-fold' into maint

* jp/maint-send-email-fold:
  git-send-email.perl: fold multiple entry "Cc:" and multiple single line "RCPT TO:"s

11 years agoMerge branch 'jn/maint-1.6.3-check-ref-format-doc' into maint
Junio C Hamano [Sat, 24 Oct 2009 05:30:20 +0000 (22:30 -0700)]
Merge branch 'jn/maint-1.6.3-check-ref-format-doc' into maint

* jn/maint-1.6.3-check-ref-format-doc:
  Documentation: describe check-ref-format --branch

11 years agoMerge branch 'pv/maint-add-p-no-exclude' into maint
Junio C Hamano [Sat, 24 Oct 2009 05:29:19 +0000 (22:29 -0700)]
Merge branch 'pv/maint-add-p-no-exclude' into maint

* pv/maint-add-p-no-exclude:
  git-add--interactive: never skip files included in index

11 years agoDo not fail "describe --always" in a tag-less repository
Junio C Hamano [Fri, 23 Oct 2009 18:42:39 +0000 (11:42 -0700)]
Do not fail "describe --always" in a tag-less repository

This fixes a regression introduce by d68dc34 (git-describe: Die early if
there are no possible descriptions, 2009-08-06).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoQuote ' as \(aq in manpages
Thomas Rast [Thu, 22 Oct 2009 08:19:06 +0000 (10:19 +0200)]
Quote ' as \(aq in manpages

The docbook/xmlto toolchain insists on quoting ' as \'.  This does
achieve the quoting goal, but modern 'man' implementations turn the
apostrophe into a unicode "proper" apostrophe (given the right
circumstances), breaking code examples in many of our manpages.

Quote them as \(aq instead, which is an "apostrophe quote" as per the
groff_char manpage.

Unfortunately, as Anders Kaseorg kindly pointed out, this is not
portable beyond groff, so we add an extra Makefile variable GNU_ROFF
which you need to enable to get the new quoting.

Thanks also to Miklos Vajna for documentation.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation/merge-options.txt: order options in alphabetical groups
Jari Aalto [Thu, 22 Oct 2009 19:25:20 +0000 (22:25 +0300)]
Documentation/merge-options.txt: order options in alphabetical groups

Signed-off-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation/git-pull.txt: Add subtitles above included option files
Jari Aalto [Thu, 22 Oct 2009 14:14:57 +0000 (17:14 +0300)]
Documentation/git-pull.txt: Add subtitles above included option files

Signed-off-by: Jari Aalto <jari.aalto@cante.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoFix incorrect error check while reading deflated pack data
Junio C Hamano [Thu, 22 Oct 2009 06:06:14 +0000 (23:06 -0700)]
Fix incorrect error check while reading deflated pack data

The loop in get_size_from_delta() feeds a deflated delta data from the
pack stream _until_ we get inflated result of 20 bytes[*] or we reach the
end of stream.

    Side note. This magic number 20 does not have anything to do with the
    size of the hash we use, but comes from 1a3b55c (reduce delta head
    inflated size, 2006-10-18).

The loop reads like this:

    do {
        in = use_pack();
        stream.next_in = in;
        st = git_inflate(&stream, Z_FINISH);
        curpos += stream.next_in - in;
    } while ((st == Z_OK || st == Z_BUF_ERROR) &&
             stream.total_out < sizeof(delta_head));

This git_inflate() can return:

 - Z_STREAM_END, if use_pack() fed it enough input and the delta itself
   was smaller than 20 bytes;

 - Z_OK, when some progress has been made;

 - Z_BUF_ERROR, if no progress is possible, because we either ran out of
   input (due to corrupt pack), or we ran out of output before we saw the
   end of the stream.

The fix b3118bd (sha1_file: Fix infinite loop when pack is corrupted,
2009-10-14) attempted was against a corruption that appears to be a valid
stream that produces a result larger than the output buffer, but we are
not even trying to read the stream to the end in this loop.  If avail_out
becomes zero, total_out will be the same as sizeof(delta_head) so the loop
will terminate without the "fix".  There is no fix from b3118bd needed for
this loop, in other words.

The loop in unpack_compressed_entry() is quite a different story.  It
feeds a deflated stream (either delta or base) and allows the stream to
produce output up to what we expect but no more.

    do {
        in = use_pack();
        stream.next_in = in;
        st = git_inflate(&stream, Z_FINISH);
        curpos += stream.next_in - in;
    } while (st == Z_OK || st == Z_BUF_ERROR)

This _does_ risk falling into an endless interation, as we can exhaust
avail_out if the length we expect is smaller than what the stream wants to
produce (due to pack corruption).  In such a case, avail_out will become
zero and inflate() will return Z_BUF_ERROR, while avail_in may (or may
not) be zero.

But this is not a right fix:

    do {
        in = use_pack();
        stream.next_in = in;
        st = git_inflate(&stream, Z_FINISH);
+       if (st == Z_BUF_ERROR && (stream.avail_in || !stream.avail_out)
+               break; /* wants more input??? */
        curpos += stream.next_in - in;
    } while (st == Z_OK || st == Z_BUF_ERROR)

as Z_BUF_ERROR from inflate() may be telling us that avail_in has also run
out before reading the end of stream marker.  In such a case, both avail_in
and avail_out would be zero, and the loop should iterate to allow the end
of stream marker to be seen by inflate from the input stream.

The right fix for this loop is likely to be to increment the initial
avail_out by one (we allocate one extra byte to terminate it with NUL
anyway, so there is no risk to overrun the buffer), and break out if we
see that avail_out has become zero, in order to detect that the stream
wants to produce more than what we expect.  After the loop, we have a
check that exactly tests this condition:

    if ((st != Z_STREAM_END) || stream.total_out != size) {
        free(buffer);
        return NULL;
    }

So here is a patch (without my previous botched attempts) to fix this
issue.  The first hunk reverts the corresponding hunk from b3118bd, and
the second hunk is the same fix proposed earlier.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoblame: make sure that the last line ends in an LF
Johannes Schindelin [Tue, 20 Oct 2009 03:06:28 +0000 (22:06 -0500)]
blame: make sure that the last line ends in an LF

This is convenient when parsing multiple the blame of multiple files,
for example:

    git ls-files -z --exclude-standard -- "*.[ch]" |
    xargs --null -n 1 git blame -p > output

and then analyzing the 'output' file using a seperate script.

Currently the parsing is difficult when not all files have a newline
at EOF, this patch ensures that even such files have a newline at the
end of the blame output.

Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
CC: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-clone.txt: Fix grammar and formatting
Björn Gustavsson [Tue, 20 Oct 2009 20:38:38 +0000 (22:38 +0200)]
git-clone.txt: Fix grammar and formatting

Add the missing definite article ("the") in several places.

Change "note to..." to "note for...", since "note to" means that
that the note is addressed to someone (source: Google search).

Change "progressbar" to "progress bar" (source: Wikipedia).

Format git commands, options, and file names consistently using
back quotes (i.e. a fixed font in the resulting HTML document).

Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoreceive-pack: run "gc --auto --quiet" and optionally "update-server-info"
Junio C Hamano [Tue, 20 Oct 2009 21:56:40 +0000 (14:56 -0700)]
receive-pack: run "gc --auto --quiet" and optionally "update-server-info"

Introduce two new configuration variables, receive.autogc (defaults to
true) and receive.updateserverinfo (defaults to false).  When these are
set, receive-pack runs "gc --auto --quiet" and "update-server-info"
respectively after it finishes receiving data from "git push" and updating
refs.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Nicolas Pitre <nico@fluxnic.net>