Merge branch 'aw/rebase-am-failure-detection' into pu

I am unhappy a bit about the possible performance implications of
having to store the output in a temporary file only for a rare case
of format-patch aborting.

* aw/rebase-am-failure-detection:
  rebase: Handle cases where format-patch fails
Merge branch 'mo/cvs-server-updates' into pu

Needs review by folks interested in cvsserver.

* mo/cvs-server-updates:
  cvsserver Documentation: new cvs ... -r support
  cvsserver: add t9402 to test branch and tag refs
  cvsserver: support -r and sticky tags for most operations
  cvsserver: Add version awareness to argsfromdir
  cvsserver: generalize getmeta() to recognize commit refs
  cvsserver: implement req_Sticky and related utilities
  cvsserver: add misc commit lookup, file meta data, and file listing functions
  cvsserver: define a tag name character escape mechanism
  cvsserver: cleanup extra slashes in filename arguments
  cvsserver: factor out git-log parsing logic
Merge branch 'lt/diff-stat-show-0-lines' into pu

We failed to mention a file without any content change but whose
permission bit was modified, or (worse yet) a new file without any
content in the "git diff --stat" output.

Needs some test updates.

* lt/diff-stat-show-0-lines:
  Fix "git diff --stat" for interesting - but empty - file changes
Merge branch 'jn/warn-on-inaccessible-loosen' into pu

An RFC to deal with a situation where .config/git is a file and we
notice .config/git/config is not readable due to ENOTDIR, not
ENOENT; I think a bit more refactored approach to consistently
address permission errors across config, exclude and attrs is
desirable.  Don't we also need a check for an opposite situation
where we open .config/git/config or .gitattributes for reading but
they turn out to be directories?

* jn/warn-on-inaccessible-loosen:
  config: exit on error accessing any config file
  doc: advertise GIT_CONFIG_NOSYSTEM
  config: treat user and xdg config permission problems as errors
  config, gitignore: failure to access with ENOTDIR is ok
Merge branch 'jc/apply-trailing-blank-removal' into pu

Fix to update_pre_post_images() that did not take into account the
possibility that whitespace fix could shrink the preimage and
change the number of lines in it.

Extra set of eyeballs appreciated.

* jc/apply-trailing-blank-removal:
  apply.c:update_pre_post_images(): the preimage can be truncated
Merge branch 'jh/update-ref-d-through-symref' into pu

"update-ref -d --deref SYM" to delete a ref through a symbolic ref
that points to it did not remove it correctly.

Need to check reviews, but is probably ready for 'next'.

* jh/update-ref-d-through-symref:
  Fix failure to delete a packed ref through a symref
  t1400-update-ref: Add test verifying bug with symrefs in delete_ref()
Merge branch 'as/test-tweaks' into pu

Various minor tweaks to the test framework to paint its output
lines in colors that match what they mean better.

Has the "is this really blue?" issue Peff raised resolved???

* as/test-tweaks:
  tests: paint unexpectedly fixed known breakages in bold red
  tests: test the test framework more thoroughly
  [SQUASH] t/t0000-basic.sh: quoting of TEST_DIRECTORY is screwed up
  tests: refactor mechanics of testing in a sub test-lib
  tests: paint skipped tests in bold blue
  tests: test number comes first in 'not ok $count - $message'
  tests: paint known breakages in bold yellow
Merge branch 'mb/remote-default-nn-origin' into pu

When the user does not specify what remote to interact with, we
often attempt to use 'origin'.  This can now be customized via a
configuration variable.

Expecting a re-roll.

"The first remote becomes the default" bit is better done as a
separate step.

* mb/remote-default-nn-origin:
  Teach get_default_remote to respect remote.default.
  Test that plain "git fetch" uses remote.default when on a detached HEAD.
  Teach clone to set remote.default.
  Teach "git remote" about remote.default.
  Teach remote.c about the remote.default configuration setting.
  Rename remote.c's default_remote_name static variables.

Conflicts:
	builtin/remote.c
	t/t5505-remote.sh
Merge branch 'jc/xprm-generation' into pu

A toy to analyze how bad the clock skews are in histories of real
world projects.

Stalled mostly due to lack of responses.

* jc/xprm-generation:
  test-generation: compute generation numbers and clock skews
Merge branch 'jk/lua-hackery' into pu

Interesting exercise. When we do this for real, we probably would want
to wrap a commit to make it more like an "object" with methods like
"parents", etc.

* jk/lua-hackery:
  pretty: fix up one-off format_commit_message calls
  Minimum compilation fixup
  Makefile: make "lua" a bit more configurable
  add a "lua" pretty format
  add basic lua infrastructure
  pretty: make some commit-parsing helpers more public
Merge branch 'jc/doc-default-format' into pu

Need to address the installation half if this is to be any useful.

* jc/doc-default-format:
  [SQAUSH] allow "cd Doc* && make DEFAULT_DOC_TARGET=..."
  Allow generating a non-default set of documentation
Merge branch 'as/check-ignore' into pu

Duy helped to reroll this.

Expecting a re-roll.

* as/check-ignore:
  t0007: fix tests on Windows
  Documentation/check-ignore: we show the deciding match, not the first
  Add git-check-ignore sub-command
  dir.c: provide free_directory() for reclaiming dir_struct memory
  pathspec.c: move reusable code from builtin/add.c
  dir.c: refactor treat_gitlinks()
  dir.c: keep track of where patterns came from
  dir.c: refactor is_path_excluded()
  dir.c: refactor is_excluded()
  dir.c: refactor is_excluded_from_list()
  dir.c: rename excluded() to is_excluded()
  dir.c: rename excluded_from_list() to is_excluded_from_list()
  dir.c: rename path_excluded() to is_path_excluded()
  dir.c: rename cryptic 'which' variable to more consistent name
Merge branch 'fc/zsh-completion' into pu

There were some comments on this, but I wasn't clear on the outcome.

Need to take a closer look.

* fc/zsh-completion:
  completion: add new zsh completion
  completion: add new __gitcompadd helper
  completion: get rid of empty COMPREPLY assignments

Conflicts:
	contrib/completion/git-completion.bash
Merge branch 'esr/maint-doc-fast-import' into pu

* esr/maint-doc-fast-import:
  doc/fast-import: clarify how content states are built
Merge branch 'pf/editor-ignore-sigint' into pu

Avoid confusing cases where the user hits Ctrl-C while in the editor
session, not realizing git will receive the signal. Since most editors
will take over the terminal and will block SIGINT, this is not likely
to confuse anyone.

Some people raised issues with emacsclient, which are addressed by this
re-roll. It should probably also handle SIGQUIT, and there were a
handful of other review comments.

Expecting a re-roll.

* pf/editor-ignore-sigint:
  launch_editor: propagate SIGINT from editor to git
  run-command: do not warn about child death by SIGINT
  run-command: drop silent_exec_failure arg from wait_or_whine
  launch_editor: ignore SIGINT while the editor has control
  launch_editor: refactor to use start/finish_command
Merge branch 'pp/gitweb-config-underscore' into pu

The key "gitweb.remote_heads" is not legal git config; this maps it to
"gitweb.remoteheads".

Junio raised a good point about the implementation for three-level
variables.

Expecting a re-roll.

* pp/gitweb-config-underscore:
  gitweb: make remote_heads config setting work
Merge branch 'rr/submodule-diff-config' into pu

Lets "git diff --submodule=log" become the default via configuration.

Almost there. Looks like a new version has been posted, but I haven't
picked it up yet.

Needs review.

* rr/submodule-diff-config:
  submodule: display summary header in bold
  diff: rename "set" variable
  diff: introduce diff.submodule configuration variable
  Documentation: move diff.wordRegex from config.txt to diff-config.txt
Merge branch 'fc/fast-export-fixes' into pu

Improvements to fix fast-export bugs, including how refs pointing to
already-seen commits are handled. An earlier 4-commit version of this
series looked good to me, but this much-expanded version has not seen
any comments.

Looks like it has been re-rolled, but I haven't checked it out yet.

Needs review.

* fc/fast-export-fixes:
  fast-export: don't handle uninteresting refs
  fast-export: make sure updated refs get updated
  fast-export: fix comparison in tests
  fast-export: trivial cleanup
  remote-testgit: make clear the 'done' feature
  remote-testgit: report success after an import
  remote-testgit: exercise more features
  remote-testgit: cleanup tests
  remote-testgit: remove irrelevant test
  remote-testgit: get rid of non-local functionality
  Add new simplified git-remote-testgit
  Rename git-remote-testgit to git-remote-testpy
  remote-testgit: fix direction of marks
  fast-export: avoid importing blob marks
Merge branch 'cr/push-force-tag-update' into pu

Require "-f" for push to update a tag, even if it is a fast-forward.

Needs review.

I'm undecided yet on whether the goal is the right thing to do, but it
does prevent some potential mistakes. I haven't looked closely at the
implementation itself; review from interested parties would be helpful.

* cr/push-force-tag-update:
  push: update remote tags only with force
  push: flag updates that require force
  push: flag updates
  push: add advice for rejected tag reference
  push: return reject reasons via a mask
Merge branch 'jk/send-email-sender-prompt' into pu

Avoid annoying sender prompt in git-send-email, but only when it is
safe to do so.

Perhaps keep only the first three patches, and replace the rest
with the one from Felipe that takes a much simpler approach (the
rationale of that patch needs to be cleaned up first, along the
lines Jeff outlined, though).

* jk/send-email-sender-prompt:
  send-email: do not prompt for explicit repo ident
  Git.pm: teach "ident" to query explicitness
  var: provide explicit/implicit ident information
  var: accept multiple variables on the command line
  ident: keep separate "explicit" flags for author and committer
  ident: make user_ident_explicitly_given static
  t7502: factor out autoident prerequisite
  test-lib: allow negation of prerequisites