git
7 years agoMerge branch 'jk/show-branch-lift-name-len-limit'
Junio C Hamano [Mon, 27 Feb 2017 21:57:16 +0000 (13:57 -0800)] 
Merge branch 'jk/show-branch-lift-name-len-limit'

"git show-branch" expected there were only very short branch names
in the repository and used a fixed-length buffer to hold them
without checking for overflow.

* jk/show-branch-lift-name-len-limit:
  show-branch: use skip_prefix to drop magic numbers
  show-branch: store resolved head in heap buffer
  show-branch: drop head_len variable

7 years agoMerge branch 'jn/remote-helpers-with-git-dir'
Junio C Hamano [Mon, 27 Feb 2017 21:57:16 +0000 (13:57 -0800)] 
Merge branch 'jn/remote-helpers-with-git-dir'

"git ls-remote" and "git archive --remote" are designed to work
without being in a directory under Git's control.  However, recent
updates revealed that we randomly look into a directory called
.git/ without actually doing necessary set-up when working in a
repository.  Stop doing so.

* jn/remote-helpers-with-git-dir:
  remote helpers: avoid blind fall-back to ".git" when setting GIT_DIR
  remote: avoid reading $GIT_DIR config in non-repo

7 years agoMerge branch 'jk/grep-no-index-fix'
Junio C Hamano [Mon, 27 Feb 2017 21:57:15 +0000 (13:57 -0800)] 
Merge branch 'jk/grep-no-index-fix'

The code to parse the command line "git grep <patterns>... <rev>
[[--] <pathspec>...]" has been cleaned up, and a handful of bugs
have been fixed (e.g. we used to check "--" if it is a rev).

* jk/grep-no-index-fix:
  grep: treat revs the same for --untracked as for --no-index
  grep: do not diagnose misspelt revs with --no-index
  grep: avoid resolving revision names in --no-index case
  grep: fix "--" rev/pathspec disambiguation
  grep: re-order rev-parsing loop
  grep: do not unnecessarily query repo for "--"
  grep: move thread initialization a little lower

7 years agoMerge branch 'dt/gc-ignore-old-gc-logs'
Junio C Hamano [Mon, 27 Feb 2017 21:57:15 +0000 (13:57 -0800)] 
Merge branch 'dt/gc-ignore-old-gc-logs'

A "gc.log" file left by a backgrounded "gc --auto" disables further
automatic gc; it has been taught to run at least once a day (by
default) by ignoring a stale "gc.log" file that is too old.

* dt/gc-ignore-old-gc-logs:
  gc: ignore old gc.log files

7 years agoMerge branch 'jh/preload-index-skip-skip'
Junio C Hamano [Mon, 27 Feb 2017 21:57:15 +0000 (13:57 -0800)] 
Merge branch 'jh/preload-index-skip-skip'

The preload-index code has been taught not to bother with the index
entries that are paths that are not checked out by "sparse checkout".

* jh/preload-index-skip-skip:
  preload-index: avoid lstat for skip-worktree items

7 years agoMerge branch 'mh/submodule-hash'
Junio C Hamano [Mon, 27 Feb 2017 21:57:15 +0000 (13:57 -0800)] 
Merge branch 'mh/submodule-hash'

Code and design clean-up for the refs API.

* mh/submodule-hash:
  read_loose_refs(): read refs using resolve_ref_recursively()
  files_ref_store::submodule: use NULL for the main repository
  base_ref_store_init(): remove submodule argument
  refs: push the submodule attribute down
  refs: store submodule ref stores in a hashmap
  register_ref_store(): new function
  refs: remove some unnecessary handling of submodule == ""
  refs: make some ref_store lookup functions private
  refs: reorder some function definitions

7 years agoMerge branch 'sf/putty-w-args'
Junio C Hamano [Mon, 27 Feb 2017 21:57:14 +0000 (13:57 -0800)] 
Merge branch 'sf/putty-w-args'

The command line options for ssh invocation needs to be tweaked for
some implementations of SSH (e.g. PuTTY plink wants "-P <port>"
while OpenSSH wants "-p <port>" to specify port to connect to), and
the variant was guessed when GIT_SSH environment variable is used
to specify it.  The logic to guess now applies to the command
specified by the newer GIT_SSH_COMMAND and also core.sshcommand
configuration variable, and comes with an escape hatch for users to
deal with misdetected cases.

* sf/putty-w-args:
  connect.c: stop conflating ssh command names and overrides
  connect: Add the envvar GIT_SSH_VARIANT and ssh.variant config
  git_connect(): factor out SSH variant handling
  connect: rename tortoiseplink and putty variables
  connect: handle putty/plink also in GIT_SSH_COMMAND

7 years agoMerge branch 'js/rebase-helper'
Junio C Hamano [Mon, 27 Feb 2017 21:57:14 +0000 (13:57 -0800)] 
Merge branch 'js/rebase-helper'

"git rebase -i" starts using the recently updated "sequencer" code.

* js/rebase-helper:
  rebase -i: use the rebase--helper builtin
  rebase--helper: add a builtin helper for interactive rebases

7 years agoMerge branch 'bw/attr'
Junio C Hamano [Mon, 27 Feb 2017 21:57:14 +0000 (13:57 -0800)] 
Merge branch 'bw/attr'

The gitattributes machinery is being taught to work better in a
multi-threaded environment.

* bw/attr: (27 commits)
  attr: reformat git_attr_set_direction() function
  attr: push the bare repo check into read_attr()
  attr: store attribute stack in attr_check structure
  attr: tighten const correctness with git_attr and match_attr
  attr: remove maybe-real, maybe-macro from git_attr
  attr: eliminate global check_all_attr array
  attr: use hashmap for attribute dictionary
  attr: change validity check for attribute names to use positive logic
  attr: pass struct attr_check to collect_some_attrs
  attr: retire git_check_attrs() API
  attr: convert git_check_attrs() callers to use the new API
  attr: convert git_all_attrs() to use "struct attr_check"
  attr: (re)introduce git_check_attr() and struct attr_check
  attr: rename function and struct related to checking attributes
  attr.c: outline the future plans by heavily commenting
  Documentation: fix a typo
  attr.c: add push_stack() helper
  attr: support quoting pathname patterns in C style
  attr.c: plug small leak in parse_attr_line()
  attr.c: tighten constness around "git_attr" structure
  ...

7 years agoMerge branch 'sg/completion'
Junio C Hamano [Mon, 27 Feb 2017 21:57:14 +0000 (13:57 -0800)] 
Merge branch 'sg/completion'

Clean-up and updates to command line completion (in contrib/).

* sg/completion: (22 commits)
  completion: restore removed line continuating backslash
  completion: cache the path to the repository
  completion: extract repository discovery from __gitdir()
  completion: don't guard git executions with __gitdir()
  completion: consolidate silencing errors from git commands
  completion: don't use __gitdir() for git commands
  completion: respect 'git -C <path>'
  rev-parse: add '--absolute-git-dir' option
  completion: fix completion after 'git -C <path>'
  completion: don't offer commands when 'git --opt' needs an argument
  completion: list short refs from a remote given as a URL
  completion: don't list 'HEAD' when trying refs completion outside of a repo
  completion: list refs from remote when remote's name matches a directory
  completion: respect 'git --git-dir=<path>' when listing remote refs
  completion: fix most spots not respecting 'git --git-dir=<path>'
  completion: ensure that the repository path given on the command line exists
  completion tests: add tests for the __git_refs() helper function
  completion tests: check __gitdir()'s output in the error cases
  completion tests: consolidate getting path of current working directory
  completion tests: make the $cur variable local to the test helper functions
  ...

7 years agoMerge branch 'lt/pathspec-negative'
Junio C Hamano [Mon, 27 Feb 2017 21:57:13 +0000 (13:57 -0800)] 
Merge branch 'lt/pathspec-negative'

The "negative" pathspec feature was somewhat more cumbersome to use
than necessary in that its short-hand used "!" which needed to be
escaped from shells, and it required "exclude from what?" specified.

* lt/pathspec-negative:
  pathspec: don't error out on all-exclusionary pathspec patterns
  pathspec magic: add '^' as alias for '!'

7 years agoMerge branch 'cw/tag-reflog-message'
Junio C Hamano [Mon, 27 Feb 2017 21:57:13 +0000 (13:57 -0800)] 
Merge branch 'cw/tag-reflog-message'

"git tag" did not leave useful message when adding a new entry to
reflog; this was left unnoticed for a long time because refs/tags/*
doesn't keep reflog by default.

* cw/tag-reflog-message:
  tag: generate useful reflog message

7 years agoMerge branch 'jk/alternate-ref-optim'
Junio C Hamano [Mon, 27 Feb 2017 21:57:13 +0000 (13:57 -0800)] 
Merge branch 'jk/alternate-ref-optim'

Optimizes resource usage while enumerating refs from alternate
object store, to help receiving end of "push" that hosts a
repository with many "forks".

* jk/alternate-ref-optim:
  receive-pack: avoid duplicates between our refs and alternates
  receive-pack: treat namespace .have lines like alternates
  receive-pack: fix misleading namespace/.have comment
  receive-pack: use oidset to de-duplicate .have lines
  add oidset API
  fetch-pack: cache results of for_each_alternate_ref
  for_each_alternate_ref: replace transport code with for-each-ref
  for_each_alternate_ref: pass name/oid instead of ref struct
  for_each_alternate_ref: use strbuf for path allocation
  for_each_alternate_ref: stop trimming trailing slashes
  for_each_alternate_ref: handle failure from real_pathdup()

7 years agoMerge branch 'kn/ref-filter-branch-list'
Junio C Hamano [Mon, 27 Feb 2017 21:57:13 +0000 (13:57 -0800)] 
Merge branch 'kn/ref-filter-branch-list'

The code to list branches in "git branch" has been consolidated
with the more generic ref-filter API.

* kn/ref-filter-branch-list: (21 commits)
  ref-filter: resurrect "strip" as a synonym to "lstrip"
  branch: implement '--format' option
  branch: use ref-filter printing APIs
  branch, tag: use porcelain output
  ref-filter: allow porcelain to translate messages in the output
  ref-filter: add an 'rstrip=<N>' option to atoms which deal with refnames
  ref-filter: modify the 'lstrip=<N>' option to work with negative '<N>'
  ref-filter: Do not abruptly die when using the 'lstrip=<N>' option
  ref-filter: rename the 'strip' option to 'lstrip'
  ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
  ref-filter: introduce refname_atom_parser()
  ref-filter: introduce refname_atom_parser_internal()
  ref-filter: make "%(symref)" atom work with the ':short' modifier
  ref-filter: add support for %(upstream:track,nobracket)
  ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
  ref-filter: introduce format_ref_array_item()
  ref-filter: move get_head_description() from branch.c
  ref-filter: modify "%(objectname:short)" to take length
  ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
  ref-filter: include reference to 'used_atom' within 'atom_value'
  ...

7 years agoMerge branch 'ps/urlmatch-wildcard'
Junio C Hamano [Mon, 27 Feb 2017 21:57:12 +0000 (13:57 -0800)] 
Merge branch 'ps/urlmatch-wildcard'

The <url> part in "http.<url>.<variable>" configuration variable
can now be spelled with '*' that serves as wildcard.
E.g. "http.https://*.example.com.proxy" can be used to specify the
proxy used for https://a.example.com, https://b.example.com, etc.,
i.e. any host in the example.com domain.

* ps/urlmatch-wildcard:
  urlmatch: allow globbing for the URL host part
  urlmatch: include host in urlmatch ranking
  urlmatch: split host and port fields in `struct url_info`
  urlmatch: enable normalization of URLs with globs
  mailmap: add Patrick Steinhardt's work address

7 years agoMerge branch 'mm/merge-rename-delete-message'
Junio C Hamano [Mon, 27 Feb 2017 21:57:12 +0000 (13:57 -0800)] 
Merge branch 'mm/merge-rename-delete-message'

When "git merge" detects a path that is renamed in one history
while the other history deleted (or modified) it, it now reports
both paths to help the user understand what is going on in the two
histories being merged.

* mm/merge-rename-delete-message:
  merge-recursive: make "CONFLICT (rename/delete)" message show both paths

7 years agoMerge branch 'mh/ref-remove-empty-directory'
Junio C Hamano [Mon, 27 Feb 2017 21:57:12 +0000 (13:57 -0800)] 
Merge branch 'mh/ref-remove-empty-directory'

Deletion of a branch "foo/bar" could remove .git/refs/heads/foo
once there no longer is any other branch whose name begins with
"foo/", but we didn't do so so far.  Now we do.

* mh/ref-remove-empty-directory: (23 commits)
  files_transaction_commit(): clean up empty directories
  try_remove_empty_parents(): teach to remove parents of reflogs, too
  try_remove_empty_parents(): don't trash argument contents
  try_remove_empty_parents(): rename parameter "name" -> "refname"
  delete_ref_loose(): inline function
  delete_ref_loose(): derive loose reference path from lock
  log_ref_write_1(): inline function
  log_ref_setup(): manage the name of the reflog file internally
  log_ref_write_1(): don't depend on logfile argument
  log_ref_setup(): pass the open file descriptor back to the caller
  log_ref_setup(): improve robustness against races
  log_ref_setup(): separate code for create vs non-create
  log_ref_write(): inline function
  rename_tmp_log(): improve error reporting
  rename_tmp_log(): use raceproof_create_file()
  lock_ref_sha1_basic(): use raceproof_create_file()
  lock_ref_sha1_basic(): inline constant
  raceproof_create_file(): new function
  safe_create_leading_directories(): set errno on SCLD_EXISTS
  safe_create_leading_directories_const(): preserve errno
  ...

7 years agoMerge branch 'jk/delta-chain-limit'
Junio C Hamano [Mon, 27 Feb 2017 21:57:11 +0000 (13:57 -0800)] 
Merge branch 'jk/delta-chain-limit'

"git repack --depth=<n>" for a long time busted the specified depth
when reusing delta from existing packs.  This has been corrected.

* jk/delta-chain-limit:
  pack-objects: convert recursion to iteration in break_delta_chain()
  pack-objects: enforce --depth limit in reused deltas

7 years agoMerge branch 'jk/describe-omit-some-refs'
Junio C Hamano [Mon, 27 Feb 2017 21:57:11 +0000 (13:57 -0800)] 
Merge branch 'jk/describe-omit-some-refs'

"git describe" and "git name-rev" have been taught to take more
than one refname patterns to restrict the set of refs to base their
naming output on, and also learned to take negative patterns to
name refs not to be used for naming via their "--exclude" option.

* jk/describe-omit-some-refs:
  describe: teach describe negative pattern matches
  describe: teach --match to accept multiple patterns
  name-rev: add support to exclude refs by pattern match
  name-rev: extend --refs to accept multiple patterns
  doc: add documentation for OPT_STRING_LIST

7 years agoGit 2.12 v2.12.0
Junio C Hamano [Fri, 24 Feb 2017 18:49:58 +0000 (10:49 -0800)] 
Git 2.12

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'ps/doc-gc-aggressive-depth-update'
Junio C Hamano [Fri, 24 Feb 2017 18:48:10 +0000 (10:48 -0800)] 
Merge branch 'ps/doc-gc-aggressive-depth-update'

Doc update.

* ps/doc-gc-aggressive-depth-update:
  docs/git-gc: fix default value for `--aggressiveDepth`

7 years agoMerge branch 'bc/worktree-doc-fix-detached'
Junio C Hamano [Fri, 24 Feb 2017 18:48:10 +0000 (10:48 -0800)] 
Merge branch 'bc/worktree-doc-fix-detached'

Doc update.

* bc/worktree-doc-fix-detached:
  Documentation: correctly spell git worktree --detach

7 years agoMerge branch 'dr/doc-check-ref-format-normalize'
Junio C Hamano [Fri, 24 Feb 2017 18:48:09 +0000 (10:48 -0800)] 
Merge branch 'dr/doc-check-ref-format-normalize'

Doc update.

* dr/doc-check-ref-format-normalize:
  git-check-ref-format: clarify documentation for --normalize

7 years agoMerge branch 'gp/document-dotfiles-in-templates-are-not-copied'
Junio C Hamano [Fri, 24 Feb 2017 18:48:09 +0000 (10:48 -0800)] 
Merge branch 'gp/document-dotfiles-in-templates-are-not-copied'

Doc update.

* gp/document-dotfiles-in-templates-are-not-copied:
  init: document dotfiles exclusion on template copy

7 years agoMerge branch 'rt/align-add-i-help-text'
Junio C Hamano [Fri, 24 Feb 2017 18:48:08 +0000 (10:48 -0800)] 
Merge branch 'rt/align-add-i-help-text'

Doc update.

* rt/align-add-i-help-text:
  git add -i: replace \t with blanks in the help message

7 years agoMerge branch 'bc/blame-doc-fix'
Junio C Hamano [Fri, 24 Feb 2017 18:48:07 +0000 (10:48 -0800)] 
Merge branch 'bc/blame-doc-fix'

Doc update.

* bc/blame-doc-fix:
  Documentation: use brackets for optional arguments

7 years agodocs/git-gc: fix default value for `--aggressiveDepth`
Patrick Steinhardt [Fri, 24 Feb 2017 08:46:45 +0000 (09:46 +0100)] 
docs/git-gc: fix default value for `--aggressiveDepth`

In commit 07e7dbf0d (gc: default aggressive depth to 50, 2016-08-11),
the default aggressive depth of git-gc has been changed to 50. While
git-config(1) has been updated to represent the new default value,
git-gc(1) still mentions the old value. This patch fixes it.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge tag 'l10n-2.12.0-rnd2' of git://github.com/git-l10n/git-po
Junio C Hamano [Fri, 24 Feb 2017 17:55:41 +0000 (09:55 -0800)] 
Merge tag 'l10n-2.12.0-rnd2' of git://github.com/git-l10n/git-po

l10n-2.12.0-rnd2

* tag 'l10n-2.12.0-rnd2' of git://github.com/git-l10n/git-po: (22 commits)
  l10n: zh_CN: for git v2.12.0 l10n round 2
  l10n: Update Catalan translation
  l10n: pt_PT: update Portuguese tranlation
  l10n: sv.po: Update Swedish translation (3139t0f0u)
  l10n: de.po: translate 241 messages
  l10n: ko.po: Update Korean translation
  l10n: vi.po (3139t): Updated 2 new messages for rc1
  l10n: fr.po: v2.12.0 round 2 3139t
  l10n: git.pot: v2.12.0 round 2 (2 new)
  l10n: vi.po: Updated Vietnamese translation (3137t)
  l10n: update Catalan translation
  l10n: sv.po: Update Swedish translation (3137t0f0u)
  l10n: fr.po: v2.11-rc0 first round
  l10n: ko.po: Update Korean translation
  l10n: fr.po: Fix a typo in the French translation
  l10n: fr.po: Remove gender specific adjectives
  l10n: fr.po: Fix typos
  l10n: git.pot: v2.12.0 round 1 (239 new, 15 removed)
  l10n: bg:  Updated Bulgarian translation (2913t+0f+0u)
  l10n: fixes to Catalan translation
  ...

7 years agol10n: zh_CN: for git v2.12.0 l10n round 2
Jiang Xin [Fri, 27 Jan 2017 14:50:57 +0000 (22:50 +0800)] 
l10n: zh_CN: for git v2.12.0 l10n round 2

Translate 241 messages (3139t0f0u) for git v2.12.0-rc1.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
7 years agol10n: Update Catalan translation
Jordi Mas [Tue, 21 Feb 2017 17:32:29 +0000 (18:32 +0100)] 
l10n: Update Catalan translation

Signed-off-by: Jordi Mas <jmas@softcatala.org>
7 years agol10n: pt_PT: update Portuguese tranlation
Vasco Almeida [Sun, 5 Feb 2017 18:43:34 +0000 (17:43 -0100)] 
l10n: pt_PT: update Portuguese tranlation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
7 years agogit add -i: replace \t with blanks in the help message
Ralf Thielow [Wed, 22 Feb 2017 18:46:27 +0000 (19:46 +0100)] 
git add -i: replace \t with blanks in the help message

Within the help message of 'git add -i', the 'diff' command uses one
tab character and blanks to create the space between the name and the
description while the others use blanks only.  So if the tab size is
not at 4 characters, this description will not be in range.
Replace the tab character with blanks.

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoDocumentation: use brackets for optional arguments
brian m. carlson [Wed, 22 Feb 2017 12:25:46 +0000 (12:25 +0000)] 
Documentation: use brackets for optional arguments

The documentation for git blame used vertical bars for optional
arguments to -M and -C, which is unusual and potentially confusing.
Since most man pages use brackets for optional items, and that's
consistent with how we document the same options for git diff and
friends, use brackets here, too.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoDocumentation: correctly spell git worktree --detach
brian m. carlson [Wed, 22 Feb 2017 12:34:42 +0000 (12:34 +0000)] 
Documentation: correctly spell git worktree --detach

The option is “--detach”, but we accidentally spelled it “--detached” at
one point in the man page.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Reported-by: Casey Rodarmor <casey@rodarmor.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogit-check-ref-format: clarify documentation for --normalize
Damien Regad [Sun, 19 Feb 2017 22:32:32 +0000 (23:32 +0100)] 
git-check-ref-format: clarify documentation for --normalize

Use of 'iff' may be confusing to people not familiar with this term.

Improving the --normalize option's documentation to remove the use of
'iff', and clearly describe what happens when the condition is not met.

Signed-off-by: Damien Regad <dregad@mantisbt.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'master' of git://github.com/nafmo/git-l10n-sv
Jiang Xin [Tue, 21 Feb 2017 16:06:44 +0000 (00:06 +0800)] 
Merge branch 'master' of git://github.com/nafmo/git-l10n-sv

* 'master' of git://github.com/nafmo/git-l10n-sv:
  l10n: sv.po: Update Swedish translation (3139t0f0u)

7 years agoMerge branch 'svn-escape-backslash' of git://bogomips.org/git-svn
Junio C Hamano [Tue, 21 Feb 2017 06:01:59 +0000 (22:01 -0800)] 
Merge branch 'svn-escape-backslash' of git://bogomips.org/git-svn

* 'svn-escape-backslash' of git://bogomips.org/git-svn:
  git-svn: escape backslashes in refnames

7 years agol10n: sv.po: Update Swedish translation (3139t0f0u)
Peter Krefting [Mon, 20 Feb 2017 18:40:11 +0000 (19:40 +0100)] 
l10n: sv.po: Update Swedish translation (3139t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
7 years agol10n: de.po: translate 241 messages
Ralf Thielow [Mon, 20 Feb 2017 17:40:36 +0000 (18:40 +0100)] 
l10n: de.po: translate 241 messages

Translate 241 messages came from git.pot update in 673bfad09
(l10n: git.pot: v2.12.0 round 1 (239 new, 15 removed)) and a4d94835a
(l10n: git.pot: v2.12.0 round 2 (2 new)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Phillip Sz <phillip.szelat@gmail.com>
7 years agoMerge branch 'ko/merge-l10n' of https://github.com/changwoo/git-l10n-ko
Jiang Xin [Sun, 19 Feb 2017 14:08:05 +0000 (22:08 +0800)] 
Merge branch 'ko/merge-l10n' of https://github.com/changwoo/git-l10n-ko

* 'ko/merge-l10n' of https://github.com/changwoo/git-l10n-ko:
  l10n: ko.po: Update Korean translation

7 years agoMerge branch 'master' of https://github.com/vnwildman/git
Jiang Xin [Sun, 19 Feb 2017 14:04:41 +0000 (22:04 +0800)] 
Merge branch 'master' of https://github.com/vnwildman/git

* 'master' of https://github.com/vnwildman/git:
  l10n: vi.po (3139t): Updated 2 new messages for rc1

7 years agol10n: ko.po: Update Korean translation
Changwoo Ryu [Sun, 19 Feb 2017 10:34:24 +0000 (19:34 +0900)] 
l10n: ko.po: Update Korean translation

Signed-off-by: Changwoo Ryu <cwryu@debian.org>
7 years agol10n: vi.po (3139t): Updated 2 new messages for rc1
Tran Ngoc Quan [Sat, 18 Feb 2017 00:18:54 +0000 (07:18 +0700)] 
l10n: vi.po (3139t): Updated 2 new messages for rc1

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
7 years agoinit: document dotfiles exclusion on template copy
Grégoire Paris [Fri, 17 Feb 2017 23:37:00 +0000 (00:37 +0100)] 
init: document dotfiles exclusion on template copy

Not just . and .., but any path that begins with dot is not copied
when copying the template directory to a new repository.  You can
customize the template directory, copying some dotfiles might make
sense, but it's actually a good thing not to, because you would not
want to have your git directory copied in every git directory that
is created should you decide to put your template directory under
version control, for example.  Plus, it might be used as a feature
by people who would want to exclude some files.

Signed-off-by: Grégoire Paris <postmaster@greg0ire.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agol10n: fr.po: v2.12.0 round 2 3139t
Jean-Noel Avila [Fri, 17 Feb 2017 23:10:04 +0000 (00:10 +0100)] 
l10n: fr.po: v2.12.0 round 2 3139t

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
7 years agoGit 2.12-rc2 v2.12.0-rc2
Junio C Hamano [Fri, 17 Feb 2017 22:00:19 +0000 (14:00 -0800)] 
Git 2.12-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agol10n: git.pot: v2.12.0 round 2 (2 new)
Jiang Xin [Fri, 17 Feb 2017 17:00:54 +0000 (01:00 +0800)] 
l10n: git.pot: v2.12.0 round 2 (2 new)

Generate po/git.pot from v2.12.0-rc1 for git v2.12.0 l10n round 2.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
7 years agoMerge branch 'master' of git://github.com/git-l10n/git-po
Jiang Xin [Fri, 17 Feb 2017 16:59:51 +0000 (00:59 +0800)] 
Merge branch 'master' of git://github.com/git-l10n/git-po

* 'master' of git://github.com/git-l10n/git-po:
  l10n: vi.po: Updated Vietnamese translation (3137t)
  l10n: update Catalan translation
  l10n: sv.po: Update Swedish translation (3137t0f0u)
  l10n: fr.po: v2.11-rc0 first round
  l10n: ko.po: Update Korean translation
  l10n: fr.po: Fix a typo in the French translation
  l10n: fr.po: Remove gender specific adjectives
  l10n: fr.po: Fix typos
  l10n: git.pot: v2.12.0 round 1 (239 new, 15 removed)
  l10n: bg:  Updated Bulgarian translation (2913t+0f+0u)
  l10n: fixes to Catalan translation
  l10n: zh_CN: review for git v2.11.0 l10n
  l10n: New Catalan translation maintainer

7 years agoMerge branch 'master' of https://github.com/vnwildman/git
Jiang Xin [Fri, 17 Feb 2017 16:54:49 +0000 (00:54 +0800)] 
Merge branch 'master' of https://github.com/vnwildman/git

* 'master' of https://github.com/vnwildman/git:
  l10n: vi.po: Updated Vietnamese translation (3137t)

7 years agoMerge branch 'master' of https://github.com/Softcatala/git-po
Jiang Xin [Fri, 17 Feb 2017 16:49:06 +0000 (00:49 +0800)] 
Merge branch 'master' of https://github.com/Softcatala/git-po

* 'master' of https://github.com/Softcatala/git-po:
  l10n: update Catalan translation

7 years agol10n: vi.po: Updated Vietnamese translation (3137t)
Tran Ngoc Quan [Fri, 17 Feb 2017 06:51:34 +0000 (13:51 +0700)] 
l10n: vi.po: Updated Vietnamese translation (3137t)

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
7 years agoHopefully the final batch of mini-topics before the final
Junio C Hamano [Thu, 16 Feb 2017 22:46:35 +0000 (14:46 -0800)] 
Hopefully the final batch of mini-topics before the final

Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'jk/tempfile-ferror-fclose-confusion'
Junio C Hamano [Thu, 16 Feb 2017 22:45:15 +0000 (14:45 -0800)] 
Merge branch 'jk/tempfile-ferror-fclose-confusion'

Code clean-up.

* jk/tempfile-ferror-fclose-confusion:
  tempfile: avoid "ferror | fclose" trick

7 years agoMerge branch 'dp/submodule-doc-markup-fix'
Junio C Hamano [Thu, 16 Feb 2017 22:45:15 +0000 (14:45 -0800)] 
Merge branch 'dp/submodule-doc-markup-fix'

Doc fix.

* dp/submodule-doc-markup-fix:
  config.txt: fix formatting of submodule.alternateErrorStrategy section

7 years agoMerge branch 'jk/reset-to-break-a-commit-doc-updated'
Junio C Hamano [Thu, 16 Feb 2017 22:45:14 +0000 (14:45 -0800)] 
Merge branch 'jk/reset-to-break-a-commit-doc-updated'

Doc update.

* jk/reset-to-break-a-commit-doc-updated:
  reset: add an example of how to split a commit into two

7 years agoMerge branch 'jk/reset-to-break-a-commit-doc'
Junio C Hamano [Thu, 16 Feb 2017 22:45:14 +0000 (14:45 -0800)] 
Merge branch 'jk/reset-to-break-a-commit-doc'

Doc update.

* jk/reset-to-break-a-commit-doc:
  Revert "reset: add an example of how to split a commit into two"

7 years agoMerge branch 'js/mingw-isatty'
Junio C Hamano [Thu, 16 Feb 2017 22:45:13 +0000 (14:45 -0800)] 
Merge branch 'js/mingw-isatty'

A hotfix for a topic already in 'master'.

* js/mingw-isatty:
  mingw: make stderr unbuffered again

7 years agoMerge branch 'rs/strbuf-cleanup-in-rmdir-recursively'
Junio C Hamano [Thu, 16 Feb 2017 22:45:13 +0000 (14:45 -0800)] 
Merge branch 'rs/strbuf-cleanup-in-rmdir-recursively'

Code clean-up.

* rs/strbuf-cleanup-in-rmdir-recursively:
  rm: reuse strbuf for all remove_dir_recursively() calls, again

7 years agoMerge branch 'rs/ls-files-partial-optim'
Junio C Hamano [Thu, 16 Feb 2017 22:45:13 +0000 (14:45 -0800)] 
Merge branch 'rs/ls-files-partial-optim'

"ls-files" run with pathspec has been micro-optimized to avoid
having to memmove(3) unnecessary bytes.

* rs/ls-files-partial-optim:
  ls-files: move only kept cache entries in prune_cache()
  ls-files: pass prefix length explicitly to prune_cache()

7 years agoMerge branch 'rs/cocci-check-free-only-null'
Junio C Hamano [Thu, 16 Feb 2017 22:45:13 +0000 (14:45 -0800)] 
Merge branch 'rs/cocci-check-free-only-null'

A new coccinelle rule that catches a check of !pointer before the
pointer is free(3)d, which most likely is a bug.

* rs/cocci-check-free-only-null:
  cocci: detect useless free(3) calls

7 years agoMerge branch 'ls/p4-path-encoding'
Junio C Hamano [Thu, 16 Feb 2017 22:45:12 +0000 (14:45 -0800)] 
Merge branch 'ls/p4-path-encoding'

When "git p4" imports changelist that removes paths, it failed to
convert pathnames when the p4 used encoding different from the one
used on the Git side.  This has been corrected.

* ls/p4-path-encoding:
  git-p4: fix git-p4.pathEncoding for removed files

7 years agotempfile: avoid "ferror | fclose" trick
Jeff King [Thu, 16 Feb 2017 21:31:40 +0000 (16:31 -0500)] 
tempfile: avoid "ferror | fclose" trick

The current code wants to record an error condition from
either ferror() or fclose(), but makes sure that we always
call both functions. So it can't use logical-OR "||", which
would short-circuit when ferror() is true. Instead, it uses
bitwise-OR "|" to evaluate both functions and set one or
more bits in the "err" flag if they reported a failure.

Unlike logical-OR, though, bitwise-OR does not introduce a
sequence point, and the order of evaluation for its operands
is unspecified. So a compiler would be free to generate code
which calls fclose() first, and then ferror() on the
now-freed filehandle.

There's no indication that this has happened in practice,
but let's write it out in a way that follows the standard.

Noticed-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoconfig.txt: fix formatting of submodule.alternateErrorStrategy section
David Pursehouse [Thu, 16 Feb 2017 05:05:35 +0000 (14:05 +0900)] 
config.txt: fix formatting of submodule.alternateErrorStrategy section

Add missing `::` after the title.

Signed-off-by: David Pursehouse <dpursehouse@collab.net>
Acked-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoreset: add an example of how to split a commit into two
Jacob Keller [Thu, 16 Feb 2017 00:22:12 +0000 (16:22 -0800)] 
reset: add an example of how to split a commit into two

It is often useful to break a commit into multiple parts that are more
logical separations. This can be tricky to learn how to do without the
brute-force method if re-writing code or commit messages from scratch.

Add a section to the git-reset documentation which shows an example
process for how to use git add -p and git commit -c HEAD@{1} to
interactively break a commit apart and re-use the original commit
message as a starting point when making the new commit message.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoRevert "reset: add an example of how to split a commit into two"
Junio C Hamano [Thu, 16 Feb 2017 21:35:50 +0000 (13:35 -0800)] 
Revert "reset: add an example of how to split a commit into two"

This reverts commit 7326451bedaa67d29afe02184b166e28d9393c91; a
better rewrite will be queued separately.

7 years agol10n: update Catalan translation
Jordi Mas [Thu, 16 Feb 2017 04:10:04 +0000 (05:10 +0100)] 
l10n: update Catalan translation

Signed-off-by: Jordi Mas <jmas@softcatala.org>
7 years agoA bit more for -rc2
Junio C Hamano [Wed, 15 Feb 2017 22:58:25 +0000 (14:58 -0800)] 
A bit more for -rc2

7 years agoMerge branch 'tg/stash-doc-cleanup'
Junio C Hamano [Wed, 15 Feb 2017 22:56:41 +0000 (14:56 -0800)] 
Merge branch 'tg/stash-doc-cleanup'

The documentation explained what "git stash" does to the working
tree (after stashing away the local changes) in terms of "reset
--hard", which was exposing an unnecessary implementation detail.

* tg/stash-doc-cleanup:
  Documentation/stash: remove mention of git reset --hard

7 years agoMerge branch 'jk/doc-submodule-markup-fix'
Junio C Hamano [Wed, 15 Feb 2017 22:56:40 +0000 (14:56 -0800)] 
Merge branch 'jk/doc-submodule-markup-fix'

Doc markup fix.

* jk/doc-submodule-markup-fix:
  docs/git-submodule: fix unbalanced quote

7 years agoMerge branch 'jk/doc-remote-helpers-markup-fix'
Junio C Hamano [Wed, 15 Feb 2017 22:56:40 +0000 (14:56 -0800)] 
Merge branch 'jk/doc-remote-helpers-markup-fix'

Doc markup fix.

* jk/doc-remote-helpers-markup-fix:
  docs/gitremote-helpers: fix unbalanced quotes

7 years agoshow-branch: use skip_prefix to drop magic numbers
Jeff King [Wed, 15 Feb 2017 21:40:52 +0000 (16:40 -0500)] 
show-branch: use skip_prefix to drop magic numbers

We make several starts_with() calls, only to advance
pointers. This is exactly what skip_prefix() is for, which
lets us avoid manually-counted magic numbers.

Helped-by: Pranit Bauva <pranit.bauva@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'sb/doc-unify-bottom'
Junio C Hamano [Wed, 15 Feb 2017 20:54:20 +0000 (12:54 -0800)] 
Merge branch 'sb/doc-unify-bottom'

Doc clean-up.

* sb/doc-unify-bottom:
  Documentation: unify bottom "part of git suite" lines

7 years agoMerge branch 'sb/push-options-via-transport'
Junio C Hamano [Wed, 15 Feb 2017 20:54:19 +0000 (12:54 -0800)] 
Merge branch 'sb/push-options-via-transport'

The push-options given via the "--push-options" option were not
passed through to external remote helpers such as "smart HTTP" that
are invoked via the transport helper.

* sb/push-options-via-transport:
  push options: pass push options to the transport helper

7 years agoMerge branch 'cw/completion'
Junio C Hamano [Wed, 15 Feb 2017 20:54:19 +0000 (12:54 -0800)] 
Merge branch 'cw/completion'

More command line completion (in contrib/) for recent additions.

* cw/completion:
  completion: recognize more long-options
  completion: teach remote subcommands to complete options
  completion: teach replace to complete options
  completion: teach ls-remote to complete options
  completion: improve bash completion for git-add
  completion: add subcommand completion for rerere
  completion: teach submodule subcommands to complete options

7 years agoMerge branch 'rs/swap'
Junio C Hamano [Wed, 15 Feb 2017 20:54:19 +0000 (12:54 -0800)] 
Merge branch 'rs/swap'

Code clean-up.

* rs/swap:
  graph: use SWAP macro
  diff: use SWAP macro
  use SWAP macro
  apply: use SWAP macro
  add SWAP macro

7 years agoMerge branch 'sb/submodule-doc'
Junio C Hamano [Wed, 15 Feb 2017 20:54:18 +0000 (12:54 -0800)] 
Merge branch 'sb/submodule-doc'

Doc updates.

* sb/submodule-doc:
  submodule update documentation: don't repeat ourselves
  submodule documentation: add options to the subcommand

7 years agogrep: treat revs the same for --untracked as for --no-index
Jeff King [Tue, 14 Feb 2017 21:54:36 +0000 (16:54 -0500)] 
grep: treat revs the same for --untracked as for --no-index

git-grep has always disallowed grepping in a tree (as
opposed to the working directory) with both --untracked
and --no-index. But we traditionally did so by first
collecting the revs, and then complaining when any were
provided.

The --no-index option recently learned to detect revs
much earlier. This has two user-visible effects:

  - we don't bother to resolve revision names at all. So
    when there's a rev/path ambiguity, we always choose to
    treat it as a path.

  - likewise, when you do specify a revision without "--",
    the error you get is "no such path" and not "--untracked
    cannot be used with revs".

The rationale for doing this with --no-index is that it is
meant to be used outside a repository, and so parsing revs
at all does not make sense.

This patch gives --untracked the same treatment. While it
_is_ meant to be used in a repository, it is explicitly
about grepping the non-repository contents. Telling the user
"we found a rev, but you are not allowed to use revs" is
not really helpful compared to "we treated your argument as
a path, and could not find it".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoremote helpers: avoid blind fall-back to ".git" when setting GIT_DIR
Jonathan Nieder [Tue, 14 Feb 2017 20:36:19 +0000 (15:36 -0500)] 
remote helpers: avoid blind fall-back to ".git" when setting GIT_DIR

To push from or fetch to the current repository, remote helpers need
to know what repository that is.  Accordingly, Git sets the GIT_DIR
environment variable to the path to the current repository when
invoking remote helpers.

There is a special case it does not handle: "git ls-remote" and "git
archive --remote" can be run to inspect a remote repository without
being run from any local repository.  GIT_DIR is not useful in this
scenario:

- if we are not in a repository, we don't need to set GIT_DIR to
  override an existing GIT_DIR value from the environment.  If GIT_DIR
  is present then we would be in a repository if it were valid and
  would have called die() if it weren't.

- not setting GIT_DIR may cause a helper to do the usual discovery
  walk to find the repository.  But we know we're not in one, or we
  would have found it ourselves.  So in the worst case it may expend
  a little extra effort to try to find a repository and fail (for
  example, remote-curl would do this to try to find repository-level
  configuration).

So leave GIT_DIR unset in this case.  This makes GIT_DIR easier to
understand for remote helper authors and makes transport code less of
a special case for repository discovery.

Noticed using b1ef400e (setup_git_env: avoid blind fall-back to
".git", 2016-10-20) from 'next':

 $ cd /tmp
 $ git ls-remote https://kernel.googlesource.com/pub/scm/git/git
 fatal: BUG: setup_git_env called without repository

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoremote: avoid reading $GIT_DIR config in non-repo
Jeff King [Tue, 14 Feb 2017 20:33:28 +0000 (15:33 -0500)] 
remote: avoid reading $GIT_DIR config in non-repo

The "git ls-remote" command can be run outside of a
repository, but needs to look up configured remotes. The
config code is smart enough to handle this case itself, but
we also check the historical "branches" and "remotes" paths
in $GIT_DIR. The git_path() function causes us to blindly
look at ".git/remotes", even if we know we aren't in a git
repository.

For now, this is just an unlikely bug (you probably don't
have such a file if you're not in a repository), but it will
become more obvious once we merge b1ef400ee (setup_git_env:
avoid blind fall-back to ".git", 2016-10-20):

  [now]
  $ git ls-remote
  fatal: No remote configured to list refs from.

  [with b1ef400ee]
  $ git ls-remote
  fatal: BUG: setup_git_env called without repository

We can fix this by skipping these sources entirely when
we're outside of a repository.

The test is a little more complex than the demonstration
above. Rather than detect the correct behavior by parsing
the error message, we can actually set up a case where the
remote name we give is a valid repository, but b1ef400ee
would cause us to die in the configuration step.

This test doesn't fail now, but it future-proofs us for the
b1ef400ee change.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoshow-branch: store resolved head in heap buffer
Jeff King [Tue, 14 Feb 2017 17:27:45 +0000 (12:27 -0500)] 
show-branch: store resolved head in heap buffer

We resolve HEAD and copy the result to a fixed-size buffer
with memcpy, never checking that it actually fits. This bug
dates back to 8098a178b (Add git-symbolic-ref, 2005-09-30).
Before that we used readlink(), which took a maximum buffer
size.

We can fix this by using resolve_refdup(), which duplicates
the buffer on the heap. That also lets us just check
for a NULL pointer to see if we have resolved HEAD, and
drop the extra head_p variable.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoshow-branch: drop head_len variable
Jeff King [Tue, 14 Feb 2017 17:26:01 +0000 (12:26 -0500)] 
show-branch: drop head_len variable

We copy the result of resolving HEAD into a buffer and keep
track of its length.  But we never actually use the length
for anything besides the copy. Let's stop passing it around.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogrep: do not diagnose misspelt revs with --no-index
Jeff King [Tue, 14 Feb 2017 06:08:09 +0000 (01:08 -0500)] 
grep: do not diagnose misspelt revs with --no-index

If we are using --no-index, then our arguments cannot be
revs in the first place. Not only is it pointless to
diagnose them, but if we are not in a repository, we should
not be trying to resolve any names.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogrep: avoid resolving revision names in --no-index case
Jeff King [Tue, 14 Feb 2017 06:07:29 +0000 (01:07 -0500)] 
grep: avoid resolving revision names in --no-index case

We disallow the use of revisions with --no-index, but we
don't actually check and complain until well after we've
parsed the revisions.

This is the cause of a few problems:

 1. We shouldn't be calling get_sha1() at all when we aren't
    in a repository, as it might access the ref or object
    databases. For now, this should generally just return
    failure, but eventually it will become a BUG().

 2. When there's a "--" disambiguator and you're outside a
    repository, we'll complain early with "unable to resolve
    revision". But we can give a much more specific error.

 3. When there isn't a "--" disambiguator, we still do the
    normal rev/path checks. This is silly, as we know we
    cannot have any revs with --no-index. Everything we see
    must be a path.

    Outside of a repository this doesn't matter (since we
    know it won't resolve), but inside one, we may complain
    unnecessarily if a filename happens to also match a
    refname.

This patch skips the get_sha1() call entirely in the
no-index case, and behaves as if it failed (with the
exception of giving a better error message).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogrep: fix "--" rev/pathspec disambiguation
Jeff King [Tue, 14 Feb 2017 06:05:55 +0000 (01:05 -0500)] 
grep: fix "--" rev/pathspec disambiguation

If we see "git grep pattern rev -- file" then we apply the
usual rev/pathspec disambiguation rules: any "rev" before
the "--" must be a revision, and we do not need to apply the
verify_non_filename() check.

But there are two bugs here:

  1. We keep a seen_dashdash flag to handle this case, but
     we set it in the same left-to-right pass over the
     arguments in which we parse "rev".

     So when we see "rev", we do not yet know that there is
     a "--", and we mistakenly complain if there is a
     matching file.

     We can fix this by making a preliminary pass over the
     arguments to find the "--", and only then checking the rev
     arguments.

  2. If we can't resolve "rev" but there isn't a dashdash,
     that's OK. We treat it like a path, and complain later
     if it doesn't exist.

     But if there _is_ a dashdash, then we know it must be a
     rev, and should treat it as such, complaining if it
     does not resolve. The current code instead ignores it
     and tries to treat it like a path.

This patch fixes both bugs, and tries to comment the parsing
flow a bit better.

It adds tests that cover the two bugs, but also some related
situations (which already worked, but this confirms that our
fixes did not break anything).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogrep: re-order rev-parsing loop
Jeff King [Tue, 14 Feb 2017 06:04:17 +0000 (01:04 -0500)] 
grep: re-order rev-parsing loop

We loop over the arguments, but every branch of the loop
hits either a "continue" or a "break". Surely we can make
this simpler.

The final conditional is:

  if (arg is a rev) {
  ... handle rev ...
  continue;
  }
  break;

We can rewrite this as:

  if (arg is not a rev)
  break;

  ... handle rev ...

That makes the flow a little bit simpler, and will make
things much easier to follow when we add more logic in
future patches.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogrep: do not unnecessarily query repo for "--"
Jonathan Tan [Tue, 14 Feb 2017 06:03:03 +0000 (01:03 -0500)] 
grep: do not unnecessarily query repo for "--"

When running a command of the form

  git grep --no-index pattern -- path

in the absence of a Git repository, an error message will be printed:

  fatal: BUG: setup_git_env called without repository

This is because "git grep" tries to interpret "--" as a rev. "git grep"
has always tried to first interpret "--" as a rev for at least a few
years, but this issue was upgraded from a pessimization to a bug in
commit 59332d1 ("Resurrect "git grep --no-index"", 2010-02-06), which
calls get_sha1 regardless of whether --no-index was specified. This bug
appeared to be benign until commit b1ef400 ("setup_git_env: avoid blind
fall-back to ".git"", 2016-10-20) when Git was taught to die in this
situation.  (This "git grep" bug appears to be one of the bugs that
commit b1ef400 is meant to flush out.)

Therefore, always interpret "--" as signaling the end of options,
instead of trying to interpret it as a rev first.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogrep: move thread initialization a little lower
Jeff King [Tue, 14 Feb 2017 06:02:38 +0000 (01:02 -0500)] 
grep: move thread initialization a little lower

Originally, we set up the threads for grep before parsing
the non-option arguments. In 53b8d931b (grep: disable
threading in non-worktree case, 2011-12-12), the thread code
got bumped lower in the function because it now needed to
know whether we got any revision arguments.

That put a big block of code in between the parsing of revs
and the parsing of pathspecs, both of which share some loop
variables. That makes it harder to read the code than the
original, where the shared loops were right next to each
other.

Let's bump the thread initialization until after all of the
parsing is done.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agomingw: make stderr unbuffered again
Johannes Schindelin [Mon, 13 Feb 2017 22:34:06 +0000 (23:34 +0100)] 
mingw: make stderr unbuffered again

When removing the hack for isatty(), we actually removed more than just
an isatty() hack: we removed the hack where internal data structures of
the MSVC runtime are modified in order to redirect stdout/stderr.

Instead of using that hack (that does not work with newer versions of
the runtime, anyway), we replaced it by reopening the respective file
descriptors.

What we forgot was to mark stderr as unbuffered again.

Reported by Hannes Sixt. Fixed with Jeff Hostetler's assistance.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Tested-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agogc: ignore old gc.log files
David Turner [Fri, 10 Feb 2017 21:28:22 +0000 (16:28 -0500)] 
gc: ignore old gc.log files

A server can end up in a state where there are lots of unreferenced
loose objects (say, because many users are doing a bunch of rebasing
and pushing their rebased branches).  Running "git gc --auto" in
this state would cause a gc.log file to be created, preventing
future auto gcs, causing pack files to pile up.  Since many git
operations are O(n) in the number of pack files, this would lead to
poor performance.

Git should never get itself into a state where it refuses to do any
maintenance, just because at some point some piece of the maintenance
didn't make progress.

Teach Git to ignore gc.log files which are older than (by default)
one day old, which can be tweaked via the gc.logExpiry configuration
variable.  That way, these pack files will get cleaned up, if
necessary, at least once per day.  And operators who find a need for
more-frequent gcs can adjust gc.logExpiry to meet their needs.

There is also some cleanup: a successful manual gc, or a
warning-free auto gc with an old log file, will remove any old
gc.log files.

It might still happen that manual intervention is required
(e.g. because the repo is corrupt), but at the very least it won't
be because Git is too dumb to try again.

Signed-off-by: David Turner <dturner@twosigma.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoread_loose_refs(): read refs using resolve_ref_recursively()
Michael Haggerty [Thu, 9 Feb 2017 20:53:52 +0000 (21:53 +0100)] 
read_loose_refs(): read refs using resolve_ref_recursively()

There is no need to call read_ref_full() or resolve_gitlink_ref() from
read_loose_refs(), because we already have a ref_store object in hand.
So we can call resolve_ref_recursively() ourselves. Happily, this
unifies the code for the submodule vs. non-submodule cases.

This requires resolve_ref_recursively() to be exposed to the refs
subsystem, though not to non-refs code.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agorm: reuse strbuf for all remove_dir_recursively() calls, again
René Scharfe [Sat, 11 Feb 2017 19:51:08 +0000 (20:51 +0100)] 
rm: reuse strbuf for all remove_dir_recursively() calls, again

Don't throw the memory allocated for remove_dir_recursively() away after
a single call, use it for the other entries as well instead.

This change was done before in deb8e15a (rm: reuse strbuf for all
remove_dir_recursively() calls), but was reverted as a side-effect of
55856a35 (rm: absorb a submodules git dir before deletion). Reinstate
the optimization.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoDocumentation/stash: remove mention of git reset --hard
Thomas Gummerer [Sun, 12 Feb 2017 21:54:14 +0000 (21:54 +0000)] 
Documentation/stash: remove mention of git reset --hard

Don't mention git reset --hard in the documentation for git stash save.
It's an implementation detail that doesn't matter to the end user and
thus shouldn't be exposed to them.  In addition it's not quite true for
git stash -p, and will not be true when a filename argument to limit the
stash to a few files is introduced.

Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agodocs/git-submodule: fix unbalanced quote
Jeff King [Mon, 13 Feb 2017 21:05:49 +0000 (16:05 -0500)] 
docs/git-submodule: fix unbalanced quote

The documentation gives an example of the submodule foreach
command that uses both backticks and single-quotes. We stick
the whole thing inside "+" markers to make it monospace, but
the inside punctuation still needs escaping. We handle the
backticks with "{backtick}", and use backslash-escaping for
the single-quotes.

But we missed the escaping on the second quote. Fortunately,
asciidoc renders this unbalanced quote as we want (showing
the quote), but asciidoctor does not. We could fix it by
adding the missing backslash.

However, let's take a step back. Even when rendered
correctly, it's hard to read a long command stuck into the
middle of a paragraph, and the important punctuation is hard
to notice. Let's instead bump it into its own single-line
code block. That makes both the source and the rendered
result more readable, and as a bonus we don't have to worry
about quoting at all.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agodocs/gitremote-helpers: fix unbalanced quotes
Jeff King [Mon, 13 Feb 2017 20:38:35 +0000 (15:38 -0500)] 
docs/gitremote-helpers: fix unbalanced quotes

Each of these options is missing the closing single-quote on
the option name. This understandably confuses asciidoc,
which ends up rendering a stray quote, like:

  option cloning {'true|false}

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agocompletion: restore removed line continuating backslash
SZEDER Gábor [Mon, 13 Feb 2017 19:20:36 +0000 (20:20 +0100)] 
completion: restore removed line continuating backslash

Recent commit 1cd23e9e0 (completion: don't use __gitdir() for git
commands, 2017-02-03) rewrapped a couple of long lines, and while
doing so it inadvertently removed a '\' from the end of a line, thus
breaking completion for 'git config remote.name.push <TAB>'.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agols-files: move only kept cache entries in prune_cache()
René Scharfe [Fri, 10 Feb 2017 20:03:30 +0000 (21:03 +0100)] 
ls-files: move only kept cache entries in prune_cache()

prune_cache() first identifies those entries at the start of the sorted
array that can be discarded.  Then it moves the rest of the entries up.
Last it identifies the unwanted trailing entries among the moved ones
and cuts them off.

Change the order: Identify both start *and* end of the range to keep
first and then move only those entries to the top.  The resulting code
is slightly shorter and a bit more efficient.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Reviewed-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agols-files: pass prefix length explicitly to prune_cache()
René Scharfe [Fri, 10 Feb 2017 19:42:28 +0000 (20:42 +0100)] 
ls-files: pass prefix length explicitly to prune_cache()

The function prune_cache() relies on the fact that it is only called on
max_prefix and sneakily uses the matching global variable max_prefix_len
directly.  Tighten its interface by passing both the string and its
length as parameters.  While at it move the NULL check into the function
to collect all cache-pruning related logic in one place.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Reviewed-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
7 years agoMerge branch 'master' of git://github.com/nafmo/git-l10n-sv
Jiang Xin [Mon, 13 Feb 2017 16:19:11 +0000 (00:19 +0800)] 
Merge branch 'master' of git://github.com/nafmo/git-l10n-sv

* 'master' of git://github.com/nafmo/git-l10n-sv:
  l10n: sv.po: Update Swedish translation (3137t0f0u)

7 years agoMerge branch 'fr_v2.11.0_rnd1' of git://github.com/jnavila/git
Jiang Xin [Mon, 13 Feb 2017 16:17:21 +0000 (00:17 +0800)] 
Merge branch 'fr_v2.11.0_rnd1' of git://github.com/jnavila/git

* 'fr_v2.11.0_rnd1' of git://github.com/jnavila/git:
  l10n: fr.po: v2.11-rc0 first round
  l10n: fr.po: Fix a typo in the French translation
  l10n: fr.po: Remove gender specific adjectives
  l10n: fr.po: Fix typos

7 years agococci: detect useless free(3) calls
René Scharfe [Sat, 11 Feb 2017 13:58:44 +0000 (14:58 +0100)] 
cocci: detect useless free(3) calls

Add a semantic patch for removing checks that cause free(3) to only be
called with a NULL pointer, as that must be a programming mistake.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>