gitweb.git
Merge branch 'bg/apply-blank-trailing-context'Junio C Hamano Sun, 9 May 2010 05:37:41 +0000 (22:37 -0700)

Merge branch 'bg/apply-blank-trailing-context'

* bg/apply-blank-trailing-context:
apply: Allow blank *trailing* context lines to match beyond EOF

Merge branch 'bg/send-email-smtpdomain'Junio C Hamano Sun, 9 May 2010 05:37:34 +0000 (22:37 -0700)

Merge branch 'bg/send-email-smtpdomain'

* bg/send-email-smtpdomain:
send-email: Cleanup smtp-domain and add config
Document send-email --smtp-domain
send-email: Don't use FQDNs without a '.'
send-email: Cleanup { style

Merge branch 'rc/ls-remote-default'Junio C Hamano Sun, 9 May 2010 05:37:28 +0000 (22:37 -0700)

Merge branch 'rc/ls-remote-default'

* rc/ls-remote-default:
ls-remote: fall-back to default remotes when no remote specified

Merge branch 'rc/maint-curl-helper'Junio C Hamano Sun, 9 May 2010 05:37:24 +0000 (22:37 -0700)

Merge branch 'rc/maint-curl-helper'

* rc/maint-curl-helper:
remote-curl: ensure that URLs have a trailing slash
http: make end_url_with_slash() public
t5541-http-push: add test for URLs with trailing slash

Conflicts:
remote-curl.c

Merge branch 'hg/maint-attr-fix'Junio C Hamano Sun, 9 May 2010 05:37:05 +0000 (22:37 -0700)

Merge branch 'hg/maint-attr-fix'

* hg/maint-attr-fix:
attr: Expand macros immediately when encountered.
attr: Allow multiple changes to an attribute on the same line.
attr: Fixed debug output for macro expansion.

Merge branch 'eb/unpretty-b-format'Junio C Hamano Sun, 9 May 2010 05:36:40 +0000 (22:36 -0700)

Merge branch 'eb/unpretty-b-format'

* eb/unpretty-b-format:
Add `%B' in format strings for raw commit body in `git log' and friends

Merge branch 'ab/commit-empty-message'Junio C Hamano Sun, 9 May 2010 05:36:31 +0000 (22:36 -0700)

Merge branch 'ab/commit-empty-message'

* ab/commit-empty-message:
Add option to git-commit to allow empty log messages

Merge branch 'jc/test-sleepless'Junio C Hamano Sun, 9 May 2010 05:36:23 +0000 (22:36 -0700)

Merge branch 'jc/test-sleepless'

* jc/test-sleepless:
war on "sleep" in tests

Merge branch 'jc/maint-reflog-expire-unreachable'Junio C Hamano Sun, 9 May 2010 05:36:16 +0000 (22:36 -0700)

Merge branch 'jc/maint-reflog-expire-unreachable'

* jc/maint-reflog-expire-unreachable:
reflog --expire-unreachable: avoid merge-base computation

Merge branch 'sd/log-decorate'Junio C Hamano Sun, 9 May 2010 05:36:14 +0000 (22:36 -0700)

Merge branch 'sd/log-decorate'

* sd/log-decorate:
log.decorate: only ignore it under "log --pretty=raw"
script with rev-list instead of log
log --pretty/--oneline: ignore log.decorate
log.decorate: usability fixes
Add `log.decorate' configuration variable.
git_config_maybe_bool()

Conflicts:
builtin/log.c

Merge branch 'mh/status-optionally-refresh'Junio C Hamano Sun, 9 May 2010 05:35:39 +0000 (22:35 -0700)

Merge branch 'mh/status-optionally-refresh'

* mh/status-optionally-refresh:
t7508: add a test for "git status" in a read-only repository
git status: refresh the index if possible
t7508: add test for "git status" refreshing the index

Merge branch 'cw/ws-indent-with-tab'Junio C Hamano Sun, 9 May 2010 05:35:35 +0000 (22:35 -0700)

Merge branch 'cw/ws-indent-with-tab'

* cw/ws-indent-with-tab:
whitespace: tests for git-apply --whitespace=fix with tab-in-indent
whitespace: add tab-in-indent support for --whitespace=fix
whitespace: replumb ws_fix_copy to take a strbuf *dst instead of char *dst
whitespace: tests for git-diff --check with tab-in-indent error class
whitespace: add tab-in-indent error class
whitespace: we cannot "catch all errors known to git" anymore

Merge branch 'cc/revert-strategy'Junio C Hamano Sun, 9 May 2010 05:34:47 +0000 (22:34 -0700)

Merge branch 'cc/revert-strategy'

* cc/revert-strategy:
revert: add "--strategy" option to choose merge strategy
merge: make function try_merge_command non static
merge: refactor code that calls "git merge-STRATEGY"
revert: refactor merge recursive code into its own function
revert: use strbuf to refactor the code that writes the merge message

Conflicts:
builtin/revert.c

Merge branch 'sc/http-late-auth'Junio C Hamano Sun, 9 May 2010 05:33:16 +0000 (22:33 -0700)

Merge branch 'sc/http-late-auth'

* sc/http-late-auth:
Prompt for a username when an HTTP request 401s

Merge branch 'jk/cached-textconv'Junio C Hamano Sun, 9 May 2010 05:33:08 +0000 (22:33 -0700)

Merge branch 'jk/cached-textconv'

* jk/cached-textconv:
diff: avoid useless filespec population
diff: cache textconv output
textconv: refactor calls to run_textconv
introduce notes-cache interface
make commit_tree a library function

Merge branch 'pc/remove-warn'Junio C Hamano Sun, 9 May 2010 05:32:59 +0000 (22:32 -0700)

Merge branch 'pc/remove-warn'

* pc/remove-warn:
Remove a redundant errno test in a usage of remove_path
Introduce remove_or_warn function
Implement the rmdir_or_warn function
Generalise the unlink_or_warn function

Makefile: let header dependency checker override COMPUT... Jonathan Nieder Sun, 9 May 2010 04:00:10 +0000 (23:00 -0500)

Makefile: let header dependency checker override COMPUTE_HEADER_DEPENDENCIES

This way, if you have “COMPUTE_HEADER_DEPENDENCIES = YesPlease” in your
config.mak, you can still “make CHECK_HEADER_DEPENDENCIES=Yes” to check
the makefile after a successful build.

This change does not affect the result of the command
“make CHECK_HEADER_DEPENDENCIES=Yes COMPUTE_HEADER_DEPENDENCIES=Yes”.
That will still die with an error message:

cannot compute header dependencies outside a normal build

The message is appropriate because still true.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: fix header dependency checker to allow NO_CUR... Jonathan Nieder Sun, 9 May 2010 03:57:28 +0000 (22:57 -0500)

Makefile: fix header dependency checker to allow NO_CURL builds

Do not expect to find http-related dependency fragments after a build
with HTTP support disabled.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/notes: nitpicksJonathan Nieder Sun, 9 May 2010 03:37:21 +0000 (22:37 -0500)

Documentation/notes: nitpicks

Spell out “or” in the NAME line and simplify the leading sentence
in the DESCRIPTION.

Some other language cleanups, too.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/notes: clean up description of rewriting... Jonathan Nieder Sun, 9 May 2010 03:33:28 +0000 (22:33 -0500)

Documentation/notes: clean up description of rewriting configuration

Clarify that the GIT_NOTES_REWRITE_REFS environment variable
overrides both ‘[notes "rewrite"] <command>’ and ‘[notes] rewriteRef’.

Add explanations of GIT_NOTES_REWRITE_MODE and GIT_NOTES_REWRITE_REFS
to the ENVIRONMENT section.

Cc: Leif Arne Storset <lstorset@opera.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/notes: simplify treatment of default... Jonathan Nieder Sun, 9 May 2010 03:32:24 +0000 (22:32 -0500)

Documentation/notes: simplify treatment of default display refs

The main description of display refs for notes should be in
git-log.1, where there is a chance to give a leisurely description
of all the ways they can be set, what they are used for, and so
on. The description in git-notes.1 is only meant to be a quick
reminder of how notes are used.

So simplify it.

Also add an entry for GIT_NOTES_DISPLAY_REF to the environment
section.

Cc: Thomas Rast <trast@student.ethz.ch>
Cc: Johan Herland <johan@herland.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/log: add a CONFIGURATION sectionJonathan Nieder Sun, 9 May 2010 03:30:41 +0000 (22:30 -0500)

Documentation/log: add a CONFIGURATION section

Add a configuration section summarizing variables that affect the
log family of commands.

Cc: Thomas Rast <trast@student.ethz.ch>
Cc: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/notes: simplify treatment of default... Jonathan Nieder Sun, 9 May 2010 03:23:58 +0000 (22:23 -0500)

Documentation/notes: simplify treatment of default notes ref

Separate the documentation of the semantics, command-line option,
configuration item, and environment variable for the default notes
ref. The documentation is easier to digest in bite-sized pieces.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/notes: add configuration sectionJonathan Nieder Sun, 9 May 2010 03:21:59 +0000 (22:21 -0500)

Documentation/notes: add configuration section

Copy the descriptions of configuration variables from git-config.1.
Once the descriptions have been ironed out, it would be nice to
refactor them to share text, but for now it is simplest to experiment
with separate copies.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/notes: describe content of notes blobsJonathan Nieder Sun, 9 May 2010 03:21:34 +0000 (22:21 -0500)

Documentation/notes: describe content of notes blobs

stripspace/text-based formatting kicks in when specifying the notes
content with -m or -F, or when an editor is used to edit the notes.
To binary-safely create notes from files, the following construct is
required:

git notes add -C $(git hash-object -w <file>) <object>

Explain this trick (thanks, Johan!) in the manual. Add an ordinary
example, too, to keep this esoteric one company.

Cc: Johan Herland <johan@herland.net>
Cc: Thomas Rast <trast@student.ethz.ch>
Cc: Jeff King <peff@peff.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/notes: document format of notes treesJonathan Nieder Sun, 9 May 2010 03:19:35 +0000 (22:19 -0500)

Documentation/notes: document format of notes trees

Separate the specification of the notes format exposed in
git-config.1 from the description of the option; or in other
words, move the explanation for what to expect to find at
refs/notes/commits from git-config.1 to git-notes.1.

Suggested-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Do not call release_pack_memory in malloc wrappers... Johannes Sixt Sat, 8 May 2010 15:18:06 +0000 (17:18 +0200)

Do not call release_pack_memory in malloc wrappers when GIT_TRACE is used

This avoids a potential race condition when async procedures are
implemented as threads where release_pack_memory() can be called from
different threads without locking under memory pressure.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Have set_try_to_free_routine return the previous routineJohannes Sixt Sat, 8 May 2010 15:13:49 +0000 (17:13 +0200)

Have set_try_to_free_routine return the previous routine

This effectively requires from the callers of set_try_to_free_routine to
treat the try-to-free-routines as a stack.

We will need this for the next patch where the only current caller cannot
depend on that the previously set routine was the default routine.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Add support for FastCGI, using CGI::FastSam Vilain Fri, 7 May 2010 12:54:05 +0000 (14:54 +0200)

gitweb: Add support for FastCGI, using CGI::Fast

Former run() subroutine got renamed to run_request(). The new run()
subroutine can run multiple requests at once if run as FastCGI script.

To run gitweb as FastCGI script you must specify '--fastcgi' / '-f'
command line option to gitweb, otherwise it runs as an ordinary CGI
script.

[jn: cherry picked from 56d7d436644ab296155a697552ea1345f2701620
in http://utsl.gen.nz/gitweb/?p=gitweb which was originally based
on v264 (2326acfa95ac86a53804ca8eeeb482c2f9265e34) by Kay Sievers;
updated to reflect current gitweb code]

TODO: update 'gitweb/README' and/or 'gitweb/INSTALL' files.

Signed-off-by: Sam Vilain <sam.vilain@catalyst.net.nz>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Put all per-connection code in run() subroutineJakub Narebski Fri, 7 May 2010 12:54:04 +0000 (14:54 +0200)

gitweb: Put all per-connection code in run() subroutine

All code that is run per-connection (as opposed to those parts of gitweb
code that can be run once) is put into appropriate subroutines:
- evaluate_uri
- evaluate_gitweb_config
- evaluate_git_version (here only because $GIT can be set in config)
- check_loadavg (as soon as possible; $git_version must be defined)
- evaluate_query_params (counterpart to evaluate_path_info)
- evaluate_and_validate_params
- evaluate_git_dir (requires $project)
- configure_gitweb_features (@snapshot_fmts, $git_avatar)
- dispatch (includes setting default $action)

The difference is best viewed with '-w', '--ignore-all-space' option,
because of reindent caused by putting code in subroutines.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

cherry-pick: do not dump core when iconv failsJonathan Nieder Sat, 8 May 2010 23:17:29 +0000 (18:17 -0500)

cherry-pick: do not dump core when iconv fails

When cherry-picking, usually the new and old commit encodings are both
UTF-8. Most old iconv implementations do not support this trivial
conversion, so on old platforms, out->message remains NULL, and later
attempts to read it segfault.

Fix this by noticing the input and output encodings match and skipping
the iconv step, like the other reencode_string() call sites already do.
Also stop segfaulting on other iconv failures: if iconv fails for some
other reason, the best we can do is to pass the old message through.

This fixes a regression introduced in v1.7.1-rc0~15^2~2 (revert:
clarify label on conflict hunks, 2010-03-20).

Reported-by: Andreas Krey <a.krey@gmx.de>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty: initialize new cmt_fmt_map to 0Jonathan Nieder Sat, 8 May 2010 21:07:39 +0000 (16:07 -0500)

pretty: initialize new cmt_fmt_map to 0

Without this change, is_alias is likely to happen to be nonzero,
resulting in "fatal: invalid --pretty format" when the fake alias
cannot be resolved.

Use memset instead of initializing the members one by one to make it
easier to expand the struct in the future if needed.

t4205 (log --pretty) does not pass for me without this fix.

Cc: Will Palmer <wmpalmer@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: Fix 'clean' target to remove all gitweb build... Ramsay Jones Sat, 8 May 2010 17:36:15 +0000 (18:36 +0100)

Makefile: Fix 'clean' target to remove all gitweb build files

In particular the gitweb/GITWEB-BUILD-OPTIONS file was not being
removed by the main Makefile. However, the gitweb/Makefile has a
'clean' target that correctly removes all the build products.
In order to fix the problem, rather than duplicate the clean-up
instructions, we change the main Makefile so that it delegates
the clean-up actions to the gitweb Makefile.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: git-add does not update files marked... Clemens Buchacher Sat, 1 May 2010 09:27:20 +0000 (11:27 +0200)

Documentation: git-add does not update files marked "assume unchanged"

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/config.txt: GIT_NOTES_REWRITE_REF overrid... Leif Arne Storset Wed, 5 May 2010 14:16:25 +0000 (16:16 +0200)

Documentation/config.txt: GIT_NOTES_REWRITE_REF overrides notes.rewriteRef

The documentation erroneously mentions the GIT_NOTES_REWRITE_REF
override in the description of notes.rewrite.<command>. Move it
under notes.rewriteRef where it belongs.

Signed-off-by: Leif Arne Storset <lstorset@opera.com>
Acked-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Turn setup code in t2007-checkout-symlink.sh into a... Ævar Arnfjörð Bjarmason Fri, 7 May 2010 19:37:03 +0000 (19:37 +0000)

Turn setup code in t2007-checkout-symlink.sh into a test

Previously the test would print to stdout which interfered with the
TAP output. Now this scaffolding code is just a normal test.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Move t6000lib.sh to lib-*Ævar Arnfjörð Bjarmason Fri, 7 May 2010 19:37:01 +0000 (19:37 +0000)

Move t6000lib.sh to lib-*

The naming of this test library conflicted with the recommendation in
t/README's "Naming Tests" section.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

adapt request-pull tests for new pull request formatJonathan Nieder Sat, 24 Apr 2010 12:29:52 +0000 (07:29 -0500)

adapt request-pull tests for new pull request format

10eb0007 (request-pull: avoid mentioning that the start point is a
single commit, 2010-01-29), changed the pull request format, so the
test needs some changes to still pass:

- tolerate a missing blank line between “in the git repository at:”
and the name of repository and branch

- recognize subject and date in the new request format

- update the expected request template to match the new format

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jn/maint-request-pull' into jn/request... Junio C Hamano Sat, 8 May 2010 04:32:56 +0000 (21:32 -0700)

Merge branch 'jn/maint-request-pull' into jn/request-pull

t5150: protect backslash with backslash in shellJunio C Hamano Sat, 8 May 2010 04:29:50 +0000 (21:29 -0700)

t5150: protect backslash with backslash in shell

At least /bin/sh on FreeBSD 8 interprets backslash followed by newline in an
unquoted here text as "empty".

Signed-off-by: Junio C Hamano <gitster@pobox.com>

blame-options.txt: Add default value for `-M/-C` options.Bo Yang Fri, 7 May 2010 04:51:57 +0000 (21:51 -0700)

blame-options.txt: Add default value for `-M/-C` options.

Both `-M` and `-C` have default values and the <num> argument
the last `-C` option takes effect.

Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Make git log --follow find copies among unmodified... Bo Yang Fri, 7 May 2010 04:52:29 +0000 (21:52 -0700)

Make git log --follow find copies among unmodified files.

'git log --follow <path>' don't track copies from unmodified
files, and this patch fix it.

Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Make diffcore_std only can run once before a diff_flushBo Yang Fri, 7 May 2010 04:52:28 +0000 (21:52 -0700)

Make diffcore_std only can run once before a diff_flush

When file renames/copies detection is turned on, the
second diffcore_std will degrade a 'C' pair to a 'R' pair.

And this may happen when we run 'git log --follow' with
hard copies finding. That is, the try_to_follow_renames()
will run diffcore_std to find the copies, and then
'git log' will issue another diffcore_std, which will reduce
'src->rename_used' and recognize this copy as a rename.
This is not what we want.

So, I think we really don't need to run diffcore_std more
than one time.

Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add a macro DIFF_QUEUE_CLEAR.Bo Yang Fri, 7 May 2010 04:52:27 +0000 (21:52 -0700)

Add a macro DIFF_QUEUE_CLEAR.

Refactor the diff_queue_struct code, this macro help
to reset the structure.

Signed-off-by: Bo Yang <struggleyb.nku@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

wt-status: take advice.statusHints seriouslyMichael J Gruber Thu, 22 Apr 2010 20:30:20 +0000 (22:30 +0200)

wt-status: take advice.statusHints seriously

Currently, status gives a lot of hints even when advice.statusHints is
false. Change this so that all hints depend on the config variable.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7508: test advice.statusHintsMichael J Gruber Thu, 22 Apr 2010 20:30:19 +0000 (22:30 +0200)

t7508: test advice.statusHints

edf563f (status: make "how to stage" messages optional, 2009-09-09)
introduced advice.statusHints without tests. Add a few tests to describe
and test the status quo.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib: some shells do not let $? propagate into... Jonathan Nieder Thu, 6 May 2010 08:41:10 +0000 (03:41 -0500)

test-lib: some shells do not let $? propagate into an eval

In 3bf7886 (test-lib: Let tests specify commands to be run at end of
test, 2010-05-02), the git test harness learned to run cleanup
commands unconditionally at the end of a test. During each test,
the intended cleanup actions are collected in the test_cleanup variable
and evaluated. That variable looks something like this:

eval_ret=$?; clean_something && (exit "$eval_ret")
eval_ret=$?; clean_something_else && (exit "$eval_ret")
eval_ret=$?; final_cleanup && (exit "$eval_ret")
eval_ret=$?

All cleanup actions are run unconditionally but if one of them fails
it is properly reported through $eval_ret.

On FreeBSD, unfortunately, $? is set at the beginning of an ‘eval’
to 0 instead of the exit status of the previous command. This results
in tests using test_expect_code appearing to fail and all others
appearing to pass, unless their cleanup fails. Avoid the problem by
setting eval_ret before the ‘eval’ begins.

Thanks to Jeff King for the explanation.

Cc: Jeff King <peff@peff.net>
Cc: Johannes Sixt <j6t@kdbg.org>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty: Respect --abbrev optionWill Palmer Tue, 4 May 2010 03:18:57 +0000 (22:18 -0500)

pretty: Respect --abbrev option

Prior to this, the output of git log -1 --format=%h was always 7
characters long, without regard to whether --abbrev had been passed.

Signed-off-by: Will Palmer <wmpalmer@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

shortlog: Document and test --format optionJonathan Nieder Tue, 4 May 2010 02:59:55 +0000 (21:59 -0500)

shortlog: Document and test --format option

Do not document the --pretty synonym, since it takes too long to
explain the name to people.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4201 (shortlog): Test output format with multiple... Jonathan Nieder Tue, 4 May 2010 02:58:04 +0000 (21:58 -0500)

t4201 (shortlog): Test output format with multiple authors

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4201 (shortlog): guard setup with test_expect_successJonathan Nieder Tue, 4 May 2010 02:57:36 +0000 (21:57 -0500)

t4201 (shortlog): guard setup with test_expect_success

Follow the current prevailing style. This also has the benefit of
capturing any stray output and noticing if any of the setup commands
start failing.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/shortlog: scripted users should not rely... Jonathan Nieder Tue, 4 May 2010 02:57:10 +0000 (21:57 -0500)

Documentation/shortlog: scripted users should not rely on implicit HEAD

When passed no revision arguments, ‘git shortlog’ reads a log from
stdin if and only if stdin is not a tty. So scripts that need to
function identically when standard input is a terminal (as when run
interactively) and not (as when run through a cron job) should either
supply a log themselves or specify the desired revisions explicitly.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit --amend: cope with missing display nameJonathan Nieder Sun, 2 May 2010 08:57:12 +0000 (03:57 -0500)

commit --amend: cope with missing display name

Though I have not seen this in the wild, it has been said that there
are likely to be git repositories converted from other version control
systems with an invalid ident line like this one:

author <user@example.com> 18746342 +0000

Because there is no space between the (empty) user name and the email
address, commit --amend chokes. When searching for a
space-left-bracket sequence on the ident line, it finds it in the
committer line, ending up utterly confused.

Better for commit --amend to treat this like a valid ident line with
empty username and complain.

The tests remove the questionable commit objects after use so there is
no chance for them to confuse later tests.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib: Let tests specify commands to be run at end... Jonathan Nieder Sun, 2 May 2010 08:53:41 +0000 (03:53 -0500)

test-lib: Let tests specify commands to be run at end of test

Certain actions can imply that if the test fails early, recovery from
within other tests is too much to expect:

- creating unwritable directories, like the EACCESS test in t0001-init
- setting unusual configuration, like user.signingkey in t7004-tag
- crashing and leaving the index lock held, like t3600-rm once did

Some test scripts work around this by running cleanup actions outside
the supervision of the test harness, with the unfortunate consequence
that those commands are not appropriately echoed and their output not
suppressed. Others explicitly save exit status, clean up, and then
reset the exit status within the tests, which has excellent behavior
but makes the tests hard to read. Still others ignore the problem.

Allow tests a fourth option: by calling this function, tests can
stack up commands they would like to be run to clean up.

Commands passed to test_when_finished during a test are
unconditionally run in the test environment immediately before the
test is completed, in last-in-first-out order. If some cleanup
command fails, then the other cleanup commands are still run before
the failure is reported and the test script allowed to continue.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-1.7.0' into maintJunio C Hamano Tue, 4 May 2010 22:20:47 +0000 (15:20 -0700)

Merge branch 'maint-1.7.0' into maint

* maint-1.7.0:
remove ecb parameter from xdi_diff_outf()

remove ecb parameter from xdi_diff_outf()René Scharfe Tue, 4 May 2010 20:41:34 +0000 (22:41 +0200)

remove ecb parameter from xdi_diff_outf()

xdi_diff_outf() overrides the structure members of its last parameter,
ignoring any value that callers pass in. It's no surprise then that all
callers pass a pointer to an uninitialized structure. They also don't
read it after the call, so the parameter is neither used for input nor
for output. Turn it into a local variable of xdi_diff_outf().

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-send-email: Add "Use gmail as the... Ping Yin Sat, 24 Apr 2010 07:34:02 +0000 (15:34 +0800)

Documentation/git-send-email: Add "Use gmail as the smtp server"

Signed-off-by: Ping Yin <pkufranky@gmail.com>
Acked by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clone: quell the progress report from init and report... Junio C Hamano Fri, 23 Apr 2010 12:37:22 +0000 (14:37 +0200)

clone: quell the progress report from init and report on clone

Currently, a local git clone reports only initializing an empty
git dir, which is potentially confusing.

Instead, report that cloning is in progress and when it is done
(unless -q) is given, and suppress the init report.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

test-lib.sh: Add explicit license detail, with change... Michal Sojka Fri, 16 Apr 2010 13:53:59 +0000 (15:53 +0200)

test-lib.sh: Add explicit license detail, with change from GPLv2 to GPLv2+.

Dear Junio,

this is a resend of relicensing patch for test suite library, which
was initially sent by Carl Worth. Since the time you sent me acks for
this patch collected by you, I collected 8 additional acks as is
documented at
https://git.wiki.kernel.org/index.php/Test-lib_reclicensing. There are
still three contributors missing: Bert Wesarg, Stephan Beyer and Bryan
Donlan. The contributions of first two are clearly not copyrightable.
I'm not sure about the copyrightability of Bryan Donlan's
contributions (git log -p --author='Bryan Donlan' t/test-lib.sh).

Carl told me that in your ack collection process you missed only three
acks. So I wonder whether you already did some analysis of which
contributions are copyrightable. If so, are the missing acks in the
list bellow?

Thanks
Michal

8<--------8<--------8<--------
This file has had no explicit license information noted in it, but
has clearly been created and modified according to the terms of GPLv2
as with the rest of the git code base.

The purpose of relicensing is to allow other GPLv3+ projects (in
particular, the notmuch project: http://notmuchmail.org) to use this
same test-suite structure and to contribute changes back as well.

Signed-off-by: Carl Worth <cworth@cworth.org>
Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
Acked-by: Alex Riesen <raa.lkml@gmail.com>
Acked-by: Brandon Casey <drafnel@gmail.com>
Acked-by: Clemens Buchacher <drizzd@aon.at>
Acked-by: David Reiss <dreiss@facebook.com>
Acked-by: Emil Sit <sit@emilsit.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
Acked-by: Fredrik Kuivinen <frekui@gmail.com>
Acked-by: Gerrit Pape <pape@smarden.org>
Acked-by: Christian Couder <chriscool@tuxfamily.org>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Acked-by: Johan Herland <johan@herland.net>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Acked-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Josh Triplett <josh@joshtriplett.org>
Acked-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Lea Wiemann <lewiemann@gmail.com>
Acked-by: Markus Heidelberg <markus.heidelberg@web.de>
Acked-by: Martin Waitz <tali@admingilde.org>
Acked-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net>
Acked-by: Matthias Lederhofer <matled@gmx.net>
Acked-by: Michael J Gruber <git@drmicha.warpmail.net>
Acked-by: Michele Ballabio <barra_cuda@katamail.com>
Acked-by: Miklos Vajna <vmiklos@frugalware.org>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
Acked-by: Pavel Roskin <proski@gnu.org>
Acked-by: Petr Baudis <pasky@ucw.cz>
Acked-by: Pierre Habouzit <madcoder@debian.org>
Acked-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Acked-by: Stephen Boyd <bebarino@gmail.com>
Acked-by: Sverre Rabbelier <srabbelier@gmail.com>
Acked-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty: add aliases for pretty formatsWill Palmer Sun, 2 May 2010 11:00:44 +0000 (12:00 +0100)

pretty: add aliases for pretty formats

previously the only ways to alias a --pretty format within git were
either to set the format as your default format (via the format.pretty
configuration variable), or by using a regular git alias. This left the
definition of more complicated formats to the realm of "builtin or
nothing", with user-defined formats usually being reserved for quick
one-offs.

Here we allow user-defined formats to enjoy more or less the same
benefits of builtins. By defining pretty.myalias, "myalias" can be
used in place of whatever would normally come after --pretty=. This
can be a format:, tformat:, raw (ie, defaulting to tformat), or the name
of another builtin or user-defined pretty format.

Signed-off-by: Will Palmer <wmpalmer@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty: add infrastructure for commit format aliasesWill Palmer Sun, 2 May 2010 11:00:43 +0000 (12:00 +0100)

pretty: add infrastructure for commit format aliases

Allow named commit formats to alias one another; find_commit_format() will
recursively dereference aliases when they are specified. At this point,
there are no aliases specified and there is no way to specify an alias,
but the support is there for any which are added.

If an alias loop is detected, the function die()s.

Signed-off-by: Will Palmer <wmpalmer@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty: make it easier to add new formatsWill Palmer Sun, 2 May 2010 11:00:42 +0000 (12:00 +0100)

pretty: make it easier to add new formats

As the first step towards creating aliases, we make it easier to add new
formats to the list of builtin formats. To do this, we move the
initialization of the formats array into a new function,
setup_commit_formats(), which we can easily extend later. Then, rather
than looping through only the list of known formats, we make a more
generic find_commit_format function, which will return the commit format
whose name is the shortest which is prefixed with the passed-in sought
format, the same rules which were more-or-less hard-coded in before.

Signed-off-by: Will Palmer <wmpalmer@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Refactor syntax highlighting supportJakub Narebski Tue, 27 Apr 2010 19:34:45 +0000 (21:34 +0200)

gitweb: Refactor syntax highlighting support

This refactoring (adding guess_file_syntax and run_highlighter
subroutines) is meant to make it easier in the future to add support
for other syntax highlighing solutions, or make it smarter by not
re-running `git cat-file` second time.

Instead of looping over list of regexps (keys of %highlight_type hash),
make use of the fact that choosing syntax is based either on full
basename (%highlight_basename), or on file extension (%highlight_ext).

Add some basic test of syntax highlighting (with 'highlight' as
prerequisite) to t/t9500-gitweb-standalone-no-errors.sh test.

While at it make git_blob Perl style prettier.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Syntax highlighting supportJohannes Schindelin Tue, 27 Apr 2010 19:34:44 +0000 (21:34 +0200)

gitweb: Syntax highlighting support

It requires the 'highlight' program to do all the heavy-lifting.

This is loosely based on Daniel Svensson's and Sham Chukoury's work in
gitweb-xmms2.git (it cannot be cherry-picked, as gitweb-xmms2 first forked
wildly, then not contributed back, and then went stale).

[jn: cherry picked from bc1ed6aafd9ee4937559535c66c8bddf1864bec6
in http://repo.or.cz/w/git/dscho.git, with a few changes]

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Gitweb: ignore built fileSverre Rabbelier Sun, 25 Apr 2010 20:17:05 +0000 (22:17 +0200)

Gitweb: ignore built file

Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git diff too slow for a fileRené Scharfe Sun, 2 May 2010 13:04:41 +0000 (15:04 +0200)

git diff too slow for a file

Ever since the xdiff library had been introduced to git, all its callers
have used the flag XDF_NEED_MINIMAL. It makes sure that the smallest
possible diff is produced, but that takes quite some time if there are
lots of differences that can be expressed in multiple ways.

This flag makes a difference for only 0.1% of the non-merge commits in
the git repo of Linux, both in terms of diff size and execution time.
The patches there are mostly nice and small.

SungHyun Nam however reported a case in a different repo where a diff
took more than 20 times longer to generate with XDF_NEED_MINIMAL than
without. Rebasing became really slow.

This patch removes this flag from all callers. The default of xdiff is
saner because it has minimal to no impact in the normal case of small
diffs and doesn't incur that much of a speed penalty for large ones.

A follow-up patch may introduce a command line option to set the flag if
the user needs it, similar to GNU diff's -d/--minimal.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

wt-status: fix 'fprintf' compilation warningJunio C Hamano Sun, 2 May 2010 05:05:14 +0000 (22:05 -0700)

wt-status: fix 'fprintf' compilation warning

color_fprintf() has the same function signature as fprintf() and newer
gcc warns when a non-constant string is fed as the format

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Sun, 2 May 2010 03:23:10 +0000 (20:23 -0700)

Merge branch 'maint'

* maint:
index-pack: fix trivial typo in usage string
git-submodule.sh: properly initialize shell variables

gitweb: Create install target for gitweb in MakefileJakub Narebski Sat, 1 May 2010 20:36:15 +0000 (22:36 +0200)

gitweb: Create install target for gitweb in Makefile

Installing gitweb is now as easy as

# make gitwebdir=/var/www/cgi-bin gitweb-install ;# as root

The gitweb/INSTALL file was updated accordingly, to make use of this
new target.

Fix shell quoting, i.e. setting bindir_SQ etc., in gitweb/Makefile.
Those variables were not used previously.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Improve installation instructions in gitweb... Jakub Narebski Tue, 27 Apr 2010 20:45:19 +0000 (22:45 +0200)

gitweb: Improve installation instructions in gitweb/INSTALL

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Mark Rada <marada@uwaterloo.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Silence 'Variable VAR may be unavailable' warningsJakub Narebski Fri, 30 Apr 2010 16:30:31 +0000 (18:30 +0200)

gitweb: Silence 'Variable VAR may be unavailable' warnings

When $projects_list points to a directory, and git_get_projects_list
scans this directory for repositories, there can be generated the
following warnings (for persistent services like mod_perl or plackup):

Variable "$project_maxdepth" may be unavailable at gitweb.cgi line 2443.
Variable "$projectroot" may be unavailable at gitweb.cgi line 2451.

Those are false positives; silence those warnings by explicitely
declaring $project_maxdepth and $projectroot with 'our', as global
variables, in anonymous subrotine passed to File::Find::find.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fsck: check ident lines in commit objectsJonathan Nieder Sat, 24 Apr 2010 16:06:08 +0000 (11:06 -0500)

fsck: check ident lines in commit objects

Check that email addresses do not contain <, >, or newline so they can
be quickly scanned without trouble. The copy() function in ident.c
already ensures that ordinary git commands will not write email
addresses without this property.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Move generating page title to separate subroutineJakub Narebski Sat, 24 Apr 2010 14:01:10 +0000 (16:01 +0200)

gitweb: Move generating page title to separate subroutine

get_page_title subroutine is currently used only in git_header_html.
Nevertheless refactoring title generation allowed to reduce indent
level.

It would be used in more than one callsite in the patch adding caching
activity indicator to gitweb.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Add custom error handler using die_errorJakub Narebski Sat, 24 Apr 2010 14:00:04 +0000 (16:00 +0200)

gitweb: Add custom error handler using die_error

Change the default message for errors (for fatalsToBrowser) to use
die_error() subroutine. This way errors (and explicitely calling 'die
MESSAGE') would generate 'Internal Server Error' error message.

Note that call to set_message is intentionally not put in BEGIN block;
we set error handler to use die_error() only after we are sure that we
can use it, after all needed variables are set.

Due to the fact that error handler set via set_message() subroutine
from CGI::Carp (in the fatalsToBrowser case) is called after HTTP
headers were already printed (with exception of MOD_PERL), gitweb
cannot return 'Status: 500 Internal Server Error'.

Thanks to the fact that die_error() no longer uses 'exit', errors
would be logged by CGI::Carp, independent on whether default error
handler is used, or handle_errors_html which uses die_error is used.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Use nonlocal jump instead of 'exit' in die_errorJakub Narebski Sat, 24 Apr 2010 13:56:13 +0000 (15:56 +0200)

gitweb: Use nonlocal jump instead of 'exit' in die_error

Use 'goto DONE' in place of 'exit' to end request processing in
die_error() subroutine. While at it, do not end gitweb with 'exit'.

This would make it easier in the future to add support or improve
support for persistent environments such as FastCGI and mod_perl.
It would also make it easier to make use of die_error() as an error
handler (for fatalsToBrowser).

Perl 5 allows non-local jumps; the restriction is that you cannot jump
into a scope.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: href(..., -path_info => 0|1)Jakub Narebski Sat, 24 Apr 2010 13:53:19 +0000 (15:53 +0200)

gitweb: href(..., -path_info => 0|1)

If named boolean option -path_info is passed to href() subroutine, it
would use its value to decide whether to generate path_info URL form.
If this option is not passed, href() queries 'pathinfo' feature to
check whether to generate path_info URL (if generating path_info link
is possible at all).

href(-replay=>1, -path_info=>0) is meant to be used to generate a key
for caching gitweb output; alternate solution would be to use freeze()
from Storable (core module) on %input_params hash (or its reference),
e.g.:
$key = freeze \%input_params;
or other serialization of %input_params.

While at it document extra options/flags to href().

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Export more test-related variables when running externa... Jakub Narebski Sat, 24 Apr 2010 13:50:09 +0000 (15:50 +0200)

Export more test-related variables when running external tests

Add exporting TEST_DIRECTORY and TRASH_DIRECTORY to test_external, for
external tests to be able to find test script (and git sources), and
to find trash directory (usually with test repository in it).

Add also exporting GIT_TEST_LONG, so that external test can skip
time-intensive tests unless test is invoked with `--long' option.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Acked-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

do not overwrite files marked "assume unchanged"Clemens Buchacher Sat, 1 May 2010 09:25:12 +0000 (11:25 +0200)

do not overwrite files marked "assume unchanged"

A merge will fail gracefully if it needs to update files marked
"assume unchanged", but other similar commands will not. In
particular, checkout and rebase will silently overwrite changes to
such files.

This is a regression introduced in commit 1dcafcc0 (verify_uptodate():
add ce_uptodate(ce) test), which avoids lstat's during a merge, if the
index entry is up-to-date. If the CE_VALID flag is set, however, we
cannot trust CE_UPTODATE.

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

index-pack: fix trivial typo in usage stringMichael J Gruber Thu, 29 Apr 2010 15:42:47 +0000 (17:42 +0200)

index-pack: fix trivial typo in usage string

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-submodule.sh: properly initialize shell variablesGerrit Pape Mon, 26 Apr 2010 09:50:39 +0000 (11:50 +0200)

git-submodule.sh: properly initialize shell variables

git-submodule inherits variables from the environment it is started in,
expects the internal variables init= and recursive= to have an empty
value, but doesn't initialize them appropriately. Thanks to the
selftests, this can be reproduced through

init=1 make test
recursive=1 make test

With this commit the variables are initialized, and the selftests
succeed even if these variables have some values in the environment.

The bug was discovered through the Debian autobuilders
http://bugs.debian.org/569594

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

xdiff/xmerge.c: use memset() instead of explicit for... Alexey Mahotkin Wed, 28 Apr 2010 11:29:06 +0000 (15:29 +0400)

xdiff/xmerge.c: use memset() instead of explicit for-loop

memset() is heavily optimized, and resulting assembler code
is about 150 lines less for that file.

Signed-off-by: Alexey Mahotkin <squadette@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

request-pull: protect against OPTIONS_KEEPDASHDASH... Jonathan Nieder Sat, 24 Apr 2010 12:15:37 +0000 (07:15 -0500)

request-pull: protect against OPTIONS_KEEPDASHDASH from environment

Like most git commands, request-pull supports a -- delimiter to allow
callers to pass arguments that would otherwise be treated as an option
afterwards. The internal OPTIONS_KEEPDASHDASH variable is passed
empty to git-sh-setup to indicate that request-pull itself does not
care about the position of the -- delimiter. But if the user has
that variable in her environment, request-pull will see the “--” and
fail.

Empty it explicitly to guard against this. While at it, make the
corresponding fix to git-resurrect, too (all other scripts in git.git
already protect themselves).

Acked-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests for request-pullJonathan Nieder Sat, 24 Apr 2010 12:11:51 +0000 (07:11 -0500)

tests for request-pull

Test that request-pull handles failure to push cleanly, writes
pull requests that produce the correct effect when followed, and
uses a predictable format.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.1 v1.7.1Junio C Hamano Sat, 24 Apr 2010 01:27:17 +0000 (18:27 -0700)

Git 1.7.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Sat, 24 Apr 2010 01:24:32 +0000 (18:24 -0700)

Merge branch 'maint'

* maint:
Documentation improvements for the description of short format.

Documentation improvements for the description of short... Eric Raymond Fri, 23 Apr 2010 17:40:15 +0000 (13:40 -0400)

Documentation improvements for the description of short format.

Incorporates the detailed explanation from Jeff King in
<20100410040959.GA11977@coredump.intra.peff.net> and fixes
the bug noted by Junio C Hamano in
<7vmxxc1i8g.fsf@alter.siamese.dyndns.org>.

Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with 1.7.0.6Junio C Hamano Fri, 23 Apr 2010 06:05:49 +0000 (23:05 -0700)

Sync with 1.7.0.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.0.6 v1.7.0.6Junio C Hamano Fri, 23 Apr 2010 05:46:24 +0000 (22:46 -0700)

Git 1.7.0.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'mg/use-default-abbrev-length-in-rev-list... Junio C Hamano Fri, 23 Apr 2010 05:39:26 +0000 (22:39 -0700)

Merge branch 'mg/use-default-abbrev-length-in-rev-list' into maint

* mg/use-default-abbrev-length-in-rev-list:
rev-list: use default abbrev length when abbrev-commit is in effect

Merge branch 'wp/doc-filter-direction' into maintJunio C Hamano Fri, 23 Apr 2010 05:29:50 +0000 (22:29 -0700)

Merge branch 'wp/doc-filter-direction' into maint

* wp/doc-filter-direction:
documentation: clarify direction of core.autocrlf

Merge branch 'jk/maint-diffstat-overflow' into maintJunio C Hamano Fri, 23 Apr 2010 05:29:13 +0000 (22:29 -0700)

Merge branch 'jk/maint-diffstat-overflow' into maint

* jk/maint-diffstat-overflow:
diff: use large integers for diffstat calculations

Merge branch 'da/maint-python-startup' into maintJunio C Hamano Fri, 23 Apr 2010 05:29:07 +0000 (22:29 -0700)

Merge branch 'da/maint-python-startup' into maint

* da/maint-python-startup:
Makefile: Remove usage of deprecated Python "has_key" method

Merge branch 'maint'Junio C Hamano Thu, 22 Apr 2010 06:54:04 +0000 (23:54 -0700)

Merge branch 'maint'

* maint:
Documentation/Makefile: fix interrupted builds of user-manual.xml

Documentation/Makefile: fix interrupted builds of user... Jonathan Nieder Thu, 22 Apr 2010 01:18:21 +0000 (20:18 -0500)

Documentation/Makefile: fix interrupted builds of user-manual.xml

Unlike gcc, asciidoc does not atomically write its output file or
delete it when interrupted. If it is interrupted in the middle of
writing an XML file, the result will be truncated input for xsltproc.

XSLTPROC user-manual.html
user-manual.xml:998: parser error : Premature end of data in t

Take care of this case by writing to a temporary and renaming it when
finished.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revision: --ancestry-pathJunio C Hamano Tue, 20 Apr 2010 20:48:39 +0000 (13:48 -0700)

revision: --ancestry-path

"rev-list A..H" computes the set of commits that are ancestors of H, but
excludes the ones that are ancestors of A. This is useful to see what
happened to the history leading to H since A, in the sense that "what does
H have that did not exist in A" (e.g. when you have a choice to update to
H from A).

x---x---A---B---C <-- topic
/ \
x---x---x---o---o---o---o---M---D---E---F---G <-- dev
/ \
x---o---o---o---o---o---o---o---o---o---o---o---N---H <-- master

The result in the above example would be the commits marked with caps
letters (except for A itself, of course), and the ones marked with 'o'.

When you want to find out what commits in H are contaminated with the bug
introduced by A and need fixing, however, you might want to view only the
subset of "A..B" that are actually descendants of A, i.e. excluding the
ones marked with 'o'. Introduce a new option --ancestry-path to compute
this set with "rev-list --ancestry-path A..B".

Note that in practice, you would build a fix immediately on top of A and
"git branch --contains A" will give the names of branches that you would
need to merge the fix into (i.e. topic, dev and master), so this may not
be worth paying the extra cost of postprocessing.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

stash tests: stash can lose data in a file removed... Charles Bailey Sun, 18 Apr 2010 18:27:49 +0000 (19:27 +0100)

stash tests: stash can lose data in a file removed from the index

If a file is removed from the index and then modified in the working
tree then stash will discard the working tree file with no way to
recover the changes.

This can might be done in one of a number of ways.

git rm file
vi file # edit a new version
git stash

or with git mv

git mv file newfile
vi file # make a new file with the old name
git stash

Signed-off-by: Charles Bailey <charles@hashpling.org>

Merge branch 'maint'Junio C Hamano Tue, 20 Apr 2010 05:41:30 +0000 (22:41 -0700)

Merge branch 'maint'

* maint:
t7012: Mark missing tests as TODO
reflog: remove 'show' from 'expire's usage string
MSVC: Fix build by adding missing termios.h dummy

t5516-fetch-push.sh: style cleanupJay Soffian Mon, 19 Apr 2010 22:08:31 +0000 (18:08 -0400)

t5516-fetch-push.sh: style cleanup

Cleanup t5516-fetch-push.sh to use prevailing test script style

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

receive-pack: detect aliased updates which can occur... Jay Soffian Mon, 19 Apr 2010 22:19:18 +0000 (18:19 -0400)

receive-pack: detect aliased updates which can occur with symrefs

When pushing to a remote repo the sending side filters out aliased
updates (e.g., foo:baz bar:baz). However, it is not possible for the
sender to know if two refs are aliased on the receiving side via
symrefs. Here is one such scenario:

$ git init origin
$ (cd origin && touch file && git add file && git commit -a -m intial)
$ git clone --bare origin origin.git
$ rm -rf origin

$ git clone origin.git client

$ git clone --mirror client backup.git &&
$ (cd backup.git && git remote set-head origin --auto)

$ (cd client &&
git remote add --mirror backup ../backup.git &&
echo change1 > file && git commit -a -m change1 &&
git push origin &&
git push backup
)

The push to backup fails with:

Counting objects: 5, done.
Writing objects: 100% (3/3), 244 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
error: Ref refs/remotes/origin/master is at ef3... but expected 262...
remote: error: failed to lock refs/remotes/origin/master
To ../backup.git
262cd57..ef307ff master -> master
262cd57..ef307ff origin/HEAD -> origin/HEAD
! [remote rejected] origin/master -> origin/master (failed to lock)
error: failed to push some refs to '../backup.git'

The reason is that refs/remotes/origin/HEAD is a symref to
refs/remotes/origin/master, but it is not possible for the sending side
to unambiguously know this.

This commit fixes the issue by having receive-pack ignore any update to
a symref whose target is being identically updated. If a symref and its
target are being updated inconsistently, then the update for both fails
with an error message ("refusing inconsistent update...") to help
diagnose the situation.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

receive-pack: switch global variable 'commands' to... Jay Soffian Mon, 19 Apr 2010 22:08:30 +0000 (18:08 -0400)

receive-pack: switch global variable 'commands' to a parameter

Receive-pack is inconsistent in its usage of the 'commands'
variable; though it is setup as a global and accessed that way by
execute_commands(), report(), and run_receive_hook(), it is also
passed as a parameter to delete_only() and run_update_post_hook().

For consistency, make it local to cmd_receive_pack and pass it as a
parameter. As long as we're cleaning up, also make our use of the
names 'commands' and 'cmd' consistent.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>