cde9a64 | Junio C Hamano | 09 July 2019, 22:25:46 UTC | Merge branch 'ds/fetch-disable-force-notice' "git fetch" and "git pull" reports when a fetch results in non-fast-forward updates to let the user notice unusual situation. The commands learned "--no-shown-forced-updates" option to disable this safety feature. * ds/fetch-disable-force-notice: pull: add --[no-]show-forced-updates passthrough fetch: warn about forced updates in branch listing fetch: add --[no-]show-forced-updates argument | 09 July 2019, 22:25:46 UTC |
3418622 | Junio C Hamano | 09 July 2019, 22:25:46 UTC | Merge branch 'jh/status-aheadbehind' "git status" can be told a non-standard default value for the "--[no-]ahead-behind" option with a new configuration variable status.aheadBehind. * jh/status-aheadbehind: status: ignore status.aheadbehind in porcelain formats status: warn when a/b calculation takes too long status: add status.aheadbehind setting | 09 July 2019, 22:25:46 UTC |
2fff509 | Junio C Hamano | 09 July 2019, 22:25:46 UTC | Merge branch 'sg/t5551-fetch-smart-error-is-translated' Test update. * sg/t5551-fetch-smart-error-is-translated: t5551: use 'test_i18ngrep' to check translated output | 09 July 2019, 22:25:46 UTC |
968eecb | Junio C Hamano | 09 July 2019, 22:25:46 UTC | Merge branch 'ms/submodule-foreach-fix' "git submodule foreach" did not protect command line options passed to the command to be run in each submodule correctly, when the "--recursive" option was in use. * ms/submodule-foreach-fix: submodule foreach: fix recursion of options | 09 July 2019, 22:25:46 UTC |
88b1075 | Junio C Hamano | 09 July 2019, 22:25:45 UTC | Merge branch 'jh/msvc' Support to build with MSVC has been updated. * jh/msvc: msvc: ignore .dll and incremental compile output msvc: avoid debug assertion windows in Debug Mode msvc: do not pretend to support all signals msvc: add pragmas for common warnings msvc: add a compile-time flag to allow detailed heap debugging msvc: support building Git using MS Visual C++ msvc: update Makefile to allow for spaces in the compiler path msvc: fix detect_msys_tty() msvc: define ftello() msvc: do not re-declare the timespec struct msvc: mark a variable as non-const msvc: define O_ACCMODE msvc: include sigset_t definition msvc: fix dependencies of compat/msvc.c mingw: replace mingw_startup() hack obstack: fix compiler warning cache-tree/blame: avoid reusing the DEBUG constant t0001 (mingw): do not expect a specific order of stdout/stderr Mark .bat files as requiring CR/LF endings mingw: fix a typo in the msysGit-specific section | 09 July 2019, 22:25:45 UTC |
6624e07 | Junio C Hamano | 09 July 2019, 22:25:45 UTC | Merge branch 'sg/rebase-progress' Use "Erase in Line" CSI sequence that is already used in the editor support to clear cruft in the progress output. * sg/rebase-progress: progress: use term_clear_line() rebase: fix garbled progress display with '-x' pager: add a helper function to clear the last line in the terminal t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused t3404: modernize here doc style | 09 July 2019, 22:25:45 UTC |
88176b7 | Junio C Hamano | 09 July 2019, 22:25:45 UTC | Merge branch 'jw/gitweb-sample-update' Doc update. * jw/gitweb-sample-update: doc: don't use git.kernel.org as example gitweb URL | 09 July 2019, 22:25:45 UTC |
bf8126f | Junio C Hamano | 09 July 2019, 22:25:44 UTC | Merge branch 'js/t0001-case-insensitive' Test update. * js/t0001-case-insensitive: t0001: fix on case-insensitive filesystems | 09 July 2019, 22:25:44 UTC |
3e6c6b7 | Junio C Hamano | 09 July 2019, 22:25:44 UTC | Merge branch 'cc/first-contrib-tutorial' Update docs used in a tutorial. * cc/first-contrib-tutorial: doc: improve usage string in MyFirstContribution | 09 July 2019, 22:25:44 UTC |
6af2c75 | Junio C Hamano | 09 July 2019, 22:25:44 UTC | Merge branch 'ab/fail-prereqs-in-test' Test updates. * ab/fail-prereqs-in-test: tests: mark two failing tests under FAIL_PREREQS | 09 July 2019, 22:25:44 UTC |
f496b06 | Junio C Hamano | 09 July 2019, 22:25:44 UTC | Merge branch 'nd/switch-and-restore' Two new commands "git switch" and "git restore" are introduced to split "checking out a branch to work on advancing its history" and "checking out paths out of the index and/or a tree-ish to work on advancing the current history" out of the single "git checkout" command. * nd/switch-and-restore: (46 commits) completion: disable dwim on "git switch -d" switch: allow to switch in the middle of bisect t2027: use test_must_be_empty Declare both git-switch and git-restore experimental help: move git-diff and git-reset to different groups doc: promote "git restore" user-manual.txt: prefer 'merge --abort' over 'reset --hard' completion: support restore t: add tests for restore restore: support --patch restore: replace --force with --ignore-unmerged restore: default to --source=HEAD when only --staged is specified restore: reject invalid combinations with --staged restore: add --worktree and --staged checkout: factor out worktree checkout code restore: disable overlay mode by default restore: make pathspec mandatory restore: take tree-ish from --source option instead checkout: split part of it to new command 'restore' doc: promote "git switch" ... | 09 July 2019, 22:25:44 UTC |
b49d337 | Junio C Hamano | 09 July 2019, 22:25:43 UTC | Merge branch 'nd/fetch-capability-tweak' Protocol capabilities that go over wire should never be translated, but it was incorrectly marked for translation, which has been corrected. The output of protocol capabilities for debugging has been tweaked a bit. * nd/fetch-capability-tweak: fetch-pack: print server version at the top in -v -v fetch-pack: print all relevant supported capabilities with -v -v fetch-pack: move capability names out of i18n strings | 09 July 2019, 22:25:43 UTC |
a7db4c1 | Junio C Hamano | 09 July 2019, 22:25:43 UTC | Merge branch 'jk/oidhash' Code clean-up to remove hardcoded SHA-1 hash from many places. * jk/oidhash: hashmap: convert sha1hash() to oidhash() hash.h: move object_id definition from cache.h khash: rename oid helper functions khash: drop sha1-specific map types pack-bitmap: convert khash_sha1 maps into kh_oid_map delta-islands: convert island_marks khash to use oids khash: rename kh_oid_t to kh_oid_set khash: drop broken oid_map typedef object: convert create_object() to use object_id object: convert internal hash_obj() to object_id object: convert lookup_object() to use object_id object: convert lookup_unknown_object() to use object_id pack-objects: convert locate_object_entry_hash() to object_id pack-objects: convert packlist_find() to use object_id pack-bitmap-write: convert some helpers to use object_id upload-pack: rename a "sha1" variable to "oid" describe: fix accidental oid/hash type-punning | 09 July 2019, 22:25:43 UTC |
a4c8352 | Junio C Hamano | 09 July 2019, 22:25:43 UTC | Merge branch 'jk/delta-islands-progress-fix' The codepath to compute delta islands used to spew progress output without giving the callers any way to squelch it, which has been fixed. * jk/delta-islands-progress-fix: delta-islands: respect progress flag | 09 July 2019, 22:25:43 UTC |
92f66fd | Junio C Hamano | 09 July 2019, 22:25:42 UTC | Merge branch 'md/sort-detached-head-first' "git branch --list" learned to always output the detached HEAD as the first item (when the HEAD is detached, of course), regardless of the locale. * md/sort-detached-head-first: ref-filter: sort detached HEAD lines firstly | 09 July 2019, 22:25:42 UTC |
892d3fb | Junio C Hamano | 09 July 2019, 22:25:42 UTC | Merge branch 'nd/fetch-multi-gc-once' "git fetch" that grabs from a group of remotes learned to run the auto-gc only once at the very end. * nd/fetch-multi-gc-once: fetch: only run 'gc' once when fetching multiple remotes | 09 July 2019, 22:25:42 UTC |
f4f7e75 | Junio C Hamano | 09 July 2019, 22:25:42 UTC | Merge branch 'es/rev-list-no-object-names' "git rev-list --objects" learned with "--no-object-names" option to squelch the path to the object that is used as a grouping hint for pack-objects. * es/rev-list-no-object-names: rev-list: teach --no-object-names to enable piping | 09 July 2019, 22:25:42 UTC |
9331bdb | Junio C Hamano | 09 July 2019, 22:25:41 UTC | Merge branch 'rs/config-unit-parsing' The code to parse scaled numbers out of configuration files has been made more robust and also easier to follow. * rs/config-unit-parsing: config: simplify parsing of unit factors config: don't multiply in parse_unit_factor() config: use unsigned_mult_overflows to check for overflows | 09 July 2019, 22:25:41 UTC |
7785f9b | Junio C Hamano | 09 July 2019, 22:25:41 UTC | Merge branch 'js/gcc-8-and-9' Code clean-up for new compilers. * js/gcc-8-and-9: config: avoid calling `labs()` on too-large data type winansi: simplify loading the GetCurrentConsoleFontEx() function kwset: allow building with GCC 8 poll (mingw): allow compiling with GCC 8 and DEVELOPER=1 | 09 July 2019, 22:25:41 UTC |
3707986 | Junio C Hamano | 09 July 2019, 22:25:41 UTC | Merge branch 'dl/includeif-onbranch' The conditional inclusion mechanism learned to base the choice on the branch the HEAD currently is on. * dl/includeif-onbranch: config: learn the "onbranch:" includeIf condition | 09 July 2019, 22:25:41 UTC |
88f95e4 | Junio C Hamano | 09 July 2019, 22:25:41 UTC | Merge branch 'pw/rebase-abort-clean-rewritten' "git rebase --abort" used to leave refs/rewritten/ when concluding "git rebase -r", which has been corrected. * pw/rebase-abort-clean-rewritten: rebase --abort/--quit: cleanup refs/rewritten sequencer: return errors from sequencer_remove_state() rebase: warn if state directory cannot be removed rebase: fix a memory leak | 09 July 2019, 22:25:41 UTC |
44275f5 | Junio C Hamano | 09 July 2019, 22:25:40 UTC | Merge branch 'am/p4-branches-excludes' "git p4" update. * am/p4-branches-excludes: git-p4: respect excluded paths when detecting branches git-p4: add failing test for "git-p4: respect excluded paths when detecting branches" git-p4: don't exclude other files with same prefix git-p4: add failing test for "don't exclude other files with same prefix" git-p4: don't groom exclude path list on every commit git-p4: match branches case insensitively if configured git-p4: add failing test for "git-p4: match branches case insensitively if configured" git-p4: detect/prevent infinite loop in gitCommitByP4Change() | 09 July 2019, 22:25:40 UTC |
99af5be | Junio C Hamano | 09 July 2019, 22:25:40 UTC | Merge branch 'tg/stash-ref-by-index-fix' "git stash show 23" used to work, but no more after getting rewritten in C; this regression has been corrected. * tg/stash-ref-by-index-fix: stash: fix show referencing stash index | 09 July 2019, 22:25:40 UTC |
aa5bec8 | Junio C Hamano | 09 July 2019, 22:25:40 UTC | Merge branch 'cb/mkstemps-uint-type-fix' Variable type fix. * cb/mkstemps-uint-type-fix: wrapper: avoid undefined behaviour in macOS | 09 July 2019, 22:25:40 UTC |
3a50607 | Junio C Hamano | 09 July 2019, 22:25:40 UTC | Merge branch 'jk/trailers-use-config' "git interpret-trailers" always treated '#' as the comment character, regardless of core.commentChar setting, which has been corrected. * jk/trailers-use-config: interpret-trailers: load default config | 09 July 2019, 22:25:40 UTC |
a56a777 | Junio C Hamano | 09 July 2019, 22:25:39 UTC | Merge branch 'js/t3404-typofix' Typofix. * js/t3404-typofix: t3404: fix a typo | 09 July 2019, 22:25:39 UTC |
0af6d5d | Junio C Hamano | 09 July 2019, 22:25:38 UTC | Merge branch 'pw/doc-synopsis-markup-opmode-options' Docfix. * pw/doc-synopsis-markup-opmode-options: show --continue/skip etc. consistently in synopsis | 09 July 2019, 22:25:39 UTC |
e8d2590 | Junio C Hamano | 09 July 2019, 22:25:38 UTC | Merge branch 'rs/copy-array' Code clean-up. * rs/copy-array: use COPY_ARRAY for copying arrays coccinelle: use COPY_ARRAY for copying arrays | 09 July 2019, 22:25:38 UTC |
ceca455 | Junio C Hamano | 09 July 2019, 22:25:38 UTC | Merge branch 'cb/fsmonitor-intfix' Variable type fix. * cb/fsmonitor-intfix: fsmonitor: avoid signed integer overflow / infinite loop | 09 July 2019, 22:25:38 UTC |
891c1c2 | Junio C Hamano | 09 July 2019, 22:25:37 UTC | Merge branch 'rs/avoid-overflow-in-midpoint-computation' Code clean-up to avoid signed integer overlaps during binary search. * rs/avoid-overflow-in-midpoint-computation: cleanup: fix possible overflow errors in binary search, part 2 | 09 July 2019, 22:25:38 UTC |
1b074e1 | Junio C Hamano | 09 July 2019, 22:25:37 UTC | Merge branch 'pw/add-p-recount' "git checkout -p" needs to selectively apply a patch in reverse, which did not work well. * pw/add-p-recount: add -p: fix checkout -p with pathological context | 09 July 2019, 22:25:37 UTC |
5cb7c73 | Junio C Hamano | 09 July 2019, 22:25:37 UTC | Merge branch 'ds/close-object-store' The commit-graph file is now part of the "files that the runtime may keep open file descriptors on, all of which would need to be closed when done with the object store", and the file descriptor to an existing commit-graph file now is closed before "gc" finalizes a new instance to replace it. * ds/close-object-store: packfile: rename close_all_packs to close_object_store packfile: close commit-graph in close_all_packs commit-graph: use raw_object_store when closing | 09 July 2019, 22:25:37 UTC |
e116894 | Junio C Hamano | 09 July 2019, 22:25:36 UTC | Merge branch 'ds/commit-graph-write-refactor' Renamed from commit-graph-format-v2 and changed scope. * ds/commit-graph-write-refactor: commit-graph: extract write_commit_graph_file() commit-graph: extract copy_oids_to_commits() commit-graph: extract count_distinct_commits() commit-graph: extract fill_oids_from_all_packs() commit-graph: extract fill_oids_from_commit_hex() commit-graph: extract fill_oids_from_packs() commit-graph: create write_commit_graph_context commit-graph: remove Future Work section commit-graph: collapse parameters into flags commit-graph: return with errors during write commit-graph: fix the_repository reference | 09 July 2019, 22:25:36 UTC |
e9eaaa4 | Junio C Hamano | 09 July 2019, 22:25:36 UTC | Merge branch 'sg/trace2-rename' Dev support update to help tracing out tests. * sg/trace2-rename: trace2: correct typo in technical documentation Revert "test-lib: whitelist GIT_TR2_* in the environment" | 09 July 2019, 22:25:36 UTC |
0cc5939 | Junio C Hamano | 09 July 2019, 22:25:35 UTC | Merge branch 'nd/completion-no-cache-failure' An incorrect list of options was cached after command line completion failed (e.g. trying to complete a command that requires a repository outside one), which has been corrected. * nd/completion-no-cache-failure: completion: do not cache if --git-completion-helper fails | 09 July 2019, 22:25:36 UTC |
2950cbd | Junio C Hamano | 09 July 2019, 22:25:35 UTC | Merge branch 'js/mergetool-optim' "git mergetool" and its tests now spawn fewer subprocesses. * js/mergetool-optim: mergetool: use shell variable magic instead of `awk` mergetool: dissect strings with shell variable magic instead of `expr` t7610-mergetool: use test_cmp instead of test $(cat file) = $txt t7610-mergetool: do not place pipelines headed by `yes` in subshells | 09 July 2019, 22:25:35 UTC |
069874c | Junio C Hamano | 09 July 2019, 22:25:35 UTC | Merge branch 'mo/hpux-dynpath' Auto-detect how to tell HP-UX aCC where to use dynamically linked libraries from at runtime. * mo/hpux-dynpath: configure: Detect linking style for HP aCC on HP-UX | 09 July 2019, 22:25:35 UTC |
71221f2 | Junio C Hamano | 09 July 2019, 22:25:35 UTC | Merge branch 'dl/config-alias-doc' Doc update. * dl/config-alias-doc: config/alias.txt: document alias accepting non-command first word config/alias.txt: change " and ' to ` | 09 July 2019, 22:25:35 UTC |
492d7a5 | Junio C Hamano | 09 July 2019, 22:25:34 UTC | Merge branch 'tm/tag-gpgsign-config' A new tag.gpgSign configuration variable turns "git tag -a" into "git tag -s". * tm/tag-gpgsign-config: tag: add tag.gpgSign config option to force all tags be GPG-signed | 09 July 2019, 22:25:34 UTC |
dbf491e | Junio C Hamano | 09 July 2019, 22:25:34 UTC | Merge branch 'fc/fetch-with-import-fix' Code restructuring during 2.20 period broke fetching tags via "import" based transports. * fc/fetch-with-import-fix: fetch: fix regression with transport helpers fetch: make the code more understandable fetch: trivial cleanup t5801 (remote-helpers): add test to fetch tags t5801 (remote-helpers): cleanup refspec stuff | 09 July 2019, 22:25:34 UTC |
ecf55ae | Junio C Hamano | 09 July 2019, 22:25:34 UTC | Merge branch 'po/doc-branch' Doc update. * po/doc-branch: doc branch: provide examples for listing remote tracking branches | 09 July 2019, 22:25:34 UTC |
99eea64 | Junio C Hamano | 09 July 2019, 22:25:33 UTC | Merge branch 'nb/branch-show-other-worktrees-head' "git branch --list" learned to show branches that are checked out in other worktrees connected to the same repository prefixed with '+', similar to the way the currently checked out branch is shown with '*' in front. * nb/branch-show-other-worktrees-head: branch: add worktree info on verbose output branch: update output to include worktree info ref-filter: add worktreepath atom | 09 July 2019, 22:25:33 UTC |
5b12e31 | SZEDER Gábor | 24 June 2019, 18:13:18 UTC | progress: use term_clear_line() To make sure that the previously displayed progress line is completely covered up when the new line is shorter, commit 545dc345eb (progress: break too long progress bar lines, 2019-04-12) added a bunch of calculations to figure out how many characters it needs to overwrite with spaces. Use the just introduced term_clear_line() helper function to, well, clear the last line, making all these calculations unnecessary, and thus simplifying the code considerably. Three tests in 't5541-http-push-smart.sh' 'grep' for specific text shown in the progress lines at the beginning of the line, but now those lines begin either with the ANSI escape sequence or with the terminal width worth of space characters clearing the line. Relax the 'grep' patterns to match anywhere on the line. Note that only two of these three tests fail without relaxing their 'grep' pattern, but the third looks for the absence of the pattern, so it still succeeds, but without the adjustment would potentially hide future regressions. Note also that with this change we no longer need the length of the previously displayed progress line, so the strbuf added to 'struct progress' in d53ba841d4 (progress: assemble percentage and counters in a strbuf before printing, 2019-04-05) is not strictly necessary anymore. We still keep it, though, as it avoids allocating and releasing a strbuf each time the progress is updated. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 27 June 2019, 19:58:41 UTC |
d7d9088 | SZEDER Gábor | 27 June 2019, 13:42:48 UTC | rebase: fix garbled progress display with '-x' When running a command with the 'exec' instruction during an interactive rebase session, or for a range of commits using 'git rebase -x', the output can be a bit garbled when the name of the command is short enough: $ git rebase -x true HEAD~5 Executing: true Executing: true Executing: true Executing: true Executing: true) Successfully rebased and updated refs/heads/master. Note the ')' at the end of the last line. It gets more garbled as the range of commits increases: $ git rebase -x true HEAD~50 Executing: true) [ repeated 3 more times ] Executing: true0) [ repeated 44 more times ] Executing: true00) Successfully rebased and updated refs/heads/master. Those extra numbers and ')' are remnants of the previously displayed "Rebasing (N/M)" progress lines that are usually completely overwritten by the "Executing: <cmd>" lines, unless 'cmd' is short and the "N/M" part is long. Make sure that the previously displayed "Rebasing (N/M)" line is cleared by using the term_clear_line() helper function added in the previous patch. Do so only when not being '--verbose', because in that case these "Rebasing (N/M)" lines are not printed as progress (i.e. as lines with '\r' at the end), but as "regular" output (with '\n' at the end). A couple of other rebase commands print similar messages, e.g. "Stopped at <abbrev-oid>... <subject>" for the 'edit' or 'break' commands, or the "Successfully rebased and updated <full-ref>." at the very end. These are so long that they practically always overwrite that "Rebasing (N/M)" progress line, but let's be prudent, and clear the last line before printing these, too. In 't3420-rebase-autostash.sh' two helper functions prepare the expected output of four tests that check the full output of 'git rebase' and thus are affected by this change, so adjust their expectations to account for the new line clearing. Note that this patch doesn't completely eliminate the possibility of similar garbled outputs, e.g. some error messages from rebase or the "Auto-merging <file>" message from within the depths of the merge machinery might not be long enough to completely cover the last "Rebasing (N/M)" line. This patch doesn't do anything about them, because dealing with them individually would result in way too much churn, while having a catch-all term_clear_line() call in the common code path of pick_commits() would hide the "Rebasing (N/M)" line way too soon, and it would either flicker or be invisible. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 27 June 2019, 19:58:20 UTC |
6114a40 | Carlo Marcelo Arenas Belón | 26 June 2019, 20:03:03 UTC | trace2: correct typo in technical documentation an apparent typo for the environment variable was included with 81567caf87 ("trace2: update docs to describe system/global config settings", 2019-04-15), and was missed when renamed variables by e4b75d6a1d ("trace2: rename environment variables to GIT_TRACE2*", 2019-05-19) Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 27 June 2019, 17:56:54 UTC |
e532a90 | SZEDER Gábor | 24 June 2019, 12:44:46 UTC | t5551: use 'test_i18ngrep' to check translated output The two tests 'invalid Content-Type rejected' and 'server-side error detected' in 't5551-http-fetch-smart.sh' use "plain" 'grep' to check that 'git clone' failed with the expected error message, but the messages they are checking are translated, and, consequently, these tests fail when the test script is run with GIT_TEST_GETTEXT_POISON enabled. Use 'test_i18ngrep' instead. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 June 2019, 19:06:28 UTC |
30db18b | Morian Sonnet | 24 June 2019, 20:26:55 UTC | submodule foreach: fix recursion of options Calling git submodule foreach --recursive <subcommand> --<option> leads to an error stating that the option --<option> is unknown to submodule--helper. That is of course only, when <option> is not a valid option for git submodule foreach. The reason for this is, that above call is internally translated into a call to submodule--helper: git submodule--helper foreach --recursive \ -- <subcommand> --<option> This call starts by executing the subcommand with its option inside the first level submodule and continues by calling the next iteration of the submodule foreach call git --super-prefix <submodulepath> submodule--helper \ foreach --recursive <subcommand> --<option> inside the first level submodule. Note that the double dash in front of the subcommand is missing. This problem starts to arise only recently, as the PARSE_OPT_KEEP_UNKNOWN flag for the argument parsing of git submodule foreach was removed in commit a282f5a906. Hence, the unknown option is complained about now, as the argument parsing is not properly ended by the double dash. This commit fixes the problem by adding the double dash in front of the subcommand during the recursion. Signed-off-by: Morian Sonnet <moriansonnet@googlemail.com> Acked-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 June 2019, 18:17:53 UTC |
54b6110 | Jeff Hostetler | 25 June 2019, 14:49:42 UTC | msvc: ignore .dll and incremental compile output Ignore .dll files copied into the top-level directory. Ignore MSVC incremental compiler output files. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 June 2019, 17:46:58 UTC |
f6a6393 | Johannes Schindelin | 25 June 2019, 14:49:42 UTC | msvc: avoid debug assertion windows in Debug Mode For regular debugging, it is pretty helpful when a debug assertion in a running application triggers a window that offers to start the debugger. However, when running the test suite, it is not so helpful, in particular when the debug assertions are then suppressed anyway because we disable the invalid parameter checking (via invalidcontinue.obj, see the comment in config.mak.uname about that object for more information). So let's simply disable that window in Debug Mode (it is already disabled in Release Mode). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 June 2019, 17:46:58 UTC |
446df60 | Jeff Hostetler | 25 June 2019, 14:49:41 UTC | msvc: do not pretend to support all signals This special-cases various signals that are not supported on Windows, such as SIGPIPE. These cause the UCRT to throw asserts (at least in debug mode). Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 June 2019, 17:46:58 UTC |
b7bd9a7 | Philip Oakley | 25 June 2019, 14:49:40 UTC | msvc: add pragmas for common warnings MSVC can be overzealous about some warnings. Disable them. Signed-off-by: Philip Oakley <philipoakley@iee.org> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 June 2019, 17:46:57 UTC |
556702f | Jeff Hostetler | 25 June 2019, 14:49:40 UTC | msvc: add a compile-time flag to allow detailed heap debugging MS Visual C comes with a few neat features we can use to analyze the heap consumption (i.e. leaks, max memory, etc). With this patch, we introduce support via the build-time flag `USE_MSVC_CRTDBG`. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 June 2019, 17:46:57 UTC |
dce7d29 | Jeff Hostetler | 25 June 2019, 14:49:39 UTC | msvc: support building Git using MS Visual C++ With this patch, Git can be built using the Microsoft toolchain, via: make MSVC=1 [DEBUG=1] Third party libraries are built from source using the open source "vcpkg" tool set. See https://github.com/Microsoft/vcpkg On a first build, the vcpkg tools and the third party libraries are automatically downloaded and built. DLLs for the third party libraries are copied to the top-level (and t/helper) directory to facilitate debugging. See compat/vcbuild/README. A series of .bat files are invoked by the Makefile to find the location of the installed version of Visual Studio and the associated compiler tools (essentially replicating the environment setup performed by a "Developer Command Prompt"). This should find the most recent VS2015 or VS2017 installation. Output from these scripts are used by the Makefile to define compiler and linker pathnames and -I and -L arguments. The build produces .pdb files for both debug and release builds. Note: This commit was squashed from an organic series of commits developed between 2016 and 2018 in Git for Windows' `master` branch. This combined commit eliminates the obsolete commits related to fetching NuGet packages for third party libraries. It is difficult to use NuGet packages for C/C++ sources because they may be built by earlier versions of the MSVC compiler and have CRT version and linking issues. Additionally, the C/C++ NuGet packages that we were using tended to not be updated concurrently with the sources. And in the case of cURL and OpenSSL, this could expose us to security issues. Helped-by: Yue Lin Ho <b8732003@student.nsysu.edu.tw> Helped-by: Philip Oakley <philipoakley@iee.org> Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 25 June 2019, 17:46:57 UTC |
cd1096b | SZEDER Gábor | 24 June 2019, 18:13:16 UTC | pager: add a helper function to clear the last line in the terminal There are a couple of places where we want to clear the last line on the terminal, e.g. when a progress bar line is overwritten by a shorter line, then the end of that progress line would remain visible, unless we cover it up. In 'progress.c' we did this by always appending a fixed number of space characters to the next line (even if it was not shorter than the previous), but as it turned out that fixed number was not quite large enough, see the fix in 9f1fd84e15 (progress: clear previous progress update dynamically, 2019-04-12). From then on we've been keeping track of the length of the last displayed progress line and appending the appropriate number of space characters to the next line, if necessary, but, alas, this approach turned out to be error prone, see the fix in 1aed1a5f25 (progress: avoid empty line when breaking the progress line, 2019-05-19). The next patch in this series is about to fix a case where we don't clear the last line, and on occasion do end up with such garbage at the end of the line. It would be great if we could do that without the need to deal with that without meticulously computing the necessary number of space characters. So add a helper function to clear the last line on the terminal using an ANSI escape sequence, which has the advantage to clear the whole line no matter how wide it is, even after the terminal width changed. Such an escape sequence is not available on dumb terminals, though, so in that case fall back to simply print a whole terminal width (as reported by term_columns()) worth of space characters. In 'editor.c' launch_specified_editor() already used this ANSI escape sequence, so replace it with a call to this function. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 24 June 2019, 20:38:46 UTC |
077b979 | SZEDER Gábor | 24 June 2019, 18:13:15 UTC | t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused The test 'rebase -i respects rebase.missingCommitsCheck = warn' is mainly interested in the warning about the dropped commits, but it checks the whole output of 'git rebase', including progress lines and what not that are not at all relevant to 'rebase.missingCommitsCheck', but make it necessary to update this test whenever e.g. the way we show progress is updated (as it will happen in one of the later patches of this series). Modify the test to verify only the first four lines of 'git rebase's output that contain all the important lines, notably the line containing the "Warning:" itself and the oneline log of the dropped commit. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 24 June 2019, 20:38:46 UTC |
c9749b3 | SZEDER Gábor | 24 June 2019, 18:13:14 UTC | t3404: modernize here doc style In 't3404-rebase-interactive.sh' the expected output of several tests is prepared from here documents, which are outside of 'test_expect_success' blocks and have spaces around redirection operators. Move these here documents into the corresponding 'test_expect_success' block and avoid spaces between filename and redition operators. Furthermore, quote the here docs' delimiter word to prevent parameter expansions and what not, where applicable. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 24 June 2019, 20:38:46 UTC |
dfa880e | Jakub Wilk | 22 June 2019, 16:48:57 UTC | doc: don't use git.kernel.org as example gitweb URL git.kernel.org uses cgit, not gitweb, these days: $ w3m -dump 'http://git.kernel.org/?p=git/git.git;a=tree;f=gitweb' | grep -w generated generated by cgit 1.2-0.3.lf.el7 (git 2.18.0) at 2019-06-22 16:14:38 +0000 Signed-off-by: Jakub Wilk <jwilk@jwilk.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 24 June 2019, 19:37:21 UTC |
39c575c | René Scharfe | 22 June 2019, 10:03:40 UTC | config: simplify parsing of unit factors Just return the value of the factor or zero for unrecognized strings instead of using an output reference and a separate return value to indicate success. This is shorter and simpler. It basically reverts that function to before c8deb5a146 ("Improve error messages when int/long cannot be parsed from config", 2007-12-25), while keeping the better messages, so restore its old name, get_unit_factor(), as well. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 24 June 2019, 19:34:20 UTC |
664178e | René Scharfe | 22 June 2019, 10:03:36 UTC | config: don't multiply in parse_unit_factor() parse_unit_factor() multiplies the number that is passed to it with the value of a recognized unit factor (K, M or G for 2^10, 2^20 and 2^30, respectively). All callers pass in 1 as a number, though, which allows them to check the actual multiplication for overflow before they are doing it themselves. Ignore the passed in number and don't multiply, as this feature of parse_unit_factor() is not used anymore. Rename the output parameter to reflect that it's not about the end result anymore, but just about the unit factor. Suggested-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 24 June 2019, 19:34:19 UTC |
3fb72c7 | René Scharfe | 22 June 2019, 10:03:30 UTC | config: use unsigned_mult_overflows to check for overflows parse_unit_factor() checks if a K, M or G is present after a number and multiplies it by 2^10, 2^20 or 2^30, respectively. One of its callers checks if the result is smaller than the number alone to detect overflows. The other one passes 1 as the number and does multiplication and overflow check itself in a similar manner. This works, but is inconsistent, and it would break if we added support for a bigger unit factor. E.g. 16777217T is 2^64 + 2^40, i.e. too big for a 64-bit number. Modulo 2^64 we get 2^40 == 1TB, which is bigger than the raw number 16777217 == 2^24 + 1, so the overflow would go undetected by that method. Let both callers pass 1 and handle overflow check and multiplication themselves. Do the check before the multiplication, using unsigned_mult_overflows, which is simpler and can deal with larger unit factors. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 24 June 2019, 19:34:17 UTC |
ed33bd8 | Johannes Schindelin | 24 June 2019, 17:40:05 UTC | t0001: fix on case-insensitive filesystems On a case-insensitive filesystem, such as HFS+ or NTFS, it is possible that the idea Bash has of the current directory differs in case from what Git thinks it is. That's totally okay, though, and we should not expect otherwise. On Windows, for example, when you call cd C:\GIT-SDK-64 in a PowerShell and there exists a directory called `C:\git-sdk-64`, the current directory will be reported in all upper-case. Even in a Bash that you might call from that PowerShell. Git, however, will have normalized this via `GetFinalPathByHandle()`, and the expectation in t0001 that the recorded gitdir will match what `pwd` says will be violated. Let's address this by comparing these paths in a case-insensitive manner when `core.ignoreCase` is `true`. Reported by Jameson Miller. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 24 June 2019, 18:55:54 UTC |
b37e0ec | Christian Couder | 22 June 2019, 06:10:35 UTC | doc: improve usage string in MyFirstContribution We implement a command called git-psuh which accept arguments, so let's show that it accepts arguments in the doc and the usage string. While at it, we need to prepare "a NULL-terminated array of usage strings", not just "a NULL-terminated usage string". Helped-by: Emily Shaffer <emilyshaffer@google.com> Helped-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 24 June 2019, 17:55:38 UTC |
cf7a851 | Ævar Arnfjörð Bjarmason | 20 June 2019, 20:42:27 UTC | tests: mark two failing tests under FAIL_PREREQS Fix a couple of tests that would potentially fail under GIT_TEST_FAIL_PREREQS=true. I missed these when annotating other tests in dfe1a17df9 ("tests: add a special setup where prerequisites fail", 2019-05-13) because on my system I can only reproduce this failure when I run the tests as "root", since the tests happen to depend on whether we can fall back on GECOS info or not. I.e. they'd usually fail to look up the ident info anyway, but not always. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 June 2019, 21:08:42 UTC |
8dca754 | Junio C Hamano | 21 June 2019, 18:26:11 UTC | The third batch Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 June 2019, 18:26:11 UTC |
90d79d7 | Junio C Hamano | 21 June 2019, 18:24:12 UTC | Merge branch 'mo/clang-format-for-each-update' The list of for-each like macros used by clang-format has been updated. * mo/clang-format-for-each-update: clang-format: use git grep to generate the ForEachMacros list | 21 June 2019, 18:24:12 UTC |
f9089e8 | Junio C Hamano | 21 June 2019, 18:24:12 UTC | Merge branch 'md/url-parse-harden' The URL decoding code has been updated to avoid going past the end of the string while parsing %-<hex>-<hex> sequence. * md/url-parse-harden: url: do not allow %00 to represent NUL in URLs url: do not read past end of buffer | 21 June 2019, 18:24:12 UTC |
e694ea5 | Junio C Hamano | 21 June 2019, 18:24:11 UTC | Merge branch 'an/ignore-doc-update' The description about slashes in gitignore patterns (used to indicate things like "anchored to this level only" and "only matches directories") has been revamped. * an/ignore-doc-update: gitignore.txt: make slash-rules more readable | 21 June 2019, 18:24:11 UTC |
755793b | Junio C Hamano | 21 June 2019, 18:24:11 UTC | Merge branch 'ab/hash-object-doc' Doc update. * ab/hash-object-doc: hash-object doc: stop mentioning git-cvsimport | 21 June 2019, 18:24:11 UTC |
88542ef | Junio C Hamano | 21 June 2019, 18:24:10 UTC | Merge branch 'cm/send-email-document-req-modules' A doc update. * cm/send-email-document-req-modules: send-email: update documentation of required Perl modules | 21 June 2019, 18:24:10 UTC |
ca02d36 | Junio C Hamano | 21 June 2019, 18:24:10 UTC | Merge branch 'md/list-objects-filter-parse-msgfix' Make an end-user facing message localizable. * md/list-objects-filter-parse-msgfix: list-objects-filter-options: error is localizeable | 21 June 2019, 18:24:10 UTC |
34032c4 | Junio C Hamano | 21 June 2019, 18:24:09 UTC | Merge branch 'md/list-objects-filter-memfix' The filter_data used in the list-objects-filter (which manages a lazily sparse clone repository) did not use the dynamic array API correctly---'nr' is supposed to point at one past the last element of the array in use. This has been corrected. * md/list-objects-filter-memfix: list-objects-filter: correct usage of ALLOC_GROW | 21 June 2019, 18:24:09 UTC |
8867aa8 | Junio C Hamano | 21 June 2019, 18:24:09 UTC | Merge branch 'jt/partial-clone-missing-ref-delta-base' "git fetch" into a lazy clone forgot to fetch base objects that are necessary to complete delta in a thin packfile, which has been corrected. * jt/partial-clone-missing-ref-delta-base: t5616: cover case of client having delta base t5616: use correct flag to check object is missing index-pack: prefetch missing REF_DELTA bases t5616: refactor packfile replacement | 21 June 2019, 18:24:09 UTC |
a41dad4 | Junio C Hamano | 21 June 2019, 18:24:08 UTC | Merge branch 'ml/userdiff-rust' The pattern "git diff/grep" use to extract funcname and words boundary for Rust has been added. * ml/userdiff-rust: userdiff: two simplifications of patterns for rust userdiff: add built-in pattern for rust | 21 June 2019, 18:24:08 UTC |
3883c55 | Derrick Stolee | 18 June 2019, 20:25:28 UTC | pull: add --[no-]show-forced-updates passthrough The 'git fetch' command can avoid calculating forced updates, so allow users of 'git pull' to provide that option. This is particularly necessary when the advice to use '--no-show-forced-updates' is given at the end of the command. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 June 2019, 16:38:29 UTC |
377444b | Derrick Stolee | 18 June 2019, 20:25:27 UTC | fetch: warn about forced updates in branch listing The --[no-]show-forced-updates option in 'git fetch' can be confusing for some users, especially if it is enabled via config setting and not by argument. Add advice to warn the user that the (forced update) messages were not listed. Additionally, warn users when the forced update check takes longer than ten seconds, and recommend that they disable the check. These messages can be disabled by the advice.fetchShowForcedUpdates config setting. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 June 2019, 16:38:29 UTC |
cdbd70c | Derrick Stolee | 18 June 2019, 20:25:26 UTC | fetch: add --[no-]show-forced-updates argument After updating a set of remove refs during a 'git fetch', we walk the commits in the new ref value and not in the old ref value to discover if the update was a forced update. This results in two things happening during the command: 1. The line including the ref update has an additional "(forced-update)" marker at the end. 2. The ref log for that remote branch includes a bit saying that update is a forced update. For many situations, this forced-update message happens infrequently, or is a small bit of information among many ref updates. Many users ignore these messages, but the calculation required here slows down their fetches significantly. Keep in mind that they do not have the opportunity to calculate a commit-graph file containing the newly-fetched commits, so these comparisons can be very slow. Add a '--[no-]show-forced-updates' option that allows a user to skip this calculation. The only permanent result is dropping the forced-update bit in the reflog. Include a new fetch.showForcedUpdates config setting that allows this behavior without including the argument in every command. The config setting is overridden by the command-line arguments. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 June 2019, 16:38:29 UTC |
fb4db1a | Jeff Hostetler | 18 June 2019, 20:21:28 UTC | status: ignore status.aheadbehind in porcelain formats Teach porcelain V[12] formats to ignore the status.aheadbehind config setting. They only respect the --[no-]ahead-behind command line argument. This is for backwards compatibility with existing scripts. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 June 2019, 16:35:03 UTC |
0a53561 | Jeff Hostetler | 18 June 2019, 20:21:27 UTC | status: warn when a/b calculation takes too long The ahead/behind calculation in 'git status' can be slow in some cases. Users may not realize that there are ways to avoid this computation, especially if they are not using the information. Add a warning that appears if this calculation takes more than two seconds. The warning can be disabled through the new config setting advice.statusAheadBehind. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 June 2019, 16:35:02 UTC |
06b324c | Jeff Hostetler | 18 June 2019, 20:21:25 UTC | status: add status.aheadbehind setting The --[no-]ahead-behind option was introduced in fd9b544a (status: add --[no-]ahead-behind to status and commit for V2 format, 2018-01-09). This is a necessary change of behavior in repos where the remote tracking branches can move very quickly ahead of the local branches. However, users need to remember to provide the command-line argument every time. Add a new "status.aheadBehind" config setting to change the default behavior of all git status formats. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 21 June 2019, 16:35:00 UTC |
c444bf8 | Jeff Hostetler | 19 June 2019, 21:06:06 UTC | msvc: update Makefile to allow for spaces in the compiler path It is quite common that MS Visual C++ is installed into a location whose path contains spaces, therefore we need to quote it. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:06 UTC |
5f3ff78 | Jeff Hostetler | 19 June 2019, 21:06:05 UTC | msvc: fix detect_msys_tty() The ntstatus.h header is only available in MINGW. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
f6f470f | Jeff Hostetler | 19 June 2019, 21:06:04 UTC | msvc: define ftello() It is just called differently in MSVC's headers. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
172e54e | Jeff Hostetler | 19 June 2019, 21:06:03 UTC | msvc: do not re-declare the timespec struct VS2015's headers already declare that struct. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
12fb9bd | Jeff Hostetler | 19 June 2019, 21:06:02 UTC | msvc: mark a variable as non-const VS2015 complains when using a const pointer in memcpy()/free(). Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
a822fb8 | Philip Oakley | 19 June 2019, 21:06:02 UTC | msvc: define O_ACCMODE This constant is not defined in MSVC's headers. In UCRT's fcntl.h, _O_RDONLY, _O_WRONLY and _O_RDWR are defined as 0, 1 and 2, respectively. Yes, that means that UCRT breaks with the tradition that O_RDWR == O_RDONLY | O_WRONLY. It is a perfectly legal way to define those constants, though, therefore we need to take care of defining O_ACCMODE accordingly. This is particularly important in order to keep our "open() can set errno to EISDIR" emulation working: it tests that (flags & O_ACCMODE) is not identical to O_RDONLY before going on to test specifically whether the file for which open() reported EACCES is, in fact, a directory. Signed-off-by: Philip Oakley <philipoakley@iee.org> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
7ca4663 | Philip Oakley | 19 June 2019, 21:06:01 UTC | msvc: include sigset_t definition On MSVC (VS2008) sigset_t is not defined. Signed-off-by: Philip Oakley <philipoakley@iee.org> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
963e154 | Johannes Schindelin | 19 June 2019, 21:06:00 UTC | msvc: fix dependencies of compat/msvc.c The file compat/msvc.c includes compat/mingw.c, which means that we have to recompile compat/msvc.o if compat/mingw.c changes. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
396ff75 | Johannes Schindelin | 19 June 2019, 21:05:59 UTC | mingw: replace mingw_startup() hack Git for Windows has special code to retrieve the command-line parameters (and even the environment) in UTF-16 encoding, so that they can be converted to UTF-8. This is necessary because Git for Windows wants to use UTF-8 encoded strings throughout its code, and the main() function does not get the parameters in that encoding. To do that, we used the __wgetmainargs() function, which is not even a Win32 API function, but provided by the MINGW "runtime" instead. Obviously, this method would not work with any compiler other than GCC, and in preparation for compiling with Visual C++, we would like to avoid precisely that. Lucky us, there is a much more elegant way: we can simply implement the UTF-16 variant of `main()`: `wmain()`. To make that work, we need to link with -municode. The command-line parameters are passed to `wmain()` encoded in UTF-16, as desired, and this method also works with GCC, and also with Visual C++ after adjusting the MSVC linker flags to force it to use `wmain()`. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
96a0679 | Johannes Schindelin | 19 June 2019, 21:05:59 UTC | obstack: fix compiler warning MS Visual C suggests that the construct condition ? (int) i : (ptrdiff_t) d is incorrect. Let's fix this by casting to ptrdiff_t also for the positive arm of the conditional. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
e9b9cc5 | Jeff Hostetler | 19 June 2019, 21:05:58 UTC | cache-tree/blame: avoid reusing the DEBUG constant In MS Visual C, the `DEBUG` constant is set automatically whenever compiling with debug information. This is clearly not what was intended in `cache-tree.c` nor in `builtin/blame.c`, so let's use a less ambiguous name there. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
fdda1ac | Johannes Schindelin | 19 June 2019, 21:05:57 UTC | t0001 (mingw): do not expect a specific order of stdout/stderr When redirecting stdout/stderr to the same file, we cannot guarantee that stdout will come first. In fact, in this test case, it seems that an MSVC build always prints stderr first. In any case, this test case does not want to verify the *order* but the *presence* of both outputs, so let's test exactly that. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
a5bdf9f | Johannes Schindelin | 19 June 2019, 21:05:57 UTC | Mark .bat files as requiring CR/LF endings Just like the natural line ending for Unix shell scripts consist of a single Line Feed, the natural line ending for (DOS) Batch scripts consists of a Carriage Return followed by a Line Feed. It seems that both Unix shell script interpreters and the interpreter for Batch scripts (`cmd.exe`) are keen on seeing the "right" line endings. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
6a1ce2e | Johannes Schindelin | 19 June 2019, 21:05:56 UTC | mingw: fix a typo in the msysGit-specific section The msysGit project (i.e. Git for Windows 1.x' SDK) is safely dead for *years* already. This is probably the reason why nobody caught this typo until Carlo Arenas spotted a copy-edited version of it nearby. It is probably about time to rip out the remainders of msysGit/MSys1 support, but that can safely wait a bit longer, and we can at least fix the typo for now. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:03:05 UTC |
0e04297 | Nguyễn Thái Ngọc Duy | 20 June 2019, 11:59:51 UTC | fetch-pack: print server version at the top in -v -v Before the previous patch, the server version is printed after all the "Server supports" lines. The previous one puts the version in the middle of "Server supports" group. Instead of moving it to the bottom, I move it to the top. Version may stand out more at the top as we will have even more debug out after capabilities. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:01:00 UTC |
5a88583 | Nguyễn Thái Ngọc Duy | 20 June 2019, 11:59:50 UTC | fetch-pack: print all relevant supported capabilities with -v -v When we check if some capability is supported, we do print something in verbose mode. Some capabilities are not printed though (and it made me think it's not supported; I was more used to GIT_TRACE_PACKET) so let's print them all. It's a bit more code. And one could argue for printing all supported capabilities the server sends us. But I think it's still valuable this way because we see the capabilities that the client cares about. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:00:59 UTC |
0778b29 | Nguyễn Thái Ngọc Duy | 20 June 2019, 11:59:49 UTC | fetch-pack: move capability names out of i18n strings This reduces the work on translators since they only have one string to translate (and I think it's still enough context to translate). It also makes sure no capability name is translated by accident. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 21:00:59 UTC |
97ed685 | Nguyễn Thái Ngọc Duy | 20 June 2019, 09:55:22 UTC | completion: disable dwim on "git switch -d" Even though dwim is enabled by default, it will never be done when --detached is specified. If you force "-d --guess" you will get an error because --guess then implies -c which cannot be used with -d. So we can disable dwim in "switch -d". It makes the completion list in this case a bit shorter. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 20:31:51 UTC |
d16dc42 | Nguyễn Thái Ngọc Duy | 20 June 2019, 09:55:21 UTC | switch: allow to switch in the middle of bisect In c45f0f525d (switch: reject if some operation is in progress, 2019-03-29), a check is added to prevent switching when some operation is in progress. The reason is it's often not safe to do so. This is true for merge, am, rebase, cherry-pick and revert, but not so much for bisect because bisecting is basically jumping/switching between a bunch of commits to pin point the first bad one. git-bisect suggests the next commit to test, but it's not wrong for the user to test a different commit because git-bisect cannot have the knowledge to know better. For this reason, allow to switch when bisecting (*). I considered if we should still prevent switching by default and allow it with --ignore-in-progress. But I don't think the prevention really adds anything much. If the user switches away by mistake, since we print the previous HEAD value, even if they don't know about the "-" shortcut, switching back is still possible. The warning will be printed on every switch while bisect is still ongoing, not the first time you switch away from bisect's suggested commit, so it could become a bit annoying. (*) of course when it's safe to do so, i.e. no loss of local changes and stuff. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 20:31:22 UTC |
bcba406 | Nguyễn Thái Ngọc Duy | 20 June 2019, 09:55:20 UTC | t2027: use test_must_be_empty Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 20:31:20 UTC |
bdbdf42 | Jeff King | 20 June 2019, 08:58:32 UTC | delta-islands: respect progress flag The delta island code always prints "Marked %d islands", even if progress has been suppressed with --no-progress or by sending stderr to a non-tty. Let's pass a progress boolean to load_delta_islands(). We already do the same thing for the progress meter in resolve_tree_islands(). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com> | 20 June 2019, 20:29:49 UTC |