gitweb.git
revert: Don't implicitly stomp pending sequencer operationRamkumar Ramachandra Thu, 4 Aug 2011 10:39:14 +0000 (16:09 +0530)

revert: Don't implicitly stomp pending sequencer operation

Protect the user from forgetting about a pending sequencer operation
by immediately erroring out when an existing cherry-pick or revert
operation is in progress like:

$ git cherry-pick foo
... conflict ...
$ git cherry-pick moo
error: .git/sequencer already exists
hint: A cherry-pick or revert is in progress
hint: Use --reset to forget about it
fatal: cherry-pick failed

A naive version of this would break the following established ways of
working:

$ git cherry-pick foo
... conflict ...
$ git reset --hard # I actually meant "moo" when I said "foo"
$ git cherry-pick moo

$ git cherry-pick foo
... conflict ...
$ git commit # commit the resolution
$ git cherry-pick moo # New operation

However, the previous patches "reset: Make reset remove the sequencer
state" and "revert: Remove sequencer state when no commits are
pending" make sure that this does not happen.

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

revert: Remove sequencer state when no commits are... Ramkumar Ramachandra Thu, 4 Aug 2011 10:39:13 +0000 (16:09 +0530)

revert: Remove sequencer state when no commits are pending

When cherry-pick or revert is called on a list of commits, and a
conflict encountered somewhere in the middle, the data in
".git/sequencer" is required to continue the operation. However, when
a conflict is encountered in the very last commit, the user will have
to "continue" after resolving the conflict and committing just so that
the sequencer state is removed. This is how the current "rebase -i"
script works as well.

$ git cherry-pick foo..bar
... conflict encountered while picking "bar" ...
$ echo "resolved" >problematicfile
$ git add problematicfile
$ git commit
$ git cherry-pick --continue # This would be a no-op

Change this so that the sequencer state is cleared when a conflict is
encountered in the last commit. Incidentally, this patch makes sure
that some existing tests don't break when features like "--reset" and
"--continue" are implemented later in the series.

A better way to implement this feature is to get the last "git commit"
to remove the sequencer state. However, that requires tighter
coupling between "git commit" and the sequencer, a goal that can be
pursued once the sequencer is made more general.

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

reset: Make reset remove the sequencer stateRamkumar Ramachandra Thu, 4 Aug 2011 10:39:12 +0000 (16:09 +0530)

reset: Make reset remove the sequencer state

Years of muscle memory have trained users to use "git reset --hard" to
remove the branch state after any sort operation. Make it also remove
the sequencer state to facilitate this established workflow:

$ git cherry-pick foo..bar
... conflict encountered ...
$ git reset --hard # Oops, I didn't mean that
$ git cherry-pick quux..bar
... cherry-pick succeeded ...

Guard against accidental removal of the sequencer state by providing
one level of "undo". In the first "reset" invocation,
".git/sequencer" is moved to ".git/sequencer-old"; it is completely
removed only in the second invocation.

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

revert: Introduce --reset to remove sequencer stateRamkumar Ramachandra Thu, 4 Aug 2011 10:39:11 +0000 (16:09 +0530)

revert: Introduce --reset to remove sequencer state

To explicitly remove the sequencer state for a fresh cherry-pick or
revert invocation, introduce a new subcommand called "--reset" to
remove the sequencer state.

Take the opportunity to publicly expose the sequencer paths, and a
generic function called "remove_sequencer_state" that various git
programs can use to remove the sequencer state in a uniform manner;
"git reset" uses it later in this series. Introducing this public API
is also in line with our long-term goal of eventually factoring out
functions from revert.c into a generic commit sequencer.

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

revert: Make pick_commits functionally act on a commit... Ramkumar Ramachandra Thu, 4 Aug 2011 10:39:10 +0000 (16:09 +0530)

revert: Make pick_commits functionally act on a commit list

Apart from its central objective of calling into the picking
mechanism, pick_commits creates a sequencer directory, prepares a todo
list, and even acts upon the "--reset" subcommand. This makes for a
bad API since the central worry of callers is to figure out whether or
not any conflicts were encountered during the cherry picking. The
current API is like:

if (pick_commits(opts) < 0)
print "Something failed, we're not sure what"

So, change pick_commits so that it's only responsible for picking
commits in a loop and reporting any errors, leaving the rest to a new
function called pick_revisions. Consequently, the API of pick_commits
becomes much clearer:

act_on_subcommand(opts->subcommand);
todo_list = prepare_todo_list();
if (pick_commits(todo_list, opts) < 0)
print "Error encountered while picking commits"

Now, callers can easily call-in to the cherry-picking machinery by
constructing an arbitrary todo list along with some options.

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

revert: Save command-line options for continuing operationRamkumar Ramachandra Thu, 4 Aug 2011 10:39:09 +0000 (16:09 +0530)

revert: Save command-line options for continuing operation

In the same spirit as ".git/sequencer/head" and ".git/sequencer/todo",
introduce ".git/sequencer/opts" to persist the replay_opts structure
for continuing after a conflict resolution. Use the gitconfig format
for this file so that it looks like:

[options]
signoff = true
record-origin = true
mainline = 1
strategy = recursive
strategy-option = patience
strategy-option = ours

Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Helped-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revert: Save data for continuing after conflict resolutionRamkumar Ramachandra Thu, 4 Aug 2011 10:39:08 +0000 (16:09 +0530)

revert: Save data for continuing after conflict resolution

Ever since v1.7.2-rc1~4^2~7 (revert: allow cherry-picking more than
one commit, 2010-06-02), a single invocation of "git cherry-pick" or
"git revert" can perform picks of several individual commits. To
implement features like "--continue" to continue the whole operation,
we will need to store some information about the state and the plan at
the beginning. Introduce a ".git/sequencer/head" file to store this
state, and ".git/sequencer/todo" file to store the plan. The head
file contains the SHA-1 of the HEAD before the start of the operation,
and the todo file contains an instruction sheet whose format is
inspired by the format of the "rebase -i" instruction sheet. As a
result, a typical todo file looks like:

pick 8537f0e submodule add: test failure when url is not configured
pick 4d68932 submodule add: allow relative repository path
pick f22a17e submodule add: clean up duplicated code
pick 59a5775 make copy_ref globally available

Since SHA-1 hex is abbreviated using an find_unique_abbrev(), it is
unambiguous. This does not guarantee that there will be no ambiguity
when more objects are added to the repository.

These two files alone are not enough to implement a "--continue" that
remembers the command-line options specified; later patches in the
series save them too.

These new files are unrelated to the existing .git/CHERRY_PICK_HEAD,
which will still be useful while committing after a conflict
resolution.

Inspired-by: Christian Couder <chriscool@tuxfamily.org>
Helped-by: Junio C Hamano <gitster@pobox.com>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revert: Don't create invalid replay_opts in parse_argsRamkumar Ramachandra Thu, 4 Aug 2011 10:39:07 +0000 (16:09 +0530)

revert: Don't create invalid replay_opts in parse_args

The "--ff" command-line option cannot be used with some other
command-line options. However, parse_args still parses these
incompatible options into a replay_opts structure for use by the rest
of the program. Although pick_commits, the current gatekeeper to the
cherry-pick machinery, checks the validity of the replay_opts
structure before before starting its operation, there will be multiple
entry points to the cherry-pick machinery in future. To futureproof
the code and catch these errors in one place, make sure that an
invalid replay_opts structure is not created by parse_args in the
first place. We still check the replay_opts structure for validity in
pick_commits, but this is an assert() now to emphasize that it's the
caller's responsibility to get it right.

Inspired-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Jonathan Nieder <jrnieder@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revert: Separate cmdline parsing from functional codeRamkumar Ramachandra Thu, 4 Aug 2011 10:39:06 +0000 (16:09 +0530)

revert: Separate cmdline parsing from functional code

Currently, revert_or_cherry_pick sets up a default git config, parses
command-line arguments, before preparing to pick commits. This makes
for a bad API as the central worry of callers is to assert whether or
not a conflict occured while cherry picking. The current API is like:

if (revert_or_cherry_pick(argc, argv, opts) < 0)
print "Something failed, we're not sure what"

Simplify and rename revert_or_cherry_pick to pick_commits so that it
only has the responsibility of setting up the revision walker and
picking commits in a loop. Transfer the remaining work to its
callers. Now, the API is simplified as:

if (parse_args(argc, argv, opts) < 0)
print "Can't parse arguments"
if (pick_commits(opts) < 0)
print "Error encountered in picking machinery"

Later in the series, pick_commits will also serve as the starting
point for continuing a cherry-pick or revert.

Inspired-by: Christian Couder <chriscool@tuxfamily.org>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revert: Introduce struct to keep command-line optionsRamkumar Ramachandra Thu, 4 Aug 2011 10:39:05 +0000 (16:09 +0530)

revert: Introduce struct to keep command-line options

The current code uses a set of file-scope static variables to tell the
cherry-pick/ revert machinery how to replay the changes, and
initializes them by parsing the command-line arguments. In later
steps in this series, we would like to introduce an API function that
calls into this machinery directly and have a way to tell it what to
do. Hence, introduce a structure to group these variables, so that
the API can take them as a single replay_options parameter. The only
exception is the variable "me" -- remove it since it not an
independent option, and can be inferred from the action.

Unfortunately, this patch introduces a minor regression. Parsing
strategy-option violates a C89 rule: Initializers cannot refer to
variables whose address is not known at compile time. Currently, this
rule is violated by some other parts of Git as well, and it is
possible to get GCC to report these instances using the "-std=c89
-pedantic" option.

Inspired-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Jonathan Nieder <jrnieder@gmail.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revert: Eliminate global "commit" variableRamkumar Ramachandra Thu, 4 Aug 2011 10:39:04 +0000 (16:09 +0530)

revert: Eliminate global "commit" variable

Functions which act on commits currently rely on a file-scope static
variable to be set before they're called. Consequently, the API and
corresponding callsites are ugly and unclear. Remove this variable
and change their API to accept the commit to act on as additional
argument so that the callsites change from looking like

commit = prepare_a_commit();
act_on_commit();

to looking like

commit = prepare_a_commit();
act_on_commit(commit);

This change is also in line with our long-term goal of exposing some
of these functions through a public API.

Inspired-by: Christian Couder <chriscool@tuxfamily.org>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revert: Rename no_replay to record_originRamkumar Ramachandra Thu, 4 Aug 2011 10:39:03 +0000 (16:09 +0530)

revert: Rename no_replay to record_origin

The "-x" command-line option is used to record the name of the
original commits being picked in the commit message. The variable
corresponding to this option is named "no_replay" for historical
reasons; the name is especially confusing because the term "replay" is
used to describe what cherry-pick does (for example, in the
documentation of the "--mainline" option). So, give the variable
corresponding to the "-x" command-line option a better name:
"record_origin".

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

revert: Don't check lone argument in get_encodingRamkumar Ramachandra Thu, 4 Aug 2011 10:39:02 +0000 (16:09 +0530)

revert: Don't check lone argument in get_encoding

The only place get_encoding uses the global "commit" variable is when
writing an error message explaining that its lone argument was NULL.
Since the function's only caller ensures that a NULL argument isn't
passed, we can remove this check with two beneficial consequences:

1. Since the function doesn't use the global "commit" variable any
more, it won't need to change when we eliminate the global variable
later in the series.
2. Translators no longer need to localize an error message that will
never be shown.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Mentored-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revert: Simplify and inline add_message_to_msgRamkumar Ramachandra Thu, 4 Aug 2011 10:39:01 +0000 (16:09 +0530)

revert: Simplify and inline add_message_to_msg

The add_message_to_msg function has some dead code, an unclear API,
only one callsite. While it originally intended fill up an empty
commit message with the commit object name while picking, it really
doesn't do this -- a bug introduced in v1.5.1-rc1~65^2~2 (Make
git-revert & git-cherry-pick a builtin, 2007-03-01). Today, tests in
t3505-cherry-pick-empty.sh indicate that not filling up an empty
commit message is the desired behavior. Re-implement and inline the
function accordingly, with a beneficial side-effect: don't dereference
a NULL pointer when the commit doesn't have a delimeter after the
header.

Helped-by: Junio C Hamano <gitster@pobox.com>
Mentored-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config: Introduce functions to write non-standard fileRamkumar Ramachandra Thu, 4 Aug 2011 10:39:00 +0000 (16:09 +0530)

config: Introduce functions to write non-standard file

Introduce two new functions corresponding to "git_config_set" and
"git_config_set_multivar" to write a non-standard configuration file.
Expose these new functions in cache.h for other git programs to use.

Helped-by: Jeff King <peff@peff.net>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

advice: Introduce error_resolve_conflictRamkumar Ramachandra Thu, 4 Aug 2011 10:38:59 +0000 (16:08 +0530)

advice: Introduce error_resolve_conflict

Enable future callers to report a conflict and not die immediately by
introducing a new function called error_resolve_conflict.
Re-implement die_resolve_conflict as a call to error_resolve_conflict
followed by a call to die. Consequently, the message printed by
die_resolve_conflict changes from

fatal: 'commit' is not possible because you have unmerged files.
Please, fix them up in the work tree ...
...

to

error: 'commit' is not possible because you have unmerged files.
hint: Fix them up in the work tree ...
hint: ...
fatal: Exiting because of an unresolved conflict.

Hints are printed using the same advise function introduced in
v1.7.3-rc0~26^2~3 (Introduce advise() to print hints, 2010-08-11).

Inspired-by: Christian Couder <chistian.couder@gmail.com>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'mk/grep-pcre'Junio C Hamano Mon, 20 Jun 2011 21:49:44 +0000 (14:49 -0700)

Merge branch 'mk/grep-pcre'

* mk/grep-pcre:
t7810: avoid unportable use of "echo"

t7810: avoid unportable use of "echo"Junio C Hamano Mon, 20 Jun 2011 21:49:34 +0000 (14:49 -0700)

t7810: avoid unportable use of "echo"

Michael J Gruber noticed that under /bin/dash this test failed
(as is expected -- \n in the string can be interpreted by the
command), while it passed with bash. We probably could work it
around by using backquote in front of it, but it is safer and
more readable to avoid "echo" altogether in a case like this.

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

plug a few coverity-spotted leaksJim Meyering Mon, 20 Jun 2011 07:40:06 +0000 (09:40 +0200)

plug a few coverity-spotted leaks

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'di/no-no-existant'Junio C Hamano Sun, 19 Jun 2011 23:01:54 +0000 (16:01 -0700)

Merge branch 'di/no-no-existant'

* di/no-no-existant:
Fix typo: existant->existent

Merge branch 'maint'Junio C Hamano Sun, 19 Jun 2011 23:01:51 +0000 (16:01 -0700)

Merge branch 'maint'

* maint:
builtin/gc.c: add missing newline in message

builtin/gc.c: add missing newline in messageAndreas Schwab Sun, 19 Jun 2011 08:03:26 +0000 (10:03 +0200)

builtin/gc.c: add missing newline in message

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: link shell libraries into valgrind directoryJeff King Fri, 17 Jun 2011 20:36:32 +0000 (16:36 -0400)

tests: link shell libraries into valgrind directory

When we run tests under valgrind, we symlink anything
executable that starts with git-* or test-* into a special
valgrind bin directory, and then make that our
GIT_EXEC_PATH.

However, shell libraries like git-sh-setup do not have the
executable bit marked, and did not get symlinked. This
means that any test looking for shell libraries in our
exec-path would fail to find them, even though that is a
fine thing to do when testing against a regular git build
(or in a git install, for that matter).

t2300 demonstrated this problem. The fix is to symlink these
shell libraries directly into the valgrind directory.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t/Makefile: pass test opts to valgrind target properlyJeff King Fri, 17 Jun 2011 08:29:57 +0000 (04:29 -0400)

t/Makefile: pass test opts to valgrind target properly

The valgrind target just reinvokes make with GIT_TEST_OPTS
set to "--valgrind". However, it does this using an
environment variable, which means GIT_TEST_OPTS in your
config.mak would override it, and "make valgrind" would
simply run the test suite without valgrind on.

Instead, we should pass GIT_TEST_OPTS on the command-line,
overriding what's in config.mak, and take care to append to
whatever the user has there already.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'ab/i18n-scripts-basic'Junio C Hamano Fri, 17 Jun 2011 18:40:32 +0000 (11:40 -0700)

Merge branch 'ab/i18n-scripts-basic'

* ab/i18n-scripts-basic:
sh-i18n--envsubst.c: do not #include getopt.h

sh-i18n--envsubst.c: do not #include getopt.hBrandon Casey Fri, 17 Jun 2011 18:19:26 +0000 (11:19 -0700)

sh-i18n--envsubst.c: do not #include getopt.h

The getopt.h header file is not used. It's inclusion is left over from the
original version of this source. Additionally, getopt.h does not exist on
all platforms (SunOS 5.7) and will cause a compilation failure. So, let's
remove it.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fix typo: existant->existentDmitry Ivankov Thu, 16 Jun 2011 13:42:48 +0000 (19:42 +0600)

Fix typo: existant->existent

refs.c had a error message "Trying to write ref with nonexistant object".
And no tests relied on the wrong spelling.
Also typo was present in some test scripts internals, these tests still pass.

Signed-off-by: Dmitry Ivankov <divanorama@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.6-rc2 v1.7.6-rc2Junio C Hamano Thu, 16 Jun 2011 16:21:36 +0000 (09:21 -0700)

Git 1.7.6-rc2

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

gitweb: do not misparse nonnumeric content tag files... Jonathan Nieder Thu, 9 Jun 2011 07:08:57 +0000 (02:08 -0500)

gitweb: do not misparse nonnumeric content tag files that contain a digit

v1.7.6-rc0~27^2~4 (gitweb: Change the way "content tags" ('ctags') are
handled, 2011-04-29) tried to make gitweb's tag cloud feature more
intuitive for webmasters by checking whether the ctags/<label> under
a project's .git dir contains a number (representing the strength of
association to <label>) before treating it as one.

With that change, after putting '$feature{'ctags'}{'default'} = [1];'
in your $GITWEB_CONFIG, you could do

echo Linux >.git/ctags/linux

and gitweb would treat that as a request to tag the current repository
with the Linux tag, instead of the previous behavior of writing an
error page embedded in the projects list that triggers error messages
from Chromium and Firefox about malformed XML.

Unfortunately the pattern (\d+) used to match numbers is too loose,
and the "XML declaration allowed only at the start of the document"
error can still be experienced if you write "Linux-2.6" in place of
"Linux" in the example above. Fix it by tightening the pattern to
^\d+$.

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

Git 1.7.6-rc1 v1.7.6-rc1Junio C Hamano Thu, 9 Jun 2011 01:29:48 +0000 (18:29 -0700)

Git 1.7.6-rc1

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

Merge branch 'maint'Junio C Hamano Thu, 9 Jun 2011 01:13:39 +0000 (18:13 -0700)

Merge branch 'maint'

* maint:
fetch: do not leak a refspec

fetch: do not leak a refspecJim Meyering Wed, 8 Jun 2011 20:06:33 +0000 (22:06 +0200)

fetch: do not leak a refspec

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jc/magic-pathspec'Junio C Hamano Tue, 7 Jun 2011 15:32:42 +0000 (08:32 -0700)

Merge branch 'jc/magic-pathspec'

* jc/magic-pathspec:
t3703: skip more tests using colons in file names on Windows

t3703: skip more tests using colons in file names on... Alex Riesen Tue, 7 Jun 2011 09:49:44 +0000 (11:49 +0200)

t3703: skip more tests using colons in file names on Windows

Use the same test and prerequisite as introduced in similar
fix in 650af7ae8bdf92bd92df2.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jn/mime-type-with-params'Junio C Hamano Mon, 6 Jun 2011 18:40:22 +0000 (11:40 -0700)

Merge branch 'jn/mime-type-with-params'

* jn/mime-type-with-params:
gitweb: Fix usability of $prevent_xss

Merge branch 'jn/gitweb-docs'Junio C Hamano Mon, 6 Jun 2011 18:40:18 +0000 (11:40 -0700)

Merge branch 'jn/gitweb-docs'

* jn/gitweb-docs:
gitweb: Move "Requirements" up in gitweb/INSTALL
gitweb: Describe CSSMIN and JSMIN in gitweb/INSTALL
gitweb: Move information about installation from README to INSTALL

Merge branch 'jk/diff-not-so-quick'Junio C Hamano Mon, 6 Jun 2011 18:40:14 +0000 (11:40 -0700)

Merge branch 'jk/diff-not-so-quick'

* jk/diff-not-so-quick:
diff: futureproof "stop feeding the backend early" logic
diff_tree: disable QUICK optimization with diff filter

Conflicts:
diff.c

Merge branch 'bc/maint-status-z-to-use-porcelain'Junio C Hamano Mon, 6 Jun 2011 18:40:08 +0000 (11:40 -0700)

Merge branch 'bc/maint-status-z-to-use-porcelain'

* bc/maint-status-z-to-use-porcelain:
builtin/commit.c: set status_format _after_ option parsing
t7508: demonstrate status's failure to use --porcelain format with -z

Conflicts:
builtin/commit.c

gitweb: Fix usability of $prevent_xssJakub Narebski Sat, 4 Jun 2011 08:43:35 +0000 (10:43 +0200)

gitweb: Fix usability of $prevent_xss

With XSS prevention on (enabled using $prevent_xss), blobs
('blob_plain') of all types except a few known safe ones are served
with "Content-Disposition: attachment". However the check was too
strict; it didn't take into account optional parameter attributes,

media-type = type "/" subtype *( ";" parameter )

as described in RFC 2616

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17
http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7

This fixes that, and it for example treats following as safe MIME
media type:

text/plain; charset=utf-8

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

gitweb: Move "Requirements" up in gitweb/INSTALLJakub Narebski Fri, 3 Jun 2011 16:31:48 +0000 (18:31 +0200)

gitweb: Move "Requirements" up in gitweb/INSTALL

This way you can examine prerequisites at first glance, before
detailed instructions on installing gitweb. Straightforward
text movement.

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

gitweb: Describe CSSMIN and JSMIN in gitweb/INSTALLJakub Narebski Thu, 2 Jun 2011 14:55:53 +0000 (16:55 +0200)

gitweb: Describe CSSMIN and JSMIN in gitweb/INSTALL

The build-time configuration variables JSMIN and CSSMIN were mentioned
only in Makefile; add their description to gitweb/INSTALL.

This required moving description of GITWEB_JS up, near GITWEB_CSS and
just introduced CSMIN and JSMIN.

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

gitweb: Move information about installation from README... Jakub Narebski Thu, 2 Jun 2011 14:55:52 +0000 (16:55 +0200)

gitweb: Move information about installation from README to INSTALL

Almost straightformard moving of "How to configure gitweb for your
local system" section from gitweb/README to gitweb/INSTALL, as it is
about build time configuration. Updated references to it.

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

Sync with 1.7.5.4 v1.7.6-rc0Junio C Hamano Wed, 1 Jun 2011 21:11:17 +0000 (14:11 -0700)

Sync with 1.7.5.4

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

Git 1.7.5.4 v1.7.5.4Junio C Hamano Wed, 1 Jun 2011 21:08:26 +0000 (14:08 -0700)

Git 1.7.5.4

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

Merge branch 'jk/maint-config-alias-fix' into maintJunio C Hamano Wed, 1 Jun 2011 21:05:22 +0000 (14:05 -0700)

Merge branch 'jk/maint-config-alias-fix' into maint

* jk/maint-config-alias-fix:
handle_options(): do not miscount how many arguments were used
config: always parse GIT_CONFIG_PARAMETERS during git_config
git_config: don't peek at global config_parameters
config: make environment parsing routines static

Merge branch 'jc/fmt-req-fix' into maintJunio C Hamano Wed, 1 Jun 2011 21:03:07 +0000 (14:03 -0700)

Merge branch 'jc/fmt-req-fix' into maint

* jc/fmt-req-fix:
userformat_find_requirements(): find requirement for the correct format

Merge branch 'jk/maint-docs' into maintJunio C Hamano Wed, 1 Jun 2011 21:02:52 +0000 (14:02 -0700)

Merge branch 'jk/maint-docs' into maint

* jk/maint-docs:
docs: fix some antique example output
docs: make sure literal "->" isn't converted to arrow
docs: update status --porcelain format
docs: minor grammar fixes to git-status

Merge branch 'jn/doc-remote-helpers' into maintJunio C Hamano Wed, 1 Jun 2011 21:02:45 +0000 (14:02 -0700)

Merge branch 'jn/doc-remote-helpers' into maint

* jn/doc-remote-helpers:
Documentation: do not misinterpret refspecs as bold text

Merge branch 'kk/maint-prefix-in-config-mak' into maintJunio C Hamano Wed, 1 Jun 2011 21:02:39 +0000 (14:02 -0700)

Merge branch 'kk/maint-prefix-in-config-mak' into maint

* kk/maint-prefix-in-config-mak:
config.mak.in: allow "configure --sysconfdir=/else/where"

diffcore-rename.c: avoid set-but-not-used warningJim Meyering Fri, 29 Apr 2011 09:42:41 +0000 (11:42 +0200)

diffcore-rename.c: avoid set-but-not-used warning

Since 9d8a5a5 (diffcore-rename: refactor "too many candidates" logic,
2011-01-06), diffcore_rename() initializes num_src but does not use it
anymore. "-Wunused-but-set-variable" in gcc-4.6 complains about this.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.6Junio C Hamano Tue, 31 May 2011 19:22:50 +0000 (12:22 -0700)

Update draft release notes to 1.7.6

I think we are almost there for the feature freeze.

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

Merge branch 'jk/format-patch-am'Junio C Hamano Tue, 31 May 2011 19:19:11 +0000 (12:19 -0700)

Merge branch 'jk/format-patch-am'

* jk/format-patch-am:
format-patch: preserve subject newlines with -k
clean up calling conventions for pretty.c functions
pretty: add pp_commit_easy function for simple callers
mailinfo: always clean up rfc822 header folding
t: test subject handling in format-patch / am pipeline

Conflicts:
builtin/branch.c
builtin/log.c
commit.h

Merge branch 'jn/doc-remote-helpers'Junio C Hamano Tue, 31 May 2011 19:09:35 +0000 (12:09 -0700)

Merge branch 'jn/doc-remote-helpers'

* jn/doc-remote-helpers:
Documentation: do not misinterpret refspecs as bold text

Merge branch 'jk/format-patch-empty-prefix'Junio C Hamano Tue, 31 May 2011 19:09:27 +0000 (12:09 -0700)

Merge branch 'jk/format-patch-empty-prefix'

* jk/format-patch-empty-prefix:
format-patch: make zero-length subject prefixes prettier

Merge branch 'ab/i18n-envsubst-doc-fix'Junio C Hamano Tue, 31 May 2011 19:09:21 +0000 (12:09 -0700)

Merge branch 'ab/i18n-envsubst-doc-fix'

* ab/i18n-envsubst-doc-fix:
git-sh-i18n--envsubst: add SYNOPSIS section to the documentation

Merge branch 'jc/log-quiet-fix'Junio C Hamano Tue, 31 May 2011 19:09:18 +0000 (12:09 -0700)

Merge branch 'jc/log-quiet-fix'

* jc/log-quiet-fix:
log: --quiet should serve as synonym to -s

Merge branch 'kk/maint-prefix-in-config-mak'Junio C Hamano Tue, 31 May 2011 19:09:12 +0000 (12:09 -0700)

Merge branch 'kk/maint-prefix-in-config-mak'

* kk/maint-prefix-in-config-mak:
config.mak.in: allow "configure --sysconfdir=/else/where"

Merge branch 'jk/rebase-head-reflog'Junio C Hamano Tue, 31 May 2011 19:09:08 +0000 (12:09 -0700)

Merge branch 'jk/rebase-head-reflog'

* jk/rebase-head-reflog:
rebase: write a reflog entry when finishing
rebase: create HEAD reflog entry when aborting

Merge branch 'jk/maint-docs'Junio C Hamano Tue, 31 May 2011 19:09:00 +0000 (12:09 -0700)

Merge branch 'jk/maint-docs'

* jk/maint-docs:
docs: fix some antique example output
docs: make sure literal "->" isn't converted to arrow
docs: update status --porcelain format
docs: minor grammar fixes to git-status

Merge branch 'jk/read-in-full-stops-on-error'Junio C Hamano Tue, 31 May 2011 19:08:55 +0000 (12:08 -0700)

Merge branch 'jk/read-in-full-stops-on-error'

* jk/read-in-full-stops-on-error:
read_in_full: always report errors

Merge branch 'jk/maint-remote-mirror-safer'Junio C Hamano Tue, 31 May 2011 19:08:52 +0000 (12:08 -0700)

Merge branch 'jk/maint-remote-mirror-safer'

* jk/maint-remote-mirror-safer:
remote: allow "-t" with fetch mirrors

Merge branch 'jl/read-tree-m-dry-run'Junio C Hamano Tue, 31 May 2011 19:08:48 +0000 (12:08 -0700)

Merge branch 'jl/read-tree-m-dry-run'

* jl/read-tree-m-dry-run:
Teach read-tree the -n|--dry-run option
unpack-trees: add the dry_run flag to unpack_trees_options

Sync with maintJunio C Hamano Tue, 31 May 2011 19:07:14 +0000 (12:07 -0700)

Sync with maint

Start 1.7.5.4 draft release notesJunio C Hamano Tue, 31 May 2011 19:06:40 +0000 (12:06 -0700)

Start 1.7.5.4 draft release notes

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

Merge branch 'tr/add-i-no-escape' into maintJunio C Hamano Tue, 31 May 2011 19:02:04 +0000 (12:02 -0700)

Merge branch 'tr/add-i-no-escape' into maint

* tr/add-i-no-escape:
add -i: ignore terminal escape sequences

Merge branch 'vh/config-interactive-singlekey-doc'... Junio C Hamano Tue, 31 May 2011 19:01:06 +0000 (12:01 -0700)

Merge branch 'vh/config-interactive-singlekey-doc' into maint

* vh/config-interactive-singlekey-doc:
git-reset.txt: better docs for '--patch'
git-checkout.txt: better docs for '--patch'
git-stash.txt: better docs for '--patch'
git-add.txt: document 'interactive.singlekey'
config.txt: 'interactive.singlekey; is used by...

Merge branch 'ml/test-readme' into maintJunio C Hamano Tue, 31 May 2011 19:00:43 +0000 (12:00 -0700)

Merge branch 'ml/test-readme' into maint

* ml/test-readme:
t/README: unify documentation of test function args

Merge branch 'ab/i18n-fixup' into maintJunio C Hamano Tue, 31 May 2011 19:00:27 +0000 (12:00 -0700)

Merge branch 'ab/i18n-fixup' into maint

* ab/i18n-fixup: (24 commits)
i18n: use test_i18n{cmp,grep} in t7600, t7607, t7611 and t7811
i18n: use test_i18n{grep,cmp} in t7508
i18n: use test_i18ngrep in t7506
i18n: use test_i18ngrep and test_i18ncmp in t7502
i18n: use test_i18ngrep in t7501
i18n: use test_i18ncmp in t7500
i18n: use test_i18ngrep in t7201
i18n: use test_i18ncmp and test_i18ngrep in t7102 and t7110
i18n: use test_i18ncmp and test_i18ngrep in t5541, t6040, t6120, t7004, t7012 and t7060
i18n: use test_i18ncmp and test_i18ngrep in t3700, t4001 and t4014
i18n: use test_i18ncmp and test_i18ngrep in t3203, t3501 and t3507
i18n: use test_i18ngrep in t2020, t2204, t3030, and t3200
i18n: use test_i18ngrep in lib-httpd and t2019
i18n: do not overuse C_LOCALE_OUTPUT (grep)
i18n: use test_i18ncmp in t1200 and t2200
i18n: .git file is not a human readable message (t5601)
i18n: do not overuse C_LOCALE_OUTPUT
i18n: mark init-db messages for translation
i18n: mark checkout plural warning for translation
i18n: mark checkout --detach messages for translation
...

Merge branch 'jc/rename-degrade-cc-to-c' into maintJunio C Hamano Tue, 31 May 2011 19:00:02 +0000 (12:00 -0700)

Merge branch 'jc/rename-degrade-cc-to-c' into maint

* jc/rename-degrade-cc-to-c:
diffcore-rename: fall back to -C when -C -C busts the rename limit
diffcore-rename: record filepair for rename src
diffcore-rename: refactor "too many candidates" logic
builtin/diff.c: remove duplicated call to diff_result_code()

Merge branch 'rr/doc-content-type' into maintJunio C Hamano Tue, 31 May 2011 18:59:39 +0000 (11:59 -0700)

Merge branch 'rr/doc-content-type' into maint

* rr/doc-content-type:
Documentation: Allow custom diff tools to be specified in 'diff.tool'
Documentation: Add diff.<driver>.* to config
Documentation: Move diff.<driver>.* from config.txt to diff-config.txt
Documentation: Add filter.<driver>.* to config

config.c: Remove unused git_config_global() functionRamsay Jones Tue, 31 May 2011 17:23:42 +0000 (18:23 +0100)

config.c: Remove unused git_config_global() function

Commit 8f323c00 (drop support for GIT_CONFIG_NOGLOBAL, 15-03-2011)
removed the git_config_global() function, among other things, since
it is no longer required. Unfortunately, this function has since
been unintentionally restored by a faulty conflict resolution.

Remove it.

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

diff: futureproof "stop feeding the backend early"... Junio C Hamano Tue, 31 May 2011 16:14:17 +0000 (09:14 -0700)

diff: futureproof "stop feeding the backend early" logic

Refactor the "do not stop feeding the backend early" logic into a small
helper function and use it in both run_diff_files() and diff_tree() that
has the stop-early optimization. We may later add other types of diffcore
transformation that require to look at the whole result like diff-filter
does, and having the logic in a single place is essential for longer term
maintainability.

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

diff_tree: disable QUICK optimization with diff filterJeff King Tue, 31 May 2011 15:33:56 +0000 (11:33 -0400)

diff_tree: disable QUICK optimization with diff filter

We stop looking for changes early with QUICK, so our diff
queue contains only a subset of the changes. However, we
don't apply diff filters until later; it will appear at that
point as though there are no changes matching our filter,
when in reality we simply didn't keep looking for changes
long enough.

Commit 2cfe8a6 (diff --quiet: disable optimization when
--diff-filter=X is used, 2011-03-16) fixes this in some
cases by disabling the optimization when a filter is
present. However, it only tweaked run_diff_files, missing
the similar case in diff_tree. Thus the fix worked only for
diffing the working tree and index, but not between trees.

Noticed by Yasushi SHOJI.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jc/fmt-req-fix'Junio C Hamano Tue, 31 May 2011 03:19:21 +0000 (20:19 -0700)

Merge branch 'jc/fmt-req-fix'

* jc/fmt-req-fix:
userformat_find_requirements(): find requirement for the correct format

Merge branch 'jk/maint-config-alias-fix'Junio C Hamano Tue, 31 May 2011 03:19:14 +0000 (20:19 -0700)

Merge branch 'jk/maint-config-alias-fix'

* jk/maint-config-alias-fix:
handle_options(): do not miscount how many arguments were used
config: always parse GIT_CONFIG_PARAMETERS during git_config
git_config: don't peek at global config_parameters
config: make environment parsing routines static

Conflicts:
config.c

Documentation: do not misinterpret refspecs as bold... Jonathan Nieder Mon, 30 May 2011 15:52:56 +0000 (10:52 -0500)

Documentation: do not misinterpret refspecs as bold text

In v1.7.3.3~2 (Documentation: do not misinterpret pull refspec as bold
text, 2010-12-03) many uses of asterisks in expressions like
"refs/heads/*:refs/svn/origin/branches/*" were escaped as {asterisk}
to avoid being treated as delimiters for bold text, but these two were
missed.

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

format-patch: make zero-length subject prefixes prettierJeff King Mon, 30 May 2011 14:19:05 +0000 (10:19 -0400)

format-patch: make zero-length subject prefixes prettier

If you give a zero-length subject prefix to format-patch
(e.g., "format-patch --subject-prefix="), we will print the
ugly:

Subject: [ 1/2] your subject here

because we always insert a space between the prefix and
numbering. Requiring the user to provide the space in their
prefix would be more flexible, but would break existing
usage. This patch provides a DWIM and suppresses the space
for zero-length prefixes, under the assumption that nobody
actually wants "[ 1/2]".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-sh-i18n--envsubst: add SYNOPSIS section to the... Ævar Arnfjörð Bjarmason Sun, 29 May 2011 11:00:35 +0000 (11:00 +0000)

git-sh-i18n--envsubst: add SYNOPSIS section to the documentation

Change the documentation for the git-sh-i18n--envsubst program to
include a SYNOPSIS section. Include the invocation of the program from
git-sh-i18n.sh.

Not having a SYNOPSIS section caused the "doc" target to fail on
Centos 5.5 with asciidoc 8.2.5, while building with 8.6.4 on Debian
works just fine.

The relevant error was:

ERROR: git-sh-i18n--envsubst.txt: line 9: second section must be named SYNOPSIS

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

Merge branch 'maint'Junio C Hamano Mon, 30 May 2011 07:09:55 +0000 (00:09 -0700)

Merge branch 'maint'

* maint:
git-submodule.sh: separate parens by a space to avoid confusing some shells
Documentation/technical/api-diff.txt: correct name of diff_unmerge()
read_gitfile_gently: use ssize_t to hold read result
remove tests of always-false condition
rerere.c: diagnose a corrupt MERGE_RR when hitting EOF between TAB and '\0'

Merge branch 'jm/maint-misc-fix' into maintJunio C Hamano Mon, 30 May 2011 07:09:41 +0000 (00:09 -0700)

Merge branch 'jm/maint-misc-fix' into maint

* jm/maint-misc-fix:
read_gitfile_gently: use ssize_t to hold read result
remove tests of always-false condition
rerere.c: diagnose a corrupt MERGE_RR when hitting EOF between TAB and '\0'

Merge branch 'bc/maint-submodule-fix-parked' into maintJunio C Hamano Mon, 30 May 2011 07:09:36 +0000 (00:09 -0700)

Merge branch 'bc/maint-submodule-fix-parked' into maint

* bc/maint-submodule-fix-parked:
git-submodule.sh: separate parens by a space to avoid confusing some shells

Merge branch 'bc/maint-api-doc-parked' into maintJunio C Hamano Mon, 30 May 2011 07:03:52 +0000 (00:03 -0700)

Merge branch 'bc/maint-api-doc-parked' into maint

* bc/maint-api-doc-parked:
Documentation/technical/api-diff.txt: correct name of diff_unmerge()

Merge branch 'mk/grep-pcre'Junio C Hamano Mon, 30 May 2011 07:00:07 +0000 (00:00 -0700)

Merge branch 'mk/grep-pcre'

* mk/grep-pcre:
git-grep: Fix problems with recently added tests
git-grep: Update tests (mainly for -P)
Makefile: Pass USE_LIBPCRE down in GIT-BUILD-OPTIONS
git-grep: update tests now regexp type is "last one wins"
git-grep: do not die upon -F/-P when grep.extendedRegexp is set.
git-grep: Bail out when -P is used with -F or -E
grep: Add basic tests
configure: Check for libpcre
git-grep: Learn PCRE
grep: Extract compile_regexp_failed() from compile_regexp()
grep: Fix a typo in a comment
grep: Put calls to fixmatch() and regmatch() into patmatch()
contrib/completion: --line-number to git grep
Documentation: Add --line-number to git-grep synopsis

git-grep: Fix problems with recently added testsMichał Kiedrowicz Thu, 26 May 2011 22:43:59 +0000 (00:43 +0200)

git-grep: Fix problems with recently added tests

Brian Gernhardt reported that test 'git grep -E -F -G a\\+b' fails on
OS X 10.6.7. This is because I assumed \+ is part of BRE, which isn't
true on all platforms.

The easiest way to make this test pass is to just update expected
output, but that would make the test pointless. Its real purpose is to
check whether 'git grep -E -F -G' is different from 'git grep -E -G -F'.
To check that, let's change pattern to "a+b*c". This should return
different match for -G, -F and -E.

I also made two small tweaks to the tests. First, I added path "ab" to
all calls to future-proof tests. Second, I updated last two tests to
better show that 'git grep -P -E' is different from 'git grep -E -P'.

Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jc/notes-batch-removal'Junio C Hamano Mon, 30 May 2011 06:51:26 +0000 (23:51 -0700)

Merge branch 'jc/notes-batch-removal'

* jc/notes-batch-removal:
show: --ignore-missing
notes remove: --stdin reads from the standard input
notes remove: --ignore-missing
notes remove: allow removing more than one

Merge branch 'jk/haves-from-alternate-odb'Junio C Hamano Mon, 30 May 2011 06:51:22 +0000 (23:51 -0700)

Merge branch 'jk/haves-from-alternate-odb'

* jk/haves-from-alternate-odb:
receive-pack: eliminate duplicate .have refs
bisect: refactor sha1_array into a generic sha1 list
refactor refs_from_alternate_cb to allow passing extra data

Merge branch 'jn/run-command-error-failure' into maintJunio C Hamano Mon, 30 May 2011 02:08:51 +0000 (19:08 -0700)

Merge branch 'jn/run-command-error-failure' into maint

* jn/run-command-error-failure:
run-command: handle short writes and EINTR in die_child
tests: check error message from run_command

builtin/commit.c: set status_format _after_ option... Brandon Casey Thu, 26 May 2011 20:43:21 +0000 (13:43 -0700)

builtin/commit.c: set status_format _after_ option parsing

'git status' should use --porcelain output format when -z is given.
It was not doing so since the _effect_ of using -z, namely that
null_termination would be set, was being checked _before_ option parsing
was performed.

So, move the check so that it is performed after option parsing.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7508: demonstrate status's failure to use --porcelain... Brandon Casey Thu, 26 May 2011 20:43:20 +0000 (13:43 -0700)

t7508: demonstrate status's failure to use --porcelain format with -z

When 'git status' is supplied the -z switch, and no output format has been
selected, it is supposed to use the --porcelain format. This does not
happen. Instead, the standard long format is used. Add a test to
demonstrate this failure.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

log: --quiet should serve as synonym to -sJunio C Hamano Sat, 28 May 2011 19:25:24 +0000 (12:25 -0700)

log: --quiet should serve as synonym to -s

The previous commit simply hijacked --quiet and essentially made it into a
no-op. Instead, take it as a cue that the end user wants to omit the patch
output from commands that default to show patches, e.g. "show".

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

rebase: write a reflog entry when finishingJeff King Fri, 27 May 2011 20:16:14 +0000 (16:16 -0400)

rebase: write a reflog entry when finishing

When we finish a rebase, our detached HEAD is at the final
result. We update the original branch ref with this result,
and then point the HEAD symbolic ref at the updated branch.
We write a reflog for the branch update, but not for the
update of HEAD.

Because we're already at the final result on the detached
HEAD, moving to the branch actually doesn't change our
commit sha1 at all. So in that sense, a reflog entry would
be pointless.

However, humans do read reflogs, and an entry saying "rebase
finished: returning to refs/heads/master" can be helpful in
understanding what is going on.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rebase: create HEAD reflog entry when abortingCsaba Henk Fri, 27 May 2011 20:13:02 +0000 (16:13 -0400)

rebase: create HEAD reflog entry when aborting

When we abort a rebase, we return to the original value of
HEAD. Failing to write a reflog entry means we create a
gap in the reflog (which can cause "git show
HEAD@{5.minutes.ago}" to issue a warning). Plus having the
extra entry makes the reflog easier to follow for a human.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

config.mak.in: allow "configure --sysconfdir=/else... Junio C Hamano Thu, 5 May 2011 01:50:45 +0000 (18:50 -0700)

config.mak.in: allow "configure --sysconfdir=/else/where"

We do allow vanilla Makefile users to say make sysconfdir=/else/where
and config.mak can also be tweaked manually for the same effect. Give
the same configurablity to ./configure users as well.

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

docs: fix some antique example outputJeff King Fri, 27 May 2011 02:33:15 +0000 (22:33 -0400)

docs: fix some antique example output

These diff-index and diff-tree sample outputs date back to
the first month of git's existence. The output format has
changed slightly since then, so let's have it match the
current output.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

docs: make sure literal "->" isn't converted to arrowJeff King Fri, 27 May 2011 02:32:41 +0000 (22:32 -0400)

docs: make sure literal "->" isn't converted to arrow

Recent versions of asciidoc will treat "->" as a
single-glyph arrow symbol, unless it is inside a literal
code block. This is a problem if we are discussing literal
output and want to show the ASCII characters.

Our usage falls into three categories:

1. Inside a code block. These can be left as-is.

2. Discussing literal output or code, but inside a
paragraph. This patch escapes these as "\->".

3. Using the arrow as a symbolic element, such as "use the
Edit->Account Settings menu". In this case, the
arrow symbol is preferable, so we leave it as-is.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

docs: update status --porcelain formatJeff King Fri, 27 May 2011 02:31:51 +0000 (22:31 -0400)

docs: update status --porcelain format

The --porcelain format was originally identical to the
--short format, but designed to be stable as the short
format changed. Since this was written, the short format
picked up a few incompatible niceties, but this description
was never changed.

Let's mention the differences. While we're at it, let's add
some sub-section headings to make the "output" section a
little easier to navigate.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

docs: minor grammar fixes to git-statusJeff King Fri, 27 May 2011 02:31:11 +0000 (22:31 -0400)

docs: minor grammar fixes to git-status

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

format-patch: preserve subject newlines with -kJeff King Thu, 26 May 2011 22:28:17 +0000 (18:28 -0400)

format-patch: preserve subject newlines with -k

In older versions of git, we used rfc822 header folding to
indicate that the original subject line had multiple lines
in it. But since a1f6baa (format-patch: wrap long header
lines, 2011-02-23), we now use header folding whenever there
is a long line.

This means that "git am" cannot trust header folding as a
sign from format-patch that newlines should be preserved.
Instead, format-patch needs to signal more explicitly that
the newlines are significant. This patch does so by
rfc2047-encoding the newlines in the subject line. No
changes are needed on the "git am" end; it already decodes
the newlines properly.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clean up calling conventions for pretty.c functionsJeff King Thu, 26 May 2011 22:27:49 +0000 (18:27 -0400)

clean up calling conventions for pretty.c functions

We have a pretty_print_context representing the parameters
for a pretty-print session, but we did not use it uniformly.
As a result, functions kept growing more and more arguments.

Let's clean this up in a few ways:

1. All pretty-print pp_* functions now take a context.
This lets us reduce the number of arguments to these
functions, since we were just passing around the
context values separately.

2. The context argument now has a cmit_fmt field, which
was passed around separately. That's one less argument
per function.

3. The context argument always comes first, which makes
calling a little more uniform.

This drops lines from some callers, and adds lines in a few
places (because we need an extra line to set the context's
fmt field). Overall, we don't save many lines, but the lines
that are there are a lot simpler and more readable.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty: add pp_commit_easy function for simple callersJeff King Thu, 26 May 2011 22:27:24 +0000 (18:27 -0400)

pretty: add pp_commit_easy function for simple callers

Many callers don't actually care about the pretty print
context at all; let's just give them a simple way of
pretty-printing a commit without having to create a context
struct.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>