git
10 years agoMerge branch 'dt/refs-check-refname-component-sse' into next
Junio C Hamano [Fri, 20 Jun 2014 20:39:51 +0000 (13:39 -0700)] 
Merge branch 'dt/refs-check-refname-component-sse' into next

Further micro-optimization of a leaf-function.

* dt/refs-check-refname-component-sse:
  refs.c: SSE2 optimizations for check_refname_component

10 years agoMerge branch 'jk/pretty-G-format-fixes' into next
Junio C Hamano [Fri, 20 Jun 2014 20:39:49 +0000 (13:39 -0700)] 
Merge branch 'jk/pretty-G-format-fixes' into next

* jk/pretty-G-format-fixes:
  pretty: avoid reading past end-of-string with "%G"
  t7510: check %G* pretty-format output
  t7510: test a commit signed by an unknown key
  t7510: use consistent &&-chains in loop
  t7510: stop referring to master in later tests

10 years agoMerge branch 'ye/http-extract-charset' into next
Junio C Hamano [Fri, 20 Jun 2014 20:39:32 +0000 (13:39 -0700)] 
Merge branch 'ye/http-extract-charset' into next

* ye/http-extract-charset:
  http: fix charset detection of extract_content_type()

10 years agoMerge branch 'ye/doc-http-proto' into next
Junio C Hamano [Fri, 20 Jun 2014 20:39:29 +0000 (13:39 -0700)] 
Merge branch 'ye/doc-http-proto' into next

* ye/doc-http-proto:
  http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616

10 years agoMerge branch 'bc/fix-rebase-merge-skip' into next
Junio C Hamano [Fri, 20 Jun 2014 20:37:39 +0000 (13:37 -0700)] 
Merge branch 'bc/fix-rebase-merge-skip' into next

"git rebase --skip" did not work well when it stopped due to a
conflict twice in a row.

* bc/fix-rebase-merge-skip:
  rebase--merge: fix --skip with two conflicts in a row

10 years agoMerge branch 'rs/blame-refactor' into next
Junio C Hamano [Fri, 20 Jun 2014 20:36:47 +0000 (13:36 -0700)] 
Merge branch 'rs/blame-refactor' into next

* rs/blame-refactor:
  blame: simplify prepare_lines()
  blame: factor out get_next_line()

10 years agoMerge branch 'pb/trim-trailing-spaces' into next
Junio C Hamano [Fri, 20 Jun 2014 20:36:32 +0000 (13:36 -0700)] 
Merge branch 'pb/trim-trailing-spaces' into next

* pb/trim-trailing-spaces:
  t0008: do not depend on 'echo' handling backslashes specially

10 years agoMerge branch 'mc/doc-submodule-sync-recurse' into next
Junio C Hamano [Fri, 20 Jun 2014 20:35:32 +0000 (13:35 -0700)] 
Merge branch 'mc/doc-submodule-sync-recurse' into next

* mc/doc-submodule-sync-recurse:
  submodule: document "sync --recursive"

10 years agorefs.c: SSE2 optimizations for check_refname_component
David Turner [Wed, 18 Jun 2014 05:54:42 +0000 (01:54 -0400)] 
refs.c: SSE2 optimizations for check_refname_component

Optimize check_refname_component using SSE2 on x86_64.

git rev-parse HEAD is a good test-case for this, since it does almost
nothing except parse refs.  For one particular repo with about 60k
refs, almost all packed, the timings are:

Look up table: 29 ms
SSE2:          23 ms

This cuts about 20% off of the runtime.

Ondřej Bílka <neleai@seznam.cz> suggested an SSE2 approach to the
substring searches, which netted a speed boost over the SSE4.2 code I
had initially written.

Signed-off-by: David Turner <dturner@twitter.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agohttp: fix charset detection of extract_content_type()
Yi EungJun [Tue, 17 Jun 2014 22:11:53 +0000 (07:11 +0900)] 
http: fix charset detection of extract_content_type()

extract_content_type() could not extract a charset parameter if the
parameter is not the first one and there is a whitespace and a following
semicolon just before the parameter. For example:

    text/plain; format=fixed ;charset=utf-8

And it also could not handle correctly some other cases, such as:

    text/plain; charset=utf-8; format=fixed
    text/plain; some-param="a long value with ;semicolons;"; charset=utf-8

Thanks-to: Jeff King <peff@peff.net>
Signed-off-by: Yi EungJun <eungjun.yi@navercorp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agopretty: avoid reading past end-of-string with "%G"
Jeff King [Tue, 17 Jun 2014 00:07:07 +0000 (20:07 -0400)] 
pretty: avoid reading past end-of-string with "%G"

If the user asks for --format=%G with nothing else, we
correctly realize that "%G" is not a valid placeholder (it
should be "%G?", "%GK", etc). But we still tell the
strbuf_expand code that we consumed 2 characters, causing it
to jump over the trailing NUL and output garbage.

This also fixes the case where "%GX" would be consumed (and
produce no output). In other cases, we pass unrecognized
placeholders through to the final string.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot7510: check %G* pretty-format output
Jeff King [Tue, 17 Jun 2014 00:06:24 +0000 (20:06 -0400)] 
t7510: check %G* pretty-format output

We do not check these along with the other pretty-format
placeholders in t6006, because we need signed commits to
make them interesting. t7510 has such commits, and can
easily exercise them in addition to the regular
--show-signature code path.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot7510: test a commit signed by an unknown key
Jeff King [Tue, 17 Jun 2014 00:05:54 +0000 (20:05 -0400)] 
t7510: test a commit signed by an unknown key

We tested both good and bad signatures, but not ones made
correctly but with a key for which we have no trust.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot7510: use consistent &&-chains in loop
Michael J Gruber [Tue, 17 Jun 2014 00:03:43 +0000 (20:03 -0400)] 
t7510: use consistent &&-chains in loop

We check multiple commits in a loop. Because we want to
break out of the loop if any single iteration fails, we use
a subshell/exit like:

  (
for i in $stuff
do
do-something $i || exit 1
done
  )

However, we are inconsistent in our loop body. Some commands
get their own "|| exit 1", and others try to chain to the
next command with "&&", like:

  X &&
  Y || exit 1
  Z || exit 1

This is a little hard to read and follow, because X and Y
are treated differently for no good reason. But much worse,
the second loop follows a similar pattern and gets it wrong.
"Y" is expected to fail, so we use "&& exit 1", giving us:

  X &&
  Y && exit 1
  Z || exit 1

That gets the test for X wrong (we do not exit unless both X
fails and Y unexpectedly succeeds, but we would want to exit
if _either_ is wrong). We can write this clearly and
correctly by consistently using "&&", followed by a single
"|| exit 1", and negating Y with "!" (as we would in a
normal &&-chain). Like:

  X &&
  ! Y &&
  Z || exit 1

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot7510: stop referring to master in later tests
Jeff King [Mon, 16 Jun 2014 23:59:59 +0000 (19:59 -0400)] 
t7510: stop referring to master in later tests

Our setup creates a sequence of commits, each with its own
tag. However, we sometimes refer to "seventh-signed" as
"master". This works, since it is at the tip of the created
branch, but is brittle if new tests need to add more
commits. Let's use its tag name to be unambiguous.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agorebase--merge: fix --skip with two conflicts in a row
brian m. carlson [Mon, 16 Jun 2014 00:01:25 +0000 (00:01 +0000)] 
rebase--merge: fix --skip with two conflicts in a row

If git rebase --merge encountered a conflict, --skip would not work if the
next commit also conflicted.  The msgnum file would never be updated with
the new patch number, so no patch would actually be skipped, resulting in an
inescapable loop.

Update the msgnum file's value as the first thing in call_merge.  This also
avoids an "Already applied" message when skipping a commit.  There is no
visible change for the other contexts in which call_merge is invoked, as the
msgnum file's value remains unchanged in those situations.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoSync with master
Junio C Hamano [Mon, 16 Jun 2014 19:52:17 +0000 (12:52 -0700)] 
Sync with master

* master:
  Third batch for 2.1

10 years agoMerge branch 'jk/commit-buffer-length' into next
Junio C Hamano [Mon, 16 Jun 2014 19:52:06 +0000 (12:52 -0700)] 
Merge branch 'jk/commit-buffer-length' into next

* jk/commit-buffer-length:
  reuse cached commit buffer when parsing signatures
  commit: record buffer length in cache
  commit: convert commit->buffer to a slab
  commit-slab: provide a static initializer
  use get_commit_buffer everywhere
  convert logmsg_reencode to get_commit_buffer
  use get_commit_buffer to avoid duplicate code
  use get_cached_commit_buffer where appropriate
  provide helpers to access the commit buffer
  provide a helper to set the commit buffer
  provide a helper to free commit buffer
  sequencer: use logmsg_reencode in get_message
  logmsg_reencode: return const buffer
  do not create "struct commit" with xcalloc
  commit: push commit_index update into alloc_commit_node
  alloc: include any-object allocations in alloc_report
  replace dangerous uses of strbuf_attach
  commit_tree: take a pointer/len pair rather than a const strbuf

10 years agoMerge branch 'sp/complete-ext-alias' into next
Junio C Hamano [Mon, 16 Jun 2014 19:52:05 +0000 (12:52 -0700)] 
Merge branch 'sp/complete-ext-alias' into next

* sp/complete-ext-alias:
  completion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases

10 years agoMerge branch 'mc/git-p4-prepare-p4-only' into next
Junio C Hamano [Mon, 16 Jun 2014 19:52:04 +0000 (12:52 -0700)] 
Merge branch 'mc/git-p4-prepare-p4-only' into next

* mc/git-p4-prepare-p4-only:
  git-p4: fix submit in non --prepare-p4-only mode

10 years agoMerge branch 'jk/repack-pack-writebitmaps-config' into next
Junio C Hamano [Mon, 16 Jun 2014 19:52:02 +0000 (12:52 -0700)] 
Merge branch 'jk/repack-pack-writebitmaps-config' into next

* jk/repack-pack-writebitmaps-config:
  t7700: drop explicit --no-pack-kept-objects from .keep test
  repack: introduce repack.writeBitmaps config option
  repack: simplify handling of --write-bitmap-index
  pack-objects: stop respecting pack.writebitmaps

10 years agoMerge branch 'nd/init-restore-env' into next
Junio C Hamano [Mon, 16 Jun 2014 19:51:59 +0000 (12:51 -0700)] 
Merge branch 'nd/init-restore-env' into next

* nd/init-restore-env:
  git potty: restore environments after alias expansion

10 years agoMerge branch 'jk/repack-pack-keep-objects' into next
Junio C Hamano [Mon, 16 Jun 2014 19:51:51 +0000 (12:51 -0700)] 
Merge branch 'jk/repack-pack-keep-objects' into next

* jk/repack-pack-keep-objects:
  repack: s/write_bitmap/&s/ in code
  repack: respect pack.writebitmaps
  repack: do not accidentally pack kept objects by default

10 years agoMerge branch 'fr/sequencer-fail-with-not-one-upon-no-ff' into next
Junio C Hamano [Mon, 16 Jun 2014 19:51:45 +0000 (12:51 -0700)] 
Merge branch 'fr/sequencer-fail-with-not-one-upon-no-ff' into next

* fr/sequencer-fail-with-not-one-upon-no-ff:
  sequencer: signal failed ff as an aborted, not a conflicted merge

10 years agoThird batch for 2.1
Junio C Hamano [Mon, 16 Jun 2014 19:39:35 +0000 (12:39 -0700)] 
Third batch for 2.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'ib/test-selectively-run'
Junio C Hamano [Mon, 16 Jun 2014 19:18:56 +0000 (12:18 -0700)] 
Merge branch 'ib/test-selectively-run'

Allow specifying only certain individual test pieces to be run
using a range notation (e.g. "t1234-test.sh --run='1-4 6 8 9-'").

* ib/test-selectively-run:
  t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests
  test-lib: '--run' to run only specific tests
  test-lib: tests skipped by GIT_SKIP_TESTS say so
  test-lib: document short options in t/README

10 years agoMerge branch 'ta/string-list-init'
Junio C Hamano [Mon, 16 Jun 2014 19:18:55 +0000 (12:18 -0700)] 
Merge branch 'ta/string-list-init'

* ta/string-list-init:
  string-list: spell all values out that are given to a string_list initializer

10 years agoMerge branch 'jm/dedup-test-config'
Junio C Hamano [Mon, 16 Jun 2014 19:18:54 +0000 (12:18 -0700)] 
Merge branch 'jm/dedup-test-config'

* jm/dedup-test-config:
  t/t7810-grep.sh: remove duplicate test_config()

10 years agoMerge branch 'dt/refs-check-refname-component-optim'
Junio C Hamano [Mon, 16 Jun 2014 19:18:52 +0000 (12:18 -0700)] 
Merge branch 'dt/refs-check-refname-component-optim'

* dt/refs-check-refname-component-optim:
  refs.c: optimize check_refname_component()

10 years agoMerge branch 'sk/test-cmp-bin'
Junio C Hamano [Mon, 16 Jun 2014 19:18:50 +0000 (12:18 -0700)] 
Merge branch 'sk/test-cmp-bin'

* sk/test-cmp-bin:
  t5000, t5003: do not use test_cmp to compare binary files

10 years agoMerge branch 'sh/enable-preloadindex'
Junio C Hamano [Mon, 16 Jun 2014 19:18:49 +0000 (12:18 -0700)] 
Merge branch 'sh/enable-preloadindex'

* sh/enable-preloadindex:
  environment.c: enable core.preloadindex by default

10 years agoMerge branch 'rs/read-ref-at'
Junio C Hamano [Mon, 16 Jun 2014 19:18:48 +0000 (12:18 -0700)] 
Merge branch 'rs/read-ref-at'

* rs/read-ref-at:
  refs.c: change read_ref_at to use the reflog iterators

10 years agoMerge branch 'jk/error-resolve-conflict-advice'
Junio C Hamano [Mon, 16 Jun 2014 19:18:47 +0000 (12:18 -0700)] 
Merge branch 'jk/error-resolve-conflict-advice'

* jk/error-resolve-conflict-advice:
  error_resolve_conflict: drop quotations around operation
  error_resolve_conflict: rewrap advice message

10 years agoMerge branch 'rs/pack-objects-no-unnecessary-realloc'
Junio C Hamano [Mon, 16 Jun 2014 19:18:42 +0000 (12:18 -0700)] 
Merge branch 'rs/pack-objects-no-unnecessary-realloc'

Avoid unnecessary copy of previous contents when extending the
hashtable used in pack-objects.

* rs/pack-objects-no-unnecessary-realloc:
  pack-objects: use free()+xcalloc() instead of xrealloc()+memset()

10 years agoMerge branch 'lt/log-auto-decorate'
Junio C Hamano [Mon, 16 Jun 2014 19:18:41 +0000 (12:18 -0700)] 
Merge branch 'lt/log-auto-decorate'

* lt/log-auto-decorate:
  git log: support "auto" decorations

10 years agoMerge branch 'jm/doc-wording-tweaks'
Junio C Hamano [Mon, 16 Jun 2014 19:18:39 +0000 (12:18 -0700)] 
Merge branch 'jm/doc-wording-tweaks'

* jm/doc-wording-tweaks:
  Documentation: wording fixes in the user manual and glossary

10 years agoMerge branch 'jm/format-patch-mail-sig'
Junio C Hamano [Mon, 16 Jun 2014 19:18:38 +0000 (12:18 -0700)] 
Merge branch 'jm/format-patch-mail-sig'

* jm/format-patch-mail-sig:
  format-patch: add "--signature-file=<file>" option
  format-patch: make newline after signature conditional

10 years agoMerge branch 'jk/http-errors'
Junio C Hamano [Mon, 16 Jun 2014 19:18:35 +0000 (12:18 -0700)] 
Merge branch 'jk/http-errors'

Propagate the error messages from the webserver better to the
client coming over the HTTP transport.

* jk/http-errors:
  http: default text charset to iso-8859-1
  remote-curl: reencode http error messages
  strbuf: add strbuf_reencode helper
  http: optionally extract charset parameter from content-type
  http: extract type/subtype portion of content-type
  t5550: test display of remote http error messages
  t/lib-httpd: use write_script to copy CGI scripts
  test-lib: preserve GIT_CURL_VERBOSE from the environment

10 years agoMerge branch 'ow/config-mailmap-pathname'
Junio C Hamano [Mon, 16 Jun 2014 19:18:24 +0000 (12:18 -0700)] 
Merge branch 'ow/config-mailmap-pathname'

mailmap.file configuration names a pathname, hence should honor
~/path and ~user/path as its value.

* ow/config-mailmap-pathname:
  config: respect '~' and '~user' in mailmap.file

10 years agoMerge branch 'fc/remote-helper-refmap'
Junio C Hamano [Mon, 16 Jun 2014 19:18:15 +0000 (12:18 -0700)] 
Merge branch 'fc/remote-helper-refmap'

Allow remote-helper/fast-import based transport to rename the refs
while transferring the history.

* fc/remote-helper-refmap:
  transport-helper: remove unnecessary strbuf resets
  transport-helper: add support to delete branches
  fast-export: add support to delete refs
  fast-import: add support to delete refs
  transport-helper: add support to push symbolic refs
  transport-helper: add support for old:new refspec
  fast-export: add new --refspec option
  fast-export: improve argument parsing

10 years agoMerge branch 'nd/daemonize-gc'
Junio C Hamano [Mon, 16 Jun 2014 19:18:12 +0000 (12:18 -0700)] 
Merge branch 'nd/daemonize-gc'

"git gc --auto" was recently changed to run in the background to
give control back early to the end-user sitting in front of the
terminal, but it forgot that housekeeping involving reflogs should
be done without other processes competing for accesses to the refs.

* nd/daemonize-gc:
  gc --auto: do not lock refs in the background

10 years agoMerge branch 'jm/t9138-style-fix'
Junio C Hamano [Mon, 16 Jun 2014 19:18:09 +0000 (12:18 -0700)] 
Merge branch 'jm/t9138-style-fix'

* jm/t9138-style-fix:
  t9138-git-svn-authors-prog.sh fixups

10 years agoMerge branch 'jm/instaweb-apache-24'
Junio C Hamano [Mon, 16 Jun 2014 19:18:06 +0000 (12:18 -0700)] 
Merge branch 'jm/instaweb-apache-24'

* jm/instaweb-apache-24:
  git-instaweb: add support for Apache 2.4

10 years agoMerge branch 'jl/remote-rm-prune'
Junio C Hamano [Mon, 16 Jun 2014 19:17:58 +0000 (12:17 -0700)] 
Merge branch 'jl/remote-rm-prune'

"git remote rm" and "git remote prune" can involve removing many
refs at once, which is not a very efficient thing to do when very
many refs exist in the packed-refs file.

* jl/remote-rm-prune:
  remote prune: optimize "dangling symref" check/warning
  remote: repack packed-refs once when deleting multiple refs
  remote rm: delete remote configuration as the last

10 years agoMerge branch 'jk/complete-merge-pull'
Junio C Hamano [Mon, 16 Jun 2014 19:17:53 +0000 (12:17 -0700)] 
Merge branch 'jk/complete-merge-pull'

The completion code did not know about quite a few options that are
common between "git merge" and "git pull", and a couple of options
unique to "git merge".

* jk/complete-merge-pull:
  completion: add missing options for git-merge
  completion: add a note that merge options are shared

10 years agoMerge branch 'bg/xcalloc-nmemb-then-size'
Junio C Hamano [Mon, 16 Jun 2014 19:17:50 +0000 (12:17 -0700)] 
Merge branch 'bg/xcalloc-nmemb-then-size'

Like calloc(3), xcalloc() takes nmemb and then size.

* bg/xcalloc-nmemb-then-size:
  transport-helper.c: rearrange xcalloc arguments
  remote.c: rearrange xcalloc arguments
  reflog-walk.c: rearrange xcalloc arguments
  pack-revindex.c: rearrange xcalloc arguments
  notes.c: rearrange xcalloc arguments
  imap-send.c: rearrange xcalloc arguments
  http-push.c: rearrange xcalloc arguments
  diff.c: rearrange xcalloc arguments
  config.c: rearrange xcalloc arguments
  commit.c: rearrange xcalloc arguments
  builtin/remote.c: rearrange xcalloc arguments
  builtin/ls-remote.c: rearrange xcalloc arguments

10 years agohttp-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616
Yi EungJun [Sat, 14 Jun 2014 19:09:29 +0000 (04:09 +0900)] 
http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616

Signed-off-by: Yi EungJun <eungjun.yi@navercorp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'jl/status-added-submodule-is-never-ignored'
Junio C Hamano [Mon, 16 Jun 2014 17:07:19 +0000 (10:07 -0700)] 
Merge branch 'jl/status-added-submodule-is-never-ignored'

submodule.*.ignore and diff.ignoresubmodules are used to ignore all
submodule changes in "diff" output, but it can be confusing to
apply these configuration values to status and commit.

This is a backward-incompatible change, but should be so in a good
way (aka bugfix).

* jl/status-added-submodule-is-never-ignored:
  commit -m: commit staged submodules regardless of ignore config
  status/commit: show staged submodules regardless of ignore config

10 years agoMerge branch 'cb/byte-order'
Junio C Hamano [Mon, 16 Jun 2014 17:07:17 +0000 (10:07 -0700)] 
Merge branch 'cb/byte-order'

Compatibility enhancement for Solaris.

* cb/byte-order:
  compat/bswap.h: fix endianness detection
  compat/bswap.h: restore preference __BIG_ENDIAN over BIG_ENDIAN
  compat/bswap.h: detect endianness on more platforms that don't use BYTE_ORDER

10 years agoMerge branch 'jk/strbuf-tolower'
Junio C Hamano [Mon, 16 Jun 2014 17:07:16 +0000 (10:07 -0700)] 
Merge branch 'jk/strbuf-tolower'

* jk/strbuf-tolower:
  strbuf: add strbuf_tolower function

10 years agoMerge branch 'jk/daemon-tolower'
Junio C Hamano [Mon, 16 Jun 2014 17:07:14 +0000 (10:07 -0700)] 
Merge branch 'jk/daemon-tolower'

* jk/daemon-tolower:
  daemon/config: factor out duplicate xstrdup_tolower

10 years agoMerge branch 'as/pretty-truncate'
Junio C Hamano [Mon, 16 Jun 2014 17:07:12 +0000 (10:07 -0700)] 
Merge branch 'as/pretty-truncate'

* as/pretty-truncate:
  pretty.c: format string with truncate respects logOutputEncoding
  t4205, t6006: add tests that fail with i18n.logOutputEncoding set
  t4205 (log-pretty-format): use `tformat` rather than `format`
  t4041, t4205, t6006, t7102: don't hardcode tested encoding value
  t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs

10 years agoMerge branch 'jk/diff-follow-must-take-one-pathspec'
Junio C Hamano [Mon, 16 Jun 2014 17:07:09 +0000 (10:07 -0700)] 
Merge branch 'jk/diff-follow-must-take-one-pathspec'

* jk/diff-follow-must-take-one-pathspec:
  move "--follow needs one pathspec" rule to diff_setup_done

10 years agoMerge branch 'sk/windows-unc-path'
Junio C Hamano [Mon, 16 Jun 2014 17:07:03 +0000 (10:07 -0700)] 
Merge branch 'sk/windows-unc-path'

* sk/windows-unc-path:
  Windows: allow using UNC path for git repository

10 years agoMerge branch 'rr/rebase-autostash-fix'
Junio C Hamano [Mon, 16 Jun 2014 17:06:57 +0000 (10:06 -0700)] 
Merge branch 'rr/rebase-autostash-fix'

* rr/rebase-autostash-fix:
  rebase -i: test "Nothing to do" case with autostash
  rebase -i: handle "Nothing to do" case with autostash

10 years agoMerge branch 'jk/report-fail-to-read-objects-better'
Junio C Hamano [Mon, 16 Jun 2014 17:06:15 +0000 (10:06 -0700)] 
Merge branch 'jk/report-fail-to-read-objects-better'

* jk/report-fail-to-read-objects-better:
  open_sha1_file: report "most interesting" errno

10 years agoMerge branch 'jk/diff-files-assume-unchanged'
Junio C Hamano [Mon, 16 Jun 2014 17:06:12 +0000 (10:06 -0700)] 
Merge branch 'jk/diff-files-assume-unchanged'

* jk/diff-files-assume-unchanged:
  run_diff_files: do not look at uninitialized stat data

10 years agoMerge branch 'jk/argv-array-for-child-process'
Junio C Hamano [Mon, 16 Jun 2014 17:06:10 +0000 (10:06 -0700)] 
Merge branch 'jk/argv-array-for-child-process'

* jk/argv-array-for-child-process:
  argv-array: drop "detach" code
  get_importer: use run-command's internal argv_array
  get_exporter: use argv_array
  get_helper: use run-command's internal argv_array
  git_connect: use argv_array
  run_column_filter: use argv_array
  run-command: store an optional argv_array

10 years agoMerge branch 'sk/wincred'
Junio C Hamano [Mon, 16 Jun 2014 17:06:08 +0000 (10:06 -0700)] 
Merge branch 'sk/wincred'

* sk/wincred:
  wincred: avoid overwriting configured variables
  wincred: add install target

10 years agoMerge branch 'jk/do-not-run-httpd-tests-as-root'
Junio C Hamano [Mon, 16 Jun 2014 17:06:05 +0000 (10:06 -0700)] 
Merge branch 'jk/do-not-run-httpd-tests-as-root'

* jk/do-not-run-httpd-tests-as-root:
  t/lib-httpd: require SANITY prereq

10 years agoMerge branch 'cc/replace-edit'
Junio C Hamano [Mon, 16 Jun 2014 17:06:01 +0000 (10:06 -0700)] 
Merge branch 'cc/replace-edit'

"git replace" learns a new "--edit" option.

* cc/replace-edit:
  Documentation: replace: describe new --edit option
  replace: add --edit to usage string
  replace: add tests for --edit
  replace: die early if replace ref already exists
  replace: refactor checking ref validity
  replace: make sure --edit results in a different object
  replace: add --edit option
  replace: factor object resolution out of replace_object
  replace: use OPT_CMDMODE to handle modes
  replace: refactor command-mode determination

10 years agoMerge branch 'mt/patch-id-stable' (early part)
Junio C Hamano [Mon, 16 Jun 2014 17:05:37 +0000 (10:05 -0700)] 
Merge branch 'mt/patch-id-stable' (early part)

* 'mt/patch-id-stable' (early part):
  patch-id-test: test stable and unstable behaviour
  patch-id: make it stable against hunk reordering
  test doc: test_write_lines does not split its arguments
  test: add test_write_lines helper

10 years agosubmodule: document "sync --recursive"
Matthew Chen [Fri, 13 Jun 2014 17:40:50 +0000 (13:40 -0400)] 
submodule: document "sync --recursive"

The "git submodule sync" command supports the --recursive flag, but
the documentation does not mention this.  That flag is useful, for
example when a remote is changed in a submodule of a submodule.

Signed-off-by: Matthew Chen <charlesmchen@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoblame: simplify prepare_lines()
René Scharfe [Fri, 13 Jun 2014 19:54:59 +0000 (21:54 +0200)] 
blame: simplify prepare_lines()

Changing get_next_line() to return the end pointer instead of NULL in
case no newline character is found treats allows us to treat complete
and incomplete lines the same, simplifying the code.  Switching to
counting lines instead of EOLs allows us to start counting at the
first character, instead of having to call get_next_line() first.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoblame: factor out get_next_line()
René Scharfe [Fri, 13 Jun 2014 19:53:03 +0000 (21:53 +0200)] 
blame: factor out get_next_line()

Move the code for finding the start of the next line into a helper
function in order to reduce duplication.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocompletion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases
Steffen Prohaska [Thu, 12 Jun 2014 18:49:29 +0000 (20:49 +0200)] 
completion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases

'!f() { ... }; f' and "!sh -c '....' -" are recommended patterns for
declaring more complex aliases (see git wiki [1]).  This commit teaches
the completion to handle them.

When determining which completion to use for an alias, an opening brace
or single quote is now skipped, and the search for a git command is
continued.  For example, the aliases '!f() { git commit ... }' or "!sh
-c 'git commit ...'" now trigger commit completion.  Previously, the
search stopped on the opening brace or quote, and the completion tried
it to determine how to complete, which obviously was useless.

The null command ':' is now skipped, so that it can be used as
a workaround to declare the desired completion style.

For example, the aliases

    !f() { : git commit ; if ... } f
    !sh -c ': git commit; if ...' -

now trigger commit completion.

Shell function declarations now work with or without space before
the parens, i.e. '!f() ...' and '!f () ...' both work.

[1] https://git.wiki.kernel.org/index.php/Aliases

Signed-off-by: Steffen Prohaska <prohaska@zib.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot0008: do not depend on 'echo' handling backslashes specially
Junio C Hamano [Fri, 13 Jun 2014 20:23:58 +0000 (13:23 -0700)] 
t0008: do not depend on 'echo' handling backslashes specially

The original used to pass with /bin/dash but not with /bin/bash set
to $SHELL_PATH.  The former turns "\\" into "\", but the latter does
not.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoreuse cached commit buffer when parsing signatures
Jeff King [Fri, 13 Jun 2014 06:32:11 +0000 (02:32 -0400)] 
reuse cached commit buffer when parsing signatures

When we call show_signature or show_mergetag, we read the
commit object fresh via read_sha1_file and reparse its
headers. However, in most cases we already have the object
data available, attached to the "struct commit". This is
partially laziness in dealing with the memory allocation
issues, but partially defensive programming, in that we
would always want to verify a clean version of the buffer
(not one that might have been munged by other users of the
commit).

However, we do not currently ever munge the commit buffer,
and not using the already-available buffer carries a fairly
big performance penalty when we are looking at a large
number of commits. Here are timings on linux.git:

  [baseline, no signatures]
  $ time git log >/dev/null
  real    0m4.902s
  user    0m4.784s
  sys     0m0.120s

  [before]
  $ time git log --show-signature >/dev/null
  real    0m14.735s
  user    0m9.964s
  sys     0m0.944s

  [after]
  $ time git log --show-signature >/dev/null
  real    0m9.981s
  user    0m5.260s
  sys     0m0.936s

Note that our user CPU time drops almost in half, close to
the non-signature case, but we do still spend more
wall-clock and system time, presumably from dealing with
gpg.

An alternative to this is to note that most commits do not
have signatures (less than 1% in this repo), yet we pay the
re-parsing cost for every commit just to find out if it has
a mergetag or signature. If we checked that when parsing the
commit initially, we could avoid re-examining most commits
later on. Even if we did pursue that direction, however,
this would still speed up the cases where we _do_ have
signatures. So it's probably worth doing either way.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocommit: record buffer length in cache
Jeff King [Tue, 10 Jun 2014 21:44:13 +0000 (17:44 -0400)] 
commit: record buffer length in cache

Most callsites which use the commit buffer try to use the
cached version attached to the commit, rather than
re-reading from disk. Unfortunately, that interface provides
only a pointer to the NUL-terminated buffer, with no
indication of the original length.

For the most part, this doesn't matter. People do not put
NULs in their commit messages, and the log code is happy to
treat it all as a NUL-terminated string. However, some code
paths do care. For example, when checking signatures, we
want to be very careful that we verify all the bytes to
avoid malicious trickery.

This patch just adds an optional "size" out-pointer to
get_commit_buffer and friends. The existing callers all pass
NULL (there did not seem to be any obvious sites where we
could avoid an immediate strlen() call, though perhaps with
some further refactoring we could).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocommit: convert commit->buffer to a slab
Jeff King [Tue, 10 Jun 2014 21:43:02 +0000 (17:43 -0400)] 
commit: convert commit->buffer to a slab

This will make it easier to manage the buffer cache
independently of the "struct commit" objects. It also
shrinks "struct commit" by one pointer, which may be
helpful.

Unfortunately it does not reduce the max memory size of
something like "rev-list", because rev-list uses
get_cached_commit_buffer() to decide not to show each
commit's output (and due to the design of slab_at, accessing
the slab requires us to extend it, allocating exactly the
same number of buffer pointers we dropped from the commit
structs).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocommit-slab: provide a static initializer
Jeff King [Tue, 10 Jun 2014 21:42:51 +0000 (17:42 -0400)] 
commit-slab: provide a static initializer

Callers currently must use init_foo_slab() at runtime before
accessing a slab. For global slabs, it's much nicer if we
can initialize them in BSS, so that each user does not have
to add code to check-and-initialize.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agouse get_commit_buffer everywhere
Jeff King [Tue, 10 Jun 2014 21:41:51 +0000 (17:41 -0400)] 
use get_commit_buffer everywhere

Each of these sites assumes that commit->buffer is valid.
Since they would segfault if this was not the case, they are
likely to be correct in practice. However, we can
future-proof them by using get_commit_buffer.

And as a side effect, we abstract away the final bare uses
of commit->buffer.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoconvert logmsg_reencode to get_commit_buffer
Jeff King [Tue, 10 Jun 2014 21:41:39 +0000 (17:41 -0400)] 
convert logmsg_reencode to get_commit_buffer

Like the callsites in the previous commit, logmsg_reencode
already falls back to read_sha1_file when necessary.
However, I split its conversion out into its own commit
because it's a bit more complex.

We return either:

  1. The original commit->buffer

  2. A newly allocated buffer from read_sha1_file

  3. A reencoded buffer (based on either 1 or 2 above).

while trying to do as few extra reads/allocations as
possible. Callers currently free the result with
logmsg_free, but we can simplify this by pointing them
straight to unuse_commit_buffer. This is a slight layering
violation, in that we may be passing a buffer from (3).
However, since the end result is to free() anything except
(1), which is unlikely to change, and because this makes the
interface much simpler, it's a reasonable bending of the
rules.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agouse get_commit_buffer to avoid duplicate code
Jeff King [Tue, 10 Jun 2014 21:41:02 +0000 (17:41 -0400)] 
use get_commit_buffer to avoid duplicate code

For both of these sites, we already do the "fallback to
read_sha1_file" trick. But we can shorten the code by just
using get_commit_buffer.

Note that the error cases are slightly different when
read_sha1_file fails. get_commit_buffer will die() if the
object cannot be loaded, or is a non-commit.

For get_sha1_oneline, this will almost certainly never
happen, as we will have just called parse_object (and if it
does, it's probably worth complaining about).

For record_author_date, the new behavior is probably better;
we notify the user of the error instead of silently ignoring
it. And because it's used only for sorting by author-date,
somebody examining a corrupt repo can fallback to the
regular traversal order.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agouse get_cached_commit_buffer where appropriate
Jeff King [Tue, 10 Jun 2014 21:40:46 +0000 (17:40 -0400)] 
use get_cached_commit_buffer where appropriate

Some call sites check commit->buffer to see whether we have
a cached buffer, and if so, do some work with it. In the
long run we may want to switch these code paths to make
their decision on a different boolean flag (because checking
the cache may get a little more expensive in the future).
But for now, we can easily support them by converting the
calls to use get_cached_commit_buffer.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoprovide helpers to access the commit buffer
Jeff King [Tue, 10 Jun 2014 21:40:39 +0000 (17:40 -0400)] 
provide helpers to access the commit buffer

Many sites look at commit->buffer to get more detailed
information than what is in the parsed commit struct.
However, we sometimes drop commit->buffer to save memory,
in which case the caller would need to read the object
afresh. Some callers do this (leading to duplicated code),
and others do not (which opens the possibility of a segfault
if somebody else frees the buffer).

Let's provide a pair of helpers, "get" and "unuse", that let
callers easily get the buffer. They will use the cached
buffer when possible, and otherwise load from disk using
read_sha1_file.

Note that we also need to add a "get_cached" variant which
returns NULL when we do not have a cached buffer. At first
glance this seems to defeat the purpose of "get", which is
to always provide a return value. However, some log code
paths actually use the NULL-ness of commit->buffer as a
boolean flag to decide whether to try printing the
commit. At least for now, we want to continue supporting
that use.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoprovide a helper to set the commit buffer
Jeff King [Tue, 10 Jun 2014 21:40:14 +0000 (17:40 -0400)] 
provide a helper to set the commit buffer

Right now this is just a one-liner, but abstracting it will
make it easier to change later.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoprovide a helper to free commit buffer
Jeff King [Thu, 12 Jun 2014 22:05:37 +0000 (18:05 -0400)] 
provide a helper to free commit buffer

This converts two lines into one at each caller. But more
importantly, it abstracts the concept of freeing the buffer,
which will make it easier to change later.

Note that we also need to provide a "detach" mechanism for a
tricky case in index-pack. We are passed a buffer for the
object generated by processing the incoming pack. If we are
not using --strict, we just calculate the sha1 on that
buffer and return, leaving the caller to free it.  But if we
are using --strict, we actually attach that buffer to an
object, pass the object to the fsck functions, and then
detach the buffer from the object again (so that the caller
can free it as usual).  In this case, we don't want to free
the buffer ourselves, but just make sure it is no longer
associated with the commit.

Note that we are making the assumption here that the
attach/detach process does not impact the buffer at all
(e.g., it is never reallocated or modified). That holds true
now, and we have no plans to change that. However, as we
abstract the commit_buffer code, this dependency becomes
less obvious. So when we detach, let's also make sure that
we get back the same buffer that we gave to the
commit_buffer code.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogit-p4: fix submit in non --prepare-p4-only mode
Maxime Coste [Wed, 11 Jun 2014 13:09:59 +0000 (14:09 +0100)] 
git-p4: fix submit in non --prepare-p4-only mode

b4073bb3 (git-p4: Do not include diff in spec file when just
preparing p4, 2014-05-24) broke git p4 submit, here is a proper
fix, including proper handling for windows end of lines.

Signed-off-by: Maxime Coste <frrrwww@gmail.com>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'jc/fetch-pull-refmap' into next
Junio C Hamano [Thu, 12 Jun 2014 21:12:00 +0000 (14:12 -0700)] 
Merge branch 'jc/fetch-pull-refmap' into next

* jc/fetch-pull-refmap:
  docs: Explain the purpose of fetch's and pull's <refspec> parameter.

10 years agoSync with master
Junio C Hamano [Thu, 12 Jun 2014 21:11:47 +0000 (14:11 -0700)] 
Sync with master

* master:
  pull: do not abuse 'break' inside a shell 'case'

10 years agot7700: drop explicit --no-pack-kept-objects from .keep test
Jeff King [Wed, 11 Jun 2014 06:32:45 +0000 (02:32 -0400)] 
t7700: drop explicit --no-pack-kept-objects from .keep test

We want to make sure that the default behavior of git-repack,
without any options, continues to treat .keep files as it
always has. Adding an explicit --no-pack-kept-objects, as
ee34a2b did, is a much less interesting test, and prevented
us from noticing the bug fixed by 64d3dc9 (repack: do not
accidentally pack kept objects by default, 2014-06-10).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoSync with maint
Junio C Hamano [Thu, 12 Jun 2014 19:22:38 +0000 (12:22 -0700)] 
Sync with maint

* maint:
  pull: do not abuse 'break' inside a shell 'case'

10 years agoMerge branch 'jc/rev-parse-argh-dashed-multi-words' into maint
Junio C Hamano [Thu, 12 Jun 2014 19:17:57 +0000 (12:17 -0700)] 
Merge branch 'jc/rev-parse-argh-dashed-multi-words' into maint

* jc/rev-parse-argh-dashed-multi-words:
  update-index: fix segfault with missing --cacheinfo argument

10 years agopull: do not abuse 'break' inside a shell 'case'
Jacek Konieczny [Wed, 11 Jun 2014 08:47:45 +0000 (10:47 +0200)] 
pull: do not abuse 'break' inside a shell 'case'

It is not C. The code would break under mksh when 'pull.ff' is set:

  $ git pull
  /usr/lib/git-core/git-pull[67]: break: can't break
  Already up-to-date.

Signed-off-by: Jacek Konieczny <jajcus@jajcus.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agosequencer: use logmsg_reencode in get_message
Jeff King [Tue, 10 Jun 2014 21:39:35 +0000 (17:39 -0400)] 
sequencer: use logmsg_reencode in get_message

This simplifies the code, as logmsg_reencode handles the
reencoding for us in a single call. It also means we learn
logmsg_reencode's trick of pulling the buffer from disk when
commit->buffer is NULL (we currently just silently return!).
It is doubtful this matters in practice, though, as
sequencer operations would not generally turn off
save_commit_buffer.

Note that we may be fixing a bug here. The existing code
does:

  if (same_encoding(to, from))
  reencode_string(buf, to, from);

That probably should have been "!same_encoding".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agologmsg_reencode: return const buffer
Jeff King [Tue, 10 Jun 2014 21:39:30 +0000 (17:39 -0400)] 
logmsg_reencode: return const buffer

The return value from logmsg_reencode may be either a newly
allocated buffer or a pointer to the existing commit->buffer.
We would not want the caller to accidentally free() or
modify the latter, so let's mark it as const.  We can cast
away the constness in logmsg_free, but only once we have
determined that it is a free-able buffer.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodo not create "struct commit" with xcalloc
Jeff King [Tue, 10 Jun 2014 21:39:11 +0000 (17:39 -0400)] 
do not create "struct commit" with xcalloc

In both blame and merge-recursive, we sometimes create a
"fake" commit struct for convenience (e.g., to represent the
HEAD state as if we would commit it). By allocating
ourselves rather than using alloc_commit_node, we do not
properly set the "index" field of the commit. This can
produce subtle bugs if we then use commit-slab on the
resulting commit, as we will share the "0" index with
another commit.

We can fix this by using alloc_commit_node() to allocate.
Note that we cannot free the result, as it is part of our
commit allocator. However, both cases were already leaking
the allocated commit anyway, so there's nothing to fix up.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocommit: push commit_index update into alloc_commit_node
Jeff King [Tue, 10 Jun 2014 21:39:04 +0000 (17:39 -0400)] 
commit: push commit_index update into alloc_commit_node

Whenever we create a commit object via lookup_commit, we
give it a unique index to be used with the commit-slab API.
The theory is that any "struct commit" we create would
follow this code path, so any such struct would get an
index. However, callers could use alloc_commit_node()
directly (and get multiple commits with index 0).

Let's push the indexing into alloc_commit_node so that it's
hard for callers to get it wrong.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoalloc: include any-object allocations in alloc_report
Jeff King [Tue, 10 Jun 2014 21:38:47 +0000 (17:38 -0400)] 
alloc: include any-object allocations in alloc_report

When 2c1cbec (Use proper object allocators for unknown
object nodes too, 2007-04-16), added a special "any_object"
allocator, it never taught alloc_report to report on it. To
do so we need to add an extra type argument to the REPORT
macro, as that commit did for DEFINE_ALLOCATOR.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoreplace dangerous uses of strbuf_attach
Jeff King [Tue, 10 Jun 2014 21:38:38 +0000 (17:38 -0400)] 
replace dangerous uses of strbuf_attach

It is not a good idea to strbuf_attach an arbitrary pointer
just because a function you are calling wants a strbuf.
Attaching implies a transfer of memory ownership; if anyone
were to modify or release the resulting strbuf, we would
free() the pointer, leading to possible problems:

  1. Other users of the original pointer might access freed
     memory.

  2. The pointer might not be the start of a malloc'd
     area, so calling free() on it in the first place would
     be wrong.

In the two cases modified here, we are fortunate that nobody
touches the strbuf once it is attached, but it is an
accident waiting to happen.  Since the previous commit,
commit_tree and friends take a pointer/buf pair, so we can
just do away with the strbufs entirely.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocommit_tree: take a pointer/len pair rather than a const strbuf
Jeff King [Tue, 10 Jun 2014 21:36:52 +0000 (17:36 -0400)] 
commit_tree: take a pointer/len pair rather than a const strbuf

While strbufs are pretty common throughout our code, it is
more flexible for functions to take a pointer/len pair than
a strbuf. It's easy to turn a strbuf into such a pair (by
dereferencing its members), but less easy to go the other
way (you can strbuf_attach, but that has implications about
memory ownership).

This patch teaches commit_tree (and its associated callers
and sub-functions) to take such a pair for the commit
message rather than a strbuf.  This makes passing the buffer
around slightly more verbose, but means we can get rid of
some dangerous strbuf_attach calls in the next patch.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodocs: Explain the purpose of fetch's and pull's <refspec> parameter.
Marc Branchaud [Wed, 11 Jun 2014 14:24:04 +0000 (10:24 -0400)] 
docs: Explain the purpose of fetch's and pull's <refspec> parameter.

Signed-off-by: Marc Branchaud <marcnarc@xiplink.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'fc/remote-helper-refmap' into next
Junio C Hamano [Tue, 10 Jun 2014 21:24:44 +0000 (14:24 -0700)] 
Merge branch 'fc/remote-helper-refmap' into next

Allow remote-helper/fast-import based transport to rename the refs
while transferring the history.

* fc/remote-helper-refmap:
  transport-helper: remove unnecessary strbuf resets
  transport-helper: add support to delete branches
  fast-export: add support to delete refs
  fast-import: add support to delete refs
  transport-helper: add support to push symbolic refs
  transport-helper: add support for old:new refspec
  fast-export: add new --refspec option
  fast-export: improve argument parsing

10 years agoMerge branch 'rs/more-starts-with' into next
Junio C Hamano [Tue, 10 Jun 2014 21:24:43 +0000 (14:24 -0700)] 
Merge branch 'rs/more-starts-with' into next

* rs/more-starts-with:
  Use starts_with() for C strings instead of memcmp()

10 years agoMerge branch 'jm/api-strbuf-doc' into next
Junio C Hamano [Tue, 10 Jun 2014 21:24:41 +0000 (14:24 -0700)] 
Merge branch 'jm/api-strbuf-doc' into next

* jm/api-strbuf-doc:
  api-strbuf.txt minor typos

10 years agoMerge branch 'jc/revision-dash-count-parsing' into next
Junio C Hamano [Tue, 10 Jun 2014 21:24:39 +0000 (14:24 -0700)] 
Merge branch 'jc/revision-dash-count-parsing' into next

"git log -2master" is a common typo that shows two commits starting
from whichever random branch that is not 'master' that happens to
be checked out currently.

* jc/revision-dash-count-parsing:
  revision: parse "git log -<count>" more carefully

10 years agoMerge branch 'tb/t5551-clone-notice-to-stderr' into next
Junio C Hamano [Tue, 10 Jun 2014 21:24:36 +0000 (14:24 -0700)] 
Merge branch 'tb/t5551-clone-notice-to-stderr' into next

* tb/t5551-clone-notice-to-stderr:
  t5551: fix the 50,000 tag test

10 years agorepack: introduce repack.writeBitmaps config option
Jeff King [Tue, 10 Jun 2014 20:20:30 +0000 (16:20 -0400)] 
repack: introduce repack.writeBitmaps config option

We currently have pack.writeBitmaps, which originally
operated at the pack-objects level. This should really have
been a repack.* option from day one. Let's give it the more
sensible name, but keep the old version as a deprecated
synonym.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agorepack: simplify handling of --write-bitmap-index
Jeff King [Tue, 10 Jun 2014 20:19:38 +0000 (16:19 -0400)] 
repack: simplify handling of --write-bitmap-index

We previously needed to pass --no-write-bitmap-index
explicitly to pack-objects to override its reading of
pack.writebitmaps from the config. Now that it no longer
does so, we can assume that bitmaps are off by default, and
only turn them on when necessary. This also lets us avoid a
confusing tri-state flag for write_bitmaps.

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