]> Pileus Git - ~andy/git/log
~andy/git
10 years agocat-file: provide %(deltabase) batch format
Jeff King [Sat, 21 Dec 2013 14:25:22 +0000 (09:25 -0500)]
cat-file: provide %(deltabase) batch format

It can be useful for debugging or analysis to see which
objects are stored as delta bases on top of others. This
information is available by running `git verify-pack`, but
that is extremely expensive (and is harder than necessary to
parse).

Instead, let's make it available as a cat-file query format,
which makes it fast and simple to get the bases for a subset
of the objects.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agosha1_object_info_extended: provide delta base sha1s
Jeff King [Sat, 21 Dec 2013 14:24:20 +0000 (09:24 -0500)]
sha1_object_info_extended: provide delta base sha1s

A caller of sha1_object_info_extended technically has enough
information to determine the base sha1 from the results of
the call. It knows the pack, offset, and delta type of the
object, which is sufficient to find the base.

However, the functions to do so are not publicly available,
and the code itself is intimate enough with the pack details
that it should be abstracted away. We could add a public
helper to allow callers to query the delta base separately,
but it is simpler and slightly more efficient to optionally
grab it along with the rest of the object_info data.

For cases where the object is not stored as a delta, we
write the null sha1 into the query field. A careful caller
could check "oi.whence == OI_PACKED && oi.u.packed.is_delta"
before looking at the base sha1, but using the null sha1
provides a simple alternative (and gives a better sanity
check for a non-careful caller than simply returning random
bytes).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoSync with 1.8.5.2
Junio C Hamano [Tue, 17 Dec 2013 22:12:17 +0000 (14:12 -0800)]
Sync with 1.8.5.2

* maint:
  Git 1.8.5.2
  cmd_repack(): remove redundant local variable "nr_packs"

10 years agoUpdate draft release notes to 1.9
Junio C Hamano [Tue, 17 Dec 2013 22:05:50 +0000 (14:05 -0800)]
Update draft release notes to 1.9

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'kn/gitweb-extra-branch-refs'
Junio C Hamano [Tue, 17 Dec 2013 20:03:33 +0000 (12:03 -0800)]
Merge branch 'kn/gitweb-extra-branch-refs'

Allow gitweb to be configured to show refs out of refs/heads/ as if
they were branches.

* kn/gitweb-extra-branch-refs:
  gitweb: Denote non-heads, non-remotes branches
  gitweb: Add a feature for adding more branch refs
  gitweb: Return 1 on validation success instead of passed input
  gitweb: Move check-ref-format code into separate function

10 years agoMerge branch 'tb/clone-ssh-with-colon-for-port'
Junio C Hamano [Tue, 17 Dec 2013 20:03:31 +0000 (12:03 -0800)]
Merge branch 'tb/clone-ssh-with-colon-for-port'

Be more careful when parsing remote repository URL given in the
scp-style host:path notation.

* tb/clone-ssh-with-colon-for-port:
  git_connect(): use common return point
  connect.c: refactor url parsing
  git_connect(): refactor the port handling for ssh
  git fetch: support host:/~repo
  t5500: add test cases for diag-url
  git fetch-pack: add --diag-url
  git_connect: factor out discovery of the protocol and its parts
  git_connect: remove artificial limit of a remote command
  t5601: add tests for ssh
  t5601: remove clear_ssh, refactor setup_ssh_wrapper

10 years agoMerge branch 'nd/transport-positive-depth-only'
Junio C Hamano [Tue, 17 Dec 2013 20:03:29 +0000 (12:03 -0800)]
Merge branch 'nd/transport-positive-depth-only'

"git fetch --depth=0" was a no-op, and was silently
ignored. Diagnose it as an error.

* nd/transport-positive-depth-only:
  clone,fetch: catch non positive --depth option value

10 years agoMerge branch 'cc/starts-n-ends-with'
Junio C Hamano [Tue, 17 Dec 2013 19:47:35 +0000 (11:47 -0800)]
Merge branch 'cc/starts-n-ends-with'

Remove a few duplicate implementations of prefix/suffix comparison
functions, and rename them to starts_with and ends_with.

* cc/starts-n-ends-with:
  replace {pre,suf}fixcmp() with {starts,ends}_with()
  strbuf: introduce starts_with() and ends_with()
  builtin/remote: remove postfixcmp() and use suffixcmp() instead
  environment: normalize use of prefixcmp() by removing " != 0"

10 years agoMerge branch 'jl/commit-v-strip-marker'
Junio C Hamano [Tue, 17 Dec 2013 19:47:18 +0000 (11:47 -0800)]
Merge branch 'jl/commit-v-strip-marker'

"git commit -v" appends the patch to the log message before
editing, and then removes the patch when the editor returned
control. However, the patch was not stripped correctly when the
first modified path was a submodule.

* jl/commit-v-strip-marker:
  commit -v: strip diffs and submodule shortlogs from the commit message

10 years agoMerge branch 'tr/send-email-ssl'
Junio C Hamano [Tue, 17 Dec 2013 19:47:12 +0000 (11:47 -0800)]
Merge branch 'tr/send-email-ssl'

SSL-related options were not passed correctly to underlying socket
layer in "git send-email".

* tr/send-email-ssl:
  send-email: set SSL options through IO::Socket::SSL::set_client_defaults
  send-email: --smtp-ssl-cert-path takes an argument
  send-email: pass Debug to Net::SMTP::SSL::new

10 years agoMerge branch 'nd/gettext-vsnprintf'
Junio C Hamano [Tue, 17 Dec 2013 19:47:10 +0000 (11:47 -0800)]
Merge branch 'nd/gettext-vsnprintf'

* nd/gettext-vsnprintf:
  gettext.c: detect the vsnprintf bug at runtime

10 years agoMerge branch 'mm/mv-file-to-no-such-dir-with-slash'
Junio C Hamano [Tue, 17 Dec 2013 19:47:08 +0000 (11:47 -0800)]
Merge branch 'mm/mv-file-to-no-such-dir-with-slash'

* mm/mv-file-to-no-such-dir-with-slash:
  mv: let 'git mv file no-such-dir/' error out

10 years agoMerge branch 'nd/remove-opt-boolean'
Junio C Hamano [Tue, 17 Dec 2013 19:47:05 +0000 (11:47 -0800)]
Merge branch 'nd/remove-opt-boolean'

* nd/remove-opt-boolean:
  parse-options: remove OPT_BOOLEAN

10 years agoMerge branch 'bc/doc-merge-no-op-revert'
Junio C Hamano [Tue, 17 Dec 2013 19:47:00 +0000 (11:47 -0800)]
Merge branch 'bc/doc-merge-no-op-revert'

* bc/doc-merge-no-op-revert:
  Documentation: document pitfalls with 3-way merge

10 years agoMerge branch 'fc/trivial'
Junio C Hamano [Tue, 17 Dec 2013 19:46:32 +0000 (11:46 -0800)]
Merge branch 'fc/trivial'

* fc/trivial:
  remote: fix status with branch...rebase=preserve
  fetch: add missing documentation
  t: trivial whitespace cleanups
  abspath: trivial style fix

10 years agoMerge branch 'jk/t5000-gzip-simplify'
Junio C Hamano [Tue, 17 Dec 2013 19:46:29 +0000 (11:46 -0800)]
Merge branch 'jk/t5000-gzip-simplify'

Test fix.

* jk/t5000-gzip-simplify:
  t5000: simplify gzip prerequisite checks

10 years agoMerge branch 'kb/doc-exclude-directory-semantics'
Junio C Hamano [Tue, 17 Dec 2013 19:44:18 +0000 (11:44 -0800)]
Merge branch 'kb/doc-exclude-directory-semantics'

* kb/doc-exclude-directory-semantics:
  gitignore.txt: clarify recursive nature of excluded directories

10 years agoGit 1.8.5.2
Junio C Hamano [Tue, 17 Dec 2013 19:42:12 +0000 (11:42 -0800)]
Git 1.8.5.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'rs/doc-submitting-patches' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:38:23 +0000 (11:38 -0800)]
Merge branch 'rs/doc-submitting-patches' into maint

* rs/doc-submitting-patches:
  SubmittingPatches: document how to handle multiple patches

10 years agoMerge branch 'tr/doc-git-cherry' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:37:55 +0000 (11:37 -0800)]
Merge branch 'tr/doc-git-cherry' into maint

* tr/doc-git-cherry:
  Documentation: revamp git-cherry(1)

10 years agoMerge branch 'nd/glossary-content-pathspec-markup' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:36:54 +0000 (11:36 -0800)]
Merge branch 'nd/glossary-content-pathspec-markup' into maint

* nd/glossary-content-pathspec-markup:
  glossary-content.txt: fix documentation of "**" patterns

10 years agoMerge branch 'jj/doc-markup-gitcli' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:36:38 +0000 (11:36 -0800)]
Merge branch 'jj/doc-markup-gitcli' into maint

* jj/doc-markup-gitcli:
  Documentation/gitcli.txt: fix double quotes

10 years agoMerge branch 'jj/doc-markup-hints-in-coding-guidelines' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:36:10 +0000 (11:36 -0800)]
Merge branch 'jj/doc-markup-hints-in-coding-guidelines' into maint

* jj/doc-markup-hints-in-coding-guidelines:
  State correct usage of literal examples in man pages in the coding standards

10 years agoMerge branch 'jj/log-doc' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:35:41 +0000 (11:35 -0800)]
Merge branch 'jj/log-doc' into maint

* jj/log-doc:
  Documentation/git-log.txt: mark-up fix and minor rephasing
  Documentation/git-log: update "--log-size" description

10 years agoMerge branch 'jj/rev-list-options-doc' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:34:41 +0000 (11:34 -0800)]
Merge branch 'jj/rev-list-options-doc' into maint

* jj/rev-list-options-doc:
  Documentation/rev-list-options.txt: fix some grammatical issues and typos
  Documentation/rev-list-options.txt: fix mark-up

10 years agoMerge branch 'tb/doc-fetch-pack-url' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:34:24 +0000 (11:34 -0800)]
Merge branch 'tb/doc-fetch-pack-url' into maint

* tb/doc-fetch-pack-url:
  git-fetch-pack uses URLs like git-fetch

10 years agoMerge branch 'mi/typofixes' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:34:01 +0000 (11:34 -0800)]
Merge branch 'mi/typofixes' into maint

* mi/typofixes:
  contrib: typofixes
  Documentation/technical/http-protocol.txt: typofixes
  typofixes: fix misspelt comments

10 years agoMerge branch 'jh/loose-object-dirs-creation-race' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:32:50 +0000 (11:32 -0800)]
Merge branch 'jh/loose-object-dirs-creation-race' into maint

Two processes creating loose objects at the same time could have
failed unnecessarily when the name of their new objects started
with the same byte value, due to a race condition.

* jh/loose-object-dirs-creation-race:
  sha1_file.c:create_tmpfile(): Fix race when creating loose object dirs

10 years agoMerge branch 'jk/two-way-merge-corner-case-fix' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:32:04 +0000 (11:32 -0800)]
Merge branch 'jk/two-way-merge-corner-case-fix' into maint

"git am --abort" sometimes complained about not being able to write
a tree with an 0{40} object in it.

* jk/two-way-merge-corner-case-fix:
  t1005: add test for "read-tree --reset -u A B"
  t1005: reindent
  unpack-trees: fix "read-tree -u --reset A B" with conflicted index

10 years agoMerge branch 'sb/sha1-loose-object-info-check-existence' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:31:18 +0000 (11:31 -0800)]
Merge branch 'sb/sha1-loose-object-info-check-existence' into maint

"git cat-file --batch-check=ok" did not check the existence of the
named object.

* sb/sha1-loose-object-info-check-existence:
  sha1_loose_object_info(): do not return success on missing object

10 years agoMerge branch 'nd/magic-pathspec' into maint
Junio C Hamano [Tue, 17 Dec 2013 19:21:34 +0000 (11:21 -0800)]
Merge branch 'nd/magic-pathspec' into maint

"git diff -- ':(icase)makefile'" was unnecessarily rejected at the
command line parser.

* nd/magic-pathspec:
  diff: restrict pathspec limitations to diff b/f case only

10 years agocmd_repack(): remove redundant local variable "nr_packs"
Michael Haggerty [Tue, 17 Dec 2013 13:43:58 +0000 (14:43 +0100)]
cmd_repack(): remove redundant local variable "nr_packs"

Its value is the same as the number of entries in the "names"
string_list, so just use "names.nr" in its place.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Stefan Beller <stefanbeller@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoUpdate draft release notes to 1.9
Junio C Hamano [Thu, 12 Dec 2013 22:24:39 +0000 (14:24 -0800)]
Update draft release notes to 1.9

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'jn/scripts-updates'
Junio C Hamano [Thu, 12 Dec 2013 22:22:59 +0000 (14:22 -0800)]
Merge branch 'jn/scripts-updates'

* jn/scripts-updates:
  remove #!interpreter line from shell libraries
  test: replace shebangs with descriptions in shell libraries
  test: make FILEMODE a lazy prereq
  contrib: remove git-p4import
  mark contributed hooks executable
  mark perl test scripts executable
  mark Windows build scripts executable

10 years agoMerge branch 'cn/thin-push-capability'
Junio C Hamano [Thu, 12 Dec 2013 22:20:32 +0000 (14:20 -0800)]
Merge branch 'cn/thin-push-capability'

Allow receive-pack to insist on receiving a fat pack from "git
push" clients.

* cn/thin-push-capability:
  send-pack: don't send a thin pack to a server which doesn't support it

10 years agoMerge branch 'jk/remove-deprecated'
Junio C Hamano [Thu, 12 Dec 2013 22:18:33 +0000 (14:18 -0800)]
Merge branch 'jk/remove-deprecated'

* jk/remove-deprecated:
  stop installing git-tar-tree link
  peek-remote: remove deprecated alias of ls-remote
  lost-found: remove deprecated command
  tar-tree: remove deprecated command
  repo-config: remove deprecated alias for "git config"

10 years agoMerge branch 'tr/commit-slab-cleanup'
Junio C Hamano [Thu, 12 Dec 2013 22:18:31 +0000 (14:18 -0800)]
Merge branch 'tr/commit-slab-cleanup'

* tr/commit-slab-cleanup:
  commit-slab: sizeof() the right type in xrealloc
  commit-slab: declare functions "static inline"
  commit-slab: document clear_$slabname()

10 years agoMerge branch 'rs/doc-submitting-patches'
Junio C Hamano [Thu, 12 Dec 2013 22:18:29 +0000 (14:18 -0800)]
Merge branch 'rs/doc-submitting-patches'

* rs/doc-submitting-patches:
  SubmittingPatches: document how to handle multiple patches

10 years agoMerge branch 'tr/doc-git-cherry'
Junio C Hamano [Thu, 12 Dec 2013 22:18:23 +0000 (14:18 -0800)]
Merge branch 'tr/doc-git-cherry'

* tr/doc-git-cherry:
  Documentation: revamp git-cherry(1)

10 years agoMerge branch 'cl/p4-use-diff-tree'
Junio C Hamano [Thu, 12 Dec 2013 22:18:20 +0000 (14:18 -0800)]
Merge branch 'cl/p4-use-diff-tree'

* cl/p4-use-diff-tree:
  git p4: Use git diff-tree instead of format-patch

10 years agoMerge branch 'tr/config-multivalue-lift-max'
Junio C Hamano [Thu, 12 Dec 2013 22:18:09 +0000 (14:18 -0800)]
Merge branch 'tr/config-multivalue-lift-max'

* tr/config-multivalue-lift-max:
  config: arbitrary number of matches for --unset and --replace-all

10 years agoMerge branch 'mh/fetch-tags-in-addition-to-normal-refs'
Junio C Hamano [Thu, 12 Dec 2013 22:14:10 +0000 (14:14 -0800)]
Merge branch 'mh/fetch-tags-in-addition-to-normal-refs'

The "--tags" option to "git fetch" used to be literally a synonym to
a "refs/tags/*:refs/tags/*" refspec, which meant that (1) as an
explicit refspec given from the command line, it silenced the lazy
"git fetch" default that is configured, and (2) also as an explicit
refspec given from the command line, it interacted with "--prune"
to remove any tag that the remote we are fetching from does not
have.

This demotes it to an option; with it, we fetch all tags in
addition to what would be fetched without the option, and it does
not interact with the decision "--prune" makes to see what
remote-tracking refs the local has are missing the remote
counterpart.

* mh/fetch-tags-in-addition-to-normal-refs: (23 commits)
  fetch: improve the error messages emitted for conflicting refspecs
  handle_duplicate(): mark error message for translation
  ref_remote_duplicates(): extract a function handle_duplicate()
  ref_remove_duplicates(): simplify loop logic
  t5536: new test of refspec conflicts when fetching
  ref_remove_duplicates(): avoid redundant bisection
  git-fetch.txt: improve description of tag auto-following
  fetch-options.txt: simplify ifdef/ifndef/endif usage
  fetch, remote: properly convey --no-prune options to subprocesses
  builtin/remote.c:update(): use struct argv_array
  builtin/remote.c: reorder function definitions
  query_refspecs(): move some constants out of the loop
  fetch --prune: prune only based on explicit refspecs
  fetch --tags: fetch tags *in addition to* other stuff
  fetch: only opportunistically update references based on command line
  get_expanded_map(): avoid memory leak
  get_expanded_map(): add docstring
  builtin/fetch.c: reorder function definitions
  get_ref_map(): rename local variables
  api-remote.txt: correct section "struct refspec"
  ...

10 years agogitweb: Denote non-heads, non-remotes branches
Krzesimir Nowak [Wed, 11 Dec 2013 11:54:44 +0000 (12:54 +0100)]
gitweb: Denote non-heads, non-remotes branches

Given two branches residing in refs/heads/master and refs/wip/feature
the list-of-branches view will present them in following way:
master
feature (wip)

When getting a snapshot of a 'feature' branch, the tarball is going to
have name like 'project-wip-feature-<short hash>.tgz'.

Signed-off-by: Krzesimir Nowak <krzesimir@endocode.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogitweb: Add a feature for adding more branch refs
Krzesimir Nowak [Wed, 11 Dec 2013 11:54:43 +0000 (12:54 +0100)]
gitweb: Add a feature for adding more branch refs

Allow extra-branch-refs feature to tell gitweb to show refs from
additional hierarchies in addition to branches in the list-of-branches
view.

Signed-off-by: Krzesimir Nowak <krzesimir@endocode.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogitweb: Return 1 on validation success instead of passed input
Krzesimir Nowak [Wed, 11 Dec 2013 11:54:42 +0000 (12:54 +0100)]
gitweb: Return 1 on validation success instead of passed input

Users of validate_* passing "0" might get failures on correct name
because of coercion of "0" to false in code like:
die_error(500, "invalid ref") unless (check_ref_format ("0"));

Also, the validate_foo subs are renamed to is_valid_foo.

Signed-off-by: Krzesimir Nowak <krzesimir@endocode.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogitweb: Move check-ref-format code into separate function
Krzesimir Nowak [Wed, 11 Dec 2013 11:54:41 +0000 (12:54 +0100)]
gitweb: Move check-ref-format code into separate function

This check will be used in more than one place later.

Signed-off-by: Krzesimir Nowak <krzesimir@endocode.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge git://repo.or.cz/git-gui
Junio C Hamano [Mon, 9 Dec 2013 22:57:00 +0000 (14:57 -0800)]
Merge git://repo.or.cz/git-gui

* git://repo.or.cz/git-gui:
  git-gui: correct spelling errors in comments
  git-gui: add menu item to launch a bash shell on Windows.
  git-gui: corrected setup of git worktree under cygwin.
  git-gui: right half window is paned
  git-gui: Add gui.displayuntracked option
  git-gui: show the maxrecentrepo config option in the preferences dialog
  git-gui: added gui.maxrecentrepo to extend the number of remembered repos
  git-gui: Improve font rendering on retina macbooks

10 years agoMerge git://ozlabs.org/~paulus/gitk
Junio C Hamano [Mon, 9 Dec 2013 22:55:41 +0000 (14:55 -0800)]
Merge git://ozlabs.org/~paulus/gitk

* git://ozlabs.org/~paulus/gitk:
  gitk: Recognize -L option
  gitk: Support showing the gathered inline diffs
  gitk: Split out diff part in $commitinfo
  gitk: Refactor per-line part of getblobdiffline and its support
  gitk: Support -G option from the command line
  gitk: Tag display improvements

10 years agogit_connect(): use common return point
Torsten Bögershausen [Thu, 28 Nov 2013 19:50:15 +0000 (20:50 +0100)]
git_connect(): use common return point

Use only one return point from git_connect(), doing the

    free();
    return conn;

only at one place in the code.

There may be a little confusion what the variable "host" is for.  At
some places it is only the host part, at other places it may include
the port number, so change host into hostandport here.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoconnect.c: refactor url parsing
Torsten Bögershausen [Thu, 28 Nov 2013 19:50:03 +0000 (20:50 +0100)]
connect.c: refactor url parsing

Make the function is_local() in transport.c public, rename it into
url_is_local_not_ssh() and use it in both transport.c and connect.c

Use a protocol "local" for URLs for the local file system.

One note about using file:// under Windows:

The (absolute) path on Unix like system typically starts with "/".
When the host is empty, it can be omitted, so that a shell scriptlet
url=file://$pwd
will give a URL like "file:///home/user/repo".

Windows does not have the same concept of a root directory located in "/".
When parsing the URL allow "file://C:/user/repo"
(even if RFC1738 indicates that "file:///C:/user/repo" should be used).

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogit_connect(): refactor the port handling for ssh
Torsten Bögershausen [Thu, 28 Nov 2013 19:49:54 +0000 (20:49 +0100)]
git_connect(): refactor the port handling for ssh

Use get_host_and_port() even for ssh.
Remove the variable port git_connect(), and simplify parse_connect_url()
Use only one return point in git_connect(), doing the free() and return conn.

t5601 had 2 corner test cases which now pass.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogit fetch: support host:/~repo
Torsten Bögershausen [Thu, 28 Nov 2013 19:49:38 +0000 (20:49 +0100)]
git fetch: support host:/~repo

The documentation (in urls.txt) says that

    "ssh://host:/~repo",
    "host:/~repo" or
    "host:~repo"

specify the repository "repo" in the home directory at "host".

This has not been working for "host:/~repo".

Before commit 356bec "Support [address] in URLs", the comparison
"url != hostname" could be used to determine if the URL had a scheme
or not: "ssh://host/host" != "host".

However, after 356bec "[::1]" was converted into "::1", yielding
url != hostname as well.  To fix this regression, don't use
"if (url != hostname)", but look at the separator instead.

Rename the variable "c" into "separator" to make it easier to read.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot5500: add test cases for diag-url
Torsten Bögershausen [Thu, 28 Nov 2013 19:49:29 +0000 (20:49 +0100)]
t5500: add test cases for diag-url

Add test cases using git fetch-pack --diag-url:

- parse out host and path for URLs with a scheme (git:// file:// ssh://)
- parse host names embedded by [] correctly
- extract the port number, if present
- separate URLs like "file" (which are local)
  from URLs like "host:repo" which should use ssh

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogit fetch-pack: add --diag-url
Torsten Bögershausen [Thu, 28 Nov 2013 19:49:17 +0000 (20:49 +0100)]
git fetch-pack: add --diag-url

The main purpose is to trace the URL parser called by git_connect() in
connect.c

The main features of the parser can be listed as this:

- parse out host and path for URLs with a scheme (git:// file:// ssh://)
- parse host names embedded by [] correctly
- extract the port number, if present
- separate URLs like "file" (which are local)
  from URLs like "host:repo" which should use ssh

Add the new parameter "--diag-url" to "git fetch-pack", which prints
the value for protocol, host and path to stderr and exits.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogit_connect: factor out discovery of the protocol and its parts
Johannes Sixt [Thu, 28 Nov 2013 19:49:01 +0000 (20:49 +0100)]
git_connect: factor out discovery of the protocol and its parts

git_connect has grown large due to the many different protocols syntaxes
that are supported. Move the part of the function that parses the URL to
connect to into a separate function for readability.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogit_connect: remove artificial limit of a remote command
Johannes Sixt [Thu, 28 Nov 2013 19:48:45 +0000 (20:48 +0100)]
git_connect: remove artificial limit of a remote command

Since day one, function git_connect() had a limit on the command line of
the command that is invoked to make a connection. 7a33bcbe converted the
code that constructs the command to strbuf. This would have been the
right time to remove the limit, but it did not happen. Remove it now.

git_connect() uses start_command() to invoke the command; consequently,
the limits of the system still apply, but are diagnosed only at execve()
time. But these limits are more lenient than the 1K that git_connect()
imposed.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoremote: fix status with branch...rebase=preserve
Felipe Contreras [Sat, 7 Dec 2013 13:08:37 +0000 (07:08 -0600)]
remote: fix status with branch...rebase=preserve

Commit 66713ef (pull: allow pull to preserve merges when rebasing)
didn't include an update so 'git remote status' parses branch.<name>.rebase=preserve
correctly, let's do that.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoDocumentation: document pitfalls with 3-way merge
brian m. carlson [Sun, 8 Dec 2013 20:40:27 +0000 (20:40 +0000)]
Documentation: document pitfalls with 3-way merge

Oftentimes people will make the same change in two branches, revert the change
in one branch, and then be surprised when a merge reinstitutes that change when
the branches are merged.  Add an explanatory paragraph that explains that this
occurs and the reason why, so people are not surprised.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agofetch: add missing documentation
Felipe Contreras [Sun, 8 Dec 2013 05:56:58 +0000 (23:56 -0600)]
fetch: add missing documentation

There's no mention of the 'origin' default, or the fact that the
upstream tracking branch remote is used.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot: trivial whitespace cleanups
Felipe Contreras [Sun, 8 Dec 2013 05:56:57 +0000 (23:56 -0600)]
t: trivial whitespace cleanups

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoabspath: trivial style fix
Felipe Contreras [Sun, 8 Dec 2013 05:56:56 +0000 (23:56 -0600)]
abspath: trivial style fix

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoparse-options: remove OPT_BOOLEAN
Nguyễn Thái Ngọc Duy [Sat, 7 Dec 2013 05:02:53 +0000 (12:02 +0700)]
parse-options: remove OPT_BOOLEAN

After a86a8b9 (sb/parseopt-boolean-removal), the deprecated
OPT_BOOLEAN is not used anywhere except by OPT__* macros. Kill
OPT_BOOLEAN and make OPT__* use OPT_COUNTUP directly instead. This
should stop OPT_BOOLEAN from entering the tree again in new patches.

OPT__DRY_RUN() is converted to use OPT_BOOL though because it does not
make sense to increase the level of dryness. All OPT__DRY_RUN call
sites have been checked and they look safe for OPT_BOOL.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogitignore.txt: clarify recursive nature of excluded directories
Karsten Blees [Thu, 7 Nov 2013 21:36:29 +0000 (22:36 +0100)]
gitignore.txt: clarify recursive nature of excluded directories

Additionally, precedence of negated patterns is exactly as outlined in
the DESCRIPTION section, we don't need to repeat this.

Signed-off-by: Karsten Blees <blees@dcon.de>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoclone,fetch: catch non positive --depth option value
Nguyễn Thái Ngọc Duy [Thu, 5 Dec 2013 03:31:11 +0000 (10:31 +0700)]
clone,fetch: catch non positive --depth option value

Instead of simply ignoring the value passed to --depth option when
it is zero or negative, catch and report it as an error to let
people know that they were using the option incorrectly.

Original-patch-by: Andrés G. Aragoneses <knocte@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoconfig: arbitrary number of matches for --unset and --replace-all
Thomas Rast [Wed, 13 Nov 2013 10:19:00 +0000 (11:19 +0100)]
config: arbitrary number of matches for --unset and --replace-all

git-config used a static match array to hold the matches we want to
unset/replace when using --unset or --replace-all.  Use a
variable-sized array instead.

This in particular fixes the symptoms git-svn had when storing large
numbers of svn-remote.*.added-placeholder entries in the config file.

While the tests are rather more paranoid than just --unset and
--replace-all, the other operations already worked.  Indeed git-svn's
usage only breaks the first time *after* creating so many entries,
when it wants to unset and re-add them all.

Reported-by: Jess Hottenstein <jess.hottenstein@gmail.com>
Signed-off-by: Thomas Rast <tr@thomasrast.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoStart 1.9 cycle
Junio C Hamano [Fri, 6 Dec 2013 19:20:04 +0000 (11:20 -0800)]
Start 1.9 cycle

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoMerge branch 'jk/remove-experimental-loose-object-support'
Junio C Hamano [Fri, 6 Dec 2013 19:09:42 +0000 (11:09 -0800)]
Merge branch 'jk/remove-experimental-loose-object-support'

* jk/remove-experimental-loose-object-support:
  drop support for "experimental" loose objects

10 years agoMerge branch 'nd/magic-pathspec'
Junio C Hamano [Fri, 6 Dec 2013 19:08:03 +0000 (11:08 -0800)]
Merge branch 'nd/magic-pathspec'

"git diff -- ':(icase)makefile'" were rejected unnecessarily.
This needs to be merged to 'maint' later.

* nd/magic-pathspec:
  diff: restrict pathspec limitations to diff b/f case only

10 years agoMerge branch 'rr/for-each-ref-decoration'
Junio C Hamano [Fri, 6 Dec 2013 19:07:20 +0000 (11:07 -0800)]
Merge branch 'rr/for-each-ref-decoration'

Add a few formatting directives to "git for-each-ref --format=...",
to paint them in color, etc.

* rr/for-each-ref-decoration:
  for-each-ref: avoid color leakage
  for-each-ref: introduce %(color:...) for color
  for-each-ref: introduce %(upstream:track[short])
  for-each-ref: introduce %(HEAD) asterisk marker
  t6300 (for-each-ref): don't hardcode SHA-1 hexes
  t6300 (for-each-ref): clearly demarcate setup

10 years agoMerge branch 'jc/bundle'
Junio C Hamano [Fri, 6 Dec 2013 19:07:14 +0000 (11:07 -0800)]
Merge branch 'jc/bundle'

Code clean-up.

* jc/bundle:
  bundle: use argv-array

10 years agoMerge branch 'rh/remote-hg-bzr-updates'
Junio C Hamano [Fri, 6 Dec 2013 19:06:52 +0000 (11:06 -0800)]
Merge branch 'rh/remote-hg-bzr-updates'

Updates to remote-bzr and remote-hg in contrib.

* rh/remote-hg-bzr-updates:
  remote-bzr, remote-hg: fix email address regular expression
  test-hg.sh: help user correlate verbose output with email test
  test-hg.sh: fix duplicate content strings in author tests
  test-hg.sh: avoid obsolete 'test' syntax
  test-hg.sh: eliminate 'local' bashism
  test-bzr.sh, test-hg.sh: prepare for change to push.default=simple
  test-bzr.sh, test-hg.sh: allow running from any dir
  test-lib.sh: convert $TEST_DIRECTORY to an absolute path

10 years agoMerge branch 'jn/perl-lib-extra'
Junio C Hamano [Fri, 6 Dec 2013 19:05:38 +0000 (11:05 -0800)]
Merge branch 'jn/perl-lib-extra'

Allow customizing the paths to Perl modules with the new
PERLLIB_EXTRA makefile variable.

* jn/perl-lib-extra:
  Makefile: add PERLLIB_EXTRA variable that adds to default perl path
  Makefile: rebuild perl scripts when perl paths change

10 years agocommit -v: strip diffs and submodule shortlogs from the commit message
Jens Lehmann [Thu, 5 Dec 2013 19:44:14 +0000 (20:44 +0100)]
commit -v: strip diffs and submodule shortlogs from the commit message

When using the '-v' option of "git commit" the diff added to the commit
message temporarily for editing is stripped off after the user exited the
editor by searching for "\ndiff --git " and truncating the commmit message
there if it is found.

But this approach has two problems:

- when the commit message itself contains a line starting with
  "diff --git" it will be truncated there prematurely; and

- when the "diff.submodule" setting is set to "log", the diff may
  start with "Submodule <hash1>..<hash2>", which will be left in
  the commit message while it shouldn't.

Fix that by introducing a special scissor separator line starting with the
comment character ('#' or the core.commentChar config if set) followed by
two lines describing what it is for. The scissor line - which will not be
translated - is used to reliably detect the start of the diff so it can be
chopped off from the commit message, no matter what the user enters there.

Turn a known test failure fixed by this change into a successful test;
also add one for a diff starting with a submodule log and another one for
proper handling of the comment char.

Reported-by: Ari Pollak <ari@debian.org>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoreplace {pre,suf}fixcmp() with {starts,ends}_with()
Christian Couder [Sat, 30 Nov 2013 20:55:40 +0000 (21:55 +0100)]
replace {pre,suf}fixcmp() with {starts,ends}_with()

Leaving only the function definitions and declarations so that any
new topic in flight can still make use of the old functions, replace
existing uses of the prefixcmp() and suffixcmp() with new API
functions.

The change can be recreated by mechanically applying this:

    $ git grep -l -e prefixcmp -e suffixcmp -- \*.c |
      grep -v strbuf\\.c |
      xargs perl -pi -e '
        s|!prefixcmp\(|starts_with\(|g;
        s|prefixcmp\(|!starts_with\(|g;
        s|!suffixcmp\(|ends_with\(|g;
        s|suffixcmp\(|!ends_with\(|g;
      '

on the result of preparatory changes in this series.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agostrbuf: introduce starts_with() and ends_with()
Christian Couder [Sun, 1 Dec 2013 07:49:16 +0000 (08:49 +0100)]
strbuf: introduce starts_with() and ends_with()

prefixcmp() and suffixcmp() share the common "cmp" suffix that
typically are used to name functions that can be used for ordering,
but they can't, because they are not antisymmetric:

        prefixcmp("foo", "foobar") < 0
        prefixcmp("foobar", "foo") == 0

We in fact do not use these functions for ordering.  Replace them
with functions that just check for equality.

Add starts_with() and end_with() that will be used to replace
prefixcmp() and suffixcmp(), respectively, as the first step.  These
are named after corresponding functions/methods in programming
languages, like Java, Python and Ruby.

In vcs-svn/fast_export.c, there was already an ends_with() function
that did the same thing. Let's use the new one instead while at it.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agobuiltin/remote: remove postfixcmp() and use suffixcmp() instead
Christian Couder [Sun, 1 Dec 2013 07:49:15 +0000 (08:49 +0100)]
builtin/remote: remove postfixcmp() and use suffixcmp() instead

Commit 8cc5b290 (git merge -X<option>, 25 Nov 2009) introduced
suffixcmp() with nearly the same implementation as postfixcmp()
that already existed since commit 211c8968 (Make git-remote a
builtin, 29 Feb 2008).

The only difference between the two implementations is that,
when the string is smaller than the suffix, one implementation
returns 1 while the other one returns -1.

But, as postfixcmp() is only used to compare for equality, the
distinction does not matter and does not affect the correctness of
this patch.

As postfixcmp() has always been static in builtin/remote.c
and is used nowhere else, it makes more sense to remove it
and use suffixcmp() instead in builtin/remote.c, rather than
to remove suffixcmp().

Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoenvironment: normalize use of prefixcmp() by removing " != 0"
Christian Couder [Sun, 1 Dec 2013 07:49:14 +0000 (08:49 +0100)]
environment: normalize use of prefixcmp() by removing " != 0"

To be able to automatically convert prefixcmp() to starts_with()
we need first to make sure that prefixcmp() is always used in
the same way.

So let's remove " != 0" after prefixcmp().

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agoSync with 1.8.5
Junio C Hamano [Thu, 5 Dec 2013 22:11:11 +0000 (14:11 -0800)]
Sync with 1.8.5

10 years agoMerge branch 'gj/push-more-verbose-advice' (early part)
Junio C Hamano [Thu, 5 Dec 2013 22:03:32 +0000 (14:03 -0800)]
Merge branch 'gj/push-more-verbose-advice' (early part)

* 'gj/push-more-verbose-advice' (early part):
  push: enhance unspecified push default warning

10 years agoMerge branch 'jn/mediawiki-makefile-updates'
Junio C Hamano [Thu, 5 Dec 2013 21:00:23 +0000 (13:00 -0800)]
Merge branch 'jn/mediawiki-makefile-updates'

Build and installation procedure clean-up.

* jn/mediawiki-makefile-updates:
  git-remote-mediawiki build: handle DESTDIR/INSTLIBDIR with whitespace
  git-remote-mediawiki build: make 'install' command configurable
  git-remote-mediawiki: honor DESTDIR in "make install"
  git-remote-mediawiki: do not remove installed files in "clean" target

10 years agoMerge branch 'jl/submodule-update-retire-orig-flags'
Junio C Hamano [Thu, 5 Dec 2013 21:00:20 +0000 (13:00 -0800)]
Merge branch 'jl/submodule-update-retire-orig-flags'

Code clean-up.

* jl/submodule-update-retire-orig-flags:
  submodule update: remove unnecessary orig_flags variable

10 years agoMerge branch 'nd/wt-status-align-i18n'
Junio C Hamano [Thu, 5 Dec 2013 21:00:16 +0000 (13:00 -0800)]
Merge branch 'nd/wt-status-align-i18n'

An attempt to automatically align the names in the "git status"
output, taking the display width of (translated) section labels
into account.

* nd/wt-status-align-i18n:
  wt-status: take the alignment burden off translators

10 years agoMerge branch 'sb/sha1-loose-object-info-check-existence'
Junio C Hamano [Thu, 5 Dec 2013 21:00:11 +0000 (13:00 -0800)]
Merge branch 'sb/sha1-loose-object-info-check-existence'

"git cat-file --batch-check=ok" did not check the existence of the
named object.

* sb/sha1-loose-object-info-check-existence:
  sha1_loose_object_info(): do not return success on missing object

10 years agoMerge branch 'jk/two-way-merge-corner-case-fix'
Junio C Hamano [Thu, 5 Dec 2013 20:59:25 +0000 (12:59 -0800)]
Merge branch 'jk/two-way-merge-corner-case-fix'

Fix a rather longstanding corner-case bug in twoway "reset to
there" merge, which is most often seen in "git am --abort".

* jk/two-way-merge-corner-case-fix:
  t1005: add test for "read-tree --reset -u A B"
  t1005: reindent
  unpack-trees: fix "read-tree -u --reset A B" with conflicted index

10 years agoMerge branch 'jc/ref-excludes'
Junio C Hamano [Thu, 5 Dec 2013 20:59:09 +0000 (12:59 -0800)]
Merge branch 'jc/ref-excludes'

People often wished a way to tell "git log --branches" (and "git
log --remotes --not --branches") to exclude some local branches
from the expansion of "--branches" (similarly for "--tags", "--all"
and "--glob=<pattern>").  Now they have one.

* jc/ref-excludes:
  rev-parse: introduce --exclude=<glob> to tame wildcards
  rev-list --exclude: export add/clear-ref-exclusion and ref-excluded API
  rev-list --exclude: tests
  document --exclude option
  revision: introduce --exclude=<glob> to tame wildcards

10 years agoMerge branch 'nv/parseopt-opt-arg'
Junio C Hamano [Thu, 5 Dec 2013 20:59:03 +0000 (12:59 -0800)]
Merge branch 'nv/parseopt-opt-arg'

Enhance "rev-parse --parseopt" mode to help parsing options with
an optional parameter.

* nv/parseopt-opt-arg:
  rev-parse --parseopt: add the --stuck-long mode
  Use the word 'stuck' instead of 'sticked'

10 years agoMerge branch 'bc/http-100-continue'
Junio C Hamano [Thu, 5 Dec 2013 20:58:58 +0000 (12:58 -0800)]
Merge branch 'bc/http-100-continue'

Issue "100 Continue" responses to help use of GSS-Negotiate
authentication scheme over HTTP transport when needed.

* bc/http-100-continue:
  remote-curl: fix large pushes with GSSAPI
  remote-curl: pass curl slot_results back through run_slot
  http: return curl's AUTHAVAIL via slot_results

10 years agoMerge branch 'jc/merge-base-reflog'
Junio C Hamano [Thu, 5 Dec 2013 20:58:27 +0000 (12:58 -0800)]
Merge branch 'jc/merge-base-reflog'

Code the logic in "pull --rebase" that figures out a fork point
from reflog entries in C.

* jc/merge-base-reflog:
  merge-base: teach "--fork-point" mode
  merge-base: use OPT_CMDMODE and clarify the command line parsing

10 years agoMerge branch 'jk/replace-perl-in-built-scripts'
Junio C Hamano [Thu, 5 Dec 2013 20:58:21 +0000 (12:58 -0800)]
Merge branch 'jk/replace-perl-in-built-scripts'

* jk/replace-perl-in-built-scripts:
  use @@PERL@@ in built scripts

10 years agoMerge branch 'jh/loose-object-dirs-creation-race'
Junio C Hamano [Thu, 5 Dec 2013 20:54:14 +0000 (12:54 -0800)]
Merge branch 'jh/loose-object-dirs-creation-race'

When two processes created one loose object file each, which fell
into the same fan-out bucket that previously did not have any
objects, they both tried to do an equivalent of

    mkdir .git/objects/$fanout &&
    chmod $shared_perm .git/objects/$fanout

before writing into their file .git/objects/$fanout/$remainder,
one of which could have failed unnecessarily when the second
invocation of mkdir found that the directory already has been
created by the first one.

* jh/loose-object-dirs-creation-race:
  sha1_file.c:create_tmpfile(): Fix race when creating loose object dirs

10 years agoMerge branch 'jk/robustify-parse-commit'
Junio C Hamano [Thu, 5 Dec 2013 20:54:01 +0000 (12:54 -0800)]
Merge branch 'jk/robustify-parse-commit'

* jk/robustify-parse-commit:
  checkout: do not die when leaving broken detached HEAD
  use parse_commit_or_die instead of custom message
  use parse_commit_or_die instead of segfaulting
  assume parse_commit checks for NULL commit
  assume parse_commit checks commit->object.parsed
  log_tree_diff: die when we fail to parse a commit

10 years agoMerge branch 'ak/submodule-foreach-quoting'
Junio C Hamano [Thu, 5 Dec 2013 20:53:17 +0000 (12:53 -0800)]
Merge branch 'ak/submodule-foreach-quoting'

A behavior change, but a worthwhile one: "git submodule foreach"
was treating its arguments as part of a single command to be
concatenated and passed to a shell, making writing buggy
scripts too easy.

This patch preserves the old "just pass it to the shell" behavior
when a single argument is passed to 'git submodule foreach' and
moves to a new "skip the shell and use the arguments passed
unmolested" behavior when more than one argument is passed.

The old behavior (always concatenating and passing to the shell)
was similar to the 'ssh' command, while the new behavior (switching
on the number of arguments) is what 'xterm -e' does.

May need more thought to make sure this change is advertised well
so that scripts that used multiple arguments but added their own
extra layer of quoting are not broken.

* ak/submodule-foreach-quoting:
  submodule foreach: skip eval for more than one argument

10 years agot5000: simplify gzip prerequisite checks
Jeff King [Tue, 3 Dec 2013 13:21:40 +0000 (08:21 -0500)]
t5000: simplify gzip prerequisite checks

In t5000, we test the built-in ".tar.gz" config for
git-archive. To make our tests portable, we check that we
have a way to both gzip and gunzip, and we respected
environment variables to point to alternate commands for
doing these operations.

However, the $GZIP variable did not actually do anything, as
changing it would not affect the baked-in value in
archive-tar.c. Moreover, setting the variable $GZIP
influences gzip itself. From the gzip man page:

  The environment variable GZIP can hold a set of default
  options for gzip. These options are interpreted first and
  can be overwritten by explicit command line parameters.

We could rename this variable, and use it to set up custom
config (or even have a Makefile knob to affect the built
binary), but it is not worth the trouble; nobody has ever
reported a problem with the baked-in default, and they can
always change it via config if they need to. Let's just drop
the variable and use "gzip" in the test (keeping the
prerequisite, of course).

While we're at it, we can drop the GUNZIP variable and
prerequisite; it uses "gzip -d", so if we have GZIP, we
will have both.

We can also use test_lazy_prereq for the gzip prerequisite,
which is simpler and behaves more consistently with the rest
of git (e.g., by making output available when the test is
run with "-v").

Noticed-by: Christian Hesse <mail@eworm.de>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agogettext.c: detect the vsnprintf bug at runtime
Nguyễn Thái Ngọc Duy [Sun, 1 Dec 2013 02:45:38 +0000 (09:45 +0700)]
gettext.c: detect the vsnprintf bug at runtime

Bug 6530 [1] in glibc causes "git show v0.99.6~1" to fail with error
"your vsnprintf is broken". The workaround avoids that, but it
corrupts system error messages in non-C locales.

The bug has been fixed since 2.17. We could know running glibc version
with gnu_get_libc_version(). But version is not a sure way to detect
the bug because downstream may back port the fix to older versions. Do
a runtime test that immitates the call flow that leads to "your
vsnprintf is broken". Only enable the workaround if the test fails.

Tested on Gentoo Linux, glibc 2.16.0 and 2.17, amd64.

[1] http://sourceware.org/bugzilla/show_bug.cgi?id=6530

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot5601: add tests for ssh
Torsten Bögershausen [Thu, 28 Nov 2013 19:48:22 +0000 (20:48 +0100)]
t5601: add tests for ssh

Add more tests testing all the combinations:

 -IPv4 or IPv6
 -path starting with "/" or with "/~"
 -with and without the ssh:// scheme

Some tests fail; they need updates in connect.c

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agot5601: remove clear_ssh, refactor setup_ssh_wrapper
Torsten Bögershausen [Thu, 28 Nov 2013 19:53:47 +0000 (20:53 +0100)]
t5601: remove clear_ssh, refactor setup_ssh_wrapper

Commit 8d3d28f5 added test cases for URLs which should be ssh.
Remove the function clear_ssh, use test_when_finished to clean up.

Introduce the function setup_ssh_wrapper, which could be factored
out together with expect_ssh.

Tighten one test and use "foo:bar" instead of "./foo:bar",

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agomv: let 'git mv file no-such-dir/' error out
Matthieu Moy [Tue, 3 Dec 2013 08:32:04 +0000 (09:32 +0100)]
mv: let 'git mv file no-such-dir/' error out

Git used to trim the trailing slash, and make the command equivalent
to 'git mv file no-such-dir', which created the file no-such-dir
(while the trailing slash explicitly stated that it could only be a
directory).

This patch skips the trailing slash removal for the destination
path.  The path with its trailing slash is passed to rename(2),
which errors out with the appropriate message:

  $ git mv file no-such-dir/
  fatal: renaming 'file' failed: Not a directory

Original-patch-by: Duy Nguyen <pclouds@gmail.com>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agosend-email: set SSL options through IO::Socket::SSL::set_client_defaults
Thomas Rast [Sun, 1 Dec 2013 22:48:43 +0000 (23:48 +0100)]
send-email: set SSL options through IO::Socket::SSL::set_client_defaults

When --smtp-encryption=ssl, we use a Net::SMTP::SSL connection,
passing its ->new all the options that would otherwise go to
Net::SMTP->new (most options) and IO::Socket::SSL->start_SSL (for the
SSL options).

However, while Net::SMTP::SSL replaces the underlying socket class
with an SSL socket, it does nothing to allow passing options to that
socket.  So the SSL-relevant options are lost.

Fortunately there is an escape hatch: we can directly set the options
with IO::Socket::SSL::set_client_defaults.  They will then persist
within the IO::Socket::SSL module.

Signed-off-by: Thomas Rast <tr@thomasrast.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agosend-email: --smtp-ssl-cert-path takes an argument
Thomas Rast [Sun, 1 Dec 2013 22:48:42 +0000 (23:48 +0100)]
send-email: --smtp-ssl-cert-path takes an argument

35035bb (send-email: be explicit with SSL certificate verification,
2013-07-18) forgot to specify that --smtp-ssl-cert-path takes a string
argument.  This means that the option could not actually be used as
intended.  Presumably noone noticed because it's much easier to set it
through configs anyway.

Add the required "=s".

Signed-off-by: Thomas Rast <tr@thomasrast.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 years agosend-email: pass Debug to Net::SMTP::SSL::new
Thomas Rast [Sun, 1 Dec 2013 22:48:41 +0000 (23:48 +0100)]
send-email: pass Debug to Net::SMTP::SSL::new

We forgot to pass the Debug option through to Net::SMTP::SSL->new --
which is the same as Net::SMTP->new.  This meant that with security
set to SSL, we would never enable debug output.

Pass through the flag.

Signed-off-by: Thomas Rast <tr@thomasrast.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>