git
11 years agoMerge branch 'bc/send-email-ssl-die-message-fix'
Junio C Hamano [Wed, 18 Sep 2013 18:47:27 +0000 (11:47 -0700)] 
Merge branch 'bc/send-email-ssl-die-message-fix'

When send-email comes up with an error message to die with upon
failure to start an SSL session, it tried to read the error string
from a wrong place.

* bc/send-email-ssl-die-message-fix:
  send-email: don't call methods on undefined values

11 years agoMerge branch 'uh/git-svn-serf-fix'
Junio C Hamano [Wed, 18 Sep 2013 18:46:06 +0000 (11:46 -0700)] 
Merge branch 'uh/git-svn-serf-fix'

"git-svn" used with SVN 1.8.0 when talking over https:// connection
dumped core due to a bug in the serf library that SVN uses.  Work
it around on our side, even though the SVN side is being fixed.

* uh/git-svn-serf-fix:
  git-svn: fix termination issues for remote svn connections

11 years agoMerge branch 'fc/contrib-bzr-hg-fixes'
Junio C Hamano [Wed, 18 Sep 2013 18:45:49 +0000 (11:45 -0700)] 
Merge branch 'fc/contrib-bzr-hg-fixes'

* fc/contrib-bzr-hg-fixes:
  contrib/remote-helpers: quote variable references in redirection targets
  contrib/remote-helpers: style updates for test scripts
  remote-hg: use notes to keep track of Hg revisions
  remote-helpers: cleanup more global variables
  remote-helpers: trivial style fixes
  remote-hg: improve basic test
  remote-hg: add missing &&s in the test
  remote-hg: fix test
  remote-bzr: make bzr branches configurable per-repo
  remote-bzr: fix export of utf-8 authors

11 years agoMerge branch 'js/add-i-mingw'
Junio C Hamano [Wed, 18 Sep 2013 18:45:06 +0000 (11:45 -0700)] 
Merge branch 'js/add-i-mingw'

The implementation of "add -i" has a crippling code to work around
ActiveState Perl limitation but it by mistake also triggered on Git
for Windows where MSYS perl is used.

* js/add-i-mingw:
  add--interactive: fix external command invocation on Windows

11 years agoMerge branch 'ks/p4-view-spec'
Junio C Hamano [Wed, 18 Sep 2013 18:44:50 +0000 (11:44 -0700)] 
Merge branch 'ks/p4-view-spec'

* ks/p4-view-spec:
  git p4: implement view spec wildcards with "p4 where"
  git p4 test: sanitize P4CHARSET

11 years agoMerge branch 'jk/duplicate-objects-in-packs'
Junio C Hamano [Wed, 18 Sep 2013 18:43:47 +0000 (11:43 -0700)] 
Merge branch 'jk/duplicate-objects-in-packs'

A packfile that stores the same object more than once is broken and
will be rejected by "git index-pack" that is run when receiving data
over the wire.

* jk/duplicate-objects-in-packs:
  t5308: check that index-pack --strict detects duplicate objects
  test index-pack on packs with recoverable delta cycles
  add tests for indexing packs with delta cycles
  sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
  test-sha1: add a binary output mode

11 years agoMerge branch 'nd/git-dir-pointing-at-gitfile'
Junio C Hamano [Wed, 18 Sep 2013 18:42:36 +0000 (11:42 -0700)] 
Merge branch 'nd/git-dir-pointing-at-gitfile'

We made sure that we notice the user-supplied GIT_DIR is actually a
gitfile, but did not do the same when the default ".git" is a gitfile.

* nd/git-dir-pointing-at-gitfile:
  Make setup_git_env() resolve .git file when $GIT_DIR is not specified

11 years agoMerge branch 'jk/pager-bypass-cat-for-default-pager'
Junio C Hamano [Wed, 18 Sep 2013 18:42:15 +0000 (11:42 -0700)] 
Merge branch 'jk/pager-bypass-cat-for-default-pager'

If a build-time fallback is set to "cat" instead of "less", we
should apply the same "no subprocess or pipe" optimization as we
apply to user-supplied GIT_PAGER=cat.

* jk/pager-bypass-cat-for-default-pager:
  pager: turn on "cat" optimization for DEFAULT_PAGER

11 years agoMerge branch 'fc/t3200-fixes'
Junio C Hamano [Wed, 18 Sep 2013 18:42:13 +0000 (11:42 -0700)] 
Merge branch 'fc/t3200-fixes'

* fc/t3200-fixes:
  t: branch: fix broken && chains
  t: branch: fix typo
  t: branch: trivial style fix

11 years agoMerge branch 'fc/rev-parse-test-updates'
Junio C Hamano [Wed, 18 Sep 2013 18:42:03 +0000 (11:42 -0700)] 
Merge branch 'fc/rev-parse-test-updates'

Modernize tests.

* fc/rev-parse-test-updates:
  rev-parse test: use standard test functions for setup
  rev-parse test: use test_cmp instead of "test" builtin
  rev-parse test: use test_must_fail, not "if <command>; then false; fi"
  rev-parse test: modernize quoting and whitespace

11 years agoUpdate draft release notes to 1.8.5 for the first half of the fourth batch
Junio C Hamano [Tue, 17 Sep 2013 18:43:58 +0000 (11:43 -0700)] 
Update draft release notes to 1.8.5 for the first half of the fourth batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jk/remove-remote-helpers-in-python'
Junio C Hamano [Tue, 17 Sep 2013 18:43:01 +0000 (11:43 -0700)] 
Merge branch 'jk/remove-remote-helpers-in-python'

Remove now disused remote-helpers framework for helpers written in
Python.

* jk/remove-remote-helpers-in-python:
  git_remote_helpers: remove little used Python library

11 years agoMerge branch 'ss/doclinks'
Junio C Hamano [Tue, 17 Sep 2013 18:42:54 +0000 (11:42 -0700)] 
Merge branch 'ss/doclinks'

When we converted many documents that were traditionally text-only
to be formatted to AsciiDoc, we did not update links that point at
them to refer to the formatted HTML files.

* ss/doclinks:
  Documentation: make AsciiDoc links always point to HTML files

11 years agoMerge branch 'rh/ishes-doc'
Junio C Hamano [Tue, 17 Sep 2013 18:42:51 +0000 (11:42 -0700)] 
Merge branch 'rh/ishes-doc'

We liberally use "committish" and "commit-ish" (and "treeish" and
"tree-ish"); as these are non-words, let's unify these terms to
their dashed form.  More importantly, clarify the documentation on
object peeling using these terms.

* rh/ishes-doc:
  glossary: fix and clarify the definition of 'ref'
  revisions.txt: fix and clarify <rev>^{<type>}
  glossary: more precise definition of tree-ish (a.k.a. treeish)
  use 'commit-ish' instead of 'committish'
  use 'tree-ish' instead of 'treeish'
  glossary: define commit-ish (a.k.a. committish)
  glossary: mention 'treeish' as an alternative to 'tree-ish'

11 years agoMerge branch 'dw/diff-no-index-doc'
Junio C Hamano [Tue, 17 Sep 2013 18:42:44 +0000 (11:42 -0700)] 
Merge branch 'dw/diff-no-index-doc'

When the user types "git diff" outside a working tree, thinking he
is inside one, the current error message that is a single-liner
"usage: git diff --no-index <path> <path>" may not be sufficient to
make him realize the mistake. Add "Not a git repository" to the
error message when we fell into the "--no-index" mode without an
explicit command line option to instruct us to do so.

* dw/diff-no-index-doc:
  diff --no-index: describe in a separate paragraph
  diff --no-index: clarify operation when not inside a repository

11 years agoMerge branch 'ta/user-manual'
Junio C Hamano [Tue, 17 Sep 2013 18:42:41 +0000 (11:42 -0700)] 
Merge branch 'ta/user-manual'

Update the user's manual to more recent versions of Git.

* ta/user-manual:
  "git prune" is safe
  Remove irrelevant reference from "Tying it all together"
  Remove unnecessary historical note from "Object storage format"
  Improve section "Merging multiple trees"
  Improve section "Manipulating branches"
  Simplify "How to make a commit"
  Fix some typos and improve wording
  Use "git merge" instead of "git pull ."
  Use current output for "git repack"
  Use current "detached HEAD" message
  Call it "Git User Manual" and remove reference to very old Git version

11 years agoMerge branch 'fc/trivial'
Junio C Hamano [Tue, 17 Sep 2013 18:42:34 +0000 (11:42 -0700)] 
Merge branch 'fc/trivial'

* fc/trivial:
  pull: use $curr_branch_short more
  add: trivial style cleanup
  reset: trivial style cleanup
  branch: trivial style fix
  reset: trivial refactoring

11 years agoMerge branch 'fc/fast-export'
Junio C Hamano [Tue, 17 Sep 2013 18:42:31 +0000 (11:42 -0700)] 
Merge branch 'fc/fast-export'

Code simpification.

* fc/fast-export:
  fast-export: refactor get_tags_and_duplicates()
  fast-export: make extra_refs global

11 years agoMerge branch 'ab/gitweb-author-initials'
Junio C Hamano [Tue, 17 Sep 2013 18:42:27 +0000 (11:42 -0700)] 
Merge branch 'ab/gitweb-author-initials'

* ab/gitweb-author-initials:
  gitweb: Fix the author initials in blame for non-ASCII names

11 years agoMerge branch 'jk/has-sha1-file-retry-packed'
Junio C Hamano [Tue, 17 Sep 2013 18:41:34 +0000 (11:41 -0700)] 
Merge branch 'jk/has-sha1-file-retry-packed'

When an object is not found after checking the packfiles and then
loose object directory, read_sha1_file() re-checks the packfiles to
prevent racing with a concurrent repacker; teach the same logic to
has_sha1_file().

* jk/has-sha1-file-retry-packed:
  has_sha1_file: re-check pack directory before giving up

11 years agoMerge branch 'jk/write-broken-index-with-nul-sha1'
Junio C Hamano [Tue, 17 Sep 2013 18:40:27 +0000 (11:40 -0700)] 
Merge branch 'jk/write-broken-index-with-nul-sha1'

Earlier we started rejecting an attempt to add 0{40} object name to
the index and to tree objects, but it sometimes is necessary to
allow so to be able to use tools like filter-branch to correct such
broken tree objects.

* jk/write-broken-index-with-nul-sha1:
  write_index: optionally allow broken null sha1s

11 years agoMerge branch 'jx/clean-interactive'
Junio C Hamano [Tue, 17 Sep 2013 18:40:23 +0000 (11:40 -0700)] 
Merge branch 'jx/clean-interactive'

Finishing touches to update the document to adjust to a new option
"git clean" learned recently.

* jx/clean-interactive:
  documentation: clarify notes for clean.requireForce

11 years agoMerge branch 'tb/precompose-autodetect-fix'
Junio C Hamano [Tue, 17 Sep 2013 18:39:59 +0000 (11:39 -0700)] 
Merge branch 'tb/precompose-autodetect-fix'

On MacOS X, we detected if the filesystem needs the "pre-composed
unicode strings" workaround, but did not automatically enable it.
Now we do.

* tb/precompose-autodetect-fix:
  Set core.precomposeunicode to true on e.g. HFS+

11 years agoMerge branch 'kk/tests-with-no-perl'
Junio C Hamano [Tue, 17 Sep 2013 18:39:35 +0000 (11:39 -0700)] 
Merge branch 'kk/tests-with-no-perl'

Some tests were not skipped under NO_PERL build.

* kk/tests-with-no-perl:
  reset test: modernize style
  t/t7106-reset-unborn-branch.sh: Add PERL prerequisite
  add -i test: use skip_all instead of repeated PERL prerequisite
  Make test "using invalid commit with -C" more strict

11 years agoMerge branch 'ap/commit-author-mailmap'
Junio C Hamano [Tue, 17 Sep 2013 18:38:33 +0000 (11:38 -0700)] 
Merge branch 'ap/commit-author-mailmap'

"git commit --author=$name", when $name is not in the canonical
"A. U. Thor <au.thor@example.xz>" format, looks for a matching name
from existing history, but did not consult mailmap to grab the
preferred author name.

* ap/commit-author-mailmap:
  commit: search author pattern against mailmap

11 years agoMerge branch 'jk/free-tree-buffer'
Junio C Hamano [Tue, 17 Sep 2013 18:37:33 +0000 (11:37 -0700)] 
Merge branch 'jk/free-tree-buffer'

* jk/free-tree-buffer:
  clear parsed flag when we free tree buffers

11 years agoMerge branch 'maint'
Junio C Hamano [Tue, 17 Sep 2013 18:37:13 +0000 (11:37 -0700)] 
Merge branch 'maint'

* maint:
  t7406-submodule-update: add missing &&

11 years agot7406-submodule-update: add missing &&
Tay Ray Chuan [Sun, 15 Sep 2013 17:38:21 +0000 (01:38 +0800)] 
t7406-submodule-update: add missing &&

322bb6e (2011 Aug 11) introduced a new subshell at the end of a test
case but omitted a '&&' to join the two; fix this.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSync with maint for l10n updates
Junio C Hamano [Thu, 12 Sep 2013 21:53:47 +0000 (14:53 -0700)] 
Sync with maint for l10n updates

* maint:
  l10n: de.po: use "das Tag" instead of "der Tag"

11 years agoUpdate draft release notes to 1.8.5 for the third batch of topics
Junio C Hamano [Thu, 12 Sep 2013 21:42:47 +0000 (14:42 -0700)] 
Update draft release notes to 1.8.5 for the third batch of topics

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jc/pager-configuration-doc'
Junio C Hamano [Thu, 12 Sep 2013 21:41:53 +0000 (14:41 -0700)] 
Merge branch 'jc/pager-configuration-doc'

It was unclear in the documentation how various configurations and
environment variables determine which pager is eventually used.

* jc/pager-configuration-doc:
  config: rewrite core.pager documentation

11 years agoMerge branch 'mm/remote-helpers-doc'
Junio C Hamano [Thu, 12 Sep 2013 21:41:50 +0000 (14:41 -0700)] 
Merge branch 'mm/remote-helpers-doc'

* mm/remote-helpers-doc:
  Documentation/remote-helpers: document common use-case for private ref

11 years agoMerge branch 'mn/doc-pack-heu-remove-dead-pastebin'
Junio C Hamano [Thu, 12 Sep 2013 21:41:47 +0000 (14:41 -0700)] 
Merge branch 'mn/doc-pack-heu-remove-dead-pastebin'

* mn/doc-pack-heu-remove-dead-pastebin:
  remove dead pastebin link from pack-heuristics document

11 years agoMerge branch 'mm/fast-import-feature-doc'
Junio C Hamano [Thu, 12 Sep 2013 21:41:45 +0000 (14:41 -0700)] 
Merge branch 'mm/fast-import-feature-doc'

* mm/fast-import-feature-doc:
  Documentation/fast-import: clarify summary for `feature` command

11 years agoMerge branch 'mm/mediawiki-dumb-push-fix'
Junio C Hamano [Thu, 12 Sep 2013 21:41:41 +0000 (14:41 -0700)] 
Merge branch 'mm/mediawiki-dumb-push-fix'

* mm/mediawiki-dumb-push-fix:
  git-remote-mediawiki: no need to update private ref in non-dumb push
  git-remote-mediawiki: use no-private-update capability on dumb push
  transport-helper: add no-private-update capability
  git-remote-mediawiki: add test and check Makefile targets

11 years agoMerge branch 'jc/commit-is-spelled-with-two-ems'
Junio C Hamano [Thu, 12 Sep 2013 21:41:38 +0000 (14:41 -0700)] 
Merge branch 'jc/commit-is-spelled-with-two-ems'

* jc/commit-is-spelled-with-two-ems:
  typofix: cherry is spelled with two ars
  typofix: commit is spelled with two ems

11 years agoMerge branch 'jk/config-int-range-check'
Junio C Hamano [Thu, 12 Sep 2013 21:41:00 +0000 (14:41 -0700)] 
Merge branch 'jk/config-int-range-check'

"git config" did not provide a way to set or access numbers larger
than a native "int" on the platform; it now provides 64-bit signed
integers on all platforms.

* jk/config-int-range-check:
  git-config: always treat --int as 64-bit internally
  config: make numeric parsing errors more clear
  config: set errno in numeric git_parse_* functions
  config: properly range-check integer values
  config: factor out integer parsing from range checks

11 years agoMerge branch 'maint' of git://github.com/git-l10n/git-po into maint
Junio C Hamano [Thu, 12 Sep 2013 04:12:02 +0000 (21:12 -0700)] 
Merge branch 'maint' of git://github.com/git-l10n/git-po into maint

* 'maint' of git://github.com/git-l10n/git-po:
  l10n: de.po: use "das Tag" instead of "der Tag"

11 years agoUpdate draft release notes to 1.8.5
Junio C Hamano [Wed, 11 Sep 2013 22:05:57 +0000 (15:05 -0700)] 
Update draft release notes to 1.8.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jc/ls-files-killed-optim'
Junio C Hamano [Wed, 11 Sep 2013 22:03:28 +0000 (15:03 -0700)] 
Merge branch 'jc/ls-files-killed-optim'

"git ls-files -k" needs to crawl only the part of the working tree
that may overlap the paths in the index to find killed files, but
shared code with the logic to find all the untracked files, which
made it unnecessarily inefficient.

* jc/ls-files-killed-optim:
  dir.c::test_one_path(): work around directory_exists_in_index_icase() breakage
  t3010: update to demonstrate "ls-files -k" optimization pitfalls
  ls-files -k: a directory only can be killed if the index has a non-directory
  dir.c: use the cache_* macro to access the current index

11 years agoMerge branch 'es/rebase-i-no-abbrev'
Junio C Hamano [Wed, 11 Sep 2013 22:02:29 +0000 (15:02 -0700)] 
Merge branch 'es/rebase-i-no-abbrev'

The commit object names in the insn sheet that was prepared at the
beginning of "rebase -i" session can become ambiguous as the
rebasing progresses and the repository gains more commits. Make
sure the internal record is kept with full 40-hex object names.

* es/rebase-i-no-abbrev:
  rebase -i: fix short SHA-1 collision
  t3404: rebase -i: demonstrate short SHA-1 collision
  t3404: make tests more self-contained

11 years agoMerge branch 'rt/rebase-p-no-merge-summary'
Junio C Hamano [Wed, 11 Sep 2013 22:00:56 +0000 (15:00 -0700)] 
Merge branch 'rt/rebase-p-no-merge-summary'

"git rebase -p" internally used the merge machinery, but when
rebasing, there should not be a need for merge summary.

* rt/rebase-p-no-merge-summary:
  rebase --preserve-merges: ignore "merge.log" config

11 years agoMerge branch 'tf/gitweb-ss-tweak'
Junio C Hamano [Wed, 11 Sep 2013 22:00:54 +0000 (15:00 -0700)] 
Merge branch 'tf/gitweb-ss-tweak'

Tweak Gitweb CSS to layout some elements better.

* tf/gitweb-ss-tweak:
  gitweb: make search help link less ugly
  gitweb: omit the repository owner when it is unset
  gitweb: vertically centre contents of page footer
  gitweb: ensure OPML text fits inside its box

11 years agoMerge branch 'sb/mailmap-freeing-NULL-is-ok'
Junio C Hamano [Wed, 11 Sep 2013 22:00:43 +0000 (15:00 -0700)] 
Merge branch 'sb/mailmap-freeing-NULL-is-ok'

* sb/mailmap-freeing-NULL-is-ok:
  mailmap: remove redundant check for freeing memory

11 years agoMerge branch 'js/xread-in-full'
Junio C Hamano [Wed, 11 Sep 2013 21:59:46 +0000 (14:59 -0700)] 
Merge branch 'js/xread-in-full'

A call to xread() was used without a loop around to cope with short
read in the codepath to stream new contents to a pack.

* js/xread-in-full:
  stream_to_pack: xread does not guarantee to read all requested bytes

11 years agoMerge branch 'es/rebase-i-respect-core-commentchar'
Junio C Hamano [Wed, 11 Sep 2013 21:58:52 +0000 (14:58 -0700)] 
Merge branch 'es/rebase-i-respect-core-commentchar'

"rebase -i" forgot that the comment character can be configurable
while reading its insn sheet.

* es/rebase-i-respect-core-commentchar:
  rebase -i: fix cases ignoring core.commentchar

11 years agoMerge branch 'jn/post-receive-utf8'
Junio C Hamano [Wed, 11 Sep 2013 21:58:46 +0000 (14:58 -0700)] 
Merge branch 'jn/post-receive-utf8'

Update post-receive-email script to make sure the message contents
and pathnames are encoded consistently in UTF-8.

* jn/post-receive-utf8:
  hooks/post-receive-email: set declared encoding to utf-8
  hooks/post-receive-email: force log messages in UTF-8
  hooks/post-receive-email: use plumbing instead of git log/show

11 years agoMerge branch 'sh/pull-rebase-preserve'
Junio C Hamano [Wed, 11 Sep 2013 21:57:49 +0000 (14:57 -0700)] 
Merge branch 'sh/pull-rebase-preserve'

"git pull --rebase" always flattened the history; pull.rebase can
now be set to "preserve" to invoke "rebase --preserve-merges".

* sh/pull-rebase-preserve:
  pull: allow pull to preserve merges when rebasing

11 years agoMerge branch 'nd/push-no-thin'
Junio C Hamano [Wed, 11 Sep 2013 21:56:58 +0000 (14:56 -0700)] 
Merge branch 'nd/push-no-thin'

"git push --no-thin" was a no-op by mistake.

* nd/push-no-thin:
  push: respect --no-thin

11 years agosend-email: don't call methods on undefined values
Brian M. Carlson [Sun, 8 Sep 2013 20:54:34 +0000 (20:54 +0000)] 
send-email: don't call methods on undefined values

If SSL verification is enabled in git send-email, we could attempt to call a
method on an undefined value if the verification failed, since $smtp would end
up being undef.  Look up the error string in a way that will produce a helpful
error message and not cause further errors.

Signed-off-by: Brian M. Carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoUpdate draft release notes to 1.8.5 for the second batch of topics
Junio C Hamano [Mon, 9 Sep 2013 21:51:42 +0000 (14:51 -0700)] 
Update draft release notes to 1.8.5 for the second batch of topics

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'nd/magic-pathspec'
Junio C Hamano [Mon, 9 Sep 2013 21:50:42 +0000 (14:50 -0700)] 
Merge branch 'nd/magic-pathspec'

Use "struct pathspec" interface in more places, instead of array of
characters, the latter of which cannot express magic pathspecs
(e.g. ":(icase)makefile" that matches both Makefile and makefile).

* nd/magic-pathspec:
  add: lift the pathspec magic restriction on "add -p"
  pathspec: catch prepending :(prefix) on pathspec with short magic

11 years agoMerge branch 'jk/mailmap-incomplete-line'
Junio C Hamano [Mon, 9 Sep 2013 21:50:41 +0000 (14:50 -0700)] 
Merge branch 'jk/mailmap-incomplete-line'

* jk/mailmap-incomplete-line:
  mailmap: handle mailmap blobs without trailing newlines

11 years agoMerge branch 'sp/clip-read-write-to-8mb'
Junio C Hamano [Mon, 9 Sep 2013 21:50:39 +0000 (14:50 -0700)] 
Merge branch 'sp/clip-read-write-to-8mb'

Send a large request to read(2)/write(2) as a smaller but still
reasonably large chunks, which would improve the latency when the
operation needs to be killed and incidentally works around broken
64-bit systems that cannot take a 2GB write or read in one go.

* sp/clip-read-write-to-8mb:
  Revert "compat/clipped-write.c: large write(2) fails on Mac OS X/XNU"
  xread, xwrite: limit size of IO to 8MB

11 years agoMerge branch 'tg/index-struct-sizes'
Junio C Hamano [Mon, 9 Sep 2013 21:50:38 +0000 (14:50 -0700)] 
Merge branch 'tg/index-struct-sizes'

The code that reads from a region that mmaps an on-disk index
assumed that "int"/"short" are always 32/16 bits.

* tg/index-struct-sizes:
  read-cache: use fixed width integer types

11 years agoMerge branch 'jc/transport-do-not-use-connect-twice-in-fetch'
Junio C Hamano [Mon, 9 Sep 2013 21:50:37 +0000 (14:50 -0700)] 
Merge branch 'jc/transport-do-not-use-connect-twice-in-fetch'

The auto-tag-following code in "git fetch" tries to reuse the same
transport twice when the serving end does not cooperate and does
not give tags that point to commits that are asked for as part of
the primary transfer.  Unfortunately, Git-aware transport helper
interface is not designed to be used more than once, hence this
does not work over smart-http transfer.

* jc/transport-do-not-use-connect-twice-in-fetch:
  builtin/fetch.c: Fix a sparse warning
  fetch: work around "transport-take-over" hack
  fetch: refactor code that fetches leftover tags
  fetch: refactor code that prepares a transport
  fetch: rename file-scope global "transport" to "gtransport"
  t5802: add test for connect helper

11 years agoMerge branch 'es/contacts-blame-L-multi'
Junio C Hamano [Mon, 9 Sep 2013 21:50:36 +0000 (14:50 -0700)] 
Merge branch 'es/contacts-blame-L-multi'

* es/contacts-blame-L-multi:
  contacts: reduce git-blame invocations
  contacts: gather all blame sources prior to invoking git-blame
  contacts: validate hunk length earlier

11 years agoMerge branch 'jc/url-match'
Junio C Hamano [Mon, 9 Sep 2013 21:50:32 +0000 (14:50 -0700)] 
Merge branch 'jc/url-match'

Allow section.<urlpattern>.var configuration variables to be
treated as a "virtual" section.var given a URL, and use the
mechanism to enhance http.* configuration variables.

This is a reroll of Kyle J. McKay's work.

* jc/url-match:
  builtin/config.c: compilation fix
  config: "git config --get-urlmatch" parses section.<url>.key
  builtin/config: refactor collect_config()
  config: parse http.<url>.<variable> using urlmatch
  config: add generic callback wrapper to parse section.<url>.key
  config: add helper to normalize and match URLs
  http.c: fix parsing of http.sslCertPasswordProtected variable

11 years agoMerge branch 'jl/submodule-mv'
Junio C Hamano [Mon, 9 Sep 2013 21:36:15 +0000 (14:36 -0700)] 
Merge branch 'jl/submodule-mv'

"git mv A B" when moving a submodule A does "the right thing",
inclusing relocating its working tree and adjusting the paths in
the .gitmodules file.

* jl/submodule-mv: (53 commits)
  rm: delete .gitmodules entry of submodules removed from the work tree
  mv: update the path entry in .gitmodules for moved submodules
  submodule.c: add .gitmodules staging helper functions
  mv: move submodules using a gitfile
  mv: move submodules together with their work trees
  rm: do not set a variable twice without intermediate reading.
  t6131 - skip tests if on case-insensitive file system
  parse_pathspec: accept :(icase)path syntax
  pathspec: support :(glob) syntax
  pathspec: make --literal-pathspecs disable pathspec magic
  pathspec: support :(literal) syntax for noglob pathspec
  kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
  parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
  parse_pathspec: make sure the prefix part is wildcard-free
  rename field "raw" to "_raw" in struct pathspec
  tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
  remove match_pathspec() in favor of match_pathspec_depth()
  remove init_pathspec() in favor of parse_pathspec()
  remove diff_tree_{setup,release}_paths
  convert common_prefix() to use struct pathspec
  ...

11 years agoMerge branch 'es/blame-L-twice'
Junio C Hamano [Mon, 9 Sep 2013 21:35:11 +0000 (14:35 -0700)] 
Merge branch 'es/blame-L-twice'

Teaches "git blame" to take more than one -L ranges.

* es/blame-L-twice:
  line-range: reject -L line numbers less than 1
  t8001/t8002: blame: add tests of -L line numbers less than 1
  line-range: teach -L^:RE to search from start of file
  line-range: teach -L:RE to search from end of previous -L range
  line-range: teach -L^/RE/ to search from start of file
  line-range-format.txt: document -L/RE/ relative search
  log: teach -L/RE/ to search from end of previous -L range
  blame: teach -L/RE/ to search from end of previous -L range
  line-range: teach -L/RE/ to search relative to anchor point
  blame: document multiple -L support
  t8001/t8002: blame: add tests of multiple -L options
  blame: accept multiple -L ranges
  blame: inline one-line function into its lone caller
  range-set: publish API for re-use by git-blame -L
  line-range-format.txt: clarify -L:regex usage form
  git-log.txt: place each -L option variation on its own line

11 years agoMerge branch 'tr/log-full-diff-keep-true-parents'
Junio C Hamano [Mon, 9 Sep 2013 21:33:16 +0000 (14:33 -0700)] 
Merge branch 'tr/log-full-diff-keep-true-parents'

Output from "git log --full-diff -- <pathspec>" looked strange,
because comparison was done with the previous ancestor that touched
the specified <pathspec>, causing the patches for paths outside the
pathspec to show more than the single commit has changed.

Tweak "git reflog -p" for the same reason using the same mechanism.

* tr/log-full-diff-keep-true-parents:
  log: use true parents for diff when walking reflogs
  log: use true parents for diff even when rewriting

11 years agoMerge branch 'jk/cat-file-batch-optim'
Junio C Hamano [Mon, 9 Sep 2013 21:33:07 +0000 (14:33 -0700)] 
Merge branch 'jk/cat-file-batch-optim'

Rework the reverted change to `cat-file --batch-check`.

* jk/cat-file-batch-optim:
  cat-file: only split on whitespace when %(rest) is used

11 years agoMerge branch 'es/blame-L-more'
Junio C Hamano [Mon, 9 Sep 2013 21:32:45 +0000 (14:32 -0700)] 
Merge branch 'es/blame-L-more'

More fixes to the code to parse the "-L" option in "log" and "blame".

* es/blame-L-more:
  blame: reject empty ranges -L,+0 and -L,-0
  t8001/t8002: blame: demonstrate acceptance of bogus -L,+0 and -L,-0
  blame: reject empty ranges -LX,+0 and -LX,-0
  t8001/t8002: blame: demonstrate acceptance of bogus -LX,+0 and -LX,-0
  log: fix -L bounds checking bug
  t4211: retire soon-to-be unimplementable tests
  t4211: log: demonstrate -L bounds checking bug
  blame: fix -L bounds checking bug
  t8001/t8002: blame: add empty file & partial-line tests
  t8001/t8002: blame: demonstrate -L bounds checking bug
  t8001/t8002: blame: decompose overly-large test

11 years agoMerge branch 'db/http-savecookies'
Junio C Hamano [Mon, 9 Sep 2013 21:32:08 +0000 (14:32 -0700)] 
Merge branch 'db/http-savecookies'

* db/http-savecookies:
  t5551: Remove header from curl cookie file
  http: add http.savecookies option to write out HTTP cookies

11 years agoMerge branch 'jc/push-cas'
Junio C Hamano [Mon, 9 Sep 2013 21:30:29 +0000 (14:30 -0700)] 
Merge branch 'jc/push-cas'

Allow a safer "rewind of the remote tip" push than blind "--force",
by requiring that the overwritten remote ref to be unchanged since
the new history to replace it was prepared.

The machinery is more or less ready.  The "--force" option is again
the big red button to override any safety, thanks to J6t's sanity
(the original round allowed --lockref to defeat --force).

The logic to choose the default implemented here is fragile
(e.g. "git fetch" after seeing a failure will update the
remote-tracking branch and will make the next "push" pass,
defeating the safety pretty easily).  It is suitable only for the
simplest workflows, and it may hurt users more than it helps them.

* jc/push-cas:
  push: teach --force-with-lease to smart-http transport
  send-pack: fix parsing of --force-with-lease option
  t5540/5541: smart-http does not support "--force-with-lease"
  t5533: test "push --force-with-lease"
  push --force-with-lease: tie it all together
  push --force-with-lease: implement logic to populate old_sha1_expect[]
  remote.c: add command line option parser for "--force-with-lease"
  builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN
  cache.h: move remote/connect API out of it

11 years agoMerge branch 'nd/clone-connectivity-shortcut'
Junio C Hamano [Mon, 9 Sep 2013 21:30:01 +0000 (14:30 -0700)] 
Merge branch 'nd/clone-connectivity-shortcut'

* nd/clone-connectivity-shortcut:
  smart http: use the same connectivity check on cloning

11 years agoMerge branch 'jc/diff-filter-negation'
Junio C Hamano [Mon, 9 Sep 2013 21:28:35 +0000 (14:28 -0700)] 
Merge branch 'jc/diff-filter-negation'

Teach "git diff --diff-filter" to express "I do not want to see
these classes of changes" more directly by listing only the
unwanted ones in lowercase (e.g. "--diff-filter=d" will show
everything but deletion) and deprecate "diff-files -q" which did
the same thing as "--diff-filter=d".

* jc/diff-filter-negation:
  diff: deprecate -q option to diff-files
  diff: allow lowercase letter to specify what change class to exclude
  diff: reject unknown change class given to --diff-filter
  diff: preparse --diff-filter string argument
  diff: factor out match_filter()
  diff: pass the whole diff_options to diffcore_apply_filter()

11 years agoMerge branch 'ms/fetch-prune-configuration'
Junio C Hamano [Mon, 9 Sep 2013 21:27:11 +0000 (14:27 -0700)] 
Merge branch 'ms/fetch-prune-configuration'

Allow fetch.prune and remote.*.prune configuration variables to be set,
and "git fetch" to behave as if "--prune" is given.

"git fetch" that honors remote.*.prune is fine, but I wonder if we
should somehow make "git push" aware of it as well.  Perhaps
remote.*.prune should not be just a boolean, but a 4-way "none",
"push", "fetch", "both"?

* ms/fetch-prune-configuration:
  fetch: make --prune configurable

11 years agogit-config: always treat --int as 64-bit internally
Jeff King [Sun, 8 Sep 2013 08:40:02 +0000 (04:40 -0400)] 
git-config: always treat --int as 64-bit internally

When you run "git config --int", the maximum size of integer
you get depends on how git was compiled, and what it
considers to be an "int".

This is almost useful, because your scripts calling "git
config" will behave similarly to git internally. But relying
on this is dubious; you have to actually know how git treats
each value internally (e.g., int versus unsigned long),
which is not documented and is subject to change. And even
if you know it is "unsigned long", we do not have a
git-config option to match that behavior.

Furthermore, you may simply be asking git to store a value
on your behalf (e.g., configuration for a hook). In that
case, the relevant range check has nothing at all to do with
git, but rather with whatever scripting tools you are using
(and git has no way of knowing what the appropriate range is
there).

Not only is the range check useless, but it is actively
harmful, as there is no way at all for scripts to look
at config variables with large values. For instance, one
cannot reliably get the value of pack.packSizeLimit via
git-config. On an LP64 system, git happily uses a 64-bit
"unsigned long" internally to represent the value, but the
script cannot read any value over 2G.

Ideally, the "--int" option would simply represent an
arbitrarily large integer. For practical purposes, however,
a 64-bit integer is large enough, and is much easier to
implement (and if somebody overflows it, we will still
notice the problem, and not simply return garbage).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoconfig: make numeric parsing errors more clear
Jeff King [Sun, 8 Sep 2013 08:38:22 +0000 (04:38 -0400)] 
config: make numeric parsing errors more clear

If we try to parse an integer config argument and get a
number outside of the representable range, we die with the
cryptic message: "bad config value for '%s'".

We can improve two things:

  1. Show the value that produced the error (e.g., bad
     config value '3g' for 'foo.bar').

  2. Mention the reason the value was rejected (e.g.,
     "invalid unit" versus "out of range").

A few tests need to be updated with the new output, but that
should not be representative of real-world breakage, as
scripts should not be depending on the exact text of our
stderr output, which is subject to i18n anyway.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoconfig: set errno in numeric git_parse_* functions
Jeff King [Sun, 8 Sep 2013 08:36:42 +0000 (04:36 -0400)] 
config: set errno in numeric git_parse_* functions

When we are parsing an integer or unsigned long, we use
the strto*max functions, which properly set errno to ERANGE
if we get a large value. However, we also do further range
checks after applying our multiplication factor, but do not
set ERANGE. This means that a caller cannot tell if an error
was caused by ERANGE or if the input was simply not a valid
number.

This patch teaches git_parse_signed and git_parse_unsigned to set
ERANGE for range errors, and EINVAL for other errors, so that the
caller can reliably tell these cases apart.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoconfig: properly range-check integer values
Jeff King [Sun, 8 Sep 2013 08:33:08 +0000 (04:33 -0400)] 
config: properly range-check integer values

When we look at a config value as an integer using the
git_config_int function, we carefully range-check the value
we get and complain if it is out of our range. But the range
we compare to is that of a "long", which we then cast to an
"int" in the function's return value. This means that on
systems where "int" and "long" have different sizes (e.g.,
LP64 systems), we may pass the range check, but then return
nonsense by truncating the value as we cast it to an int.

We can solve this by converting git_parse_long into
git_parse_int, and range-checking the "int" range. Nobody
actually cared that we used a "long" internally, since the
result was truncated anyway. And the only other caller of
git_parse_long is git_config_maybe_bool, which should be
fine to just use int (though we will now forbid out-of-range
nonsense like setting "merge.ff" to "10g" to mean "true",
which is probably a good thing).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoconfig: factor out integer parsing from range checks
Jeff King [Sun, 8 Sep 2013 08:29:27 +0000 (04:29 -0400)] 
config: factor out integer parsing from range checks

When we are parsing integers for config, we use an intmax_t
(or uintmax_t) internally, and then check against the size
of our result type at the end. We can parameterize the
maximum representable value, which will let us re-use the
parsing code for a variety of range checks.

Unfortunately, we cannot combine the signed and unsigned
parsing functions easily, as we have to rely on the signed
and unsigned C types internally.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit_remote_helpers: remove little used Python library
John Keeping [Sat, 7 Sep 2013 16:19:29 +0000 (17:19 +0100)] 
git_remote_helpers: remove little used Python library

When it was originally added, the git_remote_helpers library was used as
part of the tests of the remote-helper interface, but since commit
fc407f9 (Add new simplified git-remote-testgit, 2012-11-28) a simple
shell script is used for this.

A search on Ohloh [1] indicates that this library isn't used by any
external projects and even the Python remote helpers in contrib/ don't
use this library, so it is only used by its own test suite.

Since this is the only Python library in Git, removing it will make
packaging easier as the Python scripts only need to be installed for one
version of Python, whereas the library should be installed for all
available versions.

[1] http://code.ohloh.net/search?s=%22git_remote_helpers%22

Signed-off-by: John Keeping <john@keeping.me.uk>
Acked-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agopull: use $curr_branch_short more
René Scharfe [Sun, 8 Sep 2013 15:21:44 +0000 (17:21 +0200)] 
pull: use $curr_branch_short more

One of the first things git-pull.sh does is setting $curr_branch to
the target of HEAD and $curr_branch_short to the same but with the
leading "refs/heads/" removed.  Simplify the code by using
$curr_branch_short instead of setting $curr_branch to the same
shortened value.

The only other use of $curr_branch in that function doesn't have to
be replaced with $curr_branch_short because it just checks if the
string is empty.  That property is the same with or without the prefix
unless HEAD points to "refs/heads/" alone, which is invalid.

Noticed-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoremote-bzr: reuse bzrlib transports when possible
Richard Hansen [Sun, 8 Sep 2013 05:47:49 +0000 (01:47 -0400)] 
remote-bzr: reuse bzrlib transports when possible

Pass a list of open bzrlib.transport.Transport objects to each bzrlib
function that might create a transport.  This enables bzrlib to reuse
existing transports when possible, avoiding multiple concurrent
connections to the same remote server.

If the remote server is accessed via ssh, this fixes a couple of
problems:
  * If the user does not have keys loaded into an ssh agent, the user
    may be prompted for a password multiple times.
  * If the user is using OpenSSH and the ControlMaster setting is set
    to auto, git-remote-bzr might hang.  This is because bzrlib closes
    the multiple ssh sessions in an undefined order and might try to
    close the master ssh session before the other sessions.  The
    master ssh process will not exit until the other sessions have
    exited, causing a deadlock.  (The ssh sessions are closed in an
    undefined order because bzrlib relies on the Python garbage
    collector to trigger ssh session termination.)

Signed-off-by: Richard Hansen <rhansen@bbn.com>
Acked-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agol10n: de.po: use "das Tag" instead of "der Tag"
Ralf Thielow [Sun, 8 Sep 2013 14:28:36 +0000 (16:28 +0200)] 
l10n: de.po: use "das Tag" instead of "der Tag"

Use "das Tag" to avoid confusion with the German word "Tag" (day).

Reported-by: Dirk Heinrichs <dirk.heinrichs@altum.de>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
11 years agoDocumentation: make AsciiDoc links always point to HTML files
Sebastian Schuberth [Fri, 6 Sep 2013 20:03:22 +0000 (22:03 +0200)] 
Documentation: make AsciiDoc links always point to HTML files

AsciiDoc's "link" is supposed to create hyperlinks for HTML output, so
prefer a "link" to point to an HTML file instead of a text file if an HTML
version of the file is being generated. For RelNotes, keep pointing to
text files as no equivalent HTML files are generated.

If appropriate, also update the link description to not contain the linked
file's extension.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-svn: fix termination issues for remote svn connections
Uli Heller [Tue, 3 Sep 2013 07:35:29 +0000 (09:35 +0200)] 
git-svn: fix termination issues for remote svn connections

git-svn used in combination with serf to talk to svn repository
served over HTTPS dumps core on termination.

This is caused by a bug in serf, and the most recent serf release
1.3.1 still exhibits the problem; a fix for the bug exists (see
https://code.google.com/p/serf/source/detail?r=2146).

Until the bug is fixed, work around the issue within the git perl
module Ra.pm by freeing the private copy of the remote access object
on termination, which seems to be sufficient to prevent the error
from happening.

Note: Since subversion-1.8.0 and later do require serf-1.2.1 or
later, this issue typically shows up when upgrading to a recent
version of subversion.

Credits go to Jonathan Lambrechts for proposing a fix to Ra.pm,
Evgeny Kotkov and Ivan Zhakov for fixing the issue in serf and
pointing me to that fix.

Signed-off-by: Uli Heller <uli.heller@daemons-point.com>
Tested-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotypofix: cherry is spelled with two ars
Junio C Hamano [Thu, 5 Sep 2013 21:51:17 +0000 (14:51 -0700)] 
typofix: cherry is spelled with two ars

Do not say chery; it is spelled cherry.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSync with maint
Junio C Hamano [Thu, 5 Sep 2013 21:41:40 +0000 (14:41 -0700)] 
Sync with maint

* maint:
  Documentation/git-merge.txt: fix formatting of example block

11 years agoMerge branch 'nd/fetch-pack-shallow-fix' into maint
Junio C Hamano [Thu, 5 Sep 2013 21:40:58 +0000 (14:40 -0700)] 
Merge branch 'nd/fetch-pack-shallow-fix' into maint

The recent "short-cut clone connectivity check" topic broke a shallow
repository when a fetch operation tries to auto-follow tags.

* nd/fetch-pack-shallow-fix:
  fetch-pack: do not remove .git/shallow file when --depth is not specified

11 years agoMerge branch 'hv/config-from-blob' into maint
Junio C Hamano [Thu, 5 Sep 2013 21:40:18 +0000 (14:40 -0700)] 
Merge branch 'hv/config-from-blob' into maint

Compilation fix on platforms with fgetc() and friends defined as
macros.

* hv/config-from-blob:
  config: do not use C function names as struct members

11 years agoMerge branch 'maint-1.8.3' into maint
Junio C Hamano [Thu, 5 Sep 2013 21:24:59 +0000 (14:24 -0700)] 
Merge branch 'maint-1.8.3' into maint

* maint-1.8.3:
  Documentation/git-merge.txt: fix formatting of example block

11 years agoMerge branch 'maint-1.8.2' into maint-1.8.3
Junio C Hamano [Thu, 5 Sep 2013 21:24:52 +0000 (14:24 -0700)] 
Merge branch 'maint-1.8.2' into maint-1.8.3

* maint-1.8.2:
  Documentation/git-merge.txt: fix formatting of example block

11 years agoadd: lift the pathspec magic restriction on "add -p"
Nguyễn Thái Ngọc Duy [Thu, 5 Sep 2013 03:40:39 +0000 (10:40 +0700)] 
add: lift the pathspec magic restriction on "add -p"

Since 480ca64 (convert run_add_interactive to use struct pathspec -
2013-07-14), we have unconditionally passed :(prefix)xxx to
add-interactive.perl. It implies that all commands
add-interactive.perl calls must be aware of pathspec magic, or
:(prefix) is barfed. The restriction to :/ only becomes unnecessary.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agopathspec: catch prepending :(prefix) on pathspec with short magic
Nguyễn Thái Ngọc Duy [Thu, 5 Sep 2013 03:40:38 +0000 (10:40 +0700)] 
pathspec: catch prepending :(prefix) on pathspec with short magic

:(prefix) is in the long form. Suppose people pass :!foo with '!'
being the short form of magic 'bar', the code will happily turn it to
:(prefix..)!foo, which makes '!' part of the path and no longer a magic.

The correct form must be ':(prefix..,bar)foo', but as so far we
haven't had any magic in short form yet (*), the code to convert from
short form to long one will be inactive anyway. Let's postpone it
until a real short form magic appears.

(*) The short form magic '/' is a special case and won't be caught by
this die(), which is correct. When '/' magic is detected, prefixlen is
set back to 0 and the whole "if (prefixlen..)" block is skipped.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoDocumentation/git-merge.txt: fix formatting of example block
Andreas Schwab [Thu, 5 Sep 2013 15:12:45 +0000 (17:12 +0200)] 
Documentation/git-merge.txt: fix formatting of example block

You need at least four dashes in a line to have it recognized as listing
block delimiter by asciidoc.

Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotypofix: commit is spelled with two ems
Junio C Hamano [Wed, 4 Sep 2013 22:28:45 +0000 (15:28 -0700)] 
typofix: commit is spelled with two ems

There are a handful of instances where we say commmit when we mean
commit.  Fix them.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoglossary: fix and clarify the definition of 'ref'
Richard Hansen [Wed, 4 Sep 2013 19:04:34 +0000 (15:04 -0400)] 
glossary: fix and clarify the definition of 'ref'

Signed-off-by: Richard Hansen <rhansen@bbn.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agorevisions.txt: fix and clarify <rev>^{<type>}
Richard Hansen [Wed, 4 Sep 2013 19:04:33 +0000 (15:04 -0400)] 
revisions.txt: fix and clarify <rev>^{<type>}

If possible, <rev> will be dereferenced even if it is not a tag type
(e.g., commit dereferenced to a tree).

Signed-off-by: Richard Hansen <rhansen@bbn.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoglossary: more precise definition of tree-ish (a.k.a. treeish)
Richard Hansen [Wed, 4 Sep 2013 19:04:32 +0000 (15:04 -0400)] 
glossary: more precise definition of tree-ish (a.k.a. treeish)

A tree-ish isn't a ref.  Also, mention dereferencing, and that a
commit dereferences to a tree, to support gitrevisions(7) and
rev-parse's error messages.

Signed-off-by: Richard Hansen <rhansen@bbn.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouse 'commit-ish' instead of 'committish'
Richard Hansen [Wed, 4 Sep 2013 19:04:31 +0000 (15:04 -0400)] 
use 'commit-ish' instead of 'committish'

Replace 'committish' in documentation and comments with 'commit-ish'
to match gitglossary(7) and to be consistent with 'tree-ish'.

The only remaining instances of 'committish' are:
  * variable, function, and macro names
  * "(also committish)" in the definition of commit-ish in
    gitglossary[7]

Signed-off-by: Richard Hansen <rhansen@bbn.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agouse 'tree-ish' instead of 'treeish'
Richard Hansen [Wed, 4 Sep 2013 19:04:30 +0000 (15:04 -0400)] 
use 'tree-ish' instead of 'treeish'

Replace 'treeish' in documentation and comments with 'tree-ish' to
match gitglossary(7).

The only remaining instances of 'treeish' are:
  * variable, function, and macro names
  * "(also treeish)" in the definition of tree-ish in gitglossary(7)

Signed-off-by: Richard Hansen <rhansen@bbn.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoglossary: define commit-ish (a.k.a. committish)
Richard Hansen [Wed, 4 Sep 2013 19:04:29 +0000 (15:04 -0400)] 
glossary: define commit-ish (a.k.a. committish)

Signed-off-by: Richard Hansen <rhansen@bbn.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoglossary: mention 'treeish' as an alternative to 'tree-ish'
Richard Hansen [Wed, 4 Sep 2013 19:04:28 +0000 (15:04 -0400)] 
glossary: mention 'treeish' as an alternative to 'tree-ish'

The documentation contains a mix of the two spellings, so include both
in the glossary so that a search for either will lead to the
definition.

Signed-off-by: Richard Hansen <rhansen@bbn.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agopull: allow pull to preserve merges when rebasing
Stephen Haberman [Tue, 13 Aug 2013 03:43:42 +0000 (22:43 -0500)] 
pull: allow pull to preserve merges when rebasing

If a user is working on master, and has merged in their feature branch, but now
has to "git pull" because master moved, with pull.rebase their feature branch
will be flattened into master.

This is because "git pull" currently does not know about rebase's preserve
merges flag, which would avoid this behavior, as it would instead replay just
the merge commit of the feature branch onto the new master, and not replay each
individual commit in the feature branch.

Add a --rebase=preserve option, which will pass along --preserve-merges to
rebase.

Also add 'preserve' to the allowed values for the pull.rebase config setting.

Signed-off-by: Stephen Haberman <stephen@exigencecorp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoUpdate draft release notes after merging the first batch of topics
Junio C Hamano [Wed, 4 Sep 2013 19:41:05 +0000 (12:41 -0700)] 
Update draft release notes after merging the first batch of topics

11 years agoMerge branch 'sb/parseopt-boolean-removal'
Junio C Hamano [Wed, 4 Sep 2013 19:39:02 +0000 (12:39 -0700)] 
Merge branch 'sb/parseopt-boolean-removal'

Convert most uses of OPT_BOOLEAN/OPTION_BOOLEAN that can use
OPT_BOOL/OPTION_BOOLEAN which have much saner semantics, and turn
remaining ones into OPT_SET_INT, OPT_COUNTUP, etc. as necessary.

* sb/parseopt-boolean-removal:
  revert: use the OPT_CMDMODE for parsing, reducing code
  checkout-index: fix negations of even numbers of -n
  config parsing options: allow one flag multiple times
  hash-object: replace stdin parsing OPT_BOOLEAN by OPT_COUNTUP
  branch, commit, name-rev: ease up boolean conditions
  checkout: remove superfluous local variable
  log, format-patch: parsing uses OPT__QUIET
  Replace deprecated OPT_BOOLEAN by OPT_BOOL
  Remove deprecated OPTION_BOOLEAN for parsing arguments

11 years agoMerge branch 'jc/parseopt-command-modes'
Junio C Hamano [Wed, 4 Sep 2013 19:37:52 +0000 (12:37 -0700)] 
Merge branch 'jc/parseopt-command-modes'

Many commands use --dashed-option as a operation mode selector
(e.g. "git tag --delete") that the user can use at most one
(e.g. "git tag --delete --verify" is a nonsense) and you cannot
negate (e.g. "git tag --no-delete" is a nonsense).  Make it easier
for users of parse_options() to enforce these restrictions.

* jc/parseopt-command-modes:
  tag: use OPT_CMDMODE
  parse-options: add OPT_CMDMODE()