git
10 years agorebase: cherry-pick: add copyright felipec/fc/rebase
Felipe Contreras [Sun, 9 Jun 2013 19:24:50 +0000 (14:24 -0500)] 
rebase: cherry-pick: add copyright

Probably enough changes to warrant that.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: remove merge mode
Felipe Contreras [Sun, 9 Jun 2013 19:24:49 +0000 (14:24 -0500)] 
rebase: remove merge mode

The cherrypick mode does the job.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: cherry-pick: add merge options
Felipe Contreras [Sun, 9 Jun 2013 19:24:48 +0000 (14:24 -0500)] 
rebase: cherry-pick: add merge options

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: use 'cherrypick' mode instead of 'am'
Felipe Contreras [Sun, 9 Jun 2013 19:24:46 +0000 (14:24 -0500)] 
rebase: use 'cherrypick' mode instead of 'am'

Unless any specific 'git am' options are used.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agoprompt: parse cherry-pick rebase mode
Felipe Contreras [Wed, 17 Jul 2013 19:13:03 +0000 (14:13 -0500)] 
prompt: parse cherry-pick rebase mode

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agosequencer: store progress information
Felipe Contreras [Thu, 22 Aug 2013 22:58:58 +0000 (17:58 -0500)] 
sequencer: store progress information

So that it can be used by shell prompts.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agot: rebase-autostash: fix setup
Felipe Contreras [Mon, 24 Jun 2013 23:45:05 +0000 (18:45 -0500)] 
t: rebase-autostash: fix setup

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: trivial cleanup
Felipe Contreras [Sun, 9 Jun 2013 19:24:45 +0000 (14:24 -0500)] 
rebase: trivial cleanup

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: cherry-pick: set correct action-name
Felipe Contreras [Sun, 9 Jun 2013 19:24:44 +0000 (14:24 -0500)] 
rebase: cherry-pick: set correct action-name

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: cherry-pick: automatically commit stage
Felipe Contreras [Sun, 9 Jun 2013 19:24:43 +0000 (14:24 -0500)] 
rebase: cherry-pick: automatically commit stage

When there's changes in the staging area. Just like the other rebase
modes.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: cherry-pick: fix status messages
Felipe Contreras [Sun, 9 Jun 2013 19:24:42 +0000 (14:24 -0500)] 
rebase: cherry-pick: fix status messages

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: cherry-pick: fix command invocations
Felipe Contreras [Sun, 9 Jun 2013 19:24:41 +0000 (14:24 -0500)] 
rebase: cherry-pick: fix command invocations

So that all the tests pass.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: cherry-pick: fix abort of cherry mode
Felipe Contreras [Sun, 9 Jun 2013 19:24:40 +0000 (14:24 -0500)] 
rebase: cherry-pick: fix abort of cherry mode

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: cherry-pick: fix sequence continuation
Felipe Contreras [Sun, 9 Jun 2013 19:24:39 +0000 (14:24 -0500)] 
rebase: cherry-pick: fix sequence continuation

We are not in am mode.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: cherry-pick: fix mode storage
Felipe Contreras [Sun, 9 Jun 2013 19:24:38 +0000 (14:24 -0500)] 
rebase: cherry-pick: fix mode storage

We don't use the 'rebase-apply'.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorebase: split the cherry-pick stuff
Felipe Contreras [Sun, 9 Jun 2013 19:24:37 +0000 (14:24 -0500)] 
rebase: split the cherry-pick stuff

They do something completely different from 'git am', it belongs in a
different file.

No functional changes.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agocherry-pick: remember rerere-autoupdate
Felipe Contreras [Sun, 9 Jun 2013 19:24:36 +0000 (14:24 -0500)] 
cherry-pick: remember rerere-autoupdate

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agocherry-pick: copy notes and run hooks
Felipe Contreras [Sun, 9 Jun 2013 19:24:34 +0000 (14:24 -0500)] 
cherry-pick: copy notes and run hooks

If no action-name is specified, nothing is done.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agocherry-pick: add --action-name option
Felipe Contreras [Sun, 9 Jun 2013 19:24:35 +0000 (14:24 -0500)] 
cherry-pick: add --action-name option

So it can be used by other tools (e.g. git rebase), and the right action
is passed to the hooks and notes rewrite stuff.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agobuiltin: rewrite: add copy_rewrite_notes()
Felipe Contreras [Sun, 9 Jun 2013 19:24:33 +0000 (14:24 -0500)] 
builtin: rewrite: add copy_rewrite_notes()

And use it on commit.c.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agobuiltin: move run_rewrite_hook() to rewrite.c
Felipe Contreras [Sun, 9 Jun 2013 19:24:32 +0000 (14:24 -0500)] 
builtin: move run_rewrite_hook() to rewrite.c

And use struct rewrite.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agocherry-pick: don't store skipped commit
Felipe Contreras [Sun, 9 Jun 2013 19:24:31 +0000 (14:24 -0500)] 
cherry-pick: don't store skipped commit

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agocherry-pick: store rewritten commits
Felipe Contreras [Sun, 9 Jun 2013 19:24:30 +0000 (14:24 -0500)] 
cherry-pick: store rewritten commits

Will be useful for the next commits.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agobuiltin: add rewrite helper
Felipe Contreras [Sun, 9 Jun 2013 19:24:29 +0000 (14:24 -0500)] 
builtin: add rewrite helper

So that we can load and store rewrites, as well as other operations on a
list of rewritten commits.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorevert/cherry-pick: add --skip option
Felipe Contreras [Sun, 9 Jun 2013 19:24:28 +0000 (14:24 -0500)] 
revert/cherry-pick: add --skip option

Akin to 'am --skip' and 'rebase --skip'.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agorevert/cherry-pick: add --quiet option
Felipe Contreras [Sun, 9 Jun 2013 19:24:27 +0000 (14:24 -0500)] 
revert/cherry-pick: add --quiet option

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agocherry-pick: add --skip-empty option
Felipe Contreras [Sun, 9 Jun 2013 19:24:26 +0000 (14:24 -0500)] 
cherry-pick: add --skip-empty option

Pretty much what it says on the tin.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agocherry-pick: don't barf when there's nothing to do
Felipe Contreras [Sun, 9 Jun 2013 19:24:25 +0000 (14:24 -0500)] 
cherry-pick: don't barf when there's nothing to do

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
10 years agoGit 1.9.2 v1.9.2
Junio C Hamano [Wed, 9 Apr 2014 19:04:34 +0000 (12:04 -0700)] 
Git 1.9.2

The second maintenance release for Git 1.9; contains all the fixes
that are scheduled to appear in Git 2.0.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'jl/nor-or-nand-and' into maint
Junio C Hamano [Wed, 9 Apr 2014 19:03:26 +0000 (12:03 -0700)] 
Merge branch 'jl/nor-or-nand-and' into maint

* jl/nor-or-nand-and:
  code and test: fix misuses of "nor"
  comments: fix misuses of "nor"
  contrib: fix misuses of "nor"
  Documentation: fix misuses of "nor"

10 years agoMerge branch 'cn/fetch-prune-overlapping-destination' into maint
Junio C Hamano [Wed, 9 Apr 2014 19:02:41 +0000 (12:02 -0700)] 
Merge branch 'cn/fetch-prune-overlapping-destination' into maint

* cn/fetch-prune-overlapping-destination:
  fetch: handle overlaping refspecs on --prune
  fetch: add a failing test for prunning with overlapping refspecs

10 years agoMerge branch 'mh/update-ref-batch-create-fix' into maint
Junio C Hamano [Wed, 9 Apr 2014 19:01:28 +0000 (12:01 -0700)] 
Merge branch 'mh/update-ref-batch-create-fix' into maint

* mh/update-ref-batch-create-fix:
  update-ref: fail create operation over stdin if ref already exists

10 years agoMerge branch 'jk/commit-dates-parsing-fix' into maint
Junio C Hamano [Wed, 9 Apr 2014 18:59:38 +0000 (11:59 -0700)] 
Merge branch 'jk/commit-dates-parsing-fix' into maint

* jk/commit-dates-parsing-fix:
  t4212: loosen far-in-future test for AIX
  date: recognize bogus FreeBSD gmtime output

10 years agoMerge branch 'jc/fix-diff-no-index-diff-opt-parse' into maint
Junio C Hamano [Wed, 9 Apr 2014 18:59:16 +0000 (11:59 -0700)] 
Merge branch 'jc/fix-diff-no-index-diff-opt-parse' into maint

* jc/fix-diff-no-index-diff-opt-parse:
  diff-no-index: correctly diagnose error return from diff_opt_parse()

10 years agoMerge commit 'doc/http-backend: missing accent grave in literal mark-up'
Junio C Hamano [Wed, 9 Apr 2014 18:45:04 +0000 (11:45 -0700)] 
Merge commit 'doc/http-backend: missing accent grave in literal mark-up'

* commit '5df05146d5cb94628a3dfc53063c802ee1152cec':
  doc/http-backend: missing accent grave in literal mark-up

10 years agodoc/http-backend: missing accent grave in literal mark-up
Thomas Ackermann [Wed, 9 Apr 2014 18:17:38 +0000 (20:17 +0200)] 
doc/http-backend: missing accent grave in literal mark-up

Signed-off-by: Thomas Ackermann <th.acker@arcor.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoUpdate draft release notes to 1.9.2
Junio C Hamano [Tue, 8 Apr 2014 19:08:34 +0000 (12:08 -0700)] 
Update draft release notes to 1.9.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'mm/status-porcelain-format-i18n-fix' into maint
Junio C Hamano [Tue, 8 Apr 2014 19:07:06 +0000 (12:07 -0700)] 
Merge branch 'mm/status-porcelain-format-i18n-fix' into maint

* mm/status-porcelain-format-i18n-fix:
  status: disable translation when --porcelain is used

10 years agoMerge branch 'bp/commit-p-editor' into maint
Junio C Hamano [Tue, 8 Apr 2014 19:07:06 +0000 (12:07 -0700)] 
Merge branch 'bp/commit-p-editor' into maint

* bp/commit-p-editor:
  run-command: mark run_hook_with_custom_index as deprecated
  merge hook tests: fix and update tests
  merge: fix GIT_EDITOR override for commit hook
  commit: fix patch hunk editing with "commit -p -m"
  test patch hunk editing with "commit -p -m"
  merge hook tests: use 'test_must_fail' instead of '!'
  merge hook tests: fix missing '&&' in test

10 years agoStart preparing for 1.9.1
Junio C Hamano [Thu, 3 Apr 2014 20:37:29 +0000 (13:37 -0700)] 
Start preparing for 1.9.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'jk/mv-submodules-fix' into maint
Junio C Hamano [Thu, 3 Apr 2014 20:39:06 +0000 (13:39 -0700)] 
Merge branch 'jk/mv-submodules-fix' into maint

* jk/mv-submodules-fix:
  mv: prevent mismatched data when ignoring errors.
  builtin/mv: fix out of bounds write

Conflicts:
t/t7001-mv.sh

10 years agoMerge branch 'mh/remove-subtree-long-pathname-fix' into maint
Junio C Hamano [Thu, 3 Apr 2014 20:39:05 +0000 (13:39 -0700)] 
Merge branch 'mh/remove-subtree-long-pathname-fix' into maint

* mh/remove-subtree-long-pathname-fix:
  entry.c: fix possible buffer overflow in remove_subtree()
  checkout_entry(): use the strbuf throughout the function

10 years agoMerge branch 'jk/lib-terminal-lazy' into maint
Junio C Hamano [Thu, 3 Apr 2014 20:39:04 +0000 (13:39 -0700)] 
Merge branch 'jk/lib-terminal-lazy' into maint

* jk/lib-terminal-lazy:
  t/lib-terminal: make TTY a lazy prerequisite

10 years agoMerge branch 'nd/index-pack-error-message' into maint
Junio C Hamano [Thu, 3 Apr 2014 20:39:04 +0000 (13:39 -0700)] 
Merge branch 'nd/index-pack-error-message' into maint

* nd/index-pack-error-message:
  index-pack: report error using the correct variable

10 years agoMerge branch 'us/printf-not-echo' into maint
Junio C Hamano [Thu, 3 Apr 2014 20:39:04 +0000 (13:39 -0700)] 
Merge branch 'us/printf-not-echo' into maint

* us/printf-not-echo:
  test-lib.sh: do not "echo" caller-supplied strings
  rebase -i: do not "echo" random user-supplied strings

10 years agoMerge branch 'rr/doc-merge-strategies' into maint
Junio C Hamano [Thu, 3 Apr 2014 20:39:03 +0000 (13:39 -0700)] 
Merge branch 'rr/doc-merge-strategies' into maint

* rr/doc-merge-strategies:
  Documentation/merge-strategies: avoid hyphenated commands

10 years agoMerge branch 'jk/shallow-update-fix' into maint
Junio C Hamano [Thu, 3 Apr 2014 20:39:03 +0000 (13:39 -0700)] 
Merge branch 'jk/shallow-update-fix' into maint

* jk/shallow-update-fix:
  shallow: verify shallow file after taking lock
  shallow: automatically clean up shallow tempfiles
  shallow: use stat_validity to check for up-to-date file

10 years agoMerge branch 'jc/stash-pop-not-popped' into maint
Junio C Hamano [Thu, 3 Apr 2014 20:39:03 +0000 (13:39 -0700)] 
Merge branch 'jc/stash-pop-not-popped' into maint

* jc/stash-pop-not-popped:
  stash pop: mention we did not drop the stash upon failing to apply

10 years agoMerge branch 'jn/wt-status' into maint
Junio C Hamano [Thu, 3 Apr 2014 20:39:02 +0000 (13:39 -0700)] 
Merge branch 'jn/wt-status' into maint

* jn/wt-status:
  wt-status: lift the artificual "at least 20 columns" floor
  wt-status: i18n of section labels
  wt-status: extract the code to compute width for labels
  wt-status: make full label string to be subject to l10n

10 years agoupdate-ref: fail create operation over stdin if ref already exists
Aman Gupta [Wed, 2 Apr 2014 08:09:54 +0000 (10:09 +0200)] 
update-ref: fail create operation over stdin if ref already exists

Signed-off-by: Aman Gupta <aman@tmm1.net>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot4212: loosen far-in-future test for AIX
Jeff King [Tue, 1 Apr 2014 07:43:06 +0000 (03:43 -0400)] 
t4212: loosen far-in-future test for AIX

One of the tests in t4212 checks our behavior when we feed
gmtime a date so far in the future that it gives up and
returns NULL. Some implementations, like AIX, may actually
just provide us a bogus result instead.

It's not worth it for us to come up with heuristics that
guess whether the return value is sensible or not. On good
platforms where gmtime reports the problem to us with NULL,
we will print the epoch value. On bad platforms, we will
print garbage.  But our test should be written for the
lowest common denominator so that it passes everywhere.

Reported-by: Charles Bailey <cbailey32@bloomberg.net>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodate: recognize bogus FreeBSD gmtime output
Jeff King [Tue, 1 Apr 2014 21:28:42 +0000 (17:28 -0400)] 
date: recognize bogus FreeBSD gmtime output

Most gmtime implementations return a NULL value when they
encounter an error (and this behavior is specified by ANSI C
and POSIX).  FreeBSD's implementation, however, will simply
leave the "struct tm" untouched.  Let's also recognize this
and convert it to a NULL (with this patch, t4212 should pass
on FreeBSD).

Reported-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocode and test: fix misuses of "nor"
Justin Lebar [Mon, 31 Mar 2014 22:11:47 +0000 (15:11 -0700)] 
code and test: fix misuses of "nor"

Signed-off-by: Justin Lebar <jlebar@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocomments: fix misuses of "nor"
Justin Lebar [Mon, 31 Mar 2014 22:11:46 +0000 (15:11 -0700)] 
comments: fix misuses of "nor"

Signed-off-by: Justin Lebar <jlebar@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocontrib: fix misuses of "nor"
Justin Lebar [Mon, 31 Mar 2014 22:11:45 +0000 (15:11 -0700)] 
contrib: fix misuses of "nor"

Signed-off-by: Justin Lebar <jlebar@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoDocumentation: fix misuses of "nor"
Justin Lebar [Mon, 31 Mar 2014 22:11:44 +0000 (15:11 -0700)] 
Documentation: fix misuses of "nor"

Signed-off-by: Justin Lebar <jlebar@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agodiff-no-index: correctly diagnose error return from diff_opt_parse()
Junio C Hamano [Mon, 31 Mar 2014 18:47:17 +0000 (11:47 -0700)] 
diff-no-index: correctly diagnose error return from diff_opt_parse()

diff_opt_parse() returns the number of options parsed, or often
returns error() which is defined to return -1.  Yes, return value of
0 is "I did not process that option at all", which should cause the
caller to say that, but negative return should not be forgotten.

This bug caused "diff --no-index" to infinitely show the same error
message because the returned value was used to decrement the loop
control variable, e.g.

        $ git diff --no-index --color=words a b
        error: option `color' expects "always", "auto", or "never"
        error: option `color' expects "always", "auto", or "never"
        ...

Instead, make it act like so:

        $ git diff --no-index --color=words a b
        error: option `color' expects "always", "auto", or "never"
        fatal: invalid diff option/value: --color=words

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agofetch: handle overlaping refspecs on --prune
Carlos Martín Nieto [Thu, 27 Feb 2014 09:00:10 +0000 (10:00 +0100)] 
fetch: handle overlaping refspecs on --prune

We need to consider that a remote-tracking branch may match more than
one rhs of a fetch refspec. In such a case, it is not enough to stop at
the first match but look at all of the matches in order to determine
whether a head is stale.

To this goal, introduce a variant of query_refspecs which returns all of
the matching refspecs and loop over those answers to check for
staleness.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agostatus: disable translation when --porcelain is used
Matthieu Moy [Thu, 20 Mar 2014 12:12:41 +0000 (13:12 +0100)] 
status: disable translation when --porcelain is used

"git status --branch --porcelain" displays the status of the branch
(ahead, behind, gone), and used gettext to translate the string.

Use hardcoded strings when --porcelain is used, but keep the gettext
translation for "git status --short" which is essentially the same, but
meant to be read by a human.

Reported-by: Anarky <ghostanarky@gmail.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoGit 1.9.1 v1.9.1
Junio C Hamano [Tue, 18 Mar 2014 21:06:49 +0000 (14:06 -0700)] 
Git 1.9.1

The version numbering scheme has changed since Git 1.9 and we
dropped the third dewey-decimal from the traditional numbering
(e.g. both 1.8.4 and 1.8.5 were major feature releases).  This
release 1.9.1 is the first maintenance relase for Git 1.9.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'jk/clean-d-pathspec' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:04:59 +0000 (14:04 -0700)] 
Merge branch 'jk/clean-d-pathspec' into maint

"git clean -d pathspec" did not use the given pathspec correctly
and ended up cleaning too much.

* jk/clean-d-pathspec:
  clean: simplify dir/not-dir logic
  clean: respect pathspecs with "-d"

10 years agoMerge branch 'da/difftool-git-files' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:04:36 +0000 (14:04 -0700)] 
Merge branch 'da/difftool-git-files' into maint

"git difftool" misbehaved when the repository is bound to the
working tree with the ".git file" mechanism, where a textual file
".git" tells us where it is.

* da/difftool-git-files:
  t7800: add a difftool test for .git-files
  difftool: support repositories with .git-files

10 years agoMerge branch 'jk/remote-pushremote-config-reading' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:04:16 +0000 (14:04 -0700)] 
Merge branch 'jk/remote-pushremote-config-reading' into maint

"git push" did not pay attention to branch.*.pushremote if it is
defined earlier than remote.pushdefault; the order of these two
variables in the configuration file should not matter, but it did by
mistake.

* jk/remote-pushremote-config-reading:
  remote: handle pushremote config in any order

10 years agoMerge branch 'jk/commit-dates-parsing-fix' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:04:01 +0000 (14:04 -0700)] 
Merge branch 'jk/commit-dates-parsing-fix' into maint

Codepaths that parse timestamps in commit objects have been
tightened.

* jk/commit-dates-parsing-fix:
  show_ident_date: fix tz range check
  log: do not segfault on gmtime errors
  log: handle integer overflow in timestamps
  date: check date overflow against time_t
  fsck: report integer overflow in author timestamps
  t4212: test bogus timestamps with git-log

10 years agoMerge branch 'tr/diff-submodule-no-reuse-worktree' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:03:41 +0000 (14:03 -0700)] 
Merge branch 'tr/diff-submodule-no-reuse-worktree' into maint

"git diff --external-diff" incorrectly fed the submodule directory
in the working tree to the external diff driver when it knew it is
the same as one of the versions being compared.

* tr/diff-submodule-no-reuse-worktree:
  diff: do not reuse_worktree_file for submodules

10 years agoMerge branch 'nd/reset-setup-worktree' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:03:24 +0000 (14:03 -0700)] 
Merge branch 'nd/reset-setup-worktree' into maint

"git reset" needs to refresh the index when working in a working
tree (it can also be used to match the index to the HEAD in an
otherwise bare repository), but it failed to set up the working
tree properly, causing GIT_WORK_TREE to be ignored.

* nd/reset-setup-worktree:
  reset: optionally setup worktree and refresh index on --mixed

10 years agoMerge branch 'jc/check-attr-honor-working-tree' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:03:03 +0000 (14:03 -0700)] 
Merge branch 'jc/check-attr-honor-working-tree' into maint

"git check-attr" when working on a repository with a working tree
did not work well when the working tree was specified via the
--work-tree (and obviously with --git-dir) option.

* jc/check-attr-honor-working-tree:
  check-attr: move to the top of working tree when in non-bare repository
  t0003: do not chdir the whole test process

10 years agoMerge branch 'bk/refresh-missing-ok-in-merge-recursive' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:02:37 +0000 (14:02 -0700)] 
Merge branch 'bk/refresh-missing-ok-in-merge-recursive' into maint

"merge-recursive" was broken in 1.7.7 era and stopped working in an
empty (temporary) working tree, when there are renames involved.
This has been corrected.

* bk/refresh-missing-ok-in-merge-recursive:
  merge-recursive.c: tolerate missing files while refreshing index
  read-cache.c: extend make_cache_entry refresh flag with options
  read-cache.c: refactor --ignore-missing implementation
  t3030-merge-recursive: test known breakage with empty work tree

10 years agoMerge branch 'ds/rev-parse-required-args' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:01:05 +0000 (14:01 -0700)] 
Merge branch 'ds/rev-parse-required-args' into maint

"git rev-parse" was loose in rejecting command line arguments that
do not make sense, e.g. "--default" without the required value for
that option.

* ds/rev-parse-required-args:
  rev-parse: check i before using argv[i] against argc

10 years agoMerge branch 'jk/config-path-include-fix' into maint
Junio C Hamano [Tue, 18 Mar 2014 21:00:15 +0000 (14:00 -0700)] 
Merge branch 'jk/config-path-include-fix' into maint

include.path variable (or any variable that expects a path that can
use ~username expansion) in the configuration file is not a boolean,
but the code failed to check it.

* jk/config-path-include-fix:
  handle_path_include: don't look at NULL value
  expand_user_path: do not look at NULL path

10 years agoMerge branch 'nd/diff-quiet-stat-dirty' into maint
Junio C Hamano [Tue, 18 Mar 2014 20:59:55 +0000 (13:59 -0700)] 
Merge branch 'nd/diff-quiet-stat-dirty' into maint

"git diff --quiet -- pathspec1 pathspec2" sometimes did not return
correct status value.

* nd/diff-quiet-stat-dirty:
  diff: do not quit early on stat-dirty files
  diff.c: move diffcore_skip_stat_unmatch core logic out for reuse later

10 years agoMerge branch 'nd/http-fetch-shallow-fix' into maint
Junio C Hamano [Tue, 18 Mar 2014 20:59:37 +0000 (13:59 -0700)] 
Merge branch 'nd/http-fetch-shallow-fix' into maint

Attempting to deepen a shallow repository by fetching over smart
HTTP transport failed in the protocol exchange, when no-done
extension was used.  The fetching side waited for the list of
shallow boundary commits after the sending end stopped talking to
it.

* nd/http-fetch-shallow-fix:
  t5537: move http tests out to t5539
  fetch-pack: fix deepen shallow over smart http with no-done cap
  protocol-capabilities.txt: document no-done
  protocol-capabilities.txt: refer multi_ack_detailed back to pack-protocol.txt
  pack-protocol.txt: clarify 'obj-id' in the last ACK after 'done'
  test: rename http fetch and push test files
  tests: auto-set LIB_HTTPD_PORT from test name

10 years agoMerge branch 'nd/submodule-pathspec-ending-with-slash' into maint
Junio C Hamano [Tue, 18 Mar 2014 20:58:58 +0000 (13:58 -0700)] 
Merge branch 'nd/submodule-pathspec-ending-with-slash' into maint

Allow "git cmd path/", when the 'path' is where a submodule is
bound to the top-level working tree, to match 'path', despite the
extra and unnecessary trailing slash (such a slash is often
given by command line completion).

* nd/submodule-pathspec-ending-with-slash:
  clean: use cache_name_is_other()
  clean: replace match_pathspec() with dir_path_match()
  pathspec: pass directory indicator to match_pathspec_item()
  match_pathspec: match pathspec "foo/" against directory "foo"
  dir.c: prepare match_pathspec_item for taking more flags
  pathspec: rename match_pathspec_depth() to match_pathspec()
  pathspec: convert some match_pathspec_depth() to dir_path_match()
  pathspec: convert some match_pathspec_depth() to ce_path_match()

10 years agotest-lib.sh: do not "echo" caller-supplied strings
Uwe Storbeck [Tue, 18 Mar 2014 00:14:11 +0000 (01:14 +0100)] 
test-lib.sh: do not "echo" caller-supplied strings

In some places we "echo" a string that is supplied by the calling
test script and may contain backslash sequences. The echo command
of some shells, most notably "dash", interprets these backslash
sequences (POSIX.1 allows this) which may scramble the test
output.

Signed-off-by: Uwe Storbeck <uwe@ibr.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agorun-command: mark run_hook_with_custom_index as deprecated
Benoit Pierre [Tue, 18 Mar 2014 10:00:56 +0000 (11:00 +0100)] 
run-command: mark run_hook_with_custom_index as deprecated

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agomerge hook tests: fix and update tests
Benoit Pierre [Tue, 18 Mar 2014 10:00:55 +0000 (11:00 +0100)] 
merge hook tests: fix and update tests

- update 'no editor' hook test and add 'editor' hook test
- make sure the tree is reset to a clean state after running a test
  (using test_when_finished) so later tests are not impacted

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agomerge: fix GIT_EDITOR override for commit hook
Benoit Pierre [Tue, 18 Mar 2014 10:00:54 +0000 (11:00 +0100)] 
merge: fix GIT_EDITOR override for commit hook

Don't set GIT_EDITOR to ":" when calling prepare-commit-msg hook if the
editor is going to be called (e.g. with "merge -e").

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocommit: fix patch hunk editing with "commit -p -m"
Benoit Pierre [Tue, 18 Mar 2014 10:00:53 +0000 (11:00 +0100)] 
commit: fix patch hunk editing with "commit -p -m"

Don't change git environment: move the GIT_EDITOR=":" override to the
hook command subprocess, like it's already done for GIT_INDEX_FILE.

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agotest patch hunk editing with "commit -p -m"
Benoit Pierre [Tue, 18 Mar 2014 10:00:52 +0000 (11:00 +0100)] 
test patch hunk editing with "commit -p -m"

Add (failing) tests: with commit changing the environment to let hooks
know that no editor will be used (by setting GIT_EDITOR to ":"), the
"edit hunk" functionality does not work (no editor is launched and the
whole hunk is committed).

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoDocumentation/merge-strategies: avoid hyphenated commands
Ramkumar Ramachandra [Sun, 16 Mar 2014 22:54:56 +0000 (18:54 -0400)] 
Documentation/merge-strategies: avoid hyphenated commands

Replace git-pull and git-merge with the corresponding un-hyphenated
versions. While at it, use ` to mark it up instead of '.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoindex-pack: report error using the correct variable
Junio C Hamano [Mon, 17 Mar 2014 22:08:36 +0000 (15:08 -0700)] 
index-pack: report error using the correct variable

We feed a string pointer that is potentially NULL to die() when
showing the message.  Don't.

Noticed-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoshallow: verify shallow file after taking lock
Jeff King [Sat, 15 Mar 2014 03:47:06 +0000 (23:47 -0400)] 
shallow: verify shallow file after taking lock

Before writing the shallow file, we stat() the existing file
to make sure it has not been updated since our operation
began. However, we do not do so under a lock, so there is a
possible race:

  1. Process A takes the lock.

  2. Process B calls check_shallow_file_for_update and finds
     no update.

  3. Process A commits the lockfile.

  4. Process B takes the lock, then overwrite's process A's
     changes.

We can fix this by doing our check while we hold the lock.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agorebase -i: do not "echo" random user-supplied strings
Uwe Storbeck [Fri, 14 Mar 2014 23:56:43 +0000 (00:56 +0100)] 
rebase -i: do not "echo" random user-supplied strings

In some places we "echo" a string that comes from a commit log
message, which may have a backslash sequence that is interpreted by
the command (POSIX.1 allows this), most notably "dash"'s built-in
'echo'.

A commit message which contains the string '\n' (or ends with the
string '\c') may result in a garbage line in the todo list of an
interactive rebase which causes the rebase to fail.

To reproduce the behavior (with dash as /bin/sh):

  mkdir test && cd test && git init
  echo 1 >foo && git add foo
  git commit -m"this commit message ends with '\n'"
  echo 2 >foo && git commit -a --fixup HEAD
  git rebase -i --autosquash --root

Now the editor opens with garbage in line 3 which has to be
removed or the rebase fails.

Signed-off-by: Uwe Storbeck <uwe@ibr.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agomv: prevent mismatched data when ignoring errors.
brian m. carlson [Sat, 15 Mar 2014 18:56:52 +0000 (18:56 +0000)] 
mv: prevent mismatched data when ignoring errors.

We shrink the source and destination arrays, but not the modes or
submodule_gitfile arrays, resulting in potentially mismatched data.  Shrink
all the arrays at the same time to prevent this.  Add tests to ensure the
problem does not recur.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot/lib-terminal: make TTY a lazy prerequisite
Jeff King [Fri, 14 Mar 2014 21:57:23 +0000 (17:57 -0400)] 
t/lib-terminal: make TTY a lazy prerequisite

When lib-terminal.sh is sourced by a test script, we
immediately set up the TTY prerequisite. We do so inside a
test_expect_success, because that nicely isolates any
generated output.

However, this early test can interfere with a script that
later wants to skip all tests (e.g., t5541 then goes on to
set up the httpd server, and wants to skip_all if that
fails). TAP output doesn't let us skip everything after we
have already run at least one test.

We could fix this by reordering the inclusion of
lib-terminal.sh in t5541 to go after the httpd setup.  That
solves this case, but we might eventually hit a case with
circular dependencies, where either lib-*.sh include might
want to skip_all after the other has run a test.  So
instead, let's just remove the ordering constraint entirely
by doing the setup inside a test_lazy_prereq construct,
rather than in a regular test.  We never cared about the
test outcome anyway (it was written to always succeed).

Note that in addition to setting up the prerequisite, the
current test also defines test_terminal. Since we can't
affect the environment from a lazy_prereq, we have to hoist
that out. We previously depended on it _not_ being defined
when the TTY prereq isn't set as a way to ensure that tests
properly declare their dependency on TTY. However, we still
cover the case (see the in-code comment for details).

Reported-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoentry.c: fix possible buffer overflow in remove_subtree()
Michael Haggerty [Thu, 13 Mar 2014 09:19:08 +0000 (10:19 +0100)] 
entry.c: fix possible buffer overflow in remove_subtree()

remove_subtree() manipulated path in a fixed-size buffer even though
the length of the input, let alone the length of entries within the
directory, were not known in advance.  Change the function to take a
strbuf argument and use that object as its scratch space.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agocheckout_entry(): use the strbuf throughout the function
Michael Haggerty [Thu, 13 Mar 2014 09:19:07 +0000 (10:19 +0100)] 
checkout_entry(): use the strbuf throughout the function

There is no need to break out the "buf" and "len" members into
separate temporary variables.  Rename path_buf to path and use
path.buf and path.len directly.  This makes it easier to reason about
the data flow in the function.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agowt-status: lift the artificual "at least 20 columns" floor
Junio C Hamano [Wed, 12 Mar 2014 20:43:51 +0000 (13:43 -0700)] 
wt-status: lift the artificual "at least 20 columns" floor

When we show unmerged paths, we had an artificial 20 columns floor
for the width of labels (e.g. "both deleted:") shown next to the
pathnames.  Depending on the locale, this may result in a label that
is too wide when all the label strings are way shorter than 20
columns, or no-op when a label string is longer than 20 columns.

Just drop the artificial floor.  The screen real estate is better
utilized this way when all the strings are shorter.

Adjust the tests to this change.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agowt-status: i18n of section labels
Jonathan Nieder [Thu, 19 Dec 2013 19:43:19 +0000 (11:43 -0800)] 
wt-status: i18n of section labels

The original code assumes that:

 (1) the number of bytes written is the width of a string, so they
     can line up;

 (2) the "how" string is always <= 19 bytes.

Neither of which we should assume.

Using the same approach as the earlier 3651e45c (wt-status: take the
alignment burden off translators, 2013-11-05), compute the necessary
column width to hold the longest label and use that for alignment.

cf. http://bugs.debian.org/725777

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Helped-by: Sandy Carter
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agowt-status: extract the code to compute width for labels
Jonathan Nieder [Thu, 19 Dec 2013 19:43:19 +0000 (11:43 -0800)] 
wt-status: extract the code to compute width for labels

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agowt-status: make full label string to be subject to l10n
Junio C Hamano [Wed, 12 Mar 2014 20:51:22 +0000 (13:51 -0700)] 
wt-status: make full label string to be subject to l10n

Earlier in 3651e45c (wt-status: take the alignment burden off
translators, 2013-11-05), we assumed that it is OK to make the
string before the colon in a label string we give as the section
header of various kinds of changes (e.g. "new file:") translatable.

This assumption apparently does not hold for some languages,
e.g. ones that want to have spaces around the colon.

Also introduce a static label_width to avoid having to run
strlen(padding) over and over.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agobuiltin/mv: fix out of bounds write
John Keeping [Sat, 8 Mar 2014 19:29:17 +0000 (19:29 +0000)] 
builtin/mv: fix out of bounds write

When commit a88c915 (mv: move submodules using a gitfile, 2013-07-30)
added the submodule_gitfile array, it was not added to the block that
enlarges the arrays when we are moving a directory so that we do not
have to worry about it being a directory when we perform the actual
move.  After this, the loop continues over the enlarged set of sources.

Since we assume that submodule_gitfile has size argc, if any of the
items in the source directory are submodules we are guaranteed to write
beyond the end of submodule_gitfile.

Fix this by realloc'ing submodule_gitfile at the same time as the other
arrays.

Reported-by: Guillaume Gelin <contact@ramnes.eu>
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agomerge hook tests: use 'test_must_fail' instead of '!'
Benoit Pierre [Mon, 10 Mar 2014 18:49:32 +0000 (19:49 +0100)] 
merge hook tests: use 'test_must_fail' instead of '!'

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agomerge hook tests: fix missing '&&' in test
Benoit Pierre [Mon, 10 Mar 2014 18:49:31 +0000 (19:49 +0100)] 
merge hook tests: fix missing '&&' in test

Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoclean: simplify dir/not-dir logic
Jeff King [Mon, 10 Mar 2014 17:24:47 +0000 (13:24 -0400)] 
clean: simplify dir/not-dir logic

When we get a list of paths from read_directory, we further
prune it to create the final list of items to remove. The
code paths for directories and non-directories repeat the
same "add to list" code.

This patch restructures the code so that we don't repeat
ourselves. Also, by following a "if (condition) continue"
pattern like the pathspec check above, it makes it more
obvious that the conditional is about excluding directories
under certain circumstances.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoclean: respect pathspecs with "-d"
Jeff King [Mon, 10 Mar 2014 20:37:30 +0000 (16:37 -0400)] 
clean: respect pathspecs with "-d"

git-clean uses read_directory to fill in a `struct dir` with
potential hits. However, read_directory does not actually
check against our pathspec. It uses a simplified version
that may turn up false positives. As a result, we need to
check that any hits match our pathspec. We do so reliably
for non-directories. For directories, if "-d" is not given
we check that the pathspec matched exactly (i.e., we are
even stricter, and require an explicit "git clean foo" to
clean "foo/"). But if "-d" is given, rather than relaxing
the exact match to allow a recursive match, we do not check
the pathspec at all.

This regression was introduced in 113f10f (Make git-clean a
builtin, 2007-11-11).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoshow_ident_date: fix tz range check
Jeff King [Fri, 7 Mar 2014 17:15:01 +0000 (12:15 -0500)] 
show_ident_date: fix tz range check

Commit 1dca155fe3fa (log: handle integer overflow in
timestamps, 2014-02-24) tried to catch integer overflow
coming from strtol() on the timezone field by comparing against
LONG_MIN/LONG_MAX. However, the intermediate "tz" variable
is an "int", which means it can never be LONG_MAX on LP64
systems; we would truncate the output from strtol before the
comparison.

Clang's -Wtautological-constant-out-of-range-compare notices
this and rightly complains.

Let's instead store the result of strtol in a long, and then
compare it against INT_MIN/INT_MAX. This will catch overflow
from strtol, and also overflow when we pass the result as an
int to show_date.

Reported-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot7800: add a difftool test for .git-files
Junio C Hamano [Wed, 5 Mar 2014 09:23:35 +0000 (01:23 -0800)] 
t7800: add a difftool test for .git-files

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoi18n: proposed command missing leading dash
Sandy Carter [Mon, 3 Mar 2014 14:55:53 +0000 (09:55 -0500)] 
i18n: proposed command missing leading dash

Add missing leading dash to proposed commands in french output when
using the command:
    git branch --set-upstream remotename/branchname
and when upstream is gone

Signed-off-by: Sandy Carter <sandy.carter@savoirfairelinux.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agofetch: add a failing test for prunning with overlapping refspecs
Carlos Martín Nieto [Thu, 27 Feb 2014 09:00:09 +0000 (10:00 +0100)] 
fetch: add a failing test for prunning with overlapping refspecs

When a remote has multiple fetch refspecs and these overlap in the
target namespace, fetch may prune a remote-tracking branch which still
exists in the remote. The test uses a popular form of this, by putting
pull requests as stored in a popular hosting platform alongside "real"
remote-tracking branches.

The fetch command makes a decision of whether to prune based
on the first matching refspec, which in this case is insufficient, as it
covers the pull request names. This pair of refspecs does work as
expected if the more "specific" refspec is the first in the list.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>