summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-11-10rev-parse: handle --end-of-optionsLibravatar Jeff King4-25/+68
We taught rev-list a new way to separate options from revisions in 19e8789b23 (revision: allow --end-of-options to end option parsing, 2019-08-06), but rev-parse uses its own parser. It should know about --end-of-options not only for consistency, but because it may be presented with similarly ambiguous cases. E.g., if a caller does: git rev-parse "$rev" -- "$path" to parse an untrusted input, then it will get confused if $rev contains an option-like string like "--local-env-vars". Or even "--not-real", which we'd keep as an option to pass along to rev-list. Or even more importantly: git rev-parse --verify "$rev" can be confused by options, even though its purpose is safely parsing untrusted input. On the plus side, it will always fail the --verify part, as it will not have parsed a revision, so the caller will generally "fail closed" rather than continue to use the untrusted string. But it will still trigger whatever option was in "$rev"; this should be mostly harmless, since rev-parse options are all read-only, but I didn't carefully audit all paths. This patch lets callers write: git rev-parse --end-of-options "$rev" -- "$path" and: git rev-parse --verify --end-of-options "$rev" which will both treat "$rev" always as a revision parameter. The latter is a bit clunky. It would be nicer if we had defined "--verify" to require that its next argument be the revision. But we have not historically done so, and: git rev-parse --verify -q "$rev" does currently work. I added a test here to confirm that we didn't break that. A few implementation notes: - We don't document --end-of-options explicitly in commands, but rather in gitcli(7). So I didn't give it its own section in git-rev-parse(1). But I did call it out specifically in the --verify section, and include it in the examples, which should show best practices. - We don't have to re-indent the main option-parsing block, because we can combine our "did we see end of options" check with "does it start with a dash". The exception is the pre-setup options, which need their own block. - We do however have to pull the "--" parsing out of the "does it start with dash" block, because we want to parse it even if we've seen --end-of-options. - We'll leave "--end-of-options" in the output. This is probably not technically necessary, as a careful caller will do: git rev-parse --end-of-options $revs -- $paths and anything in $revs will be resolved to an object id. However, it does help a slightly less careful caller like: git rev-parse --end-of-options $revs_or_paths where a path "--foo" will remain in the output as long as it also exists on disk. In that case, it's helpful to retain --end-of-options to get passed along to rev-list, s it would otherwise see just "--foo". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-11-10rev-parse: put all options under the "-" checkLibravatar Jeff King1-24/+23
The option-parsing loop of rev-parse checks whether the first character of an arg is "-". If so, then it enters a series of conditionals checking for individual options. But some options are inexplicably outside of that outer conditional. This doesn't produce the wrong behavior; the conditional is actually redundant with the individual option checks, and it's really only its fallback "continue" that we care about. But we should at least be consistent. One obvious alternative is that we could get rid of the conditional entirely. But we'll be using the extra block it provides in the next patch. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-11-10rev-parse: don't accept options after dashdashLibravatar Jeff King2-5/+15
Because of the order in which we check options in rev-parse, there are a few options we accept even after a "--". This is wrong, because the whole point of "--" is to say "everything after here is a path". Let's move the "did we see a dashdash" check (it's called "as_is" in the code) to the top of the parsing loop. Note there is one subtlety here. The options are ordered so that some are checked before we even see if we're in a repository (they continue the loop, and if we get past a certain point, then we do the repository setup). By moving the as_is check higher, it's also in that "before setup" section, even though it might look at the repository via verify_filename(). However, this works out: we'd never set as_is until we parse "--", and we don't parse that until after doing the setup. An alternative here to avoid the subtlety is to put the as_is check at the top of the post-setup options. But then every pre-setup option would have to remember to check "if (!as_is && !strcmp(...))". So while this is a bit magical, it's harder for future code to get wrong. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-29Git 2.29.2Libravatar Junio C Hamano3-2/+14
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-29Merge branch 'cc/doc-filter-branch-typofix' into maintLibravatar Junio C Hamano1-1/+1
Docfix. * cc/doc-filter-branch-typofix: filter-branch doc: fix filter-repo typo
2020-10-29Merge branch 'jk/committer-date-is-author-date-fix' into maintLibravatar Junio C Hamano3-5/+5
In 2.29, "--committer-date-is-author-date" option of "rebase" and "am" subcommands lost the e-mail address by mistake, which has been corrected. * jk/committer-date-is-author-date-fix: rebase: fix broken email with --committer-date-is-author-date am: fix broken email with --committer-date-is-author-date t3436: check --committer-date-is-author-date result more carefully
2020-10-23rebase: fix broken email with --committer-date-is-author-dateLibravatar Jeff King2-5/+5
Commit 7573cec52c (rebase -i: support --committer-date-is-author-date, 2020-08-17) copied the committer ident-parsing code from builtin/am.c. And in doing so, it copied a bug in which we always set the email to an empty string. We fixed the version in git-am in the previous commit; this commit fixes the copied code. Reported-by: VenomVendor <info@venomvendor.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-23am: fix broken email with --committer-date-is-author-dateLibravatar Jeff King2-3/+3
Commit e8cbe2118a (am: stop exporting GIT_COMMITTER_DATE, 2020-08-17) rewrote the code for setting the committer date to use fmt_ident(), rather than setting an environment variable and letting commit_tree() handle it. But it introduced two bugs: - we use the author email string instead of the committer email - when parsing the committer ident, we used the wrong variable to compute the length of the email, resulting in it always being a zero-length string This commit fixes both, which causes our test of this option via the rebase "apply" backend to now succeed. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-23t3436: check --committer-date-is-author-date result more carefullyLibravatar Jeff King1-7/+7
After running "rebase --committer-date-is-author-date", we confirm that the committer date is the same as the author date. However, we don't look at any other parts of the committer ident line to make sure we didn't screw them up. And indeed, there are a few bugs here. Depending on the rebase backend in use, we may accidentally use the author email instead of the committer's, or even an empty string. Let's teach our test_ctime_is_atime helper to check the committer name and email, which reveals several failing tests. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-22Git 2.29.1Libravatar Junio C Hamano3-2/+13
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-22Merge branch 'js/no-builtins-on-disk-option' into maintLibravatar Junio C Hamano1-9/+6
Brown-paper-bag fix. * js/no-builtins-on-disk-option: SKIP_DASHED_BUILT_INS: do not skip the bin/ programs
2020-10-21SKIP_DASHED_BUILT_INS: do not skip the bin/ programsLibravatar Johannes Schindelin1-9/+6
The idea of the `SKIP_DASHED_BUILT_INS` option is to stop hard-linking the built-in commands as separate executables. The patches to do that specifically excluded the three commands `receive-pack`, `upload-archive` and `upload-pack`, though: these commands are expected to be present in the `PATH` in their dashed form on the server side of any fetch/push. However, due to an oversight by myself, even if those commands were still hard-linked, they were not installed into `bin/`. Noticed-by: Michael Forney <mforney@mforney.org> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Reviewed-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-20filter-branch doc: fix filter-repo typoLibravatar Christian Couder1-1/+1
The name of the tool is 'git-filter-repo' not 'git-repo-filter'. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Reviewed-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-19Git 2.29Libravatar Junio C Hamano1-1/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-18Merge tag 'l10n-2.29.0-rnd2' of git://github.com/git-l10n/git-poLibravatar Junio C Hamano13-43679/+58411
l10n for Git 2.29.0 round 2 * tag 'l10n-2.29.0-rnd2' of git://github.com/git-l10n/git-po: l10n: zh_CN: for git v2.29.0 l10n round 1 and 2 l10n: de.po: Update German translation for Git 2.29.0 l10n: vi(5013t): Updated translation for v2.29.0 rd2 l10n: pt_PT: make on po/pt_PT.po l10n: Portuguese translation team has changed. Wohoo! l10n: bg.po: Updated Bulgarian translation (5013t) l10n: sv.po: Update Swedish translation (5013t0f0u) l10n: it.po: update the Italian translation l10n: tr: v2.29.0 round 2 l10n: zh_TW.po: v2.29.0 round 2 (2 untranslated) l10n: fr: v2.29.0 rnd 2 l10n: git.pot: v2.29.0 round 2 (1 new, 1 removed) l10n: fr: v2.29.0 rnd 1 l10n: it.po: update the Italian translation for Git 2.29.0 round 1 l10n: tr: v2.29.0 round 1 l10n: Update Catalan translation l10n: git.pot: v2.29.0 round 1 (124 new, 42 removed)
2020-10-18Merge branch 'master' of github.com:Softcatala/git-poLibravatar Jiang Xin1-3572/+4352
* 'master' of github.com:Softcatala/git-po: l10n: Update Catalan translation
2020-10-18l10n: zh_CN: for git v2.29.0 l10n round 1 and 2Libravatar Jiang Xin1-3432/+3788
Translate 124 new messages (5013t0f0u) for git 2.29.0. Reviewed-by: 依云 <lilydjwg@gmail.com> Reviewed-by: Fangyi Zhou <me@fangyi.io> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2020-10-17Merge https://github.com/prati0100/git-guiLibravatar Junio C Hamano3-49/+93
* https://github.com/prati0100/git-gui: git-gui: blame: prevent tool tips from sticking around after Command-Tab git-gui: improve dark mode support git-gui: fix mixed tabs and spaces; prefer tabs
2020-10-17Merge branch 'sh/blame-tooltip'Libravatar Pratyush Yadav1-0/+1
Make sure `git gui blame` tooltips are destroyed once the window loses focus on MacOS. * sh/blame-tooltip: git-gui: blame: prevent tool tips from sticking around after Command-Tab
2020-10-17git-gui: blame: prevent tool tips from sticking around after Command-TabLibravatar Stefan Haller1-0/+1
On Mac, tooltips are not automatically removed when a window loses focus. Furthermore, mouse-move events are only dispatched to the active window, which means that if we Command-tab to another application while a tool tip is showing, the tool tip will stay there forever (in front of other applications). So we must hide it manually when we lose focus. Do this unconditionally here (i.e. without if {[is_MacOSX]}); it shouldn't hurt on other platforms, even though they don't seem to have this problem. Signed-off-by: Stefan Haller <stefan@haller-berlin.de> Signed-off-by: Pratyush Yadav <me@yadavpratyush.com>
2020-10-15Git 2.29-rc2Libravatar Junio C Hamano1-1/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-15l10n: de.po: Update German translation for Git 2.29.0Libravatar Matthias Rüster1-3452/+3817
Reviewed-by: Ralf Thielow <ralf.thielow@gmail.com> Reviewed-by: Phillip Szelat <phillip.szelat@gmail.com> Signed-off-by: Matthias Rüster <matthias.ruester@gmail.com>
2020-10-14Merge branch 'pt-PT' of github.com:git-l10n-pt-PT/git-poLibravatar Jiang Xin2-5139/+14813
* 'pt-PT' of github.com:git-l10n-pt-PT/git-po: l10n: pt_PT: make on po/pt_PT.po l10n: Portuguese translation team has changed. Wohoo!
2020-10-13l10n: vi(5013t): Updated translation for v2.29.0 rd2Libravatar Tran Ngoc Quan1-3432/+3869
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
2020-10-12l10n: pt_PT: make on po/pt_PT.poLibravatar Daniel Santos1-5136/+14811
Pull from the language Coordenator repository and `make` done at the top-level directory. Signed-off-by: Daniel Santos <hello@brighterdan.com>
2020-10-12l10n: Portuguese translation team has changed. Wohoo!Libravatar Daniel Santos1-3/+2
I am excited. Because I like a lot languages, and because I believe this is the way to contribute to a large number of Portuguese speaking person. Jiang Xin and last Portuguese team gave me the lead. Thank you very much. Honored to be a part of such a project. Signed-off-by: Daniel Santos <hello@brighterdan.com>
2020-10-12Merge branch 'master' of github.com:alshopov/git-poLibravatar Jiang Xin1-3579/+4205
* 'master' of github.com:alshopov/git-po: l10n: bg.po: Updated Bulgarian translation (5013t)
2020-10-12Merge branch 'master' of github.com:nafmo/git-l10n-svLibravatar Jiang Xin1-3429/+3843
* 'master' of github.com:nafmo/git-l10n-sv: l10n: sv.po: Update Swedish translation (5013t0f0u)
2020-10-12Merge branch 'update-italian-translation' of github.com:AlessandroMenti/git-poLibravatar Jiang Xin1-141/+141
* 'update-italian-translation' of github.com:AlessandroMenti/git-po: l10n: it.po: update the Italian translation
2020-10-11l10n: bg.po: Updated Bulgarian translation (5013t)Libravatar Alexander Shopov1-3579/+4205
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
2020-10-11l10n: sv.po: Update Swedish translation (5013t0f0u)Libravatar Peter Krefting1-3429/+3843
Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
2020-10-11Merge branch 'l10n/zh_TW/201010' of github.com:l10n-tw/git-poLibravatar Jiang Xin1-3425/+3892
* 'l10n/zh_TW/201010' of github.com:l10n-tw/git-po: l10n: zh_TW.po: v2.29.0 round 2 (2 untranslated)
2020-10-11l10n: it.po: update the Italian translationLibravatar Alessandro Menti1-141/+141
Update the Italian translation for Git 2.29.0, round 2. Signed-off-by: Alessandro Menti <alessandro.menti@alessandromenti.it>
2020-10-11Merge branch '2.29-r2' of github.com:bitigchi/git-poLibravatar Jiang Xin1-129/+131
* '2.29-r2' of github.com:bitigchi/git-po: l10n: tr: v2.29.0 round 2
2020-10-10l10n: tr: v2.29.0 round 2Libravatar Emir Sarı1-129/+131
Signed-off-by: Emir Sarı <bitigchi@me.com>
2020-10-10l10n: zh_TW.po: v2.29.0 round 2 (2 untranslated)Libravatar pan934121-3425/+3892
Signed-off-by: pan93412 <pan93412@gmail.com>
2020-10-10l10n: fr: v2.29.0 rnd 2Libravatar Jean-Noël Avila1-142/+174
Signed-off-by: Jean-Noël Avila <jn.avila@free.fr>
2020-10-10l10n: git.pot: v2.29.0 round 2 (1 new, 1 removed)Libravatar Jiang Xin1-116/+116
Generate po/git.pot from v2.29.0-rc1 for git v2.29.0 l10n round 2. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2020-10-10Merge tag 'v2.29.0-rc1' of github.com:git/gitLibravatar Jiang Xin22-89/+159
Git 2.29-rc1 * tag 'v2.29.0-rc1' of github.com:git/git: Git 2.29-rc1 doc: fix the bnf like style of some commands doc: git-remote fix ups doc: use linkgit macro where needed. git-bisect-lk2009: make continuation of list indented ci: do not skip tagged revisions in GitHub workflows ci: skip GitHub workflow runs for already-tested commits/trees tests: avoid using the branch name `main` t1415: avoid using `main` as ref name Makefile: ASCII-sort += lists help: do not expect built-in commands to be hardlinked index-pack: make get_base_data() comment clearer index-pack: drop type_cas mutex index-pack: restore "resolving deltas" progress meter compat/mingw.h: drop extern from function declaration GitHub workflow: automatically follow minor updates of setup-msbuild t5534: split stdout and stderr redirection
2020-10-08Git 2.29-rc1Libravatar Junio C Hamano2-14/+22
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-10-08Merge branch 'js/default-branch-name-part-3'Libravatar Junio C Hamano5-25/+25
Test preparation for the switch of default branch name continues. * js/default-branch-name-part-3: tests: avoid using the branch name `main` t1415: avoid using `main` as ref name
2020-10-08Merge branch 'js/ci-ghwf-dedup-tests'Libravatar Junio C Hamano2-1/+40
The logic to skip testing on the tagged commit and the tag itself was not quite consistent which led to failure of Windows test tasks. It has been revamped to consistently skip revisions that have already been tested, based on the tree object of the revision. * js/ci-ghwf-dedup-tests: ci: do not skip tagged revisions in GitHub workflows ci: skip GitHub workflow runs for already-tested commits/trees
2020-10-08Merge branch 'ja/misc-doc-fixes'Libravatar Junio C Hamano5-21/+21
Doc fixes. * ja/misc-doc-fixes: doc: fix the bnf like style of some commands doc: git-remote fix ups doc: use linkgit macro where needed. git-bisect-lk2009: make continuation of list indented
2020-10-08Merge branch 'dl/makefile-sort'Libravatar Junio C Hamano1-5/+5
Makefile clean-up. * dl/makefile-sort: Makefile: ASCII-sort += lists
2020-10-08Merge branch 'js/no-builtins-on-disk-option'Libravatar Junio C Hamano3-0/+22
Hotfix to breakage introduced in the topic in v2.29-rc0 * js/no-builtins-on-disk-option: help: do not expect built-in commands to be hardlinked
2020-10-08Merge branch 'js/ghwf-setup-msbuild-update'Libravatar Junio C Hamano1-1/+1
CI update. * js/ghwf-setup-msbuild-update: GitHub workflow: automatically follow minor updates of setup-msbuild
2020-10-08Merge branch 'jk/index-pack-hotfixes'Libravatar Junio C Hamano2-17/+19
Hotfix and clean-up for the jt/threaded-index-pack topic that has graduated to v2.29-rc0. * jk/index-pack-hotfixes: index-pack: make get_base_data() comment clearer index-pack: drop type_cas mutex index-pack: restore "resolving deltas" progress meter
2020-10-08Merge branch 'dl/mingw-header-cleanup'Libravatar Junio C Hamano1-1/+1
Header clean-up. * dl/mingw-header-cleanup: compat/mingw.h: drop extern from function declaration
2020-10-08Merge branch 'hx/push-atomic-with-cert'Libravatar Junio C Hamano1-4/+3
Hotfix to a recently added test script. * hx/push-atomic-with-cert: t5534: split stdout and stderr redirection
2020-10-08doc: fix the bnf like style of some commandsLibravatar Jean-Noël Avila2-2/+2
In command line options, variables are entered between < and > Signed-off-by: Jean-Noël Avila <jn.avila@free.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>