gitweb.git
Merge branch 'rs/checkout-am-fix-unborn'Junio C Hamano Tue, 23 May 2017 04:46:05 +0000 (13:46 +0900)

Merge branch 'rs/checkout-am-fix-unborn'

A few codepaths in "checkout" and "am" working on an unborn branch
tried to access an uninitialized piece of memory.

* rs/checkout-am-fix-unborn:
am: check return value of resolve_refdup before using hash
checkout: check return value of resolve_refdup before using hash

Merge branch 'ls/travis-relays-for-windows-ci'Junio C Hamano Tue, 23 May 2017 04:46:03 +0000 (13:46 +0900)

Merge branch 'ls/travis-relays-for-windows-ci'

* ls/travis-relays-for-windows-ci:
travis-ci: retry if Git for Windows CI returns HTTP error 502 or 503
travis-ci: handle Git for Windows CI status "failed" explicitly

Merge branch 'ah/log-decorate-default-to-auto'Junio C Hamano Tue, 23 May 2017 04:46:02 +0000 (13:46 +0900)

Merge branch 'ah/log-decorate-default-to-auto'

Setting "log.decorate=false" in the configuration file did not take
effect in v2.13, which has been corrected.

* ah/log-decorate-default-to-auto:
builtin/log: honor log.decorate

Merge branch 'bw/submodule-with-bs-path'Junio C Hamano Tue, 23 May 2017 04:46:01 +0000 (13:46 +0900)

Merge branch 'bw/submodule-with-bs-path'

A hotfix to a topic that is already in v2.13.

* bw/submodule-with-bs-path:
t7400: add !CYGWIN prerequisite to 'add with \\ in path'

Start post 2.13 cycleJunio C Hamano Tue, 16 May 2017 02:52:09 +0000 (11:52 +0900)

Start post 2.13 cycle

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/larger-timestamps'Junio C Hamano Tue, 16 May 2017 02:51:59 +0000 (11:51 +0900)

Merge branch 'js/larger-timestamps'

Some platforms have ulong that is smaller than time_t, and our
historical use of ulong for timestamp would mean they cannot
represent some timestamp that the platform allows. Invent a
separate and dedicated timestamp_t (so that we can distingiuish
timestamps and a vanilla ulongs, which along is already a good
move), and then declare uintmax_t is the type to be used as the
timestamp_t.

* js/larger-timestamps:
archive-tar: fix a sparse 'constant too large' warning
use uintmax_t for timestamps
date.c: abort if the system time cannot handle one of our timestamps
timestamp_t: a new data type for timestamps
PRItime: introduce a new "printf format" for timestamps
parse_timestamp(): specify explicitly where we parse timestamps
t0006 & t5000: skip "far in the future" test when time_t is too limited
t0006 & t5000: prepare for 64-bit timestamps
ref-filter: avoid using `unsigned long` for catch-all data type

Merge branch 'jc/apply-fix-mismerge'Junio C Hamano Tue, 16 May 2017 02:51:59 +0000 (11:51 +0900)

Merge branch 'jc/apply-fix-mismerge'

* jc/apply-fix-mismerge:
apply.c: fix whitespace-only mismerge

Merge branch 'ab/aix-needs-compat-regex'Junio C Hamano Tue, 16 May 2017 02:51:58 +0000 (11:51 +0900)

Merge branch 'ab/aix-needs-compat-regex'

Build fix.

* ab/aix-needs-compat-regex:
config.mak.uname: set NO_REGEX=NeedsStartEnd on AIX

Merge branch 'jn/credential-doc-on-clear'Junio C Hamano Tue, 16 May 2017 02:51:57 +0000 (11:51 +0900)

Merge branch 'jn/credential-doc-on-clear'

Doc update.

* jn/credential-doc-on-clear:
credential doc: make multiple-helper behavior more prominent

Merge branch 'jn/clone-add-empty-config-from-command... Junio C Hamano Tue, 16 May 2017 02:51:56 +0000 (11:51 +0900)

Merge branch 'jn/clone-add-empty-config-from-command-line'

"git clone --config var=val" is a way to populate the
per-repository configuration file of the new repository, but it did
not work well when val is an empty string. This has been fixed.

* jn/clone-add-empty-config-from-command-line:
clone: handle empty config values in -c

Merge branch 'bw/submodule-has-commits-update'Junio C Hamano Tue, 16 May 2017 02:51:56 +0000 (11:51 +0900)

Merge branch 'bw/submodule-has-commits-update'

Code clean-up and duplicate removal.

* bw/submodule-has-commits-update:
submodule: refactor logic to determine changed submodules
submodule: improve submodule_has_commits()
submodule: change string_list changed_submodule_paths
submodule: remove add_oid_to_argv()
submodule: rename free_submodules_sha1s()
submodule: rename add_sha1_to_array()

Merge branch 'ls/travis-doc-asciidoctor'Junio C Hamano Tue, 16 May 2017 02:51:55 +0000 (11:51 +0900)

Merge branch 'ls/travis-doc-asciidoctor'

Travis CI gained a task to format the documentation with both
AsciiDoc and AsciiDoctor.

* ls/travis-doc-asciidoctor:
travis-ci: check AsciiDoc/AsciiDoctor stderr output
travis-ci: unset compiler for jobs that do not need one
travis-ci: parallelize documentation build
travis-ci: build documentation with AsciiDoc and Asciidoctor

Merge branch 'rs/large-zip'Junio C Hamano Tue, 16 May 2017 02:51:54 +0000 (11:51 +0900)

Merge branch 'rs/large-zip'

"git archive --format=zip" learned to use zip64 extension when
necessary to go beyond the 4GB limit.

* rs/large-zip:
t5004: require 64-bit support for big ZIP tests
archive-zip: set version field for big files correctly
archive-zip: support files bigger than 4GB
archive-zip: support archives bigger than 4GB
archive-zip: write ZIP dir entry directly to strbuf
archive-zip: use strbuf for ZIP directory
archive-zip: add tests for big ZIP archives

Merge branch 'ab/clone-no-tags'Junio C Hamano Tue, 16 May 2017 02:51:54 +0000 (11:51 +0900)

Merge branch 'ab/clone-no-tags'

"git clone" learned the "--no-tags" option not to fetch all tags
initially, and also set up the tagopt not to follow any tags in
subsequent fetches.

* ab/clone-no-tags:
tests: rename a test having to do with shallow submodules
clone: add a --no-tags option to clone without tags
tests: change "cd ... && git fetch" to "cd &&\n\tgit fetch"

Merge branch 'sk/status-short-branch-color-config'Junio C Hamano Tue, 16 May 2017 02:51:53 +0000 (11:51 +0900)

Merge branch 'sk/status-short-branch-color-config'

The colors in which "git status --short --branch" showed the names
of the current branch and its remote-tracking branch are now
configurable.

* sk/status-short-branch-color-config:
status: add color config slots for branch info in "--short --branch"
status: fix missing newline when comment chars are disabled

Merge branch 'jk/am-leakfix'Junio C Hamano Tue, 16 May 2017 02:51:53 +0000 (11:51 +0900)

Merge branch 'jk/am-leakfix'

The codepath in "git am" that is used when running "git rebase"
leaked memory held for the log message of the commits being rebased.

* jk/am-leakfix:
am: shorten ident_split variable name in get_commit_info()
am: simplify allocations in get_commit_info()
am: fix commit buffer leak in get_commit_info()

Merge branch 'jt/use-trailer-api-in-commands'Junio C Hamano Tue, 16 May 2017 02:51:52 +0000 (11:51 +0900)

Merge branch 'jt/use-trailer-api-in-commands'

"git cherry-pick" and other uses of the sequencer machinery
mishandled a trailer block whose last line is an incomplete line.
This has been fixed so that an additional sign-off etc. are added
after completing the existing incomplete line.

* jt/use-trailer-api-in-commands:
sequencer: add newline before adding footers

Merge branch 'nd/worktree-kill-parse-ref'Junio C Hamano Tue, 16 May 2017 02:51:51 +0000 (11:51 +0900)

Merge branch 'nd/worktree-kill-parse-ref'

"git gc" did not interact well with "git worktree"-managed
per-worktree refs.

* nd/worktree-kill-parse-ref:
refs: kill set_worktree_head_symref()
worktree.c: kill parse_ref() in favor of refs_resolve_ref_unsafe()
refs: introduce get_worktree_ref_store()
refs: add REFS_STORE_ALL_CAPS
refs.c: make submodule ref store hashmap generic
environment.c: fix potential segfault by get_git_common_dir()

Merge branch 'dt/gc-ignore-old-gc-logs'Junio C Hamano Tue, 16 May 2017 02:51:50 +0000 (11:51 +0900)

Merge branch 'dt/gc-ignore-old-gc-logs'

Attempt to allow us notice "fishy" situation where we fail to
remove the temporary directory used during the test.

* dt/gc-ignore-old-gc-logs:
test-lib: retire $remove_trash variable
test-lib.sh: do not barf under --debug at the end of the test
test-lib: abort when can't remove trash directory

Merge branch 'jk/no-null-sha1-in-cache-tree'Junio C Hamano Tue, 16 May 2017 02:51:50 +0000 (11:51 +0900)

Merge branch 'jk/no-null-sha1-in-cache-tree'

Code to update the cache-tree has been tightened so that we won't
accidentally write out any 0{40} entry in the tree object.

* jk/no-null-sha1-in-cache-tree:
cache-tree: reject entries with null sha1

Merge branch 'dt/raise-core-packed-git-limit'Junio C Hamano Tue, 16 May 2017 02:51:49 +0000 (11:51 +0900)

Merge branch 'dt/raise-core-packed-git-limit'

The default packed-git limit value has been raised on larger
platforms to save "git fetch" from a (recoverable) failure while
"gc" is running in parallel.

* dt/raise-core-packed-git-limit:
Increase core.packedGitLimit

builtin/log: honor log.decoratebrian m. carlson Sun, 14 May 2017 18:00:58 +0000 (18:00 +0000)

builtin/log: honor log.decorate

The recent change that introduced autodecorating of refs accidentally
broke the ability of users to set log.decorate = false to override it.
When the git_log_config was traversed a second time with an option other
than log.decorate, the decoration style would be set to the automatic
style, even if the user had already overridden it. Instead of setting
the option in config parsing, set it in init_log_defaults instead.

Add a test for this case. The actual additional config option doesn't
matter, but it needs to be something not already set in the
configuration file.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Acked-by: Alex Henrie <alexhenrie24@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 2.13 v2.13.0Junio C Hamano Tue, 9 May 2017 14:26:02 +0000 (23:26 +0900)

Git 2.13

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge tag 'l10n-2.13.0-rnd2.1' of git://github.com... Junio C Hamano Tue, 9 May 2017 14:25:26 +0000 (23:25 +0900)

Merge tag 'l10n-2.13.0-rnd2.1' of git://github.com/git-l10n/git-po

l10n for Git 2.13.0 round 2.1

* tag 'l10n-2.13.0-rnd2.1' of git://github.com/git-l10n/git-po:
l10n: zh_CN: for git v2.13.0 l10n round 2
l10n: sv.po: Update Swedish translation (3195t0f0u)
l10n: zh_CN: review for git v2.13.0 l10n round 1
l10n: Update Catalan translation
l10n: bg.po: Updated Bulgarian translation (3195t)
l10n: fr.po v2.13 rnd 2
l10n: de.po: translate 4 new messages
l10n: de.po: update German translation
l10n: de.po: lower case after semi-colon
l10n: vi.po(3195t): Update translation for v2.13.0 round 2
l10n: git.pot: v2.13.0 round 2 (4 new, 7 removed)
l10n: zh_CN: for git v2.13.0 l10n round 1
l10n: fr.po v2.13 round 1
l10n: pt_PT: update Portuguese translation
l10n: bg.po: Updated Bulgarian translation (3201t)
l10n: vi.po(3198t): Updated Vietnamese translation for v2.13.0-rc0
l10n: sv.po: Update Swedish translation (3199t0f0u)
l10n: git.pot: v2.13.0 round 1 (96 new, 37 removed)

Merge branch 'master' of git://github.com/nafmo/git... Jiang Xin Tue, 9 May 2017 14:12:34 +0000 (22:12 +0800)

Merge branch 'master' of git://github.com/nafmo/git-l10n-sv

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

l10n: zh_CN: for git v2.13.0 l10n round 2Jiang Xin Tue, 9 May 2017 13:55:38 +0000 (21:55 +0800)

l10n: zh_CN: for git v2.13.0 l10n round 2

Translate 4 messages (3195t0f0u) for git v2.13.0-rc2.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

l10n: sv.po: Update Swedish translation (3195t0f0u)Peter Krefting Tue, 9 May 2017 07:05:09 +0000 (08:05 +0100)

l10n: sv.po: Update Swedish translation (3195t0f0u)

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>

Sync with v2.12.3Junio C Hamano Tue, 9 May 2017 03:20:21 +0000 (20:20 -0700)

Sync with v2.12.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jh/verify-index-checksum-only-in-fsck'Junio C Hamano Tue, 9 May 2017 03:17:42 +0000 (12:17 +0900)

Merge branch 'jh/verify-index-checksum-only-in-fsck'

* jh/verify-index-checksum-only-in-fsck:
t1450: avoid use of "sed" on the index, which is a binary file

apply.c: fix whitespace-only mismergeJunio C Hamano Tue, 9 May 2017 02:30:24 +0000 (19:30 -0700)

apply.c: fix whitespace-only mismerge

4af9a7d3 ("Merge branch 'bc/object-id'", 2016-09-19) involved
merging a lot of changes made to builtin/apply.c on the side branch
manually to apply.c as an intervening commit 13b5af22 ("apply: move
libified code from builtin/apply.c to apply.{c,h}", 2016-04-22)
moved a lot of the lines changed on the side branch to a different
file apply.c at the top-level, requiring manual patching of it.
Apparently, the maintainer screwed up and made the code indent in a
funny way while doing so.

Reported-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

archive-tar: fix a sparse 'constant too large' warningRamsay Jones Mon, 8 May 2017 20:34:58 +0000 (21:34 +0100)

archive-tar: fix a sparse 'constant too large' warning

Commit dddbad728c ("timestamp_t: a new data type for timestamps",
26-04-2017) introduced a new typedef 'timestamp_t', as a synonym for an
unsigned long, which was used at the time to represent timestamps in
git. A later commit 28f4aee3fb ("use uintmax_t for timestamps",
26-04-2017) changed the typedef to use an 'uintmax_t' for the timestamp
representation type.

When building on a 32-bit Linux system, sparse complains that a constant
(USTAR_MAX_MTIME) used to detect a 'far-future mtime' timestamp, is too
large; 'warning: constant 077777777777UL is so big it is unsigned long
long' on lines 335 and 338 of archive-tar.c. Note that both gcc and
clang only issue a warning if this constant is used in a context that
requires an 'unsigned long' (rather than an uintmax_t). (Since TIME_MAX
is no longer equal to 0xFFFFFFFF, even on a 32-bit system, the macro
USTAR_MAX_MTIME is set to 077777777777UL, which cannot be represented as
an 'unsigned long' constant).

In order to suppress the warning, change the definition of the macro
constant USTAR_MAX_MTIME to use an 'ULL' type suffix.

In a similar vein, on systems which use a 64-bit representation of the
'unsigned long' type, the USTAR_MAX_SIZE constant macro is defined with
the value 077777777777ULL. Although this does not cause any warning
messages to be issued, it would be more appropriate for this constant
to use an 'UL' type suffix rather than 'ULL'.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: zh_CN: review for git v2.13.0 l10n round 1Ray Chen Tue, 2 May 2017 15:42:43 +0000 (23:42 +0800)

l10n: zh_CN: review for git v2.13.0 l10n round 1

Signed-off-by: Ray Chen <oldsharp@gmail.com>

Merge branch 'master' of https://github.com/vnwildman/gitJiang Xin Mon, 8 May 2017 22:39:31 +0000 (06:39 +0800)

Merge branch 'master' of https://github.com/vnwildman/git

* 'master' of https://github.com/vnwildman/git:
l10n: vi.po(3195t): Update translation for v2.13.0 round 2

l10n: Update Catalan translationJordi Mas Sun, 7 May 2017 08:12:01 +0000 (10:12 +0200)

l10n: Update Catalan translation

Signed-off-by: Jordi Mas <jmas@softcatala.org>

l10n: bg.po: Updated Bulgarian translation (3195t)Alexander Shopov Sun, 7 May 2017 07:25:19 +0000 (09:25 +0200)

l10n: bg.po: Updated Bulgarian translation (3195t)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>

Merge branch 'fr_l10n_v2.13_rnd2' of git://github.com... Jiang Xin Mon, 8 May 2017 22:18:53 +0000 (06:18 +0800)

Merge branch 'fr_l10n_v2.13_rnd2' of git://github.com/jnavila/git

* 'fr_l10n_v2.13_rnd2' of git://github.com/jnavila/git:
l10n: fr.po v2.13 rnd 2

am: check return value of resolve_refdup before using... René Scharfe Sat, 6 May 2017 17:13:56 +0000 (19:13 +0200)

am: check return value of resolve_refdup before using hash

If resolve_refdup() fails it returns NULL and possibly leaves its hash
output parameter untouched. Make sure to use it only if the function
succeeded, in order to avoid accessing uninitialized memory.

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

checkout: check return value of resolve_refdup before... René Scharfe Sat, 6 May 2017 17:13:52 +0000 (19:13 +0200)

checkout: check return value of resolve_refdup before using hash

If resolve_refdup() fails it returns NULL and possibly leaves its hash
output parameter untouched. Make sure to use it only if the function
succeeded, in order to avoid accessing uninitialized memory.

Found with t/t2011-checkout-invalid-head.sh --valgrind.

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

l10n: fr.po v2.13 rnd 2Jean-Noel Avila Fri, 5 May 2017 09:55:14 +0000 (11:55 +0200)

l10n: fr.po v2.13 rnd 2

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>

l10n: de.po: translate 4 new messagesRalf Thielow Fri, 5 May 2017 09:23:53 +0000 (11:23 +0200)

l10n: de.po: translate 4 new messages

Translate 4 new messages came from git.pot update in 28e1aaa48 (l10n:
git.pot: v2.13.0 round 2 (4 new, 7 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Matthias Rüster <matthias.ruester@gmail.com>

l10n: de.po: update German translationRalf Thielow Thu, 13 Apr 2017 14:45:29 +0000 (16:45 +0200)

l10n: de.po: update German translation

Translate 96 new messages came from git.pot update in dfc182b (l10n:
git.pot: v2.13.0 round 1 (96 new, 37 removed)).

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Matthias Rüster <matthias.ruester@gmail.com>

l10n: de.po: lower case after semi-colonMichael J Gruber Fri, 17 Mar 2017 15:04:19 +0000 (16:04 +0100)

l10n: de.po: lower case after semi-colon

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>

l10n: vi.po(3195t): Update translation for v2.13.0... Tran Ngoc Quan Fri, 5 May 2017 06:41:32 +0000 (13:41 +0700)

l10n: vi.po(3195t): Update translation for v2.13.0 round 2

Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>

Git 2.12.3 v2.12.3Junio C Hamano Fri, 5 May 2017 04:33:22 +0000 (13:33 +0900)

Git 2.12.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-2.11' into maintJunio C Hamano Fri, 5 May 2017 04:31:40 +0000 (13:31 +0900)

Merge branch 'maint-2.11' into maint

Git 2.11.2 v2.11.2Junio C Hamano Fri, 5 May 2017 04:29:43 +0000 (13:29 +0900)

Git 2.11.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-2.10' into maint-2.11Junio C Hamano Fri, 5 May 2017 04:26:31 +0000 (13:26 +0900)

Merge branch 'maint-2.10' into maint-2.11

Git 2.10.3 v2.10.3Junio C Hamano Fri, 5 May 2017 04:24:10 +0000 (13:24 +0900)

Git 2.10.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-2.9' into maint-2.10Junio C Hamano Fri, 5 May 2017 04:21:52 +0000 (13:21 +0900)

Merge branch 'maint-2.9' into maint-2.10

Git 2.9.4 v2.9.4Junio C Hamano Fri, 5 May 2017 04:18:23 +0000 (13:18 +0900)

Git 2.9.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-2.8' into maint-2.9Junio C Hamano Fri, 5 May 2017 04:13:48 +0000 (13:13 +0900)

Merge branch 'maint-2.8' into maint-2.9

Git 2.8.5 v2.8.5Junio C Hamano Fri, 5 May 2017 04:08:54 +0000 (13:08 +0900)

Git 2.8.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-2.7' into maint-2.8Junio C Hamano Fri, 5 May 2017 04:05:03 +0000 (13:05 +0900)

Merge branch 'maint-2.7' into maint-2.8

Git 2.7.5 v2.7.5Junio C Hamano Fri, 5 May 2017 04:03:40 +0000 (13:03 +0900)

Git 2.7.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-2.6' into maint-2.7Junio C Hamano Fri, 5 May 2017 03:59:16 +0000 (12:59 +0900)

Merge branch 'maint-2.6' into maint-2.7

Git 2.6.7 v2.6.7Junio C Hamano Fri, 5 May 2017 03:56:19 +0000 (12:56 +0900)

Git 2.6.7

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-2.5' into maint-2.6Junio C Hamano Fri, 5 May 2017 03:52:26 +0000 (12:52 +0900)

Merge branch 'maint-2.5' into maint-2.6

Git 2.5.6 v2.5.6Junio C Hamano Fri, 5 May 2017 03:49:00 +0000 (12:49 +0900)

Git 2.5.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint-2.4' into maint-2.5Junio C Hamano Fri, 5 May 2017 03:46:53 +0000 (12:46 +0900)

Merge branch 'maint-2.4' into maint-2.5

Git 2.4.12 v2.4.12Junio C Hamano Fri, 5 May 2017 03:25:09 +0000 (12:25 +0900)

Git 2.4.12

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jk/shell-no-repository-that-begins-with... Junio C Hamano Fri, 5 May 2017 03:17:55 +0000 (12:17 +0900)

Merge branch 'jk/shell-no-repository-that-begins-with-dash' into maint-2.4

* jk/shell-no-repository-that-begins-with-dash:
shell: disallow repo names beginning with dash

shell: disallow repo names beginning with dashJeff King Sat, 29 Apr 2017 12:36:44 +0000 (08:36 -0400)

shell: disallow repo names beginning with dash

When a remote server uses git-shell, the client side will
connect to it like:

ssh server "git-upload-pack 'foo.git'"

and we literally exec ("git-upload-pack", "foo.git"). In
early versions of upload-pack and receive-pack, we took a
repository argument and nothing else. But over time they
learned to accept dashed options. If the user passes a
repository name that starts with a dash, the results are
confusing at best (we complain of a bogus option instead of
a non-existent repository) and malicious at worst (the user
can start an interactive pager via "--help").

We could pass "--" to the sub-process to make sure the
user's argument is interpreted as a branch name. I.e.:

git-upload-pack -- -foo.git

But adding "--" automatically would make us inconsistent
with a normal shell (i.e., when git-shell is not in use),
where "-foo.git" would still be an error. For that case, the
client would have to specify the "--", but they can't do so
reliably, as existing versions of git-shell do not allow
more than a single argument.

The simplest thing is to simply disallow "-" at the start of
the repo name argument. This hasn't worked either with or
without git-shell since version 1.0.0, and nobody has
complained.

Note that this patch just applies to do_generic_cmd(), which
runs upload-pack, receive-pack, and upload-archive. There
are two other types of commands that git-shell runs:

- do_cvs_cmd(), but this already restricts the argument to
be the literal string "server"

- admin-provided commands in the git-shell-commands
directory. We'll pass along arbitrary arguments there,
so these commands could have similar problems. But these
commands might actually understand dashed arguments, so
we cannot just block them here. It's up to the writer of
the commands to make sure they are safe. With great
power comes great responsibility.

Reported-by: Timo Schmid <tschmid@ernw.de>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: git.pot: v2.13.0 round 2 (4 new, 7 removed)Jiang Xin Fri, 5 May 2017 01:37:02 +0000 (09:37 +0800)

l10n: git.pot: v2.13.0 round 2 (4 new, 7 removed)

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

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Merge branch 'master' of git://github.com/git-l10n... Jiang Xin Fri, 5 May 2017 01:35:22 +0000 (09:35 +0800)

Merge branch 'master' of git://github.com/git-l10n/git-po

* 'master' of git://github.com/git-l10n/git-po:
l10n: zh_CN: for git v2.13.0 l10n round 1
l10n: fr.po v2.13 round 1
l10n: pt_PT: update Portuguese translation
l10n: bg.po: Updated Bulgarian translation (3201t)
l10n: vi.po(3198t): Updated Vietnamese translation for v2.13.0-rc0
l10n: sv.po: Update Swedish translation (3199t0f0u)
l10n: git.pot: v2.13.0 round 1 (96 new, 37 removed)

l10n: zh_CN: for git v2.13.0 l10n round 1Jiang Xin Sun, 23 Apr 2017 01:55:51 +0000 (09:55 +0800)

l10n: zh_CN: for git v2.13.0 l10n round 1

Translate 96 messages (3198t0f0u) for git v2.13.0-rc0.

Reviewed-by: 依云 <lilydjwg@gmail.com>
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Merge branch 'fr_l10n_v2.13_rnd1' of git://github.com... Jiang Xin Fri, 5 May 2017 01:30:33 +0000 (09:30 +0800)

Merge branch 'fr_l10n_v2.13_rnd1' of git://github.com/jnavila/git

* 'fr_l10n_v2.13_rnd1' of git://github.com/jnavila/git:
l10n: fr.po v2.13 round 1

Git 2.13-rc2 v2.13.0-rc2Junio C Hamano Thu, 4 May 2017 07:27:19 +0000 (16:27 +0900)

Git 2.13-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'rg/a-the-typo'Junio C Hamano Thu, 4 May 2017 07:26:47 +0000 (16:26 +0900)

Merge branch 'rg/a-the-typo'

Typofix.

* rg/a-the-typo:
fix minor typos

Merge branch 'sr/hooks-cwd-doc'Junio C Hamano Thu, 4 May 2017 07:26:46 +0000 (16:26 +0900)

Merge branch 'sr/hooks-cwd-doc'

* sr/hooks-cwd-doc:
githooks.txt: clarify push hooks are always executed in $GIT_DIR

Merge branch 'rg/doc-submittingpatches-wordfix'Junio C Hamano Thu, 4 May 2017 07:26:46 +0000 (16:26 +0900)

Merge branch 'rg/doc-submittingpatches-wordfix'

* rg/doc-submittingpatches-wordfix:
doc: update SubmittingPatches

Merge branch 'rg/doc-pull-typofix'Junio C Hamano Thu, 4 May 2017 07:26:45 +0000 (16:26 +0900)

Merge branch 'rg/doc-pull-typofix'

* rg/doc-pull-typofix:
doc: git-pull.txt use US spelling, fix minor typo

Merge branch 'ja/i18n-cleanup'Junio C Hamano Thu, 4 May 2017 07:26:44 +0000 (16:26 +0900)

Merge branch 'ja/i18n-cleanup'

* ja/i18n-cleanup:
i18n: read-cache: typofix
i18n: remove i18n from tag reflog message

config.mak.uname: set NO_REGEX=NeedsStartEnd on AIXÆvar Arnfjörð Bjarmason Wed, 3 May 2017 13:54:30 +0000 (13:54 +0000)

config.mak.uname: set NO_REGEX=NeedsStartEnd on AIX

Set the NO_REGEX=NeedsStartEnd Makefile flag by default on AIX.

Since commit 2f8952250a ("regex: add regexec_buf() that can work on a
non NUL-terminated string", 2016-09-21) git has errored out at
compile-time if the regular expression library doesn't support
REG_STARTEND.

While looking through Google search results for the use of NO_REGEX I
found a Chef recipe that set this on AIX[1], looking through the
documentation for the latest version of AIX (7.2, released October
2015) shows that its regexec() doesn't have REG_STARTEND.

1. https://github.com/chef/omnibus-software/commit/e247e36761#diff-3df898345d670979b74acc0bf71d8c47
2. https://www.ibm.com/support/knowledgecenter/ssw_aix_72/com.ibm.aix.basetrf2/regexec.htm

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

travis-ci: retry if Git for Windows CI returns HTTP... Lars Schneider Wed, 3 May 2017 21:50:15 +0000 (23:50 +0200)

travis-ci: retry if Git for Windows CI returns HTTP error 502 or 503

The Git for Windows CI web app sometimes returns HTTP errors of
"502 bad gateway" or "503 service unavailable" [1]. We also need to
check the HTTP content because the GfW web app seems to pass through
(error) results from other Azure calls with HTTP code 200.
Wait a little and retry the request if this happens.

[1] https://docs.microsoft.com/en-in/azure/app-service-web/app-service-web-troubleshoot-http-502-http-503

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

travis-ci: handle Git for Windows CI status "failed... Lars Schneider Sat, 29 Apr 2017 18:59:58 +0000 (20:59 +0200)

travis-ci: handle Git for Windows CI status "failed" explicitly

Git for Windows CI returns "completed: failed" if a build or test
failure happened. This case was processed as "Unhandled status".
Handle the case explicitly.

Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: fr.po v2.13 round 1Jean-Noel Avila Sun, 23 Apr 2017 21:29:44 +0000 (23:29 +0200)

l10n: fr.po v2.13 round 1

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>

clone: handle empty config values in -cJonathan Nieder Tue, 2 May 2017 00:05:15 +0000 (17:05 -0700)

clone: handle empty config values in -c

"git clone --config" uses the following incantation to add an item to
a config file, instead of replacing an existing value:

git_config_set_multivar_gently(key, value, "^$", 0)

As long as no existing value matches the regex ^$, that works as
intended and adds to the config. When a value is empty, though, it
replaces the existing value.

Noticed while trying to set credential.helper during a clone to use a
specific helper without inheriting from ~/.gitconfig and
/etc/gitconfig. That is, I ran

git clone -c credential.helper= \
-c credential.helper=myhelper \
https://example.com/repo

intending to produce the configuration

[credential]
helper =
helper = myhelper

Without this patch, the 'helper =' line is not included and the
credential helper from /etc/gitconfig gets used.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

credential doc: make multiple-helper behavior more... Jonathan Nieder Tue, 2 May 2017 00:21:14 +0000 (17:21 -0700)

credential doc: make multiple-helper behavior more prominent

Git's configuration system works by reading multiple configuration
files in order, from general to specific:

- first, the system configuration /etc/gitconfig
- then the user's configuration (~/.gitconfig or ~/.config/git/config)
- then the repository configuration (.git/config)

For single-valued configuration items, the latest value wins. For
multi-valued configuration items, values accumulate in that order.

For example, this allows setting a credential helper globally in
~/.gitconfig that git will try to use in all repositories, regardless
of whether they additionally provide another helper. This is usually
a nice thing --- e.g. I can install helpers to use my OS keychain and
to cache credentials for a short period of time globally.

Sometimes people want to be able to override an inherited setting.
For the credential.helper setting, this is done by setting the
configuration item to empty before giving it a new value. This is
already documented but the documentation is hard to find ---
git-config(1) says to look at gitcredentials(7) and the config
reference in gitcredentials(7) doesn't mention this issue.

Move the documentation to the config reference to make it easier to
find.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: refactor logic to determine changed submodulesBrandon Williams Tue, 2 May 2017 01:02:39 +0000 (18:02 -0700)

submodule: refactor logic to determine changed submodules

There are currently two instances (fetch and push) where we want to
determine if submodules have changed given some revision specification.
These two instances don't use the same logic to generate a list of
changed submodules and as a result there is a fair amount of code
duplication.

This patch refactors these two code paths such that they both use the
same logic to generate a list of changed submodules. This also makes it
easier for future callers to be able to reuse this logic as they only
need to create an argv_array with the revision specification to be using
during the revision walk.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: improve submodule_has_commits()Brandon Williams Tue, 2 May 2017 01:02:38 +0000 (18:02 -0700)

submodule: improve submodule_has_commits()

Teach 'submodule_has_commits()' to ensure that if a commit exists in a
submodule, that it is also reachable from a ref.

This is a preparatory step prior to merging the logic which checks for
changed submodules when fetching or pushing.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: pt_PT: update Portuguese translationVasco Almeida Tue, 25 Apr 2017 14:35:41 +0000 (14:35 +0000)

l10n: pt_PT: update Portuguese translation

Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>

Merging a handful of topics before -rc2Junio C Hamano Mon, 1 May 2017 05:16:18 +0000 (22:16 -0700)

Merging a handful of topics before -rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'sh/rebase-i-reread-todo-after-exec'Junio C Hamano Mon, 1 May 2017 05:14:44 +0000 (14:14 +0900)

Merge branch 'sh/rebase-i-reread-todo-after-exec'

"git rebase -i" failed to re-read the todo list file when the
command specified with the `exec` instruction updated it.

* sh/rebase-i-reread-todo-after-exec:
rebase -i: reread the todo list if `exec` touched it

Merge branch 'ls/travis-stricter-linux32-builds'Junio C Hamano Mon, 1 May 2017 05:14:44 +0000 (14:14 +0900)

Merge branch 'ls/travis-stricter-linux32-builds'

32-bit Linux build on Travis CI uses stricter compilation options.

* ls/travis-stricter-linux32-builds:
travis-ci: set DEVELOPER knob for Linux32 build

Merge branch 'ls/travis-win-fix-status'Junio C Hamano Mon, 1 May 2017 05:14:44 +0000 (14:14 +0900)

Merge branch 'ls/travis-win-fix-status'

Relaying status from Windows build by Travis CI was done with an
unsafe invocation of printf.

* ls/travis-win-fix-status:
travis-ci: printf $STATUS as string

Merge branch 'jk/submodule-init-segv-fix'Junio C Hamano Mon, 1 May 2017 05:14:43 +0000 (14:14 +0900)

Merge branch 'jk/submodule-init-segv-fix'

Fix a segv in 'submodule init' when url is not given for a submodule.

* jk/submodule-init-segv-fix:
submodule_init: die cleanly on submodules without url defined

Merge branch 'jk/prio-queue-avoid-swap-with-self'Junio C Hamano Mon, 1 May 2017 05:14:43 +0000 (14:14 +0900)

Merge branch 'jk/prio-queue-avoid-swap-with-self'

Code clean-up.

* jk/prio-queue-avoid-swap-with-self:
prio_queue_reverse: don't swap elements with themselves

Merge branch 'ab/align-perf-descriptions'Junio C Hamano Mon, 1 May 2017 05:14:42 +0000 (14:14 +0900)

Merge branch 'ab/align-perf-descriptions'

Output from perf tests have been updated to align their titles.

* ab/align-perf-descriptions:
t/perf: correctly align non-ASCII descriptions in output

Merge branch 'jk/complete-checkout-sans-dwim-remote'Junio C Hamano Mon, 1 May 2017 05:14:41 +0000 (14:14 +0900)

Merge branch 'jk/complete-checkout-sans-dwim-remote'

Completion for "git checkout <branch>" that auto-creates the branch
out of a remote tracking branch can now be disabled, as this
completion often gets in the way when completing to checkout an
existing local branch that happens to share the same prefix with
bunch of remote tracking branches.

* jk/complete-checkout-sans-dwim-remote:
completion: optionally disable checkout DWIM

submodule: change string_list changed_submodule_pathsBrandon Williams Fri, 28 Apr 2017 23:54:00 +0000 (16:54 -0700)

submodule: change string_list changed_submodule_paths

Eliminate a call to 'xstrdup()' by changing the string_list
'changed_submodule_paths' to duplicated strings added to it.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: remove add_oid_to_argv()Brandon Williams Fri, 28 Apr 2017 23:53:59 +0000 (16:53 -0700)

submodule: remove add_oid_to_argv()

The function 'add_oid_to_argv()' provides the same functionality as
'append_oid_to_argv()'. Remove this duplicate function and instead use
'append_oid_to_argv()' where 'add_oid_to_argv()' was previously used.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: rename free_submodules_sha1s()Brandon Williams Fri, 28 Apr 2017 23:53:58 +0000 (16:53 -0700)

submodule: rename free_submodules_sha1s()

Rename 'free_submodules_sha1s()' to 'free_submodules_oids()' since the
function frees a 'struct string_list' which has a 'struct oid_array'
stored in the 'util' field.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

submodule: rename add_sha1_to_array()Brandon Williams Fri, 28 Apr 2017 23:53:57 +0000 (16:53 -0700)

submodule: rename add_sha1_to_array()

Rename 'add_sha1_to_array()' to 'append_oid_to_array()' to more
accurately describe what the function does, since it handles
'struct object_id' and not sha1 character arrays.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: rename a test having to do with shallow submodulesÆvar Arnfjörð Bjarmason Wed, 26 Apr 2017 23:12:34 +0000 (23:12 +0000)

tests: rename a test having to do with shallow submodules

Rename the t5614-clone-submodules.sh test to
t5614-clone-submodules-shallow.sh. It's not a general test of
submodules, but of shallow cloning in relation to submodules. Move it
to create another similar t56*-clone-submodules-*.sh test.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

clone: add a --no-tags option to clone without tagsÆvar Arnfjörð Bjarmason Wed, 26 Apr 2017 23:12:33 +0000 (23:12 +0000)

clone: add a --no-tags option to clone without tags

Add a --no-tags option to clone without fetching any tags.

Without this change there's no easy way to clone a repository without
also fetching its tags.

When supplying --single-branch the primary remote branch will be
cloned, but in addition tags will be followed & retrieved. Now
--no-tags can be added --single-branch to clone a repository without
tags, and which only tracks a single upstream branch.

This option works without --single-branch as well, and will do a
normal clone but not fetch any tags.

Many git commands pay some fixed overhead as a function of the number
of references. E.g. creating ~40k tags in linux.git will cause a
command like `git log -1 >/dev/null` to run in over a second instead
of in a matter of milliseconds, in addition numerous other things will
slow down, e.g. "git log <TAB>" with the bash completion will slowly
show ~40k references instead of 1.

The user might want to avoid all of that overhead to simply use a
repository like that to browse the "master" branch, or something like
a CI tool might want to keep that one branch up-to-date without caring
about any other references.

Without this change the only way of accomplishing this was either by
manually tweaking the config in a fresh repository:

git init git &&
cat >git/.git/config <<EOF &&
[remote "origin"]
url = git@github.com:git/git.git
tagOpt = --no-tags
fetch = +refs/heads/master:refs/remotes/origin/master
[branch "master"]
remote = origin
merge = refs/heads/master
EOF
cd git &&
git pull

Which requires hardcoding the "master" name, which may not be the main
--single-branch would have retrieved, or alternatively by setting
tagOpt=--no-tags right after cloning & deleting any existing tags:

git clone --single-branch git@github.com:git/git.git &&
cd git &&
git config remote.origin.tagOpt --no-tags &&
git tag -l | xargs git tag -d

Which of course was also subtly buggy if --branch was pointed at a
tag, leaving the user in a detached head:

git clone --single-branch --branch v2.12.0 git@github.com:git/git.git &&
cd git &&
git config remote.origin.tagOpt --no-tags &&
git tag -l | xargs git tag -d

Now all this complexity becomes the much simpler:

git clone --single-branch --no-tags git@github.com:git/git.git

Or in the case of cloning a single tag "branch":

git clone --single-branch --branch v2.12.0 --no-tags git@github.com:git/git.git

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tests: change "cd ... && git fetch" to "cd &&\n\tgit... Ævar Arnfjörð Bjarmason Wed, 26 Apr 2017 23:12:32 +0000 (23:12 +0000)

tests: change "cd ... && git fetch" to "cd &&\n\tgit fetch"

Change occurrences "cd" followed by "fetch" on a single line to be on
two lines.

This is purely a stylistic change pointed out in code review for an
unrelated patch. Change the these tests use so new tests added later
using the more common style don't look out of place.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i18n: read-cache: typofixPeter Krefting Sun, 30 Apr 2017 21:32:48 +0000 (23:32 +0200)

i18n: read-cache: typofix

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i18n: remove i18n from tag reflog messageJean-Noel Avila Sun, 30 Apr 2017 21:32:47 +0000 (23:32 +0200)

i18n: remove i18n from tag reflog message

The building of the reflog message is using strbuf, which is not
friendly with internationalization frameworks. No other reflog
messages are translated right now and switching all the messages to
i18n would require a major rework of the way the messages are built.

Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7400: add !CYGWIN prerequisite to 'add with \\ in... Ramsay Jones Sun, 30 Apr 2017 17:29:30 +0000 (18:29 +0100)

t7400: add !CYGWIN prerequisite to 'add with \\ in path'

Commit cf9e55f494 ("submodule: prevent backslash expantion in submodule
names", 07-04-2017) added a test which creates a git repository with
some backslash characters in the name. On windows, where the backslash
character is a directory separator, it is not possible to create a
repository with the name 'sub\with\backslash'. (The NTFS filesystem would
probably allow it, but the win32 api does not). The MinGW and Git for
Windows versions of git actually create a repository called 'backslash'
in the sub-directory 'sub/with'.

On cygwin, however, due to the slightly schizophrenic treatment of the
backslash character by cygwin-git, this test fails at the 'git init'
stage. The git-init command does not recognise the directory separators
in the input path (eg. is_dir_sep('\\') is false), so it does not
attempt to create the leading directories 'sub/with'. (The call to
mkdir('sub\\with\\backslash') actually does recognise the directory
separators, but fails because the 'sub/with' directory doesn't exist).

In order to suppress the test failure (for now), add the !CYGWIN test
prerequisite.

Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

doc: git-pull.txt use US spelling, fix minor typoRené Genz Sun, 30 Apr 2017 14:54:25 +0000 (16:54 +0200)

doc: git-pull.txt use US spelling, fix minor typo

Signed-off-by: René Genz <liebundartig@freenet.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>