]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
9 years agouse skip_prefix to avoid magic numbers
Jeff King [Wed, 18 Jun 2014 19:47:50 +0000 (15:47 -0400)] 
use skip_prefix to avoid magic numbers

It's a common idiom to match a prefix and then skip past it
with a magic number, like:

  if (starts_with(foo, "bar"))
  foo += 3;

This is easy to get wrong, since you have to count the
prefix string yourself, and there's no compiler check if the
string changes.  We can use skip_prefix to avoid the magic
numbers here.

Note that some of these conversions could be much shorter.
For example:

  if (starts_with(arg, "--foo=")) {
  bar = arg + 6;
  continue;
  }

could become:

  if (skip_prefix(arg, "--foo=", &bar))
  continue;

However, I have left it as:

  if (skip_prefix(arg, "--foo=", &v)) {
  bar = v;
  continue;
  }

to visually match nearby cases which need to actually
process the string. Like:

  if (skip_prefix(arg, "--foo=", &v)) {
  bar = atoi(v);
  continue;
  }

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agotransport-helper: avoid reading past end-of-string
Jeff King [Wed, 18 Jun 2014 19:47:17 +0000 (15:47 -0400)] 
transport-helper: avoid reading past end-of-string

We detect the "import-marks" capability by looking for that
string, but _without_ a trailing space. Then we skip past it
using strlen("import-marks "), with a space. So if a remote
helper gives us exactly "import-marks", we will read past
the end-of-string by one character.

This is unlikely to be a problem in practice, because such
input is malformed in the first place, and because there is
a good chance that the string has an extra NUL terminator
one character after the original (because it formerly had a
newline in it that we parsed off).

We can fix it by using skip_prefix with "import-marks ",
with the space. The other form appears to be a typo from
a515ebe (transport-helper: implement marks location as
capability, 2011-07-16); "import-marks" has never existed
without an argument, and it should match the "export-marks"
definition above.

Speaking of which, we can also use skip_prefix in a few
other places while we are in the function.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agofast-import: fix read of uninitialized argv memory
Jeff King [Wed, 18 Jun 2014 19:46:15 +0000 (15:46 -0400)] 
fast-import: fix read of uninitialized argv memory

Fast-import shares code between its command-line parser and
the "option" command. To do so, it strips the "--" from any
command-line options and passes them to the option parser.
However, it does not confirm that the option even begins
with "--" before blindly passing "arg + 2".

It does confirm that the option starts with "-", so the only
affected case was:

  git fast-import -

which would read uninitialized memory after the argument. We
can fix it by using skip_prefix and checking the result. As
a bonus, this gets rid of some magic numbers.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoapply: use skip_prefix instead of raw addition
Jeff King [Wed, 18 Jun 2014 19:45:34 +0000 (15:45 -0400)] 
apply: use skip_prefix instead of raw addition

A submodule diff generally has content like:

  -Subproject commit [0-9a-f]{40}
  +Subproject commit [0-9a-f]{40}

When we are using "git apply --index" with a submodule, we
first apply the textual diff, and then parse that result to
figure out the new sha1.

If the diff has bogus input like:

  -Subproject commit 1234567890123456789012345678901234567890
  +bogus

we will parse the "bogus" portion. Our parser assumes that
the buffer starts with "Subproject commit", and blindly
skips past it using strlen(). This can cause us to read
random memory after the buffer.

This problem was unlikely to have come up in practice (since
it requires a malformed diff), and even when it did, we
likely noticed the problem anyway as the next operation was
to call get_sha1_hex on the random memory.

However, we can easily fix it by using skip_prefix to notice
the parsing error.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agorefactor skip_prefix to return a boolean
Jeff King [Wed, 18 Jun 2014 19:44:19 +0000 (15:44 -0400)] 
refactor skip_prefix to return a boolean

The skip_prefix() function returns a pointer to the content
past the prefix, or NULL if the prefix was not found. While
this is nice and simple, in practice it makes it hard to use
for two reasons:

  1. When you want to conditionally skip or keep the string
     as-is, you have to introduce a temporary variable.
     For example:

       tmp = skip_prefix(buf, "foo");
       if (tmp)
       buf = tmp;

  2. It is verbose to check the outcome in a conditional, as
     you need extra parentheses to silence compiler
     warnings. For example:

       if ((cp = skip_prefix(buf, "foo"))
       /* do something with cp */

Both of these make it harder to use for long if-chains, and
we tend to use starts_with() instead. However, the first line
of "do something" is often to then skip forward in buf past
the prefix, either using a magic constant or with an extra
strlen(3) (which is generally computed at compile time, but
means we are repeating ourselves).

This patch refactors skip_prefix() to return a simple boolean,
and to provide the pointer value as an out-parameter. If the
prefix is not found, the out-parameter is untouched. This
lets you write:

  if (skip_prefix(arg, "foo ", &arg))
  do_foo(arg);
  else if (skip_prefix(arg, "bar ", &arg))
  do_bar(arg);

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoavoid using skip_prefix as a boolean
Jeff King [Wed, 18 Jun 2014 19:42:14 +0000 (15:42 -0400)] 
avoid using skip_prefix as a boolean

There's no point in using:

  if (skip_prefix(buf, "foo"))

over

  if (starts_with(buf, "foo"))

as the point of skip_prefix is to return a pointer to the
data after the prefix. Using starts_with is more readable,
and will make refactoring skip_prefix easier.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agodaemon: mark some strings as const
Jeff King [Wed, 18 Jun 2014 19:41:58 +0000 (15:41 -0400)] 
daemon: mark some strings as const

None of these strings is modified; marking them as const
will help later refactoring.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoparse_diff_color_slot: drop ofs parameter
Jeff King [Wed, 18 Jun 2014 19:41:50 +0000 (15:41 -0400)] 
parse_diff_color_slot: drop ofs parameter

This function originally took a whole config variable name
("var") and an offset ("ofs"). It checked "var+ofs" against
each color slot, but reported errors using the whole "var".

However, since 8b8e862 (ignore unknown color configuration,
2009-12-12), it returns -1 rather than printing its own
error, and therefore only cares about var+ofs. We can drop
the ofs parameter and teach its sole caller to derive the
pointer itself.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 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>
9 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

9 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

9 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()

9 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()

9 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

9 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

9 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

9 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

9 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()

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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

9 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'

9 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

9 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>
9 years agoWindows: allow using UNC path for git repository
Cezary Zawadka [Tue, 13 Jul 2010 14:17:43 +0000 (16:17 +0200)] 
Windows: allow using UNC path for git repository

[efl: moved MinGW-specific part to compat/]
[jes: fixed compilation on non-Windows]

Eric Sunshine fixed mingw_offset_1st_component() to return
consistently "foo" for UNC "//machine/share/foo", cf

http://groups.google.com/group/msysgit/browse_thread/thread/c0af578549b5dda0

Author: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Cezary Zawadka <czawadka@gmail.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Stepan Kasal <kasal@ucw.cz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agopatch-id-test: test stable and unstable behaviour
Michael S. Tsirkin [Sun, 27 Apr 2014 18:15:51 +0000 (21:15 +0300)] 
patch-id-test: test stable and unstable behaviour

Verify that patch ID supports an algorithm
that is stable against diff split and reordering.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agopatch-id: make it stable against hunk reordering
Michael S. Tsirkin [Sun, 27 Apr 2014 18:15:44 +0000 (21:15 +0300)] 
patch-id: make it stable against hunk reordering

Patch id changes if users reorder file diffs that make up a patch.

As the result is functionally equivalent, a different patch id is
surprising to many users.
In particular, reordering files using diff -O is helpful to make patches
more readable (e.g. API header diff before implementation diff).

Add an option to change patch-id behaviour making it stable against
these kinds of patch change:
calculate SHA1 hash for each hunk separately and sum all hashes
(using a symmetrical sum) to get patch id

We use a 20byte sum and not xor - since xor would give 0 output
for patches that have two identical diffs, which isn't all that
unlikely (e.g. append the same line in two places).

The new behaviour is enabled
- when patchid.stable is true
- when --stable flag is present

Using a new flag --unstable or setting patchid.stable to false force
the historical behaviour.

In the documentation, clarify that patch ID can now be a sum of hashes,
not a hash.
Document how command line and config options affect the
behaviour.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agotest doc: test_write_lines does not split its arguments
Jonathan Nieder [Mon, 5 May 2014 23:51:43 +0000 (16:51 -0700)] 
test doc: test_write_lines does not split its arguments

test_write_lines carefully quotes its arguments as "$@", so

test_write_lines "a b" c

writes two lines as requested, not three.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agotest: add test_write_lines helper
Michael S. Tsirkin [Sun, 27 Apr 2014 18:15:47 +0000 (21:15 +0300)] 
test: add test_write_lines helper

API and implementation as suggested by Junio.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoUpdate draft release notes to 2.1
Junio C Hamano [Mon, 9 Jun 2014 18:39:43 +0000 (11:39 -0700)] 
Update draft release notes to 2.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoMerge branch 'jc/shortlog-ref-exclude'
Junio C Hamano [Mon, 9 Jun 2014 18:30:12 +0000 (11:30 -0700)] 
Merge branch 'jc/shortlog-ref-exclude'

"log --exclude=<glob> --all | shortlog" worked as expected, but
"shortlog --exclude=<glob> --all" was not accepted at the command
line argument parser level.

* jc/shortlog-ref-exclude:
  shortlog: allow --exclude=<glob> to be passed

9 years agoMerge branch 'mn/sideband-no-ansi'
Junio C Hamano [Mon, 9 Jun 2014 18:27:55 +0000 (11:27 -0700)] 
Merge branch 'mn/sideband-no-ansi'

Tools that read diagnostic output in our standard error stream do
not want to see terminal control sequence (e.g. erase-to-eol).
Detect them by checking if the standard error stream is connected to
a tty.

* mn/sideband-no-ansi:
  sideband.c: do not use ANSI control sequence on non-terminal

9 years agoMerge branch 'rs/mailinfo-header-cmp'
Junio C Hamano [Mon, 9 Jun 2014 18:27:53 +0000 (11:27 -0700)] 
Merge branch 'rs/mailinfo-header-cmp'

Avoid running over the end of header string while parsing an
incoming e-mail message to extract the patch.

* rs/mailinfo-header-cmp:
  mailinfo: use strcmp() for string comparison

9 years agoMerge branch 'pb/trim-trailing-spaces'
Junio C Hamano [Mon, 9 Jun 2014 18:27:47 +0000 (11:27 -0700)] 
Merge branch 'pb/trim-trailing-spaces'

Fix an error in parsing of .gitignore files that use a trailing
"\ " to mark pathnames that end with a SP.

* pb/trim-trailing-spaces:
  dir.c:trim_trailing_spaces(): fix for " \ " sequence

9 years agoMerge branch 'na/no-http-test-in-the-middle'
Junio C Hamano [Mon, 9 Jun 2014 18:26:51 +0000 (11:26 -0700)] 
Merge branch 'na/no-http-test-in-the-middle'

The mode to run tests with HTTP server tests disabled was broken.

* na/no-http-test-in-the-middle:
  t5538: move http push tests out to t5542

9 years agoMerge branch 'jc/rev-parse-argh-dashed-multi-words'
Junio C Hamano [Mon, 9 Jun 2014 18:26:49 +0000 (11:26 -0700)] 
Merge branch 'jc/rev-parse-argh-dashed-multi-words'

"update-index --cacheinfo" in 2.0 crashes on a malformed command line.

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

9 years agoMerge branch 'lt/request-pull'
Junio C Hamano [Mon, 9 Jun 2014 18:26:22 +0000 (11:26 -0700)] 
Merge branch 'lt/request-pull'

A brown-paper-bag bugfix to a test that turned out to be a no-op by
mistake.

* lt/request-pull:
  fix brown paper bag breakage in t5150-request-pull.sh

9 years agostring-list: spell all values out that are given to a string_list initializer
Tanay Abhra [Tue, 3 Jun 2014 09:13:18 +0000 (02:13 -0700)] 
string-list: spell all values out that are given to a string_list initializer

STRING_LIST_INIT_{NODUP,DUP} initializers list values only
for earlier structure members, relying on the usual
convention in C that the omitted members are initailized to
0, i.e. the former is expanded to the latter:

struct string_list l = STRING_LIST_INIT_DUP;
struct string_list l = { NULL, 0, 0, 1 };

and the last member that is not mentioned (i.e. 'cmp') is
initialized to NULL.

While there is nothing wrong in this construct, spelling out
all the values where the macros are defined will serve also
as a documentation, so let's do so.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agot0000-*.sh: fix the GIT_SKIP_TESTS sub-tests
Ramsay Jones [Tue, 20 May 2014 23:33:46 +0000 (00:33 +0100)] 
t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agotest-lib: '--run' to run only specific tests
Ilya Bobyr [Wed, 30 Apr 2014 09:50:44 +0000 (02:50 -0700)] 
test-lib: '--run' to run only specific tests

Allow better control of the set of tests that will be executed for a
single test suite.  Mostly useful while debugging or developing as it
allows to focus on a specific test.

Signed-off-by: Ilya Bobyr <ilya.bobyr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agotest-lib: tests skipped by GIT_SKIP_TESTS say so
Ilya Bobyr [Wed, 30 Apr 2014 09:50:43 +0000 (02:50 -0700)] 
test-lib: tests skipped by GIT_SKIP_TESTS say so

We used to show "(missing )" next to tests skipped because they are
specified in GIT_SKIP_TESTS.  Use "(GIT_SKIP_TESTS)" instead.

Plus tests that check basic GIT_SKIP_TESTS functions.

Signed-off-by: Ilya Bobyr <ilya.bobyr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agotest-lib: document short options in t/README
Ilya Bobyr [Wed, 30 Apr 2014 09:50:42 +0000 (02:50 -0700)] 
test-lib: document short options in t/README

Most arguments that could be provided to a test have short forms.
Unless documented, the only way to learn them is to read the code.

Signed-off-by: Ilya Bobyr <ilya.bobyr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoSecond batch for 2.1
Junio C Hamano [Fri, 6 Jun 2014 18:42:05 +0000 (11:42 -0700)] 
Second batch for 2.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoMerge branch 'ss/howto-manage-trunk'
Junio C Hamano [Fri, 6 Jun 2014 18:39:12 +0000 (11:39 -0700)] 
Merge branch 'ss/howto-manage-trunk'

* ss/howto-manage-trunk:
  How to keep a project's canonical history correct.

9 years agoMerge branch 'mc/git-p4-prepare-p4-only'
Junio C Hamano [Fri, 6 Jun 2014 18:38:57 +0000 (11:38 -0700)] 
Merge branch 'mc/git-p4-prepare-p4-only'

* mc/git-p4-prepare-p4-only:
  git-p4: Do not include diff in spec file when just preparing p4

9 years agoMerge branch 'jn/test-lint-unmoor'
Junio C Hamano [Fri, 6 Jun 2014 18:38:54 +0000 (11:38 -0700)] 
Merge branch 'jn/test-lint-unmoor'

* jn/test-lint-unmoor:
  test-lint: find unportable sed, echo, test, and export usage after &&

9 years agoMerge branch 'ep/shell-assign-and-export-vars'
Junio C Hamano [Fri, 6 Jun 2014 18:38:51 +0000 (11:38 -0700)] 
Merge branch 'ep/shell-assign-and-export-vars'

* ep/shell-assign-and-export-vars:
  scripts: more "export VAR=VALUE" fixes
  scripts: "export VAR=VALUE" construct is not portable

9 years agoMerge branch 'jj/command-line-adjective'
Junio C Hamano [Fri, 6 Jun 2014 18:38:48 +0000 (11:38 -0700)] 
Merge branch 'jj/command-line-adjective'

* jj/command-line-adjective:
  Documentation: use "command-line" when used as a compound adjective, and fix other minor grammatical issues

9 years agoMerge branch 'jc/coding-guidelines'
Junio C Hamano [Fri, 6 Jun 2014 18:38:44 +0000 (11:38 -0700)] 
Merge branch 'jc/coding-guidelines'

* jc/coding-guidelines:
  CodingGuidelines: avoid "test <cond> -a/-o <cond>"
  CodingGuidelines: on splitting a long line
  CodingGuidelines: on comparison
  CodingGuidelines: do not call the conditional statement "if()"
  CodingGuidelines: give an example for shell function preamble
  CodingGuidelines: give an example for control statements
  CodingGuidelines: give an example for redirection
  CodingGuidelines: give an example for case/esac statement
  CodingGuidelines: once it is in, it is not worth the code churn

9 years agoMerge branch 'nd/status-auto-comment-char'
Junio C Hamano [Fri, 6 Jun 2014 18:36:10 +0000 (11:36 -0700)] 
Merge branch 'nd/status-auto-comment-char'

* nd/status-auto-comment-char:
  commit: allow core.commentChar=auto for character auto selection
  config: be strict on core.commentChar

9 years agoMerge branch 'mt/rebase-i-keep-empty-test'
Junio C Hamano [Fri, 6 Jun 2014 18:36:06 +0000 (11:36 -0700)] 
Merge branch 'mt/rebase-i-keep-empty-test'

* mt/rebase-i-keep-empty-test:
  rebase --keep-empty -i: add test

9 years agoMerge branch 'mk/show-s-no-extra-blank-line-for-merges'
Junio C Hamano [Fri, 6 Jun 2014 18:35:01 +0000 (11:35 -0700)] 
Merge branch 'mk/show-s-no-extra-blank-line-for-merges'

* mk/show-s-no-extra-blank-line-for-merges:
  git-show: fix 'git show -s' to not add extra terminator after merge commit

9 years agoMerge branch 'sk/spawn-less-case-insensitively-from-grep-O-i'
Junio C Hamano [Fri, 6 Jun 2014 18:32:49 +0000 (11:32 -0700)] 
Merge branch 'sk/spawn-less-case-insensitively-from-grep-O-i'

* sk/spawn-less-case-insensitively-from-grep-O-i:
  git grep -O -i: if the pager is 'less', pass the '-I' option

9 years agoMerge branch 'jd/subtree'
Junio C Hamano [Fri, 6 Jun 2014 18:32:21 +0000 (11:32 -0700)] 
Merge branch 'jd/subtree'

* jd/subtree:
  contrib/subtree: allow adding an annotated tag
  contrib/subtree/Makefile: clean up rule for "clean"
  contrib/subtree/Makefile: clean up rules to generate documentation
  contrib/subtree/Makefile: s/libexecdir/gitexecdir/
  contrib/subtree/Makefile: use GIT-VERSION-FILE
  contrib/subtree/Makefile: scrap unused $(gitdir)

9 years agoMerge branch 'wk/doc-clarify-upstream'
Junio C Hamano [Fri, 6 Jun 2014 18:32:13 +0000 (11:32 -0700)] 
Merge branch 'wk/doc-clarify-upstream'

* wk/doc-clarify-upstream:
  Documentation: mention config sources for @{upstream}

9 years agoMerge branch 'tb/unicode-6.3-zero-width'
Junio C Hamano [Fri, 6 Jun 2014 18:29:38 +0000 (11:29 -0700)] 
Merge branch 'tb/unicode-6.3-zero-width'

Update the logic to compute the display width needed for utf8
strings and allow us to more easily maintain the tables used in
that logic.

We may want to let the users choose if codepoints with ambiguous
widths are treated as a double or single width in a follow-up patch.

* tb/unicode-6.3-zero-width:
  utf8: make it easier to auto-update git_wcwidth()
  utf8.c: use a table for double_width

9 years agoMerge branch 'jk/index-pack-report-missing'
Junio C Hamano [Fri, 6 Jun 2014 18:28:13 +0000 (11:28 -0700)] 
Merge branch 'jk/index-pack-report-missing'

* jk/index-pack-report-missing:
  index-pack: distinguish missing objects from type errors

9 years agoMerge branch 'bc/blame-crlf-test'
Junio C Hamano [Fri, 6 Jun 2014 18:26:50 +0000 (11:26 -0700)] 
Merge branch 'bc/blame-crlf-test'

If a file contained CRLF line endings in a repository with
core.autocrlf=input, then blame always marked lines as "Not
Committed Yet", even if they were unmodified.

* bc/blame-crlf-test:
  blame: correctly handle files regardless of autocrlf

9 years agoMerge branch 'sk/submodules-absolute-path-on-windows'
Junio C Hamano [Fri, 6 Jun 2014 18:26:38 +0000 (11:26 -0700)] 
Merge branch 'sk/submodules-absolute-path-on-windows'

* sk/submodules-absolute-path-on-windows:
  Revert "submodules: fix ambiguous absolute paths under Windows"

9 years agoMerge branch 'dk/blame-reorg'
Junio C Hamano [Fri, 6 Jun 2014 18:24:44 +0000 (11:24 -0700)] 
Merge branch 'dk/blame-reorg'

"git blame" has been optimized greatly by reorganising the data
structure that is used to keep track of the work to be done, thanks
to David Karstrup <dak@gnu.org>.

* dk/blame-reorg:
  blame: large-scale performance rewrite

9 years agoMerge branch 'wg/svn-fe-style-fixes'
Junio C Hamano [Fri, 6 Jun 2014 18:24:32 +0000 (11:24 -0700)] 
Merge branch 'wg/svn-fe-style-fixes'

* wg/svn-fe-style-fixes:
  svn-fe: conform to pep8

9 years agoMerge branch 'jn/contrib-remove-vim'
Junio C Hamano [Fri, 6 Jun 2014 18:24:30 +0000 (11:24 -0700)] 
Merge branch 'jn/contrib-remove-vim'

Spring cleaning of contrib/.

* jn/contrib-remove-vim:
  contrib: remove vim support instructions

9 years agoMerge branch 'jn/contrib-remove-diffall'
Junio C Hamano [Fri, 6 Jun 2014 18:23:46 +0000 (11:23 -0700)] 
Merge branch 'jn/contrib-remove-diffall'

Spring cleaning of contrib/.

* jn/contrib-remove-diffall:
  contrib: remove git-diffall

9 years agoMerge branch 'dt/merge-recursive-case-insensitive'
Junio C Hamano [Fri, 6 Jun 2014 18:23:13 +0000 (11:23 -0700)] 
Merge branch 'dt/merge-recursive-case-insensitive'

On a case insensitive filesystem, merge-recursive incorrectly
deleted the file that is to be renamed to a name that is the same
except for case differences.

* dt/merge-recursive-case-insensitive:
  mv: allow renaming to fix case on case insensitive filesystems
  merge-recursive.c: fix case-changing merge bug

9 years agoMerge branch 'rs/reflog-exists'
Junio C Hamano [Fri, 6 Jun 2014 18:23:04 +0000 (11:23 -0700)] 
Merge branch 'rs/reflog-exists'

* rs/reflog-exists:
  checkout.c: use ref_exists instead of file_exist
  refs.c: add new functions reflog_exists and delete_reflog

9 years agoMerge branch 'tg/tag-state-tag-name-in-editor-hints'
Junio C Hamano [Fri, 6 Jun 2014 18:22:24 +0000 (11:22 -0700)] 
Merge branch 'tg/tag-state-tag-name-in-editor-hints'

* tg/tag-state-tag-name-in-editor-hints:
  builtin/tag.c: show tag name to hint in the message editor

9 years agoMerge branch 'jk/grep-tell-run-command-to-cd-when-running-pager'
Junio C Hamano [Fri, 6 Jun 2014 18:21:49 +0000 (11:21 -0700)] 
Merge branch 'jk/grep-tell-run-command-to-cd-when-running-pager'

* jk/grep-tell-run-command-to-cd-when-running-pager:
  grep: use run-command's "dir" option for --open-files-in-pager

9 years agoMerge branch 'fc/status-printf-squelch-format-zero-length-warnings'
Junio C Hamano [Fri, 6 Jun 2014 18:21:47 +0000 (11:21 -0700)] 
Merge branch 'fc/status-printf-squelch-format-zero-length-warnings'

* fc/status-printf-squelch-format-zero-length-warnings:
  silence a bunch of format-zero-length warnings

9 years agoMerge branch 'jk/squelch-compiler-warning-from-funny-error-macro'
Junio C Hamano [Fri, 6 Jun 2014 18:21:36 +0000 (11:21 -0700)] 
Merge branch 'jk/squelch-compiler-warning-from-funny-error-macro'

* jk/squelch-compiler-warning-from-funny-error-macro:
  let clang use the constant-return error() macro
  inline constant return from error() function

9 years agoMerge branch 'dk/raise-core-deltabasecachelimit'
Junio C Hamano [Fri, 6 Jun 2014 18:18:34 +0000 (11:18 -0700)] 
Merge branch 'dk/raise-core-deltabasecachelimit'

The `core.deltabasecachelimit` used to default to 16 MiB , but this
proved to be too small, and has been bumped to 96 MiB.

* dk/raise-core-deltabasecachelimit:
  Bump core.deltaBaseCacheLimit to 96m

9 years agoMerge branch 'tl/relax-in-poll-emulation'
Junio C Hamano [Fri, 6 Jun 2014 18:18:29 +0000 (11:18 -0700)] 
Merge branch 'tl/relax-in-poll-emulation'

* tl/relax-in-poll-emulation:
  compat/poll: sleep 1 millisecond to avoid busy wait

9 years agoMerge branch 'jk/utf8-switch-between-nfd-and-nfc'
Junio C Hamano [Fri, 6 Jun 2014 18:18:26 +0000 (11:18 -0700)] 
Merge branch 'jk/utf8-switch-between-nfd-and-nfc'

Document a known breakage with a test.

* jk/utf8-switch-between-nfd-and-nfc:
  t3910: show failure of core.precomposeunicode with decomposed filenames

9 years agoMerge branch 'da/imap-send-use-credential-helper'
Junio C Hamano [Fri, 6 Jun 2014 18:17:56 +0000 (11:17 -0700)] 
Merge branch 'da/imap-send-use-credential-helper'

"git imap-send" learns to ask the credential helper for
authentication material.

* da/imap-send-use-credential-helper:
  imap-send: use git-credential

9 years agoMerge branch 'je/pager-do-not-recurse'
Junio C Hamano [Fri, 6 Jun 2014 18:16:59 +0000 (11:16 -0700)] 
Merge branch 'je/pager-do-not-recurse'

We used to unconditionally disable the pager in the pager process
we spawn to feed out output, but that prevented people who want to
run "less" within "less" from doing so.

* je/pager-do-not-recurse:
  pager: do allow spawning pager recursively

9 years agoMerge branch 'jk/commit-C-pick-empty'
Junio C Hamano [Fri, 6 Jun 2014 18:16:04 +0000 (11:16 -0700)] 
Merge branch 'jk/commit-C-pick-empty'

"git commit --allow-empty-message -C $commit" did not work when the
commit did not have any log message.

* jk/commit-C-pick-empty:
  commit: do not complain of empty messages from -C

9 years agoMerge branch 'mm/pager-less-sans-S'
Junio C Hamano [Fri, 6 Jun 2014 18:02:59 +0000 (11:02 -0700)] 
Merge branch 'mm/pager-less-sans-S'

Since the very beginning of Git, we gave the LESS environment a
default value "FRSX" when we spawn "less" as the pager.  "S" (chop
long lines instead of wrapping) has been removed from this default
set of options, because it is more or less a personal taste thing,
as opposed to others that have good justifications (i.e. "R" is very
much justified because many kinds of output we produce are colored
and "FX" is justified because output we produce is often shorter
than a page).

Existing users who prefer not to see line-wrapped output may want to
set

  $ git config core.pager "less -S"

to restore the traditional behaviour.  It is expected that people
find output from the most subcommands easier to read with the new
default, except for "blame" which tends to produce really long
lines.  To override the new default only for "git blame", you can do
this:

  $ git config pager.blame "less -S"

* mm/pager-less-sans-S:
  pager: remove 'S' from $LESS by default