git.git
12 years agobuild: don't duplicate substitution of make variables
Stefano Lattarini [Tue, 11 Sep 2012 15:45:30 +0000 (17:45 +0200)]
build: don't duplicate substitution of make variables

Thanks to our 'GIT_CONF_SUBST' layer in configure.ac, a make variable 'VAR'
can be defined to a value 'VAL' at ./configure runtime in our build system
simply by using "GIT_CONF_SUBST([VAR], [VAL])" in configure.ac, rather than
having both to call "AC_SUBST([VAR], [VAL])" in configure.ac and adding the
'VAR = @VAR@' definition in config.mak.in.  Less duplication, less margin
for error, less possibility of confusion.

While at it, fix some formatting issues in configure.ac that unnecessarily
obscured the code flow.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agobuild: improve GIT_CONF_SUBST signature
Stefano Lattarini [Tue, 11 Sep 2012 15:45:29 +0000 (17:45 +0200)]
build: improve GIT_CONF_SUBST signature

Now, in configure.ac, a call like:

    GIT_CONF_SUBST([FOO])

will be considered equivalent to:

    GIT_CONF_SUBST([FOO], [$FOO])

This is mostly a preparatory refactoring in view of future changes.
No semantic change to the generated configure or config.mak.auto is
intended.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFirst half of the fifth batch for 1.8.0
Junio C Hamano [Mon, 10 Sep 2012 22:52:21 +0000 (15:52 -0700)]
First half of the fifth batch for 1.8.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'cn/branch-set-upstream-to'
Junio C Hamano [Mon, 10 Sep 2012 22:43:07 +0000 (15:43 -0700)]
Merge branch 'cn/branch-set-upstream-to'

"git branch --set-upstream origin/master" is a common mistake to
create a local branch 'origin/master' and set it to integrate with
the current branch.  With a plan to deprecate this option, introduce
"git branch (-u|--set-upstream-to) origin/master" that sets the
current branch to integrate with 'origin/master' remote tracking
branch.

* cn/branch-set-upstream-to:
  branch: deprecate --set-upstream and show help if we detect possible mistaken use
  branch: add --unset-upstream option
  branch: introduce --set-upstream-to

12 years agoMerge branch 'mz/cherry-pick-cmdline-order'
Junio C Hamano [Mon, 10 Sep 2012 22:42:54 +0000 (15:42 -0700)]
Merge branch 'mz/cherry-pick-cmdline-order'

"git cherry-pick A C B" used to replay changes in A and then B and
then C if these three commits had committer timestamps in that
order, which is not what the user who said "A C B" naturally expects.

* mz/cherry-pick-cmdline-order:
  cherry-pick/revert: respect order of revisions to pick
  demonstrate broken 'git cherry-pick three one two'
  teach log --no-walk=unsorted, which avoids sorting

12 years agoMerge branch 'jk/maint-quiet-is-synonym-to-s-in-log'
Junio C Hamano [Mon, 10 Sep 2012 22:42:48 +0000 (15:42 -0700)]
Merge branch 'jk/maint-quiet-is-synonym-to-s-in-log'

We tried to bend backwards to allow "--quiet" to be a synonym as
"-s" when given as e.g. "git show --quiet", but did not quite
succeed.

* jk/maint-quiet-is-synonym-to-s-in-log:
  log: fix --quiet synonym for -s

12 years agoMerge branch 'ph/credential-gnome-keyring'
Junio C Hamano [Mon, 10 Sep 2012 22:42:30 +0000 (15:42 -0700)]
Merge branch 'ph/credential-gnome-keyring'

* ph/credential-gnome-keyring:
  contrib: add credential helper for GnomeKeyring

12 years agoCull items fixed in maintenance branches
Junio C Hamano [Mon, 10 Sep 2012 22:41:14 +0000 (15:41 -0700)]
Cull items fixed in maintenance branches

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoSync with "almost" 1.7.12.1
Junio C Hamano [Mon, 10 Sep 2012 22:40:07 +0000 (15:40 -0700)]
Sync with "almost" 1.7.12.1

12 years agoStart preparing for 1.7.12.1
Junio C Hamano [Mon, 10 Sep 2012 22:39:15 +0000 (15:39 -0700)]
Start preparing for 1.7.12.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'bc/prune-info' into maint
Junio C Hamano [Mon, 10 Sep 2012 22:37:37 +0000 (15:37 -0700)]
Merge branch 'bc/prune-info' into maint

"git prune" without "-v" used to warn about leftover temporary
files (which is an indication of an earlier aborted operation).

* bc/prune-info:
  prune.c: only print informational message in show_only or verbose mode

12 years agoMerge branch 'maint-1.7.11' into maint
Junio C Hamano [Mon, 10 Sep 2012 22:31:06 +0000 (15:31 -0700)]
Merge branch 'maint-1.7.11' into maint

* maint-1.7.11:
  Almost 1.7.11.6
  gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO
  rebase -i: use full onto sha1 in reflog
  sh-setup: protect from exported IFS
  receive-pack: do not leak output from auto-gc to standard output
  t/t5400: demonstrate breakage caused by informational message from prune
  setup: clarify error messages for file/revisions ambiguity
  send-email: improve RFC2047 quote parsing
  fsck: detect null sha1 in tree entries
  do not write null sha1s to on-disk index
  diff: do not use null sha1 as a sentinel value

12 years agoAlmost 1.7.11.6
Junio C Hamano [Mon, 10 Sep 2012 22:30:46 +0000 (15:30 -0700)]
Almost 1.7.11.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'mg/rebase-i-onto-reflog-in-full' into maint-1.7.11
Junio C Hamano [Mon, 10 Sep 2012 22:26:03 +0000 (15:26 -0700)]
Merge branch 'mg/rebase-i-onto-reflog-in-full' into maint-1.7.11

The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent (the interactive one gave an abbreviated object name).

* mg/rebase-i-onto-reflog-in-full:
  rebase -i: use full onto sha1 in reflog

12 years agoMerge branch 'jc/maint-protect-sh-from-ifs' into maint-1.7.11
Junio C Hamano [Mon, 10 Sep 2012 22:25:45 +0000 (15:25 -0700)]
Merge branch 'jc/maint-protect-sh-from-ifs' into maint-1.7.11

When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail.  Protect them from such a misconfiguration.

* jc/maint-protect-sh-from-ifs:
  sh-setup: protect from exported IFS

12 years agoMerge branch 'bc/receive-pack-stdout-protection' into maint-1.7.11
Junio C Hamano [Mon, 10 Sep 2012 22:25:09 +0000 (15:25 -0700)]
Merge branch 'bc/receive-pack-stdout-protection' into maint-1.7.11

When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.

* bc/receive-pack-stdout-protection:
  receive-pack: do not leak output from auto-gc to standard output
  t/t5400: demonstrate breakage caused by informational message from prune

12 years agoMerge branch 'jk/maint-null-in-trees' into maint-1.7.11
Junio C Hamano [Mon, 10 Sep 2012 22:24:53 +0000 (15:24 -0700)]
Merge branch 'jk/maint-null-in-trees' into maint-1.7.11

"git diff" had a confusion between taking data from a path in the
working tree and taking data from an object that happens to have
name 0{40} recorded in a tree.

* jk/maint-null-in-trees:
  fsck: detect null sha1 in tree entries
  do not write null sha1s to on-disk index
  diff: do not use null sha1 as a sentinel value

12 years agoMerge branch 'tr/maint-send-email-2047' into maint-1.7.11
Junio C Hamano [Mon, 10 Sep 2012 22:24:40 +0000 (15:24 -0700)]
Merge branch 'tr/maint-send-email-2047' into maint-1.7.11

"git send-email" did not unquote encoded words that appear on the
header correctly, and lost "_" from strings.

* tr/maint-send-email-2047:
  send-email: improve RFC2047 quote parsing

12 years agoMerge branch 'mm/die-with-dashdash-help' into maint-1.7.11
Junio C Hamano [Mon, 10 Sep 2012 22:24:21 +0000 (15:24 -0700)]
Merge branch 'mm/die-with-dashdash-help' into maint-1.7.11

When the user gives an argument that can be taken as both a
revision name and a pathname without disambiguating with "--", we
used to give a help message "Use '--' to separate".  The message
has been clarified to show where that '--' goes on the command
line.

* mm/die-with-dashdash-help:
  setup: clarify error messages for file/revisions ambiguity

12 years agoMerge branch 'js/gitweb-path-info-unquote' into maint-1.7.11
Junio C Hamano [Mon, 10 Sep 2012 22:23:46 +0000 (15:23 -0700)]
Merge branch 'js/gitweb-path-info-unquote' into maint-1.7.11

"gitweb" when used with PATH_INFO failed to notice directories with
SP (and other characters that need URL-style quoting) in them.

* js/gitweb-path-info-unquote:
  gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO

12 years agoThe fourth batch for 1.8.0
Junio C Hamano [Fri, 7 Sep 2012 18:25:22 +0000 (11:25 -0700)]
The fourth batch for 1.8.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'nd/branch-v-alignment'
Junio C Hamano [Fri, 7 Sep 2012 18:10:02 +0000 (11:10 -0700)]
Merge branch 'nd/branch-v-alignment'

Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of branches
were counting in bytes, not in display columns.

* nd/branch-v-alignment:
  branch -v: align even when branch names are in UTF-8

12 years agoMerge branch 'jk/maint-http-half-auth-push'
Junio C Hamano [Fri, 7 Sep 2012 18:09:49 +0000 (11:09 -0700)]
Merge branch 'jk/maint-http-half-auth-push'

Pushing to smart HTTP server with recent Git fails without having
the username in the URL to force authentication, if the server is
configured to allow GET anonymously, while requiring authentication
for POST.

* jk/maint-http-half-auth-push:
  http: prompt for credentials on failed POST
  http: factor out http error code handling
  t: test http access to "half-auth" repositories
  t: test basic smart-http authentication
  t/lib-httpd: recognize */smart/* repos as smart-http
  t/lib-httpd: only route auth/dumb to dumb repos
  t5550: factor out http auth setup
  t5550: put auth-required repo in auth/dumb

12 years agoMerge branch 'jc/maint-doc-checkout-b-always-takes-branch-name'
Junio C Hamano [Fri, 7 Sep 2012 18:09:36 +0000 (11:09 -0700)]
Merge branch 'jc/maint-doc-checkout-b-always-takes-branch-name'

The synopsis said "checkout [-B branch]" to make it clear the branch
name is a parameter to the option, but the heading for the option
description was "-B::", not "-B branch::", making the documentation
misleading.  There may be room in documentation pages of other
commands for similar improvements.

* jc/maint-doc-checkout-b-always-takes-branch-name:
  doc: "git checkout -b/-B/--orphan" always takes a branch name

12 years agoMerge branch 'jc/apply-binary-p0'
Junio C Hamano [Fri, 7 Sep 2012 18:09:26 +0000 (11:09 -0700)]
Merge branch 'jc/apply-binary-p0'

"git apply -p0" did not parse pathnames on "diff --git" line
correctly.  This caused patches that had pathnames in no other
places to be mistakenly rejected (most notably, binary patch that
does not rename nor change mode).  Textual patches, renames or
mode changes have preimage and postimage pathnames in different
places in a form that can be parsed unambiguously and did not suffer
from this problem.

* jc/apply-binary-p0:
  apply: compute patch->def_name correctly under -p0

12 years agoMerge branch 'jc/dotdot-is-parent-directory'
Junio C Hamano [Fri, 7 Sep 2012 18:09:18 +0000 (11:09 -0700)]
Merge branch 'jc/dotdot-is-parent-directory'

"git log .." errored out saying it is both rev range and a path when
there is no disambiguating "--" is on the command line.  Update the
command line parser to interpret ".." as a path in such a case.

* jc/dotdot-is-parent-directory:
  specifying ranges: we did not mean to make ".." an empty set

12 years agoMerge branch 'nd/i18n-parseopt-help'
Junio C Hamano [Fri, 7 Sep 2012 18:09:09 +0000 (11:09 -0700)]
Merge branch 'nd/i18n-parseopt-help'

A lot of i18n mark-up for the help text from "git <cmd> -h".

* nd/i18n-parseopt-help: (66 commits)
  Use imperative form in help usage to describe an action
  Reduce translations by using same terminologies
  i18n: write-tree: mark parseopt strings for translation
  i18n: verify-tag: mark parseopt strings for translation
  i18n: verify-pack: mark parseopt strings for translation
  i18n: update-server-info: mark parseopt strings for translation
  i18n: update-ref: mark parseopt strings for translation
  i18n: update-index: mark parseopt strings for translation
  i18n: tag: mark parseopt strings for translation
  i18n: symbolic-ref: mark parseopt strings for translation
  i18n: show-ref: mark parseopt strings for translation
  i18n: show-branch: mark parseopt strings for translation
  i18n: shortlog: mark parseopt strings for translation
  i18n: rm: mark parseopt strings for translation
  i18n: revert, cherry-pick: mark parseopt strings for translation
  i18n: rev-parse: mark parseopt strings for translation
  i18n: reset: mark parseopt strings for translation
  i18n: rerere: mark parseopt strings for translation
  i18n: status: mark parseopt strings for translation
  i18n: replace: mark parseopt strings for translation
  ...

12 years agoMerge branch 'nd/am-i18n-fix'
Junio C Hamano [Fri, 7 Sep 2012 18:09:04 +0000 (11:09 -0700)]
Merge branch 'nd/am-i18n-fix'

"git am" wasn't marked up for i18n properly.

* nd/am-i18n-fix:
  am: quote string for translation before passing to eval_gettextln

12 years agoMerge branch 'jk/config-warn-on-inaccessible-paths'
Junio C Hamano [Fri, 7 Sep 2012 18:08:56 +0000 (11:08 -0700)]
Merge branch 'jk/config-warn-on-inaccessible-paths'

When looking for $HOME/.gitconfig etc., it is OK if we cannot read
them because they do not exist, but we did not diagnose existing
files that we cannot read.

* jk/config-warn-on-inaccessible-paths:
  warn_on_inaccessible(): a helper to warn on inaccessible paths
  attr: warn on inaccessible attribute files
  gitignore: report access errors of exclude files
  config: warn on inaccessible files

12 years agoMerge branch 'kk/maint-for-each-ref-multi-sort'
Junio C Hamano [Fri, 7 Sep 2012 18:08:50 +0000 (11:08 -0700)]
Merge branch 'kk/maint-for-each-ref-multi-sort'

"git for-each-ref" did not currectly support more than one --sort
option.

* kk/maint-for-each-ref-multi-sort:
  for-each-ref: Fix sort with multiple keys
  t6300: test sort with multiple keys

12 years agoMerge branch 'lt/commit-tree-guess-utf-8'
Junio C Hamano [Fri, 7 Sep 2012 18:08:38 +0000 (11:08 -0700)]
Merge branch 'lt/commit-tree-guess-utf-8'

Teach "git commit" and "git commit-tree" the "we are told to use
utf-8 in log message, but this does not look like utf-8---attempt to
pass it through convert-from-latin1-to-utf8 and see if it makes
sense" heuristics "git mailinfo" already uses.

* lt/commit-tree-guess-utf-8:
  commit/commit-tree: correct latin1 to utf-8

12 years agoMerge branch 'pw/p4-use-client-spec-branch-detection'
Junio C Hamano [Fri, 7 Sep 2012 18:08:27 +0000 (11:08 -0700)]
Merge branch 'pw/p4-use-client-spec-branch-detection'

Fix "git p4" when "--use-client-spec" and "--detect-branches" are
used together (the command used to misdetect branches).

* pw/p4-use-client-spec-branch-detection:
  git p4: make branch detection work with --use-client-spec
  git p4: do wildcard decoding in stripRepoPath
  git p4: set self.branchPrefixes in initialization
  git p4 test: add broken --use-client-spec --detect-branches tests
  git p4 test: move client_view() function to library

12 years agoMerge branch 'tr/maint-parseopt-avoid-empty'
Junio C Hamano [Fri, 7 Sep 2012 18:08:10 +0000 (11:08 -0700)]
Merge branch 'tr/maint-parseopt-avoid-empty'

A workaround to avoid doing _(""), which translates to unwanted
magic string in the .po files.

* tr/maint-parseopt-avoid-empty:
  gettext: do not translate empty string

12 years agoMerge branch 'nd/i18n-poison-test-updates'
Junio C Hamano [Fri, 7 Sep 2012 18:07:59 +0000 (11:07 -0700)]
Merge branch 'nd/i18n-poison-test-updates'

Update tests that can be broken with gettext-poison builds.

* nd/i18n-poison-test-updates:
  Fix tests under GETTEXT_POISON on parseopt
  Fix tests under GETTEXT_POISON on git-remote
  Fix tests under GETTEXT_POISON on pack-object
  Fix tests under GETTEXT_POISON on git-apply
  Fix tests under GETTEXT_POISON on diffstat
  Fix tests under GETTEXT_POISON on git-stash
  Fix tests under GETTEXT_POISON on relative dates

12 years agoUpdate mailmap for a handful of folks
Junio C Hamano [Mon, 3 Sep 2012 23:24:23 +0000 (16:24 -0700)]
Update mailmap for a handful of folks

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoThe third batch for 1.8.0
Junio C Hamano [Mon, 3 Sep 2012 23:23:44 +0000 (16:23 -0700)]
The third batch for 1.8.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'js/use-sc-open-max'
Junio C Hamano [Mon, 3 Sep 2012 22:54:41 +0000 (15:54 -0700)]
Merge branch 'js/use-sc-open-max'

Introduce get_max_fd_limit() to absorb platforms that do not have
getrlimit(RLIMIT_NOFILE) and/or sysconf(_SC_OPEN_MAX).

* js/use-sc-open-max:
  sha1_file.c: introduce get_max_fd_limit() helper

12 years agoMerge branch 'js/compat-mkdir'
Junio C Hamano [Mon, 3 Sep 2012 22:54:37 +0000 (15:54 -0700)]
Merge branch 'js/compat-mkdir'

Some mkdir(2) implementations do not want to see trailing slash in
its parameter.

* js/compat-mkdir:
  compat: some mkdir() do not like a slash at the end

12 years agoMerge branch 'js/no-curl-easy-strerror-on-old-curl'
Junio C Hamano [Mon, 3 Sep 2012 22:54:30 +0000 (15:54 -0700)]
Merge branch 'js/no-curl-easy-strerror-on-old-curl'

Done to support compilation on __TANDEM, but is independently useful
for people with older version of libcURL.

* js/no-curl-easy-strerror-on-old-curl:
  http.c: don't use curl_easy_strerror prior to curl-7.12.0

12 years agoMerge branch 'jc/maint-mergetool-style-fix'
Junio C Hamano [Mon, 3 Sep 2012 22:54:25 +0000 (15:54 -0700)]
Merge branch 'jc/maint-mergetool-style-fix'

* jc/maint-mergetool-style-fix:
  mergetool: style fixes

12 years agoMerge branch 'sz/submodule-force-update'
Junio C Hamano [Mon, 3 Sep 2012 22:54:17 +0000 (15:54 -0700)]
Merge branch 'sz/submodule-force-update'

"git submodule update --force" used to leave the working tree of the
submodule intact when there were local changes.  It is more intiutive
to make "--force" a sign to run "checkout -f" to overwrite them.

* sz/submodule-force-update:
  Make 'git submodule update --force' always check out submodules.

12 years agoMerge branch 'ph/stash-rerere'
Junio C Hamano [Mon, 3 Sep 2012 22:54:12 +0000 (15:54 -0700)]
Merge branch 'ph/stash-rerere'

"git stash" internally used "git merge-recursive" backend, which did
not trigger "rerere" upon conflicts unlike other mergy operations.

* ph/stash-rerere:
  stash: invoke rerere in case of conflict
  test: git-stash conflict sets up rerere

12 years agoMerge branch 'jc/daemon-access-hook'
Junio C Hamano [Mon, 3 Sep 2012 22:54:03 +0000 (15:54 -0700)]
Merge branch 'jc/daemon-access-hook'

Allow an external command to tell git-daemon to decline service
based on the client address, repository path, etc.

* jc/daemon-access-hook:
  daemon: --access-hook option

12 years agoMerge branch 'jc/send-email-reconfirm'
Junio C Hamano [Mon, 3 Sep 2012 22:53:54 +0000 (15:53 -0700)]
Merge branch 'jc/send-email-reconfirm'

Validate interactive input to "git send-email" to avoid common
mistakes such as saying "y<RETURN>" to sender mail address whose
prompt is given with a correctly guessed default.

* jc/send-email-reconfirm:
  send-email: validate & reconfirm interactive responses

12 years agoMerge branch 'cw/cherry-pick-allow-empty-message'
Junio C Hamano [Mon, 3 Sep 2012 22:53:37 +0000 (15:53 -0700)]
Merge branch 'cw/cherry-pick-allow-empty-message'

"git cherry-pick" by default stops when it sees a commit without any
log message.  The "--allow-empty-message" option can be used to
silently proceed.

* cw/cherry-pick-allow-empty-message:
  cherry-pick: add --allow-empty-message option

12 years agoMerge branch 'jc/maint-sane-execvp-notdir'
Junio C Hamano [Mon, 3 Sep 2012 22:53:26 +0000 (15:53 -0700)]
Merge branch 'jc/maint-sane-execvp-notdir'

"git foo" errored out with "Not a directory" when the user had a non
directory on $PATH, and worse yet it masked an alias "foo" to run.

* jc/maint-sane-execvp-notdir:
  sane_execvp(): ignore non-directory on $PATH

12 years agoMerge branch 'jc/maint-config-exit-status'
Junio C Hamano [Mon, 3 Sep 2012 22:53:06 +0000 (15:53 -0700)]
Merge branch 'jc/maint-config-exit-status'

The exit status code from "git config" was way overspecified while
being incorrect.  Update the implementation to give the documented
status for a case that was documented, and introduce a new code for
"all other errors".

* jc/maint-config-exit-status:
  config: "git config baa" should exit with status 1

12 years agocherry-pick/revert: respect order of revisions to pick
Martin von Zweigbergk [Wed, 29 Aug 2012 06:15:56 +0000 (23:15 -0700)]
cherry-pick/revert: respect order of revisions to pick

When giving multiple individual revisions to cherry-pick or revert, as
in 'git cherry-pick A B' or 'git revert B A', one would expect them to
be picked/reverted in the order given on the command line. They are
instead ordered by their commit timestamp -- in chronological order
for "cherry-pick" and in reverse chronological order for
"revert". This matches the order in which one would usually give them
on the command line, making this bug somewhat hard to notice. Still,
it has been reported at least once before [1].

It seems like the chronological sorting happened by accident because
the revision walker has traditionally always sorted commits in reverse
chronological order when rev_info.no_walk was enabled. In the case of
'git revert B A' where B is newer than A, this sorting is a no-op. For
'git cherry-pick A B', the sorting would reverse the arguments, but
because the sequencer also flips the rev_info.reverse flag when
picking (as opposed to reverting), the end result is a chronological
order. The rev_info.reverse flag was probably flipped so that the
revision walker emits B before C in 'git cherry-pick A..C'; that it
happened to effectively undo the unexpected sorting done when not
walking, was probably a coincidence that allowed this bug to happen at
all.

Fix the bug by telling the revision walker not to sort the commits
when not walking. The only case we want to reverse the order is now
when cherry-picking and walking revisions (rev_info.no_walk = 0).

 [1] http://thread.gmane.org/gmane.comp.version-control.git/164794

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodemonstrate broken 'git cherry-pick three one two'
Martin von Zweigbergk [Wed, 29 Aug 2012 06:15:55 +0000 (23:15 -0700)]
demonstrate broken 'git cherry-pick three one two'

Cherry-picking commits out of order (w.r.t. commit time stamp) doesn't
currently work. Add a test case to demonstrate it.

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoteach log --no-walk=unsorted, which avoids sorting
Martin von Zweigbergk [Wed, 29 Aug 2012 06:15:54 +0000 (23:15 -0700)]
teach log --no-walk=unsorted, which avoids sorting

When 'git log' is passed the --no-walk option, no revision walk takes
place, naturally. Perhaps somewhat surprisingly, however, the provided
revisions still get sorted by commit date. So e.g 'git log --no-walk
HEAD HEAD~1' and 'git log --no-walk HEAD~1 HEAD' give the same result
(unless the two revisions share the commit date, in which case they
will retain the order given on the command line). As the commit that
introduced --no-walk (8e64006 (Teach revision machinery about
--no-walk, 2007-07-24)) points out, the sorting is intentional, to
allow things like

 git log --abbrev-commit --pretty=oneline --decorate --all --no-walk

to show all refs in order by commit date.

But there are also other cases where the sorting is not wanted, such
as

 <command producing revisions in order> |
       git log --oneline --no-walk --stdin

To accomodate both cases, leave the decision of whether or not to sort
up to the caller, by allowing --no-walk={sorted,unsorted}, defaulting
to 'sorted' for backward-compatibility reasons.

Signed-off-by: Martin von Zweigbergk <martinvonz@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agobranch: deprecate --set-upstream and show help if we detect possible mistaken use
Carlos Martín Nieto [Thu, 30 Aug 2012 17:23:13 +0000 (19:23 +0200)]
branch: deprecate --set-upstream and show help if we detect possible mistaken use

This interface is error prone, and a better one (--set-upstream-to)
exists. Add a message listing the alternatives and suggest how to fix
a --set-upstream invocation in case the user only gives one argument
which causes a local branch with the same name as a remote-tracking
one to be created. The typical case is

    git branch --set-upstream origin/master

when the user meant

    git branch --set-upstream master origin/master

assuming that the current branch is master. Show a message telling the
user how to undo their action and get what they wanted. For the
command above, the message would be

The --set-upstream flag is deprecated and will be removed. Consider using --track or --set-upstream-to
Branch origin/master set up to track local branch master.

If you wanted to make 'master' track 'origin/master', do this:

    git branch -d origin/master
    git branch --set-upstream-to origin/master

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agobranch: add --unset-upstream option
Carlos Martín Nieto [Thu, 30 Aug 2012 17:23:12 +0000 (19:23 +0200)]
branch: add --unset-upstream option

We have ways of setting the upstream information, but if we want to
unset it, we need to resort to modifying the configuration manually.

Teach branch an --unset-upstream option that unsets this information.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoLatter half of the second batch for 1.8.0
Junio C Hamano [Wed, 29 Aug 2012 22:00:30 +0000 (15:00 -0700)]
Latter half of the second batch for 1.8.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'rr/precompose-utf8-cleanup'
Junio C Hamano [Wed, 29 Aug 2012 21:50:35 +0000 (14:50 -0700)]
Merge branch 'rr/precompose-utf8-cleanup'

* rr/precompose-utf8-cleanup:
  precompose-utf8: do not call checks for non-ascii "utf8"
  cleanup precompose_utf8

12 years agoMerge branch 'mh/maint-config-doc-proxy-command'
Junio C Hamano [Wed, 29 Aug 2012 21:50:30 +0000 (14:50 -0700)]
Merge branch 'mh/maint-config-doc-proxy-command'

* mh/maint-config-doc-proxy-command:
  git-config doc: unconfuse an example
  git-config.txt: fix example

12 years agoMerge branch 'ef/win32-cred-helper'
Junio C Hamano [Wed, 29 Aug 2012 21:50:24 +0000 (14:50 -0700)]
Merge branch 'ef/win32-cred-helper'

Credential helper for Win32 to allow access to the keychain of
the logged-in user.

* ef/win32-cred-helper:
  contrib: add win32 credential-helper

12 years agoMerge branch 'hv/submodule-path-unmatch'
Junio C Hamano [Wed, 29 Aug 2012 21:50:15 +0000 (14:50 -0700)]
Merge branch 'hv/submodule-path-unmatch'

* hv/submodule-path-unmatch:
  Let submodule command exit with error status if path does not exist

12 years agoMerge branch 'jc/capabilities'
Junio C Hamano [Wed, 29 Aug 2012 21:50:07 +0000 (14:50 -0700)]
Merge branch 'jc/capabilities'

Some capabilities were asked by fetch-pack even when upload-pack did
not advertise that they are available.  Fix fetch-pack not to do so.

* jc/capabilities:
  fetch-pack: mention server version with verbose output
  parse_feature_request: make it easier to see feature values
  fetch-pack: do not ask for unadvertised capabilities
  do not send client agent unless server does first
  send-pack: fix capability-sending logic
  include agent identifier in capability string

12 years agoMerge branch 'mg/rebase-i-onto-reflog-in-full'
Junio C Hamano [Wed, 29 Aug 2012 21:50:01 +0000 (14:50 -0700)]
Merge branch 'mg/rebase-i-onto-reflog-in-full'

The reflog entries left by "git rebase" and "git rebase -i" were
inconsistent.

* mg/rebase-i-onto-reflog-in-full:
  rebase -i: use full onto sha1 in reflog

12 years agoMerge branch 'mz/empty-rebase-test'
Junio C Hamano [Wed, 29 Aug 2012 21:49:57 +0000 (14:49 -0700)]
Merge branch 'mz/empty-rebase-test'

* mz/empty-rebase-test:
  add tests for 'git rebase --keep-empty'

12 years agoMerge branch 'jc/maint-protect-sh-from-ifs'
Junio C Hamano [Wed, 29 Aug 2012 21:49:45 +0000 (14:49 -0700)]
Merge branch 'jc/maint-protect-sh-from-ifs'

When the user exports a non-default IFS without HT, scripts that
rely on being able to parse "ls-files -s | while read a b c..."
start to fail.  Protect them from such a misconfiguration.

* jc/maint-protect-sh-from-ifs:
  sh-setup: protect from exported IFS

12 years agoMerge branch 'bc/prune-info'
Junio C Hamano [Wed, 29 Aug 2012 21:49:39 +0000 (14:49 -0700)]
Merge branch 'bc/prune-info'

Teach "git prune" without "-v" to be silent about leftover temporary
files.

* bc/prune-info:
  prune.c: only print informational message in show_only or verbose mode

12 years agoMerge branch 'mz/cherry-code-cleanup'
Junio C Hamano [Wed, 29 Aug 2012 21:49:29 +0000 (14:49 -0700)]
Merge branch 'mz/cherry-code-cleanup'

Minor code clean-up on the cherry-pick codepath.

* mz/cherry-code-cleanup:
  cherry: remove redundant check for merge commit
  cherry: don't set ignored rev_info options
  remove unnecessary parameter from get_patch_ids()

12 years agolog: fix --quiet synonym for -s
Jeff King [Tue, 28 Aug 2012 21:29:34 +0000 (17:29 -0400)]
log: fix --quiet synonym for -s

Originally the "--quiet" option was parsed by the
diff-option parser into the internal QUICK option. This had
the effect of silencing diff output from the log (which was
not intended, but happened to work and people started to
use it). But it also had other odd side effects at the diff
level (for example, it would suppress the second commit in
"git show A B").

To fix this, commit 1c40c36 converted log to parse-options
and handled the "quiet" option separately, not passing it
on to the diff code. However, it simply ignored the option,
which was a regression for people using it as a synonym for
"-s". Commit 01771a8 then fixed that by interpreting the
option to add DIFF_FORMAT_NO_OUTPUT to the list of output
formats.

However, that commit did not fix it in all cases. It sets
the flag after setup_revisions is called. Naively, this
makes sense because you would expect the setup_revisions
parser to overwrite our output format flag if "-p" or
another output format flag is seen.

However, that is not how the NO_OUTPUT flag works. We
actually store it in the bit-field as just another format.
At the end of setup_revisions, we call diff_setup_done,
which post-processes the bitfield and clears any other
formats if we have set NO_OUTPUT. By setting the flag after
setup_revisions is done, diff_setup_done does not have a
chance to make this tweak, and we end up with other format
options still set.

As a result, the flag would have no effect in "git log -p
--quiet" or "git show --quiet".  Fix it by setting the
format flag before the call to setup_revisions.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFirst half of the second batch for 1.8.0
Junio C Hamano [Mon, 27 Aug 2012 19:10:07 +0000 (12:10 -0700)]
First half of the second batch for 1.8.0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jk/docs-docbook-monospace-display'
Junio C Hamano [Mon, 27 Aug 2012 18:55:28 +0000 (11:55 -0700)]
Merge branch 'jk/docs-docbook-monospace-display'

The documentation in the TeXinfo format was using indented output
for materials meant to be examples that are better typeset in
monospace.

* jk/docs-docbook-monospace-display:
  docs: monospace listings in docbook output

12 years agoMerge branch 'da/difftool-updates'
Junio C Hamano [Mon, 27 Aug 2012 18:55:16 +0000 (11:55 -0700)]
Merge branch 'da/difftool-updates'

"git difftool --dir-diff" learned to use symbolic links to prepare
temporary copy of the working tree when available.

* da/difftool-updates:
  difftool: silence warning
  Add Code Compare v2.80.4 as a merge / diff tool for Windows
  mergetool,difftool: Document --tool-help consistently
  difftool: Disable --symlinks on cygwin
  difftool: Handle compare() returning -1
  difftool: Wrap long lines for readability
  difftool: Check all return codes from compare()
  difftool: Handle finding mergetools/ in a path with spaces
  difftool: Use symlinks when diffing against the worktree
  difftool: Call the temp directory "git-difftool"
  difftool: Move option values into a hash
  difftool: Eliminate global variables
  difftool: Simplify print_tool_help()

12 years agoMerge branch 'js/grep-patterntype-config'
Junio C Hamano [Mon, 27 Aug 2012 18:55:09 +0000 (11:55 -0700)]
Merge branch 'js/grep-patterntype-config'

"grep" learned to use a non-standard pattern type by default if a
configuration variable tells it to.

* js/grep-patterntype-config:
  grep: add a grep.patternType configuration setting

12 years agoMerge branch 'bc/receive-pack-stdout-protection'
Junio C Hamano [Mon, 27 Aug 2012 18:55:00 +0000 (11:55 -0700)]
Merge branch 'bc/receive-pack-stdout-protection'

When "git push" triggered the automatic gc on the receiving end, a
message from "git prune" that said it was removing cruft leaked to
the standard output, breaking the communication protocol.

* bc/receive-pack-stdout-protection:
  receive-pack: do not leak output from auto-gc to standard output
  t/t5400: demonstrate breakage caused by informational message from prune

12 years agoMerge branch 'ab/diff-write-incomplete-line'
Junio C Hamano [Mon, 27 Aug 2012 18:54:46 +0000 (11:54 -0700)]
Merge branch 'ab/diff-write-incomplete-line'

The output from "git diff -B" for a file that ends with an
incomplete line did not put "\ No newline..." on a line of its own.

* ab/diff-write-incomplete-line:
  Fix '\ No newline...' annotation in rewrite diffs

12 years agoMerge branch 'jc/maint-t7406-rev-parse-max-count-huh'
Junio C Hamano [Mon, 27 Aug 2012 18:54:36 +0000 (11:54 -0700)]
Merge branch 'jc/maint-t7406-rev-parse-max-count-huh'

Test clean-up, with no behaviour change.

* jc/maint-t7406-rev-parse-max-count-huh:
  t7406: fix misleading "rev-parse --max-count=1 HEAD"

12 years agoMerge branch 'jk/maint-null-in-trees'
Junio C Hamano [Mon, 27 Aug 2012 18:54:28 +0000 (11:54 -0700)]
Merge branch 'jk/maint-null-in-trees'

We do not want a link to 0{40} object stored anywhere in our objects.

* jk/maint-null-in-trees:
  fsck: detect null sha1 in tree entries
  do not write null sha1s to on-disk index
  diff: do not use null sha1 as a sentinel value

12 years agoMerge branch 'mm/push-default-switch-warning'
Junio C Hamano [Mon, 27 Aug 2012 18:54:04 +0000 (11:54 -0700)]
Merge branch 'mm/push-default-switch-warning'

In the next major release, we will switch "git push [$there]" that
does not say what to push from the traditional "matching" to the
updated "simple" semantics, that pushes the current branch to the
branch with the same name only when the current branch is set to
integrate with that remote branch (all other cases will error out).

* mm/push-default-switch-warning:
  push: start warning upcoming default change for push.default

12 years agobranch -v: align even when branch names are in UTF-8
Nguyễn Thái Ngọc Duy [Sat, 25 Aug 2012 18:17:12 +0000 (01:17 +0700)]
branch -v: align even when branch names are in UTF-8

Branch names are usually in ASCII so they are not the problem. The
problem most likely comes from "(no branch)" translation, which is
in UTF-8 and makes display-width calculation just wrong.  Clarify
this by renaming the field "len" in struct ref_item to "width", as
it stores the display-width and is used to compute the width of the
screen needed to show the names of all the branches, and compute the
display width using utf8_strwidth(), not byte-length with strlen().

Update document to mention the fact that we may want ref names in
UTF-8. Encodings that produce invalid UTF-8 are safe as utf8_strwidth()
falls back to strlen(). The ones that incidentally produce valid UTF-8
sequences will cause misalignment.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp: prompt for credentials on failed POST
Jeff King [Mon, 27 Aug 2012 13:27:15 +0000 (09:27 -0400)]
http: prompt for credentials on failed POST

All of the smart-http GET requests go through the http_get_*
functions, which will prompt for credentials and retry if we
see an HTTP 401.

POST requests, however, do not go through any central point.
Moreover, it is difficult to retry in the general case; we
cannot assume the request body fits in memory or is even
seekable, and we don't know how much of it was consumed
during the attempt.

Most of the time, this is not a big deal; for both fetching
and pushing, we make a GET request before doing any POSTs,
so typically we figure out the credentials during the first
request, then reuse them during the POST. However, some
servers may allow a client to get the list of refs from
receive-pack without authentication, and then require
authentication when the client actually tries to POST the
pack.

This is not ideal, as the client may do a non-trivial amount
of work to generate the pack (e.g., delta-compressing
objects). However, for a long time it has been the
recommended example configuration in git-http-backend(1) for
setting up a repository with anonymous fetch and
authenticated push. This setup has always been broken
without putting a username into the URL. Prior to commit
986bbc0, it did work with a username in the URL, because git
would prompt for credentials before making any requests at
all. However, post-986bbc0, it is totally broken. Since it
has been advertised in the manpage for some time, we should
make sure it works.

Unfortunately, it is not as easy as simply calling post_rpc
again when it fails, due to the input issue mentioned above.
However, we can still make this specific case work by
retrying in two specific instances:

  1. If the request is large (bigger than LARGE_PACKET_MAX),
     we will first send a probe request with a single flush
     packet. Since this request is static, we can freely
     retry it.

  2. If the request is small and we are not using gzip, then
     we have the whole thing in-core, and we can freely
     retry.

That means we will not retry in some instances, including:

  1. If we are using gzip. However, we only do so when
     calling git-upload-pack, so it does not apply to
     pushes.

  2. If we have a large request, the probe succeeds, but
     then the real POST wants authentication. This is an
     extremely unlikely configuration and not worth worrying
     about.

While it might be nice to cover those instances, doing so
would be significantly more complex for very little
real-world gain. In the long run, we will be much better off
when curl learns to internally handle authentication as a
callback, and we can cleanly handle all cases that way.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agohttp: factor out http error code handling
Jeff King [Mon, 27 Aug 2012 13:26:04 +0000 (09:26 -0400)]
http: factor out http error code handling

Most of our http requests go through the http_request()
interface, which does some nice post-processing on the
results. In particular, it handles prompting for missing
credentials as well as approving and rejecting valid or
invalid credentials. Unfortunately, it only handles GET
requests. Making it handle POSTs would be quite complex, so
let's pull result handling code into its own function so
that it can be reused from the POST code paths.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot: test http access to "half-auth" repositories
Jeff King [Mon, 27 Aug 2012 13:25:53 +0000 (09:25 -0400)]
t: test http access to "half-auth" repositories

Some sites set up http access to repositories such that
fetching is anonymous and unauthenticated, but pushing is
authenticated. While there are multiple ways to do this, the
technique advertised in the git-http-backend manpage is to
block access to locations matching "/git-receive-pack$".

Let's emulate that advice in our test setup, which makes it
clear that this advice does not actually work.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot: test basic smart-http authentication
Jeff King [Mon, 27 Aug 2012 13:25:36 +0000 (09:25 -0400)]
t: test basic smart-http authentication

We do not currently test authentication over smart-http at
all. In theory, it should work exactly as it does for dumb
http (which we do test). It does indeed work for these
simple tests, but this patch lays the groundwork for more
complex tests in future patches.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot/lib-httpd: recognize */smart/* repos as smart-http
Jeff King [Mon, 27 Aug 2012 13:25:21 +0000 (09:25 -0400)]
t/lib-httpd: recognize */smart/* repos as smart-http

We do not currently test authentication for smart-http repos
at all. Part of the infrastructure to do this is recognizing
that auth/smart is indeed a smart-http repo.

The current apache config recognizes only "^/smart/*" as
smart-http. Let's instead treat anything with /smart/ in the
URL as smart-http. This is obviously a stupid thing to do
for a real production site, but for our test suite we know
that our repositories will not have this magic string in the
name.

Note that we will route /foo/smart/bar.git directly to
git-http-backend/bar.git; in other words, everything before
the "/smart/" is irrelevant to finding the repo on disk (but
may impact apache config, for example by triggering auth
checks).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot/lib-httpd: only route auth/dumb to dumb repos
Jeff King [Mon, 27 Aug 2012 13:24:42 +0000 (09:24 -0400)]
t/lib-httpd: only route auth/dumb to dumb repos

Our test apache config points all of auth/ directly to the
on-disk repositories via an Alias directive. This works fine
because everything authenticated is currently in auth/dumb,
which is a subset.  However, this would conflict with a
ScriptAlias for auth/smart (which will come in future
patches), so let's narrow the Alias.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot5550: factor out http auth setup
Jeff King [Mon, 27 Aug 2012 13:24:31 +0000 (09:24 -0400)]
t5550: factor out http auth setup

The t5550 script sets up a nice askpass helper for
simulating user input and checking what git prompted for.
Let's make it available to other http scripts by migrating
it to lib-httpd.

We can use this immediately in t5540 to make our tests more
robust (previously, we did not check at all that hitting the
password-protected repo actually involved a password).
Unfortunately, we end up failing the test because the
current code erroneously prompts twice (once for
git-remote-http, and then again when the former spawns
git-http-push).

More importantly, though, it will let us easily add
smart-http authentication tests in t5541 and t5551; we
currently do not test smart-http authentication at all.

As part of making it generic, let's always look for and
store auxiliary askpass files at the top-level trash
directory; this makes it compatible with t5540, which runs
some tests from sub-repositories. We can abstract away the
ugliness with a short helper function.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot5550: put auth-required repo in auth/dumb
Jeff King [Mon, 27 Aug 2012 13:23:37 +0000 (09:23 -0400)]
t5550: put auth-required repo in auth/dumb

In most of our tests, we put repos to be accessed by dumb
protocols in /dumb, and repos to be accessed by smart
protocols in /smart.  In our test apache setup, the whole
/auth hierarchy requires authentication. However, we don't
bother to split it by smart and dumb here because we are not
currently testing smart-http authentication at all.

That will change in future patches, so let's be explicit
that we are interested in testing dumb access here. This
also happens to match what t5540 does for the push tests.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix tests under GETTEXT_POISON on parseopt
Jiang Xin [Mon, 27 Aug 2012 05:36:55 +0000 (13:36 +0800)]
Fix tests under GETTEXT_POISON on parseopt

Use the i18n-specific test functions in test scripts for parseopt tests.
This issue was was introduced in v1.7.10.1-488-g54e6d:

    54e6d i18n: parseopt: lookup help and argument translations when showing usage

and been broken under GETTEXT_POISON=YesPlease since.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix tests under GETTEXT_POISON on git-remote
Jiang Xin [Mon, 27 Aug 2012 05:36:54 +0000 (13:36 +0800)]
Fix tests under GETTEXT_POISON on git-remote

Use the i18n-specific test functions in test scripts for git-remote.
This issue was was introduced in v1.7.10-233-gbb16d5:

    bb16d5 i18n: remote: mark strings for translation

and been broken under GETTEXT_POISON=YesPlease since.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix tests under GETTEXT_POISON on pack-object
Jiang Xin [Mon, 27 Aug 2012 05:36:53 +0000 (13:36 +0800)]
Fix tests under GETTEXT_POISON on pack-object

Use the i18n-specific test functions in test scripts for pack-object.
This issue was was introduced in v1.7.10.2-556-g46140:

    46140 index-pack: use streaming interface for collision test on large blobs
    cf2ba pack-objects: use streaming interface for reading large loose blobs

and been broken under GETTEXT_POISON=YesPlease since.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix tests under GETTEXT_POISON on git-apply
Jiang Xin [Mon, 27 Aug 2012 05:36:52 +0000 (13:36 +0800)]
Fix tests under GETTEXT_POISON on git-apply

Use the i18n-specific test functions in test scripts for git-apply.
This issue was was introduced in the following commits:

    de373 i18n: apply: mark parseopt strings for translation
    3638e i18n: apply: mark strings for translation

and been broken under GETTEXT_POISON=YesPlease since.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix tests under GETTEXT_POISON on diffstat
Jiang Xin [Mon, 27 Aug 2012 05:36:51 +0000 (13:36 +0800)]
Fix tests under GETTEXT_POISON on diffstat

Use the i18n-specific test functions in test scripts for diffstat.
This issue was was introduced in v1.7.9-1-g7f814:

    7f814 Use correct grammar in diffstat summary line

and been broken under GETTEXT_POISON=YesPlease since.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix tests under GETTEXT_POISON on git-stash
Jiang Xin [Mon, 27 Aug 2012 05:36:50 +0000 (13:36 +0800)]
Fix tests under GETTEXT_POISON on git-stash

Use i18n-specific test functions in test scripts for git-stash.
This issue was was introduced in v1.7.4.1-119-g355ec:

    355ec i18n: git-status basic messages

and been broken under GETTEXT_POISON=YesPlease since.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix tests under GETTEXT_POISON on relative dates
Jiang Xin [Mon, 27 Aug 2012 05:36:49 +0000 (13:36 +0800)]
Fix tests under GETTEXT_POISON on relative dates

Use the i18n-specific test_i18ncmp in t/t0006-date.sh for relative dates
tests. This issue was was introduced in v1.7.10-230-g7d29a:

    7d29a i18n: mark relative dates for translation

and been broken under GETTEXT_POISON=YesPlease since.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodoc: "git checkout -b/-B/--orphan" always takes a branch name
Junio C Hamano [Sun, 26 Aug 2012 18:40:08 +0000 (11:40 -0700)]
doc: "git checkout -b/-B/--orphan" always takes a branch name

While the synopsis section makes it clear that the new branch name
is the parameter to these flags, the option description did not.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoapply: compute patch->def_name correctly under -p0
Junio C Hamano [Sat, 25 Aug 2012 05:48:55 +0000 (22:48 -0700)]
apply: compute patch->def_name correctly under -p0

Back when "git apply" was written, we made sure that the user can
skip more than the default number of path components (i.e. 1) by
giving "-p<n>", but the logic for doing so was built around the
notion of "we skip N slashes and stop".  This obviously does not
work well when running under -p0 where we do not want to skip any,
but still want to skip SP/HT that separates the pathnames of
preimage and postimage and want to reject absolute pathnames.

Stop using "stop_at_slash()", and instead introduce a new helper
"skip_tree_prefix()" with similar logic but works correctly even for
the -p0 case.

This is an ancient bug, but has been masked for a long time because
most of the patches are text and have other clues to tell us the
name of the preimage and the postimage.

Noticed by Colin McCabe.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint'
Junio C Hamano [Fri, 24 Aug 2012 20:13:53 +0000 (13:13 -0700)]
Merge branch 'maint'

* maint:
  Prepare for 1.7.11.6
  Make the ciabot scripts completely self-configuring in the normal case.
  Improved documentation for the ciabot scripts.

12 years agoMerge branch 'maint-1.7.11' into maint
Junio C Hamano [Fri, 24 Aug 2012 19:34:19 +0000 (12:34 -0700)]
Merge branch 'maint-1.7.11' into maint

* maint-1.7.11:
  Prepare for 1.7.11.6
  Make the ciabot scripts completely self-configuring in the normal case.
  Improved documentation for the ciabot scripts.
  man: git pull -r is a short for --rebase
  gitcli: describe abbreviation of long options
  rev-list docs: clarify --topo-order description
  Documentation/CodingGuidelines: spell out more shell guidelines
  Documentation: do not mention .git/refs/* directories
  tests: Introduce test_seq

12 years agoPrepare for 1.7.11.6
Junio C Hamano [Fri, 24 Aug 2012 19:33:31 +0000 (12:33 -0700)]
Prepare for 1.7.11.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'mv/pull-r-for-rebase' into maint-1.7.11
Junio C Hamano [Fri, 24 Aug 2012 19:05:47 +0000 (12:05 -0700)]
Merge branch 'mv/pull-r-for-rebase' into maint-1.7.11

A minor documentation update.

* mv/pull-r-for-rebase:
  man: git pull -r is a short for --rebase

12 years agoMerge branch 'jc/maint-abbrev-option-cli' into maint-1.7.11
Junio C Hamano [Fri, 24 Aug 2012 19:05:44 +0000 (12:05 -0700)]
Merge branch 'jc/maint-abbrev-option-cli' into maint-1.7.11

We did not document that many commands take unique prefix
abbreviations of long options (e.g. "--option" may be the only flag
that the command accepts that begin with "--opt", in which case you
can give "--opt") anywhere easy to find for new people.

* jc/maint-abbrev-option-cli:
  gitcli: describe abbreviation of long options

12 years agoMerge branch 'jc/maint-rev-list-topo-doc' into maint-1.7.11
Junio C Hamano [Fri, 24 Aug 2012 19:05:40 +0000 (12:05 -0700)]
Merge branch 'jc/maint-rev-list-topo-doc' into maint-1.7.11

It was unclear what "--topo-order" was really about in the
documentation. It is not just about "children before parent", but
also about "don't mix lineages".

* jc/maint-rev-list-topo-doc:
  rev-list docs: clarify --topo-order description

12 years agoMerge branch 'hv/coding-guidelines' into maint-1.7.11
Junio C Hamano [Fri, 24 Aug 2012 19:05:35 +0000 (12:05 -0700)]
Merge branch 'hv/coding-guidelines' into maint-1.7.11

In earlier days, "imitate the style in the neibouring code" was
sufficient to keep the coherent style, but over time some parts of
the codebase have drifted enough to make it ineffective.

* hv/coding-guidelines:
  Documentation/CodingGuidelines: spell out more shell guidelines

12 years agoMerge branch 'jc/tag-doc' into maint-1.7.11
Junio C Hamano [Fri, 24 Aug 2012 19:05:30 +0000 (12:05 -0700)]
Merge branch 'jc/tag-doc' into maint-1.7.11

Our documentation used to assume having files in .git/refs/*
directories was the only to have branches and tags, but that is not
true for quite some time.

* jc/tag-doc:
  Documentation: do not mention .git/refs/* directories

12 years agoMerge branch 'mk/test-seq' into maint-1.7.11
Junio C Hamano [Fri, 24 Aug 2012 19:05:24 +0000 (12:05 -0700)]
Merge branch 'mk/test-seq' into maint-1.7.11

Add a compatibility/utility function to the test framework.

* mk/test-seq:
  tests: Introduce test_seq