git
8 years agostrbuf: make strbuf_addftime more robust
Jeff King [Tue, 30 Jun 2015 13:26:53 +0000 (09:26 -0400)] 
strbuf: make strbuf_addftime more robust

The return value of strftime is poorly designed; when it
returns 0, the caller cannot tell if the buffer was not
large enough, or if the output was actually 0 bytes. In the
original implementation of strbuf_addftime, we simply punted
and guessed that our 128-byte hint would be large enough.

We can do better, though, if we're willing to treat strftime
like less of a black box. We can munge the incoming format
to make sure that it never produces 0-length output, and
then "fix" the resulting output.  That lets us reliably grow
the buffer based on strftime's return value.

Clever-idea-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agobash prompt: faster untracked status indicator with untracked directories
SZEDER Gábor [Sun, 19 Jul 2015 11:28:06 +0000 (13:28 +0200)] 
bash prompt: faster untracked status indicator with untracked directories

If the untracked status indicator is enabled, __git_ps1() looks for
untracked files by running 'git ls-files'.  This can be perceptibly slow
in case of an untracked directory containing lot of files, because it
lists all files found in the untracked directory only to be redirected
into /dev/null right away (this is the actual command run by __git_ps1()):

  $ ls untracked-dir/ |wc -l
  100000
  $ time git ls-files --others --exclude-standard --error-unmatch \
    -- ':/*' >/dev/null 2>/dev/null

  real 0m0.955s
  user 0m0.936s
  sys 0m0.016s

Eliminate this delay by additionally passing the '--directory
--no-empty-directory' options to 'git ls-files' to show only the name of
non-empty untracked directories instead of all their content:

  $ time git ls-files --others --exclude-standard --directory \
    --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null

  real 0m0.010s
  user 0m0.008s
  sys 0m0.000s

This follows suit of ea95c7b8f5 (completion: improve untracked directory
filtering for filename completion, 2013-09-18).

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agobash prompt: test untracked files status indicator with untracked dirs
SZEDER Gábor [Sun, 19 Jul 2015 11:28:05 +0000 (13:28 +0200)] 
bash prompt: test untracked files status indicator with untracked dirs

The next commit will tweak the way __git_ps1() decides whether to display
the untracked files status indicator in the presence of untracked
directories.  Add tests to make sure it doesn't change current behavior,
in particular that an empty untracked directory doesn't trigger the
untracked files status indicator.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agol10n: ca.po: update translation
Alex Henrie [Mon, 20 Jul 2015 17:54:40 +0000 (11:54 -0600)] 
l10n: ca.po: update translation

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
8 years agot3901: test git-am encoding conversion
Paul Tan [Sun, 19 Jul 2015 15:49:18 +0000 (23:49 +0800)] 
t3901: test git-am encoding conversion

Since d1c5f2a (Add git-am, applymbox replacement., 2005-10-07), git-am
supported the --utf8 and --no-utf8 options, and if set, would pass the
-u flag and the -k flag respectively.

git mailinfo -u will re-code the commit log message and authorship info
in the charset specified by i18n.commitencoding setting, while
git mailinfo -n will disable the re-coding.

Since d84029b (--utf8 is now default for 'git-am', 2007-01-08), --utf8
is set by default in git-am.

Add various encoding conversion tests to t3901 to test git-mailinfo's
encoding conversion. In addition, add a test for --no-utf8 to check that
no encoding conversion will occur if that option is set.

Helped-by: Johannes Sixt <j6t@kdbg.org>
Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot3418: non-interactive rebase --continue with rerere enabled
Paul Tan [Sun, 19 Jul 2015 15:49:17 +0000 (23:49 +0800)] 
t3418: non-interactive rebase --continue with rerere enabled

Since 8389b52 (git-rerere: reuse recorded resolve., 2006-01-28), git-am
will call git-rerere to re-use recorded merge conflict resolutions if
any occur in a threeway merge.

Add a test to ensure that git-rerere is called by git-am (which handles
the non-interactive rebase).

Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4150: tests for am --[no-]scissors
Paul Tan [Sun, 19 Jul 2015 15:49:16 +0000 (23:49 +0800)] 
t4150: tests for am --[no-]scissors

Since 017678b (am/mailinfo: Disable scissors processing by default,
2009-08-26), git-am supported the --[no-]scissors option, passing it to
git-mailinfo.

Add tests to ensure that git-am will pass the --scissors option to
git-mailinfo, and that --no-scissors will override the configuration
setting of mailinfo.scissors.

Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4150: am with post-applypatch hook
Paul Tan [Sun, 19 Jul 2015 15:49:15 +0000 (23:49 +0800)] 
t4150: am with post-applypatch hook

Since d1c5f2a (Add git-am, applymbox replacement., 2005-10-07),
git-am.sh will invoke the post-applypatch hook after the patch is
applied and a commit is made. The exit code of the hook is ignored.

Add tests for this hook.

Helped-by: Junio C Hamano <gitster@pobox.com>
Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4150: am with pre-applypatch hook
Paul Tan [Sun, 19 Jul 2015 15:49:14 +0000 (23:49 +0800)] 
t4150: am with pre-applypatch hook

Since d1c5f2a (Add git-am, applymbox replacement., 2005-10-07),
git-am.sg will invoke the pre-applypatch hook after applying the patch
to the index, but before a commit is made. Should the hook exit with a
non-zero status, git am will exit.

Add tests for this hook.

Helped-by: Junio C Hamano <gitster@pobox.com>
Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4150: am with applypatch-msg hook
Paul Tan [Sun, 19 Jul 2015 15:49:13 +0000 (23:49 +0800)] 
t4150: am with applypatch-msg hook

Since d1c5f2a (Add git-am, applymbox replacement., 2005-10-07), git-am
will invoke the applypatch-msg hooks just after extracting the patch
message. If the applypatch-msg hook exits with a non-zero status, git-am
abort before even applying the patch to the index.

Add tests for this hook.

Helped-by: Junio C Hamano <gitster@pobox.com>
Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4150: am --resolved fails if index has unmerged entries
Paul Tan [Sun, 19 Jul 2015 15:49:12 +0000 (23:49 +0800)] 
t4150: am --resolved fails if index has unmerged entries

Since c1d1128 (git-am --resolved: more usable error message.,
2006-04-28), git-am --resolved will check to see if there are any
unmerged entries, and will error out with a user-friendly error message
if there are.

Add a test for this.

Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4150: am --resolved fails if index has no changes
Paul Tan [Sun, 19 Jul 2015 15:49:11 +0000 (23:49 +0800)] 
t4150: am --resolved fails if index has no changes

Since 6d28644 (git-am: do not allow empty commits by mistake.,
2006-02-23), git-am --resolved will check to see if the index has any
changes to prevent the user from creating an empty commit by mistake.

Add a test for this.

Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4150: am refuses patches when paused
Paul Tan [Sun, 19 Jul 2015 15:49:10 +0000 (23:49 +0800)] 
t4150: am refuses patches when paused

Since c95b138 (Fix git-am safety checks, 2006-09-15), when there is a
session in progress, git-am will check the command-line arguments and
standard input to ensure that the user does not pass it any patches.

Add a test for this.

Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4151: am --abort will keep dirty index intact
Paul Tan [Sun, 19 Jul 2015 15:49:09 +0000 (23:49 +0800)] 
t4151: am --abort will keep dirty index intact

Since 7b3b7e3 (am --abort: keep unrelated commits since the last failure
and warn, 2010-12-21), git-am --abort will not touch the index if on the
previous invocation, git-am failed because the index is dirty. This is
to ensure that the user's modifications to the index are not discarded.

Add a test for this.

Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4150: am fails if index is dirty
Paul Tan [Sun, 19 Jul 2015 15:49:08 +0000 (23:49 +0800)] 
t4150: am fails if index is dirty

Since d1c5f2a (Add git-am, applymbox replacement., 2005-10-07), git-am
will ensure that the index is clean before applying the patch. This is
to prevent changes unrelated to the patch from being committed.

Add a test for this check.

Reviewed-by: Stefan Beller <sbeller@google.com>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Paul Tan <pyokagan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agountracked: fix detection of uname(2) failure
Charles Bailey [Fri, 17 Jul 2015 17:09:41 +0000 (18:09 +0100)] 
untracked: fix detection of uname(2) failure

According to POSIX specification uname(2) must return -1 on failure
and a non-negative value on success.  Although many implementations
do return 0 on success it is valid to return any positive value for
success.  In particular, Solaris returns 1.

Signed-off-by: Charles Bailey <cbailey32@bloomberg.net>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jk/still-interesting'
Junio C Hamano [Fri, 17 Jul 2015 17:44:56 +0000 (10:44 -0700)] 
Merge branch 'jk/still-interesting'

Code clean-up.

* jk/still-interesting:
  revision.c: remove unneeded check for NULL

8 years agoMerge branch 'es/worktree-add'
Junio C Hamano [Fri, 17 Jul 2015 17:44:54 +0000 (10:44 -0700)] 
Merge branch 'es/worktree-add'

Update to the "linked checkout" in 2.5.0-rc1.

Instead of "checkout --to" that does not do what "checkout"
normally does, move the functionality to "git worktree add".

As this makes the end-user experience of the "worktree add" more or
less complete, I am tempted to say we should cook the other topic
that removes the internal "new-worktree-mode" hack from "checkout"
a bit longer in 'next', and release 2.5 final without that one.

* es/worktree-add:
  Documentation/git: fix stale "MULTIPLE CHECKOUT MODE" reference
  worktree: caution that this is still experimental
  Documentation/git-worktree: fix stale "git checkout --to" references

8 years agoDocumentation/git: fix stale "MULTIPLE CHECKOUT MODE" reference
Eric Sunshine [Fri, 17 Jul 2015 00:17:02 +0000 (20:17 -0400)] 
Documentation/git: fix stale "MULTIPLE CHECKOUT MODE" reference

This should have been changed by 93a3649 (Documentation: move linked
worktree description from checkout to worktree, 2015-07-06).

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoworktree: caution that this is still experimental
Junio C Hamano [Thu, 16 Jul 2015 22:59:48 +0000 (15:59 -0700)] 
worktree: caution that this is still experimental

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoDocumentation/git-worktree: fix stale "git checkout --to" references
Eric Sunshine [Thu, 16 Jul 2015 22:09:43 +0000 (18:09 -0400)] 
Documentation/git-worktree: fix stale "git checkout --to" references

These should have been changed to "git worktree add" by fc56361
(worktree: introduce "add" command, 2015-07-06.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'master' of https://github.com/ralfth/git-po-de
Jiang Xin [Wed, 15 Jul 2015 23:44:43 +0000 (07:44 +0800)] 
Merge branch 'master' of https://github.com/ralfth/git-po-de

* 'master' of https://github.com/ralfth/git-po-de:
  l10n: de.po: translate 9 new messages

8 years agoSync with 2.4.6
Junio C Hamano [Wed, 15 Jul 2015 19:32:37 +0000 (12:32 -0700)] 
Sync with 2.4.6

8 years agoGit 2.4.6 v2.4.6
Junio C Hamano [Wed, 15 Jul 2015 18:45:42 +0000 (11:45 -0700)] 
Git 2.4.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jc/diff-ws-error-highlight'
Junio C Hamano [Wed, 15 Jul 2015 19:30:14 +0000 (12:30 -0700)] 
Merge branch 'jc/diff-ws-error-highlight'

A hotfix to a new feature in 2.5.0-rc.

* jc/diff-ws-error-highlight:
  diff: parse ws-error-highlight option more strictly

8 years agoMerge branch 'mm/describe-doc' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:26 +0000 (11:41 -0700)] 
Merge branch 'mm/describe-doc' into maint

Docfix.

* mm/describe-doc:
  Documentation/describe: improve one-line summary

8 years agoMerge branch 'jc/prompt-document-ps1-state-separator' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:26 +0000 (11:41 -0700)] 
Merge branch 'jc/prompt-document-ps1-state-separator' into maint

Docfix.

* jc/prompt-document-ps1-state-separator:
  git-prompt.sh: document GIT_PS1_STATESEPARATOR

8 years agoMerge branch 'es/osx-header-pollutes-mask-macro' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:24 +0000 (11:41 -0700)] 
Merge branch 'es/osx-header-pollutes-mask-macro' into maint

* es/osx-header-pollutes-mask-macro:
  ewah: use less generic macro name
  ewah/bitmap: silence warning about MASK macro redefinition

8 years agoMerge branch 'es/utf8-stupid-compiler-workaround' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:23 +0000 (11:41 -0700)] 
Merge branch 'es/utf8-stupid-compiler-workaround' into maint

A compilation workaround.

* es/utf8-stupid-compiler-workaround:
  utf8: NO_ICONV: silence uninitialized variable warning

8 years agoMerge branch 'fk/doc-format-patch-vn' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:22 +0000 (11:41 -0700)] 
Merge branch 'fk/doc-format-patch-vn' into maint

Docfix.

* fk/doc-format-patch-vn:
  doc: format-patch: fix typo

8 years agoMerge branch 'pt/t0302-needs-sanity' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:21 +0000 (11:41 -0700)] 
Merge branch 'pt/t0302-needs-sanity' into maint

* pt/t0302-needs-sanity:
  t0302: "unreadable" test needs SANITY prereq

8 years agoMerge branch 'me/fetch-into-shallow-safety' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:20 +0000 (11:41 -0700)] 
Merge branch 'me/fetch-into-shallow-safety' into maint

"git fetch --depth=<depth>" and "git clone --depth=<depth>" issued
a shallow transfer request even to an upload-pack that does not
support the capability.

* me/fetch-into-shallow-safety:
  fetch-pack: check for shallow if depth given

8 years agoMerge branch 'mh/fsck-reflog-entries' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:19 +0000 (11:41 -0700)] 
Merge branch 'mh/fsck-reflog-entries' into maint

"git fsck" used to ignore missing or invalid objects recorded in reflog.

* mh/fsck-reflog-entries:
  fsck: report errors if reflog entries point at invalid objects
  fsck_handle_reflog_sha1(): new function

8 years agoMerge branch 'af/tcsh-completion-noclobber' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:18 +0000 (11:41 -0700)] 
Merge branch 'af/tcsh-completion-noclobber' into maint

The tcsh completion writes a bash scriptlet but that would have
failed for users with noclobber set.

* af/tcsh-completion-noclobber:
  git-completion.tcsh: fix redirect with noclobber

8 years agoMerge branch 'pa/auto-gc-mac-osx' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:17 +0000 (11:41 -0700)] 
Merge branch 'pa/auto-gc-mac-osx' into maint

Recent Mac OS X updates breaks the logic to detect that the machine
is on the AC power in the sample pre-auto-gc script.

* pa/auto-gc-mac-osx:
  hooks/pre-auto-gc: adjust power checking for newer OS X

8 years agoMerge branch 'jc/do-not-feed-tags-to-clear-commit-marks' into maint
Junio C Hamano [Wed, 15 Jul 2015 18:41:16 +0000 (11:41 -0700)] 
Merge branch 'jc/do-not-feed-tags-to-clear-commit-marks' into maint

"git format-patch --ignore-if-upstream A..B" did not like to be fed
tags as boundary commits.

* jc/do-not-feed-tags-to-clear-commit-marks:
  format-patch: do not feed tags to clear_commit_marks()

8 years agol10n: de.po: translate 9 new messages
Ralf Thielow [Tue, 14 Jul 2015 17:41:07 +0000 (19:41 +0200)] 
l10n: de.po: translate 9 new messages

Translate 9 new messages came from git.pot update in a4156d2
(l10n: git.pot: v2.5.0 round 2 (9 new, 5 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Phillip Sz <phillip.szelat@gmail.com>
8 years agol10n: Updated Bulgarian translation of git (2359t,0f,0u)
Alexander Shopov [Tue, 14 Jul 2015 16:09:55 +0000 (19:09 +0300)] 
l10n: Updated Bulgarian translation of git (2359t,0f,0u)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>
8 years agorev-parse --parseopt: allow [*=?!] in argument hints
Ilya Bobyr [Tue, 14 Jul 2015 08:17:44 +0000 (01:17 -0700)] 
rev-parse --parseopt: allow [*=?!] in argument hints

A line in the input to "rev-parse --parseopt" describes an option by
listing a short and/or long name, optional flags [*=?!], argument hint,
and then whitespace and help string.

We did not allow any of the [*=?!] characters in the argument hints.
The following input

    pair=key=value  equals sign in the hint

used to generate a help line like this:

    --pair=key <value>   equals sign in the hint

and used to expect "pair=key" as the argument name.

That is not very helpful as we generally do not want any of the [*=?!]
characters in the argument names.  But we do want to use at least the
equals sign in the argument hints.

Update the parser to make long argument names stop at the first [*=?!]
character.

Add test case with equals sign in the argument hint and update the test
to perform all the operations in test_expect_success matching the
t/README requirements and allowing commands like

    ./t1502-rev-parse-parseopt.sh --run=1-2

to stop at the test case 2 without any further modification of the test
state area.

Signed-off-by: Ilya Bobyr <ilya.bobyr@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agol10n: zh_CN: for git v2.5.0 l10n round 2
Jiang Xin [Mon, 13 Jul 2015 23:33:09 +0000 (07:33 +0800)] 
l10n: zh_CN: for git v2.5.0 l10n round 2

Update 9 translations (2359t0f0u) for git v2.5.0-rc2.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
8 years agol10n: sv.po: Update Swedish translation (2359t0f0u)
Peter Krefting [Wed, 15 Jul 2015 11:54:11 +0000 (12:54 +0100)] 
l10n: sv.po: Update Swedish translation (2359t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
8 years agoMerge branch 'fr_v2.5.0-round2' of git://github.com/jnavila/git
Jiang Xin [Tue, 14 Jul 2015 23:06:49 +0000 (07:06 +0800)] 
Merge branch 'fr_v2.5.0-round2' of git://github.com/jnavila/git

* 'fr_v2.5.0-round2' of git://github.com/jnavila/git:
  l10n: fr v2.5.0 round 2 (2359t)

8 years agol10n: fr v2.5.0 round 2 (2359t)
Jean-Noel Avila [Tue, 14 Jul 2015 10:25:06 +0000 (12:25 +0200)] 
l10n: fr v2.5.0 round 2 (2359t)

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
8 years agoMerge branch 'russian-l10n' of https://github.com/DJm00n/git-po-ru
Jiang Xin [Tue, 14 Jul 2015 14:30:12 +0000 (22:30 +0800)] 
Merge branch 'russian-l10n' of https://github.com/DJm00n/git-po-ru

* 'russian-l10n' of https://github.com/DJm00n/git-po-ru:
  l10n: ru.po: update Russian translation

8 years agol10n: ru.po: update Russian translation
Dimitriy Ryazantcev [Tue, 14 Jul 2015 13:34:00 +0000 (16:34 +0300)] 
l10n: ru.po: update Russian translation

Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>
8 years agol10n: Updated Vietnamese translation (2359t)
Tran Ngoc Quan [Tue, 14 Jul 2015 00:30:51 +0000 (07:30 +0700)] 
l10n: Updated Vietnamese translation (2359t)

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
8 years agol10n: git.pot: v2.5.0 round 2 (9 new, 5 removed)
Jiang Xin [Mon, 13 Jul 2015 23:20:08 +0000 (07:20 +0800)] 
l10n: git.pot: v2.5.0 round 2 (9 new, 5 removed)

Generate po/git.pot from v2.5.0-rc2 for git v2.5.0 l10n round 2.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
8 years agoMerge tag 'l10n-2.5.0-rnd1' of git://github.com/git-l10n/git-po
Junio C Hamano [Mon, 13 Jul 2015 22:37:24 +0000 (15:37 -0700)] 
Merge tag 'l10n-2.5.0-rnd1' of git://github.com/git-l10n/git-po

l10n-2.5.0-rnd1

* tag 'l10n-2.5.0-rnd1' of git://github.com/git-l10n/git-po:
  l10n: de.po: translate 65 new messages
  l10n: de.po: translate "index" as "Index"
  l10n: de.po: fix translation of "head nodes"
  l10n: zh_CN: for git v2.5.0 l10n round 1
  l10n: ca.po: update translation
  l10n: fr.po v2.5.0-rc0 (2355t)
  l10n: Updated Bulgarian translation of git (2355t,0f,0u)
  l10n: sv.po: Update Swedish translation (2355t0f0u)
  l10n: Updated Vietnamese translation (2355t)
  l10n: git.pot: v2.5.0 round 1 (65 new, 15 removed)

8 years agoGit 2.5.0-rc2 v2.5.0-rc2
Junio C Hamano [Mon, 13 Jul 2015 21:03:44 +0000 (14:03 -0700)] 
Git 2.5.0-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'es/worktree-add'
Junio C Hamano [Mon, 13 Jul 2015 21:02:18 +0000 (14:02 -0700)] 
Merge branch 'es/worktree-add'

Update to the "linked checkout" in 2.5.0-rc1.

Instead of "checkout --to" that does not do what "checkout"
normally does, move the functionality to "git worktree add".

* es/worktree-add: (24 commits)
  Revert "checkout: retire --ignore-other-worktrees in favor of --force"
  checkout: retire --ignore-other-worktrees in favor of --force
  worktree: add: auto-vivify new branch when <branch> is omitted
  worktree: add: make -b/-B default to HEAD when <branch> is omitted
  worktree: extract basename computation to new function
  checkout: require worktree unconditionally
  checkout: retire --to option
  tests: worktree: retrofit "checkout --to" tests for "worktree add"
  worktree: add -b/-B options
  worktree: add --detach option
  worktree: add --force option
  worktree: introduce "add" command
  checkout: drop 'checkout_opts' dependency from prepare_linked_checkout
  checkout: make --to unconditionally verbose
  checkout: prepare_linked_checkout: drop now-unused 'new' argument
  checkout: relocate --to's "no branch specified" check
  checkout: fix bug with --to and relative HEAD
  Documentation/git-worktree: add EXAMPLES section
  Documentation/git-worktree: add high-level 'lock' overview
  Documentation/git-worktree: split technical info from general description
  ...

8 years agoMerge branch 'nd/multiple-work-trees'
Junio C Hamano [Mon, 13 Jul 2015 21:02:02 +0000 (14:02 -0700)] 
Merge branch 'nd/multiple-work-trees'

"git checkout [<tree-ish>] <paths>" spent unnecessary cycles
checking if the current branch was checked out elsewhere, when we
know we are not switching the branches ourselves.

* nd/multiple-work-trees:
  worktree: new place for "git prune --worktrees"
  checkout: don't check worktrees when not necessary

8 years agoMerge branch 'ss/clone-guess-dir-name-simplify'
Junio C Hamano [Mon, 13 Jul 2015 21:00:28 +0000 (14:00 -0700)] 
Merge branch 'ss/clone-guess-dir-name-simplify'

Code simplification.

* ss/clone-guess-dir-name-simplify:
  clone: simplify string handling in guess_dir_name()

8 years agoMerge branch 'kb/config-unmap-before-renaming'
Junio C Hamano [Mon, 13 Jul 2015 21:00:27 +0000 (14:00 -0700)] 
Merge branch 'kb/config-unmap-before-renaming'

"git config" failed to update the configuration file when the
underlying filesystem is incapable of renaming a file that is still
open.

* kb/config-unmap-before-renaming:
  config.c: fix writing config files on Windows network shares

8 years agoMerge branch 'mh/strbuf-read-file-returns-ssize-t'
Junio C Hamano [Mon, 13 Jul 2015 21:00:27 +0000 (14:00 -0700)] 
Merge branch 'mh/strbuf-read-file-returns-ssize-t'

Avoid possible ssize_t to int truncation.

* mh/strbuf-read-file-returns-ssize-t:
  strbuf: strbuf_read_file() should return ssize_t

8 years agoMerge branch 'jc/unexport-git-pager-in-use-in-pager'
Junio C Hamano [Mon, 13 Jul 2015 21:00:26 +0000 (14:00 -0700)] 
Merge branch 'jc/unexport-git-pager-in-use-in-pager'

When you say "!<ENTER>" while running say "git log", you'd confuse
yourself in the resulting shell, that may look as if you took
control back to the original shell you spawned "git log" from but
that isn't what is happening.  To that new shell, we leaked
GIT_PAGER_IN_USE environment variable that was meant as a local
communication between the original "Git" and subprocesses that was
spawned by it after we launched the pager, which caused many
"interesting" things to happen, e.g. "git diff | cat" still paints
its output in color by default.

Stop leaking that environment variable to the pager's half of the
fork; we only need it on "Git" side when we spawn the pager.

* jc/unexport-git-pager-in-use-in-pager:
  pager: do not leak "GIT_PAGER_IN_USE" to the pager

8 years agoMerge branch 'kb/use-nsec-doc'
Junio C Hamano [Mon, 13 Jul 2015 21:00:26 +0000 (14:00 -0700)] 
Merge branch 'kb/use-nsec-doc'

Clarify in the Makefile a guideline to decide use of USE_NSEC.

* kb/use-nsec-doc:
  Makefile / racy-git.txt: clarify USE_NSEC prerequisites

8 years agoMerge branch 'js/rebase-i-clean-up-upon-continue-to-skip'
Junio C Hamano [Mon, 13 Jul 2015 21:00:25 +0000 (14:00 -0700)] 
Merge branch 'js/rebase-i-clean-up-upon-continue-to-skip'

Abandoning an already applied change in "git rebase -i" with
"--continue" left CHERRY_PICK_HEAD and confused later steps.

* js/rebase-i-clean-up-upon-continue-to-skip:
  rebase -i: do not leave a CHERRY_PICK_HEAD file behind
  t3404: demonstrate CHERRY_PICK_HEAD bug

8 years agoMerge branch 'et/http-proxyauth'
Junio C Hamano [Mon, 13 Jul 2015 21:00:24 +0000 (14:00 -0700)] 
Merge branch 'et/http-proxyauth'

We used to ask libCURL to use the most secure authentication method
available when talking to an HTTP proxy only when we were told to
talk to one via configuration variables.  We now ask libCURL to
always use the most secure authentication method, because the user
can tell libCURL to use an HTTP proxy via an environment variable
without using configuration variables.

* et/http-proxyauth:
  http: always use any proxy auth method available

8 years agoMerge branch 'jc/fsck-retire-require-eoh'
Junio C Hamano [Mon, 13 Jul 2015 21:00:23 +0000 (14:00 -0700)] 
Merge branch 'jc/fsck-retire-require-eoh'

A fix to a minor regression to "git fsck" in v2.2 era that started
complaining about a body-less tag object when it lacks a separator
empty line after its header to separate it with a non-existent body.

* jc/fsck-retire-require-eoh:
  fsck: it is OK for a tag and a commit to lack the body

8 years agofast-import: do less work when given "from" matches current branch head
Mike Hommey [Thu, 9 Jul 2015 06:50:09 +0000 (15:50 +0900)] 
fast-import: do less work when given "from" matches current branch head

When building a fast-import stream, it's easy to forget the fact
that for non-merge commits happening on top of the current branch
head, there is no need for a "from" command. That is corroborated by
the fact that at least git-p4, hg-fast-export and felipec's
git-remote-hg all unconditionally use a "from" command.

Unfortunately, giving a "from" command always resets the branch
tree, forcing it to be re-read, and in many cases, the pack is also
closed and reopened through gfi_unpack_entry.  Both are unnecessary
overhead, and the latter is particularly slow at least on OSX.

Avoid resetting the tree when it's unmodified, and avoid calling
gfi_unpack_entry when the given mark points to the same commit as
the current branch head.

Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agodiff: parse ws-error-highlight option more strictly
René Scharfe [Sat, 11 Jul 2015 12:58:21 +0000 (14:58 +0200)] 
diff: parse ws-error-highlight option more strictly

Check if a matched token is followed by a delimiter before advancing the
pointer arg.  This avoids accepting composite words like "allnew" or
"defaultcontext" and misparsing them as "new" or "context".

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoRevert "checkout: retire --ignore-other-worktrees in favor of --force"
Junio C Hamano [Sun, 12 Jul 2015 16:38:21 +0000 (09:38 -0700)] 
Revert "checkout: retire --ignore-other-worktrees in favor of --force"

This reverts commit 0d1a1517835a10818f2d40d8780a268dbb5e20ce.

When trying to switch to a different branch, that happens to be
checked out in another working tree, the user shouldn't have to
give up the other safety measures (like protecting the local changes
that overlap the difference between the branches) while defeating
the "no two checkouts of the same branch" safety.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocheckout: document subtlety around --ours/--theirs
Simon A. Eugster [Fri, 10 Jul 2015 20:07:11 +0000 (13:07 -0700)] 
checkout: document subtlety around --ours/--theirs

During a 'rebase' (hence 'pull --rebase'), --ours/--theirs may
appear to be swapped to those who are not aware of the fact that
they are temporarily playing the role of the keeper of the more
authoritative history.

Add a note to clarify.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Simon A. Eugster <simon.eugster@eps.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoThe last minute bits of fixes
Junio C Hamano [Fri, 10 Jul 2015 21:29:00 +0000 (14:29 -0700)] 
The last minute bits of fixes

Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'cb/rebase-am-exit-code'
Junio C Hamano [Fri, 10 Jul 2015 21:26:16 +0000 (14:26 -0700)] 
Merge branch 'cb/rebase-am-exit-code'

"git rebase" did not exit with failure when format-patch it invoked
failed for whatever reason.

* cb/rebase-am-exit-code:
  rebase: return non-zero error code if format-patch fails

8 years agoMerge branch 'jk/fix-refresh-utime'
Junio C Hamano [Fri, 10 Jul 2015 21:26:14 +0000 (14:26 -0700)] 
Merge branch 'jk/fix-refresh-utime'

Fix a small bug in our use of umask() return value.

* jk/fix-refresh-utime:
  check_and_freshen_file: fix reversed success-check

8 years agoMerge branch 'mm/branch-doc-updates'
Junio C Hamano [Fri, 10 Jul 2015 21:26:13 +0000 (14:26 -0700)] 
Merge branch 'mm/branch-doc-updates'

* mm/branch-doc-updates:
  Documentation/branch: document -M and -D in terms of --force
  Documentation/branch: document -d --force and -m --force

8 years agoMerge branch 'ls/hint-rev-list-count'
Junio C Hamano [Fri, 10 Jul 2015 21:26:12 +0000 (14:26 -0700)] 
Merge branch 'ls/hint-rev-list-count'

* ls/hint-rev-list-count:
  rev-list: add --count to usage guide

8 years agoMerge branch 'jk/rev-list-no-bitmap-while-pruning'
Junio C Hamano [Fri, 10 Jul 2015 21:26:12 +0000 (14:26 -0700)] 
Merge branch 'jk/rev-list-no-bitmap-while-pruning'

A minor bugfix when pack bitmap is used with "rev-list --count".

* jk/rev-list-no-bitmap-while-pruning:
  rev-list: disable --use-bitmap-index when pruning commits

8 years agoMerge branch 'cb/subtree-tests-update'
Junio C Hamano [Fri, 10 Jul 2015 21:17:56 +0000 (14:17 -0700)] 
Merge branch 'cb/subtree-tests-update'

Tests update in contrib/subtree.

* cb/subtree-tests-update:
  contrib/subtree: small tidy-up to test
  contrib/subtree: fix broken &&-chains and revealed test error
  contrib/subtree: use tabs consitently for indentation in tests

8 years agoMerge branch 'rh/test-color-avoid-terminfo-in-original-home'
Junio C Hamano [Fri, 10 Jul 2015 21:17:55 +0000 (14:17 -0700)] 
Merge branch 'rh/test-color-avoid-terminfo-in-original-home'

An ancient test framework enhancement to allow color was not
entirely correct; this makes it work even when tput needs to read
from the ~/.terminfo under the user's real HOME directory.

* rh/test-color-avoid-terminfo-in-original-home:
  test-lib.sh: fix color support when tput needs ~/.terminfo
  Revert "test-lib.sh: do tests for color support after changing HOME"

8 years agoMerge branch 'sb/p5310-and-chain'
Junio C Hamano [Fri, 10 Jul 2015 21:17:54 +0000 (14:17 -0700)] 
Merge branch 'sb/p5310-and-chain'

Code clean-up.

* sb/p5310-and-chain:
  p5310: Fix broken && chain in performance test

8 years agoMerge branch 'tb/checkout-doc'
Junio C Hamano [Fri, 10 Jul 2015 21:17:54 +0000 (14:17 -0700)] 
Merge branch 'tb/checkout-doc'

Doc update.

* tb/checkout-doc:
  git-checkout.txt: document "git checkout <pathspec>" better

8 years agoMerge branch 'jk/pretty-encoding-doc'
Junio C Hamano [Fri, 10 Jul 2015 21:17:53 +0000 (14:17 -0700)] 
Merge branch 'jk/pretty-encoding-doc'

Doc update.

* jk/pretty-encoding-doc:
  docs: clarify that --encoding can produce invalid sequences

8 years agoMerge branch 'nd/dwim-wildcards-as-pathspecs'
Junio C Hamano [Fri, 10 Jul 2015 21:17:52 +0000 (14:17 -0700)] 
Merge branch 'nd/dwim-wildcards-as-pathspecs'

Test updates to a topic already in 2.5-rc.

* nd/dwim-wildcards-as-pathspecs:
  Add tests for wildcard "path vs ref" disambiguation

8 years agoDocumentation/tag: remove double occurance of "<pattern>"
Karthik Nayak [Thu, 9 Jul 2015 10:27:47 +0000 (15:57 +0530)] 
Documentation/tag: remove double occurance of "<pattern>"

Mentored-by: Christian Couder <christian.couder@gmail.com>
Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoMerge branch 'jk/maint-for-each-packed-object'
Junio C Hamano [Thu, 9 Jul 2015 21:31:43 +0000 (14:31 -0700)] 
Merge branch 'jk/maint-for-each-packed-object'

The for_each_packed_object() API function did not iterate over
objects in a packfile that hasn't been used yet.

* jk/maint-for-each-packed-object:
  for_each_packed_object: automatically open pack index

8 years agoMerge branch 'jc/fix-alloc-sortbuf-in-index-pack'
Junio C Hamano [Thu, 9 Jul 2015 21:31:42 +0000 (14:31 -0700)] 
Merge branch 'jc/fix-alloc-sortbuf-in-index-pack'

A hotfix for what is in 2.5-rc but not in 2.4.

* jc/fix-alloc-sortbuf-in-index-pack:
  index-pack: fix allocation of sorted_by_pos array

8 years agoclone: simplify string handling in guess_dir_name()
Sebastian Schuberth [Thu, 9 Jul 2015 18:24:08 +0000 (18:24 +0000)] 
clone: simplify string handling in guess_dir_name()

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agolog: add "log.follow" configuration variable
David Turner [Wed, 8 Jul 2015 01:29:34 +0000 (21:29 -0400)] 
log: add "log.follow" configuration variable

People who work on projects with mostly linear history with frequent
whole file renames may want to always use "git log --follow" when
inspecting the life of the content that live in a single path.

Teach the command to behave as if "--follow" was given from the
command line when log.follow configuration variable is set *and*
there is one (and only one) path on the command line.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocheck_and_freshen_file: fix reversed success-check
Jeff King [Wed, 8 Jul 2015 20:33:52 +0000 (16:33 -0400)] 
check_and_freshen_file: fix reversed success-check

When we want to write out a loose object file, we have
always first made sure we don't already have the object
somewhere. Since 33d4221 (write_sha1_file: freshen existing
objects, 2014-10-15), we also update the timestamp on the
file, so that a simultaneous prune knows somebody is
likely to reference it soon.

If our utime() call fails, we treat this the same as not
having the object in the first place; the safe thing to do
is write out another copy. However, the loose-object check
accidentally inverts the utime() check; it returns failure
_only_ when the utime() call actually succeeded. Thus it was
failing to protect us there, and in the normal case where
utime() succeeds, it caused us to pointlessly write out and
link the object.

This passed our freshening tests, because writing out the
new object is certainly _one_ way of updating its utime. So
the normal case was inefficient, but not wrong.

While we're here, let's also drop a comment in front of the
check_and_freshen functions, making a note of their return
type (since it is not our usual "0 for success, -1 for
error").

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agorebase: return non-zero error code if format-patch fails
Clemens Buchacher [Thu, 2 Jul 2015 09:11:33 +0000 (11:11 +0200)] 
rebase: return non-zero error code if format-patch fails

Since e481af06 (rebase: Handle cases where format-patch fails) we
notice if format-patch fails and return immediately from
git-rebase--am. We save the return value with ret=$?, but then we
return $?, which is usually zero in this case.

Fix this by returning $ret instead.

Cc: Andrew Wong <andrew.kw.w@gmail.com>
Signed-off-by: Clemens Buchacher <clemens.buchacher@intel.com>
Helped-by: Jorge Nunes <jorge.nunes@intel.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agol10n: de.po: translate 65 new messages
Ralf Thielow [Wed, 1 Jul 2015 18:07:08 +0000 (20:07 +0200)] 
l10n: de.po: translate 65 new messages

Translate 65 new messages came from git.pot update in
64f23b0 (l10n: git.pot: v2.5.0 round 1 (65 new, 15 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
8 years agol10n: de.po: translate "index" as "Index"
Ralf Thielow [Fri, 19 Jun 2015 17:50:06 +0000 (19:50 +0200)] 
l10n: de.po: translate "index" as "Index"

The term "index" is translated as "Staging-Area" to
match a majority of German books and to not confuse
Git beginners who don't know about Git's index.

"Staging Area" is used in German books as a thing where
content can be staged for commit.  While the translation
is good for those kind of messages, it's bad for messages
that mean the Git index as the tree state or the index
file, in which case we should translate as "Index".

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
8 years agol10n: de.po: fix translation of "head nodes"
Ralf Thielow [Fri, 5 Jun 2015 17:30:35 +0000 (19:30 +0200)] 
l10n: de.po: fix translation of "head nodes"

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Phillip Sz <phillip.szelat@gmail.com>
8 years agosend-email: suppress meaningless whitespaces in from field
Remi Lespinet [Tue, 30 Jun 2015 12:16:51 +0000 (14:16 +0200)] 
send-email: suppress meaningless whitespaces in from field

Remove leading and trailing whitespaces in from field before
interepreting it to improve consistency with other options.  The
split_addrs function already take care of trailing and leading
whitespaces for to, cc and bcc fields.
The from option now:

 - has the same behavior when passing arguments like
   "  jdoe@example.com ", "\t jdoe@example.com " or
   "jdoe@example.com".

 - interprets aliases in string containing leading and trailing
   whitespaces such as " alias" or "alias\t" like other options.

Signed-off-by: Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agosend-email: allow multiple emails using --cc, --to and --bcc
Remi Lespinet [Tue, 30 Jun 2015 12:16:50 +0000 (14:16 +0200)] 
send-email: allow multiple emails using --cc, --to and --bcc

Accept a list of emails separated by commas in flags --cc, --to and
--bcc.  Multiple addresses can already be given by using these options
multiple times, but it is more convenient to allow cutting-and-pasting
a list of addresses from the header of an existing e-mail message,
which already lists them as comma-separated list, as a value to a
single parameter.

The following format can now be used:

    $ git send-email --to='Jane <jdoe@example.com>, mike@example.com'

Remove the limitation imposed by 79ee555b (Check and document the
options to prevent mistakes, 2006-06-21) which rejected every argument
with comma in --cc, --to and --bcc.

Signed-off-by: Mathieu Lienard--Mayor <Mathieu.Lienard--Mayor@ensimag.imag.fr>
Signed-off-by: Jorge Juan Garcia Garcia <Jorge-Juan.Garcia-Garcia@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agosend-email: consider quote as delimiter instead of character
Remi Lespinet [Tue, 30 Jun 2015 12:16:49 +0000 (14:16 +0200)] 
send-email: consider quote as delimiter instead of character

Do not consider quote inside a recipient name as character when
they are not escaped. This interprets:

  "Jane" "Doe" <jdoe@example.com>

as:

  "Jane Doe" <jdoe@example.com>

instead of:

  "Jane\" \"Doe" <jdoe@example.com>

Signed-off-by: Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agosend-email: reduce dependencies impact on parse_address_line
Remi Lespinet [Tue, 7 Jul 2015 13:38:15 +0000 (15:38 +0200)] 
send-email: reduce dependencies impact on parse_address_line

parse_address_line had not the same behavior whether the user had
Mail::Address or not. Teach parse_address_line to behave like
Mail::Address.

When the user input is correct, this implementation behaves
exactly like Mail::Address except when there are quotes
inside the name:

  "Jane Do"e <jdoe@example.com>

In this case the result of parse_address_line is:

  With M::A : "Jane Do" e <jdoe@example.com>
  Without   : "Jane Do e" <jdoe@example.com>

When the user input is not correct, the behavior is also mostly
the same.

Unlike Mail::Address, this doesn't parse groups and recursive
commentaries.

Signed-off-by: Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocheckout: retire --ignore-other-worktrees in favor of --force
Eric Sunshine [Mon, 6 Jul 2015 17:31:00 +0000 (13:31 -0400)] 
checkout: retire --ignore-other-worktrees in favor of --force

As a safeguard, checking out a branch already checked out by a different
worktree is disallowed. This behavior can be overridden with
--ignore-other-worktrees, however, this option is neither obvious nor
particularly discoverable. As a common safeguard override, --force is
more likely to come to mind. Therefore, overload it to also suppress the
check for a branch already checked out elsewhere.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoworktree: add: auto-vivify new branch when <branch> is omitted
Eric Sunshine [Mon, 6 Jul 2015 17:30:59 +0000 (13:30 -0400)] 
worktree: add: auto-vivify new branch when <branch> is omitted

As a convenience, when <branch> is omitted from "git worktree <path>
<branch>" and neither -b nor -B is used, automatically create a new
branch named after <path>, as if "-b $(basename <path>)" was specified.
Thus, "git worktree add ../hotfix" creates a new branch named "hotfix"
and associates it with new worktree "../hotfix".

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agot4150: am.messageid really adds the message id
Paul Tan [Tue, 7 Jul 2015 14:08:23 +0000 (22:08 +0800)] 
t4150: am.messageid really adds the message id

Since a078f73 (git-am: add --message-id/--no-message-id, 2014-11-25),
the am.messageid setting determines whether the --message-id option is
set by default.

Add a test for this.

Signed-off-by: Paul Tan <pyokagan@gmail.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agostatus: add new tests for status during rebase -i
Guillaume Pagès [Mon, 6 Jul 2015 20:56:04 +0000 (22:56 +0200)] 
status: add new tests for status during rebase -i

Expand test coverage with one or more than two commands done
and with zero, one or more than two commands remaining.

Signed-off-by: Guillaume Pagès <guillaume.pages@ensimag.grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agostatus: give more information during rebase -i
Guillaume Pagès [Mon, 6 Jul 2015 20:56:03 +0000 (22:56 +0200)] 
status: give more information during rebase -i

git status gives more information during rebase -i, about the list of
command that are done during the rebase. It displays the two last
commands executed and the two next lines to be executed. It also gives
hints to find the whole files in .git directory.

Signed-off-by: Guillaume Pagès <guillaume.pages@ensimag.grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoworktree: add: make -b/-B default to HEAD when <branch> is omitted
Eric Sunshine [Mon, 6 Jul 2015 17:30:58 +0000 (13:30 -0400)] 
worktree: add: make -b/-B default to HEAD when <branch> is omitted

As a convenience, like "git branch" and "git checkout -b", make
"git worktree add -b <newbranch> <path> <branch>" default to HEAD when
<branch> is omitted.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoworktree: extract basename computation to new function
Eric Sunshine [Mon, 6 Jul 2015 17:30:57 +0000 (13:30 -0400)] 
worktree: extract basename computation to new function

A subsequent patch will also need to compute the basename of the new
worktree, so factor out this logic into a new function.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocheckout: require worktree unconditionally
Eric Sunshine [Mon, 6 Jul 2015 17:30:56 +0000 (13:30 -0400)] 
checkout: require worktree unconditionally

In order to allow linked worktree creation via "git checkout --to" from
a bare repository, 3473ad0 (checkout: don't require a work tree when
checking out into a new one, 2014-11-30) dropped git-checkout's
unconditional NEED_WORK_TREE requirement and instead performed worktree
setup conditionally based upon presence or absence of the --to option.
Now that --to has been retired and git-checkout is no longer responsible
for linked worktree creation, the NEED_WORK_TREE requirement can be
re-instated.

This effectively reverts 3473ad0, except for the tests it added which
now check bare repository behavior of "git worktree add" instead.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agocheckout: retire --to option
Eric Sunshine [Mon, 6 Jul 2015 17:30:55 +0000 (13:30 -0400)] 
checkout: retire --to option

Now that "git worktree add" has achieved user-facing feature-parity with
"git checkout --to", retire the latter.

Move the actual linked worktree creation functionality,
prepare_linked_checkout() and its helpers, verbatim from checkout.c to
worktree.c.

This effectively reverts changes to checkout.c by 529fef2 (checkout:
support checking out into a new working directory, 2014-11-30) with the
exception of merge_working_tree() and switch_branches() which still
require specialized knowledge that a the checkout is occurring in a
newly-created linked worktree (signaled to them by the private
GIT_CHECKOUT_NEW_WORKTREE environment variable).

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agotests: worktree: retrofit "checkout --to" tests for "worktree add"
Eric Sunshine [Mon, 6 Jul 2015 17:30:54 +0000 (13:30 -0400)] 
tests: worktree: retrofit "checkout --to" tests for "worktree add"

With the introduction of "git worktree add", "git checkout --to" is
slated for removal. Therefore, retrofit linked worktree creation tests
to use "git worktree add" instead.

(The test to check exclusivity of "checkout --to" and "checkout <paths>"
is dropped altogether since it becomes meaningless with retirement of
"checkout --to".)

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
8 years agoworktree: add -b/-B options
Eric Sunshine [Mon, 6 Jul 2015 17:30:53 +0000 (13:30 -0400)] 
worktree: add -b/-B options

One of git-worktree's roles is to populate the new worktree, much like
git-checkout, and thus, for convenience, ought to support several of the
same shortcuts. Toward this goal, add -b/-B options to create a new
branch and check it out in the new worktree.

(For brevity, only -b is mentioned in the synopsis; -B is omitted.)

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>