Code Monkey home page Code Monkey logo

gitgitgadget / git Goto Github PK

View Code? Open in Web Editor NEW

This project forked from git/git

205.0 28.0 132.0 438.91 MB

GitGitGadget's Git fork. Open Pull Requests here to submit them to the Git mailing list

Home Page: https://gitgitgadget.github.io/

License: Other

Shell 38.30% Roff 0.12% Makefile 0.74% C 50.06% C++ 0.12% Perl 5.24% M4 0.17% Emacs Lisp 0.01% Python 0.79% Go 0.07% Tcl 3.82% JavaScript 0.22% CSS 0.05% Batchfile 0.04% SmPL 0.07% CMake 0.18%
hacktoberfest

git's Introduction

Build status

Git - fast, scalable, distributed revision control system

Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals.

Git is an Open Source project covered by the GNU General Public License version 2 (some parts of it are under different licenses, compatible with the GPLv2). It was originally written by Linus Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

Many Git online resources are accessible from https://git-scm.com/ including full documentation and Git related tools.

See Documentation/gittutorial.txt to get started, then see Documentation/giteveryday.txt for a useful minimum set of commands, and Documentation/git-<commandname>.txt for documentation of each command. If git has been correctly installed, then the tutorial can also be read with man gittutorial or git help tutorial, and the documentation of each command with man git-<commandname> or git help <commandname>.

CVS users may also want to read Documentation/gitcvs-migration.txt (man gitcvs-migration or git help cvs-migration if git is installed).

The user discussion and development of Git take place on the Git mailing list -- everyone is welcome to post bug reports, feature requests, comments and patches to [email protected] (read Documentation/SubmittingPatches for instructions on patch submission and Documentation/CodingGuidelines).

Those wishing to help with error message, usage and informational message string translations (localization l10) should see po/README.md (a po file is a Portable Object file that holds the translations).

To subscribe to the list, send an email to [email protected] (see https://subspace.kernel.org/subscribing.html for details). The mailing list archives are available at https://lore.kernel.org/git/, https://marc.info/?l=git and other archival sites.

Issues which are security relevant should be disclosed privately to the Git Security mailing list [email protected].

The maintainer frequently sends the "What's cooking" reports that list the current status of various development topics to the mailing list. The discussion following them give a good reference for project status, development direction and remaining tasks.

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your mood):

  • random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant.
  • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
  • "global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
  • "goddamn idiotic truckload of sh*t": when it breaks

git's People

Contributors

avar avatar bk2204 avatar bmwill avatar chriscool avatar denton-l avatar derrickstolee avatar dscho avatar felipec avatar gitster avatar j6t avatar jiangxin avatar jnareb avatar jonathantanmy avatar jrn avatar mhagger avatar mjg avatar newren avatar npitre avatar paulusmack avatar pclouds avatar peff avatar pks-t avatar rscharfe avatar spearce avatar stefanbeller avatar sunshineco avatar szeder avatar torvalds avatar trast avatar ttaylorr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

git's Issues

rebase -r: implement an equivalent to skip_unnecessary_picks()

Take this todo list, for example:

label onto

# Branch dscho
reset onto
pick a123 first
label dscho

# Branch avar
reset onto
pick b789 second
label avar

reset onto
merge -C c124 dscho
merge -C d314 avar

In other words: two branches, both one patch deep, both merged, one after the other. Now,
if you insert pick abc zeroth before the first pick, obviously the first branch would no longer be skippable, but the second one totally would be!

Since we are not performing a linear rebase, the skip_unnecessary_picks() function has no prayer of helping us here.

To remedy this, we would probably need code in pick_commits(), right where TODO_RESET is handled, that would:

  • parse the argument (this is currently done in do_reset() and would have to be refactored out) and pretend that it is HEAD,

  • look at the following command: if it is

    • a pick, and if its parent agrees with HEAD, pretend that the pick was actually a reset, update the pretended HEAD and keep looking at the next command,

    • a merge, and if its option was -C <orig-merge> (not lower-case -c!), and if its parent agrees with HEAD, and if its merge head(s) agree with the original merge commit's (if any), pretend that it was actually a reset <orig-merge>, update the pretended HEAD and keep looking at the next command,

    • a label, perform it, but with the pretended HEAD, and keep looking for the next command,

    • a reset, update the done and git-rebase-todo files and start the entire spiel from the top,

    • otherwise perform the reset.

  • all while skipping, this code would need to take care of updating the done and git-rebase-todo files,

  • if a reset is necessary, and if it fails, the done and git-rebase-todo files should not be updated, but the original reset should be re-scheduled, and

  • since this adds quite a bit of code, it should probably be done in a separate function.

Instead of tapping into the TODO_RESET code block, it might make more sense, though, to start at the top of the loop, with whatever HEAD is at the moment.

Fix flaky t5516-fetch-push (test case 79 - deny fetch unreachable SHA1, allowtipsha1inwant=true)

This seems to fail every once in a while, especially in Git for Windows' experimental MSVC job of our Azure Pipeline.

The issue seems to be that multiple processes report fatal errors at the same time, and our grep fails to verify that the expected error message was printed because they were interleaved. Example:

++ grep 'remote error:.*not our ref.*64ea4c133d59fa98e86a771eda009872d6ab2886$' err
++ echo 'error: '\''grep remote error:.*not our ref.*64ea4c133d59fa98e86a771eda009872d6ab2886$' 'err'\'' didn'\''t find a match in:'
error: 'grep remote error:.*not our ref.*64ea4c133d59fa98e86a771eda009872d6ab2886$ err' didn't find a match in:
++ test -s err
++ cat err
fatal: git uploadfatal: remote error: upload-pack: not our ref 6-pack: not our ref 64ea4c1334ea4c133d59fa98e86a771eda009872d6ab2886
d59fa98e86a771eda009872d6ab2886

Split the `linux-gcc` in our CI builds into two separate jobs

The linux-gcc job is a bit overloaded: it actually runs the test suite twice. Once with regular options, and once after setting all kinds of GIT_TEST_* options.

Since the running time is dominated by the test suite, not by the build, it would make more sense for those two runs to be run in parallel.

Therefore, let's split linux-gcc into two: a regular one, and on with all the extra options.

Weekly Digest (30 June, 2019 - 7 July, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 4 issues were created.
Of these, 0 issues have been closed and 4 issues are still open.

OPEN ISSUES

πŸ’š #283 Follow-up on top of js/mingw-use-utf8, by dscho
πŸ’š #282 contrib/completion: use __git() in bash completor to avoid aliased tools, by zaquestion
πŸ’š #281 git-prompt: improve cherry-pick/revert detection, by phillipwood
πŸ’š #280 Fix test bug with spaces in file owner, by derrickstolee

NOISY ISSUE

πŸ”ˆ #280 Fix test bug with spaces in file owner, by derrickstolee
It received 8 comments.


PULL REQUESTS

Last week, 26 pull requests were created, updated or merged.

UPDATED PULL REQUEST

Last week, 26 pull requests were updated.
πŸ’› #283 Follow-up on top of js/mingw-use-utf8, by dscho
πŸ’› #282 contrib/completion: use __git() in bash completor to avoid aliased tools, by zaquestion
πŸ’› #281 git-prompt: improve cherry-pick/revert detection, by phillipwood
πŸ’› #280 Fix test bug with spaces in file owner, by derrickstolee
πŸ’› #277 Update git-clone doc: refer to long form of the options and list short form of the options first, by kenden
πŸ’› #276 t3420 remove progress from output, by phillipwood
πŸ’› #275 Quieter sequencer status parsing, by phillipwood
πŸ’› #267 t3404: fix a typo, by dscho
πŸ’› #265 Support building with GCC v8.x/v9.x, by dscho
πŸ’› #263 submodule foreach: fix recursion of options, by momoson
πŸ’› #262 add -p: fix checkout -p with pathological context, by phillipwood
πŸ’› #261 Create 'expire' and 'repack' verbs for git-multi-pack-index, by derrickstolee
πŸ’› #254 [RFC] Create 'core.featureAdoptionRate' setting to update config defaults, by derrickstolee
πŸ’› #253 Make rebase.reschedulefailedexec less overzealous, by dscho
πŸ’› #220 mingw: support spawning programs with paths containing spacesnames, by dscho
πŸ’› #219 Show an error if too-long paths are seen by git clean -dfx, by dscho
πŸ’› #218 Give Git a HOME on Windows, by dscho
πŸ’› #217 gettext(windows): always use UTF-8, by dscho
πŸ’› #216 windows: avoid illegal filenames during a build, by dscho
πŸ’› #215 mingw: enable GCC's stack smashing protector, by dscho
πŸ’› #214 windows: embed a manifest, by dscho
πŸ’› #213 diff: release all handles before running external diff, by dscho
πŸ’› #184 Commit-graph: Write incremental files, by derrickstolee
πŸ’› #151 Fix a test on NTFS (and probably HFS+), by dscho
πŸ’› #149 Fix MSVC support, at long last, by dscho
πŸ’› #147 Let's use the Win32 API more precisely, by dscho


COMMITS

Last week there were no commits.


CONTRIBUTORS

Last week there were no contributors.


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

Weekly Digest (19 May, 2019 - 26 May, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 12 issues were created.
Of these, 0 issues have been closed and 12 issues are still open.

OPEN ISSUES

πŸ’š #224 Use user supplied origin name for extension.partialcone instead of, by delphij
πŸ’š #223 Fix racy fsmonitor, by dscho
πŸ’š #222 trace2: fix tracing when NO_PTHREADS is defined, by jeffhostetler
πŸ’š #221 Fix two issues pointed out by Coverity, by dscho
πŸ’š #220 mingw: support spawning programs with paths containing spacesnames, by dscho
πŸ’š #219 Show an error if too-long paths are seen by git clean -dfx, by dscho
πŸ’š #218 Give Git a HOME on Windows, by dscho
πŸ’š #217 gettext(windows): always use UTF-8, by dscho
πŸ’š #216 windows: avoid illegal filenames during a build, by dscho
πŸ’š #215 mingw: enable GCC's stack smashing protector, by dscho
πŸ’š #214 windows: embed a manifest, by dscho
πŸ’š #213 diff: release all handles before running external diff, by dscho

NOISY ISSUE

πŸ”ˆ #222 trace2: fix tracing when NO_PTHREADS is defined, by jeffhostetler
It received 7 comments.


PULL REQUESTS

Last week, 21 pull requests were created, updated or merged.

OPEN PULL REQUEST

Last week, 3 pull requests were opened.
πŸ’š #220 mingw: support spawning programs with paths containing spacesnames, by dscho
πŸ’š #219 Show an error if too-long paths are seen by git clean -dfx, by dscho
πŸ’š #213 diff: release all handles before running external diff, by dscho

UPDATED PULL REQUEST

Last week, 18 pull requests were updated.
πŸ’› #224 Use user supplied origin name for extension.partialcone instead of, by delphij
πŸ’› #223 Fix racy fsmonitor, by dscho
πŸ’› #222 trace2: fix tracing when NO_PTHREADS is defined, by jeffhostetler
πŸ’› #221 Fix two issues pointed out by Coverity, by dscho
πŸ’› #218 Give Git a HOME on Windows, by dscho
πŸ’› #217 gettext(windows): always use UTF-8, by dscho
πŸ’› #216 windows: avoid illegal filenames during a build, by dscho
πŸ’› #215 mingw: enable GCC's stack smashing protector, by dscho
πŸ’› #214 windows: embed a manifest, by dscho
πŸ’› #208 Close commit-graph before calling 'gc', by derrickstolee
πŸ’› #195 Drop support for git rebase --preserve-merges, by dscho
πŸ’› #194 Clean up after the removal of the scripted rebase, by dscho
πŸ’› #189 trace2: Add variable description to git.txt, by derrickstolee
πŸ’› #184 [RFC] Commit-graph: Write incremental files, by derrickstolee
πŸ’› #149 Fix MSVC support, at long last, by dscho
πŸ’› #148 Windows: add a configuration location to be shared among different Git implementations, by dscho
πŸ’› #147 Let's use the Win32 API more precisely, by dscho
πŸ’› #112 Commit-graph write refactor (was: Create commit-graph file format v2), by derrickstolee


COMMITS

Last week there were 35 commits.
πŸ› οΈ Git 2.22-rc1 Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'js/difftool-no-index' The "--dir-diff" mode of "git difftool" is not useful in "--no-index" mode; they are now explicitly marked as mutually incompatible. * js/difftool-no-index: difftool --no-index: error out on --dir-diff (and don't crash) by gitster
πŸ› οΈ Merge branch 'jk/get-oid-indexed-object-name' The codepath to parse : that obtains the object name for an indexed object has been made more robust. * jk/get-oid-indexed-object-name: get_oid: handle NULL repo->index by gitster
πŸ› οΈ Merge branch 'jc/set-packet-header-signature-fix' Code clean-up. * jc/set-packet-header-signature-fix: pkt-line: drop 'const'-ness of a param to set_packet_header() by gitster
πŸ› οΈ Merge branch 'cb/http-push-null-in-message-fix' Code clean-up. * cb/http-push-null-in-message-fix: http-push: prevent format overflow warning with gcc >= 9 by gitster
πŸ› οΈ Merge branch 'js/stash-in-c-use-builtin-doc' Doc update. * js/stash-in-c-use-builtin-doc: stash: document stash.useBuiltin by gitster
πŸ› οΈ Merge branch 'tz/test-lib-check-working-jgit' A prerequiste check in the test suite to see if a working jgit is available was made more robust. * tz/test-lib-check-working-jgit: test-lib: try harder to ensure a working jgit by gitster
πŸ› οΈ Merge branch 'js/parseopt-unknown-cb-returns-an-enum' Code clean-up. * js/parseopt-unknown-cb-returns-an-enum: parse-options: adjust parse_opt_unknown_cb()s declared return type by gitster
πŸ› οΈ Merge branch 'ab/sha1dc' Update collision-detecting SHA-1 code to build properly on HP-UX. * ab/sha1dc: sha1dc: update from upstream by gitster
πŸ› οΈ Merge branch 'js/rebase-i-label-shown-in-status-fix' "git status" did not know that the "label" instruction in the todo-list "rebase -i -r" uses should not be shown as a hex object name. * js/rebase-i-label-shown-in-status-fix: status: fix display of rebase -ir's label command by gitster
πŸ› οΈ Merge branch 'es/check-non-portable-pre-5.10' Developer support update. * es/check-non-portable-pre-5.10: check-non-portable-shell: support Perl versions older than 5.10 by gitster
πŸ› οΈ Merge branch 'ds/trace2-document-env-vars' Doc update. * ds/trace2-document-env-vars: trace2: add variable description to git.txt by gitster
πŸ› οΈ Merge branch 'js/fsmonitor-refresh-after-discarding-index' The fsmonitor interface got out of sync after the in-core index file gets discarded, which has been corrected. * js/fsmonitor-refresh-after-discarding-index: fsmonitor: force a refresh after the index was discarded fsmonitor: demonstrate that it is not refreshed after discard_index() by gitster
πŸ› οΈ Merge branch 'cm/notes-comment-fix' A stale in-code comment has been updated. * cm/notes-comment-fix: notes: correct documentation of format_display_notes() by gitster
πŸ› οΈ Merge branch 'tt/no-ipv6-fallback-for-winxp' Code cleanup. * tt/no-ipv6-fallback-for-winxp: mingw: remove obsolete IPv6-related code by gitster
πŸ› οΈ Merge branch 'js/t5580-unc-alternate-test' An additional test for MinGW * js/t5580-unc-alternate-test: t5580: verify that alternates can be UNC paths by gitster
πŸ› οΈ Merge branch 'ds/cvsexportcommit-force-text' "git cvsexportcommit" running on msys did not expect cvsnt showed "cvs status" output with CRLF line endings. * ds/cvsexportcommit-force-text: cvsexportcommit: force crlf translation by gitster
πŸ› οΈ Merge branch 'sg/ci-libsvn-perl' To run tests for Git SVN, our scripts for CI used to install the git-svn package (in the hope that it would bring in the right dependencies). This has been updated to install the more direct dependency, namely, libsvn-perl. * sg/ci-libsvn-perl: ci: install 'libsvn-perl' instead of 'git-svn' by gitster
πŸ› οΈ Merge branch 'bl/t4253-exit-code-from-format-patch' Avoid patterns to pipe output from a git command to feed another command in tests. * bl/t4253-exit-code-from-format-patch: t4253-am-keep-cr-dos: avoid using pipes by gitster
πŸ› οΈ Merge branch 'ds/midx-too-many-packs' The code to generate the multi-pack idx file was not prepared to see too many packfiles and ran out of open file descriptor, which has been corrected. * ds/midx-too-many-packs: midx: add packs to packed_git linked list midx: pass a repository pointer by gitster
πŸ› οΈ Merge branch 'en/unicode-in-refnames' On a filesystem like HFS+, the names of the refs stored as filesystem entities may become different from what the end-user expects, just like files in the working tree get "renamed". Work around the mismatch by paying attention to the core.precomposeUnicode configuration. * en/unicode-in-refnames: Honor core.precomposeUnicode in more places by gitster
πŸ› οΈ Merge branch 'dl/difftool-mergetool' Update "git difftool" and "git mergetool" so that the combinations of {diff,merge}.{tool,guitool} configuration variables serve as fallback settings of each other in a sensible order. * dl/difftool-mergetool: difftool: fallback on merge.guitool difftool: make --gui, --tool and --extcmd mutually exclusive mergetool: fallback to tool when guitool unavailable mergetool--lib: create gui_mode function mergetool: use get_merge_tool function t7610: add mergetool --gui tests t7610: unsuppress output by gitster
πŸ› οΈ Merge branch 'mh/http-fread-api-fix' A pair of private functions in http.c that had names similar to fread/fwrite did not return the number of elements, which was found to be confusing. * mh/http-fread-api-fix: Make fread/fwrite-like functions in http.c more like fread/fwrite. by gitster
πŸ› οΈ Merge branch 'js/t6500-use-windows-pid-on-mingw' Future-proof a test against an update to MSYS2 runtime v3.x series. * js/t6500-use-windows-pid-on-mingw: t6500(mingw): use the Windows PID of the shell by gitster
πŸ› οΈ Merge branch 'jk/apache-lsan' Allow tests that involve httpd to be run under leak sanitizer, just like we can already do so under address sanitizer. * jk/apache-lsan: t/lib-httpd: pass LSAN_OPTIONS through apache by gitster
πŸ› οΈ Merge branch 'nd/parse-options-aliases' Attempt to use an abbreviated option in "git clone --recurs" is responded by a request to disambiguate between --recursive and --recurse-submodules, which is bad because these two are synonyms. The parse-options API has been extended to define such synonyms more easily and not produce an unnecessary failure. * nd/parse-options-aliases: parse-options: don't emit "ambiguous option" for aliases by gitster
πŸ› οΈ Merge branch 'dl/branch-from-3dot-merge-base' "git branch new A...B" and "git checkout -b new A...B" have been taught that in their contexts, the notation A...B means "the merge base between these two commits", just like "git checkout A...B" detaches HEAD at that commit. * dl/branch-from-3dot-merge-base: branch: make create_branch accept a merge base rev t2018: cleanup in current test by gitster
πŸ› οΈ Merge branch 'js/commit-graph-parse-leakfix' Leakfix. * js/commit-graph-parse-leakfix: commit-graph: fix memory leak by gitster
πŸ› οΈ Merge branch 'jk/cocci-batch' Optionally "make coccicheck" can feed multiple source files to spatch, gaining performance while spending more memory. * jk/cocci-batch: coccicheck: make batch size of 0 mean "unlimited" coccicheck: optionally batch spatch invocations by gitster
πŸ› οΈ Merge branch 'ab/perf-installed-fix' Performance test framework has been broken and measured the version of Git that happens to be on $PATH, not the specified one to measure, for a while, which has been corrected. * ab/perf-installed-fix: perf-lib.sh: forbid the use of GIT_TEST_INSTALLED perf tests: add "bindir" prefix to git tree test results perf-lib.sh: remove GIT_TEST_INSTALLED from perf-lib.sh perf-lib.sh: make "./run " use the correct gits perf aggregate: remove GIT_TEST_INSTALLED from --codespeed perf README: correct docs for 3c8f12c96c regression by gitster
πŸ› οΈ Merge branch 'id/windows-dep-aslr' Allow DEP and ASLR for Windows build to for security hardening. * id/windows-dep-aslr: mingw: enable DEP and ASLR mingw: do not let ld strip relocations by gitster
πŸ› οΈ Merge branch 'ab/trace2-typofix' Typofix. * ab/trace2-typofix: trace2: fix up a missing "leave" entry point by gitster
πŸ› οΈ Merge branch 'nd/submodule-helper-incomplete-line-fix' Typofix. * nd/submodule-helper-incomplete-line-fix: submodule--helper: add a missing \n by gitster
πŸ› οΈ Merge branch 'cw/diff-highlight' Portability fix for a diff-highlight tool (in contrib/). * cw/diff-highlight: diff-highlight: use correct /dev/null for UNIX and Windows by gitster
πŸ› οΈ Merge branch 'dl/warn-tagging-a-tag' Typofix. * dl/warn-tagging-a-tag: tag: fix typo in nested tagging hint by gitster


CONTRIBUTORS

Last week there was 1 contributor.
πŸ‘€ gitster


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

Weekly Digest (14 July, 2019 - 21 July, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 4 issues were created.
Of these, 0 issues have been closed and 4 issues are still open.

OPEN ISSUES

πŸ’š #290 Travis CI: Lint for Python syntax errors and undefined names, by cclauss
πŸ’š #289 Fix rendering of text in angle brackets in README.md, by dilijev
πŸ’š #288 ci: automatically build Git using MSVC in our Azure Pipeline, by dscho
πŸ’š #287 Reinstate support for Visual Studio, by dscho

NOISY ISSUE

πŸ”ˆ #287 Reinstate support for Visual Studio, by dscho
It received 11 comments.


PULL REQUESTS

Last week, 12 pull requests were created, updated or merged.

UPDATED PULL REQUEST

Last week, 12 pull requests were updated.
πŸ’› #290 Travis CI: Lint for Python syntax errors and undefined names, by cclauss
πŸ’› #289 Fix rendering of text in angle brackets in README.md, by dilijev
πŸ’› #288 ci: automatically build Git using MSVC in our Azure Pipeline, by dscho
πŸ’› #287 Reinstate support for Visual Studio, by dscho
πŸ’› #285 Update gpg.txt to correct gpg --verify syntax, by rtmorgan
πŸ’› #264 Adding git-ignore command, tests, and documentation., by tstone2077
πŸ’› #254 [RFC] Create 'core.featureAdoptionRate' setting to update config defaults, by derrickstolee
πŸ’› #220 mingw: support spawning programs with paths containing spacesnames, by dscho
πŸ’› #219 Show an error if too-long paths are seen by git clean -dfx, by dscho
πŸ’› #213 diff: release all handles before running external diff, by dscho
πŸ’› #170 git add -i: add a rudimentary version in C (supporting only status and help so far), by dscho
πŸ’› #145 Avoid spawning gzip in git archive, by dscho


COMMITS

Last week there were 18 commits.
πŸ› οΈ The sixth batch Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'ma/ref-filter-leakfix' Leakfix. * ma/ref-filter-leakfix: ref-filter: fix memory leak in free_array_item() by gitster
πŸ› οΈ Merge branch 'js/trace2-signo-typofix' Documentation fix. * js/trace2-signo-typofix: trace2: correct trace2 field name documentation by gitster
πŸ› οΈ Merge branch 'kb/mingw-set-home' Windows port update. * kb/mingw-set-home: mingw: initialize HOME on startup by gitster
πŸ› οΈ Merge branch 'ea/merge-code-cleanup' A loop has been rewritten for conciseness and clarity. * ea/merge-code-cleanup: builtin/merge.c - cleanup of code in for-cycle that tests strategies by gitster
πŸ› οΈ Merge branch 'jl/status-reduce-vertical-blank' Extra blank lines in "git status" output have been reduced. * jl/status-reduce-vertical-blank: status: remove the empty line after hints by gitster
πŸ› οΈ Merge branch 'pw/rebase-progress-test-cleanup' Test cleanup. * pw/rebase-progress-test-cleanup: t3420: remove progress lines before comparing output by gitster
πŸ› οΈ Merge branch 'pw/prompt-cherry-pick-revert-fix' When one step in multi step cherry-pick or revert is reset or committed, the command line prompt script failed to notice the current status, which has been improved. * pw/prompt-cherry-pick-revert-fix: git-prompt: improve cherry-pick/revert detection by gitster
πŸ› οΈ Merge branch 'ew/repack-with-bitmaps-by-default' Generation of pack bitmaps are now disabled when .keep files exist, as these are mutually exclusive features. * ew/repack-with-bitmaps-by-default: repack: disable bitmaps-by-default if .keep files exist by gitster
πŸ› οΈ Merge branch 'jk/check-connected-with-alternates' The tips of refs from the alternate object store can be used as starting point for reachability computation now. * jk/check-connected-with-alternates: check_everything_connected: assume alternate ref tips are valid object-store.h: move for_each_alternate_ref() from transport.h by gitster
πŸ› οΈ Merge branch 'nd/tree-walk-with-repo' The tree-walk API learned to pass an in-core repository instance throughout more codepaths. * nd/tree-walk-with-repo: t7814: do not generate same commits in different repos Use the right 'struct repository' instead of the_repository match-trees.c: remove the_repo from shift_tree*() tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks() tree-walk.c: remove the_repo from get_tree_entry() tree-walk.c: remove the_repo from fill_tree_descriptor() sha1-file.c: remove the_repo from read_object_with_reference() by gitster
πŸ› οΈ Merge branch 'ra/cherry-pick-revert-skip' "git cherry-pick/revert" learned a new "--skip" action. * ra/cherry-pick-revert-skip: cherry-pick/revert: advise using --skip cherry-pick/revert: add --skip option sequencer: use argv_array in reset_merge sequencer: rename reset_for_rollback to reset_merge sequencer: add advice for revert by gitster
πŸ› οΈ Merge branch 'tb/ref-filter-multiple-patterns' "git for-each-ref" with multiple patterns have been optimized. * tb/ref-filter-multiple-patterns: ref-filter.c: find disjoint pattern prefixes by gitster
πŸ› οΈ Merge branch 'pw/status-with-corrupt-sequencer-state' The code to read state files used by the sequencer machinery for "git status" has been made more robust against a corrupt or stale state files. * pw/status-with-corrupt-sequencer-state: status: do not report errors in sequencer/todo sequencer: factor out todo command name parsing sequencer: always allow tab after command name by gitster
πŸ› οΈ Merge branch 'ds/commit-graph-incremental' The commits in a repository can be described by multiple commit-graph files now, which allows the commit-graph files to be updated incrementally. * ds/commit-graph-incremental: commit-graph: test verify across alternates commit-graph: normalize commit-graph filenames commit-graph: test --split across alternate without --split commit-graph: test octopus merges with --split commit-graph: clean up chains after flattened write commit-graph: verify chains with --shallow mode commit-graph: create options for split files commit-graph: expire commit-graph files commit-graph: allow cross-alternate chains commit-graph: merge commit-graph chains commit-graph: add --split option to builtin commit-graph: write commit-graph chains commit-graph: rearrange chunk count logic commit-graph: add base graphs chunk commit-graph: load commit-graph chains commit-graph: rename commit_compare to oid_compare commit-graph: prepare for commit-graph chains commit-graph: document commit-graph chains by gitster
πŸ› οΈ Merge branch 'br/blame-ignore' "git blame" learned to "ignore" commits in the history, whose effects (as well as their presence) get ignored. * br/blame-ignore: t8014: remove unnecessary braces blame: drop some unused function parameters blame: add a test to cover blame_coalesce() blame: use the fingerprint heuristic to match ignored lines blame: add a fingerprint heuristic to match ignored lines blame: optionally track line fingerprints during fill_blame_origin() blame: add config options for the output of ignored or unblamable lines blame: add the ability to ignore commits and their changes blame: use a helper function in blame_chunk() Move oidset_parse_file() to oidset.c fsck: rename and touch up init_skiplist() by gitster
πŸ› οΈ Merge branch 'cc/test-oidmap' Extend the test coverage a bit. * cc/test-oidmap: t0016: add 'remove' subcommand test test-oidmap: remove 'add' subcommand test-hashmap: remove 'hash' command oidmap: use sha1hash() instead of static hash() function t: add t0016-oidmap.sh t/helper: add test-oidmap.c by gitster
πŸ› οΈ Merge branch 'ds/midx-expire-repack' "git multi-pack-index" learned expire and repack subcommands. * ds/midx-expire-repack: t5319: use 'test-tool path-utils' instead of 'ls -l' t5319-multi-pack-index.sh: test batch size zero midx: add test that 'expire' respects .keep files multi-pack-index: test expire while adding packs midx: implement midx_repack() multi-pack-index: prepare 'repack' subcommand multi-pack-index: implement 'expire' subcommand midx: refactor permutation logic and pack sorting midx: simplify computation of pack name lengths multi-pack-index: prepare for 'expire' subcommand Docs: rearrange subcommands for multi-pack-index repack: refactor pack deletion for future use by gitster


CONTRIBUTORS

Last week there was 1 contributor.
πŸ‘€ gitster


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

Fix inconsistent regexp usage

If you supply --perl-regexp to git log it only applies to --grep. The documentation says "Consider the limiting patterns to be Perl-compatible regular expressions". Which might lead you to think that e.g. -G uses it too. It doesn't, only grep.c does PCRE, but -G is handled by diffcore-pickaxe.c.

Looking at git grep -l regexec -- '*.c' this whole thing is a mess. Ideally you should be able to say you want to use PCRE for everything, except maybe things that end up in your .gitconfig or e.g. the diff driver. But we could really use a more generic regexp interface.

In general Git's regexp use is a huge mess, e.g. there's --regexp-ignore-case but no way to supply various other regexp options like REG_NEWLINE or PCRE options consistently.

Copy-munged from: https://public-inbox.org/git/CACBZZX5wdnA-96e11edE7xRnAHo19RFTrZmqFQj-0ogLOJTncQ@mail.gmail.com/

Don't run Cocci on compat/ files that are pulled externally

Since some files in compat/ are pulled externally, ideally we should not update them unless absolutely necessary. As a result, we should find what these files are and blacklist Cocci from being run on them.

One thing to consider, some files are Windows-only and are never Coccinelled whenever we compile on Windows. Do we want to make Cocci run on all files, regardless of whether or not they're compilable on the current platform? Upside is that Szeder found some files that could be patched that we weren't catching. Downside is that there is no way to test the code to ensure that it works properly.

Another stretch goal is to do the extern removal on files that we do own in compat/, since those were explicitly excluded during the big extern cleanup since those were intentionally excluded in b199d71 (.[ch]: remove extern from function declarations using sed, 2019-04-29) and 5545442 (.[ch]: remove extern from function declarations using spatch, 2019-04-29).

Implement command-line options to change `branch.<name>.remote/pushRemote` configs

Perhaps something like --set-remote-to, --set-push-remote-to, --set-remote-save-to-push?

For the last, this would behave similarly to f39a9c6 (remote: add --save-to-push option to git remote set-url, 2018-12-10).

That option is useful for a situation such as mirroring. Consider if I wanted to mirror an upstream branch on my own remote. I would have something such as

[branch "master"]
    remote = "upstream"
    pushRemote = "origin"

in my config.

We could make this efficient to setup by doing:

git checkout master # is currently tracking origin's master
git branch --set-remote-save-to-push upstream

This is already implemented here but I think this idea might be a little too stupid to contribute. Maybe I'll send it in one day...

Make `git diff ..` less confusing for newbies

It's pretty ridiculous how the meaning of .. and ... is exactly swapped for log and diff: log A..B is changes from merge base to B which is what diff A...B does

-phiresky link

The semantics of .. vs ... are essentially swapped between diff and the log family of commands. This is because diff uses setup_revisions but abuses the way that the returned endpoints are used.

There are several options to deal with this:

  • Print a warning into the output if a user uses git diff A..B instead of git diff A B (see here)

  • Update the documentation for git-diff so that it's obvious why this is happening (so we tell users about how range-notation is implemented). Upside is users will understand why git diff foo@^! works as well. Downside is that I'm not sure it's productive to expose implementation details to end-uers.

  • Swap the meaning of .. and .... One can dream...

  • Something else? I've been mulling over it and not wanting to contribute a patch because there might be some cleaner way to resolve this. Not really sure how.

See:

Weekly Digest (9 June, 2019 - 16 June, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 7 issues were created.
Of these, 0 issues have been closed and 7 issues are still open.

OPEN ISSUES

πŸ’š #267 t3404: fix a typo, by dscho
πŸ’š #266 ci: split linux-gcc into linux-gcc and linux-gcc-extra, by dscho
πŸ’š #265 Support building with GCC v8.x/v9.x, by dscho
πŸ’š #264 Adding git-ignore command, tests, and documentation., by tstone2077
πŸ’š #263 submodule foreach: fix recursion of options, by momoson
πŸ’š #262 add -p: fix checkout -p with pathological context, by phillipwood
πŸ’š #261 Create 'expire' and 'repack' verbs for git-multi-pack-index, by derrickstolee

NOISY ISSUE

πŸ”ˆ #262 add -p: fix checkout -p with pathological context, by phillipwood
It received 11 comments.


PULL REQUESTS

Last week, 18 pull requests were created, updated or merged.

UPDATED PULL REQUEST

Last week, 18 pull requests were updated.
πŸ’› #267 t3404: fix a typo, by dscho
πŸ’› #266 ci: split linux-gcc into linux-gcc and linux-gcc-extra, by dscho
πŸ’› #265 Support building with GCC v8.x/v9.x, by dscho
πŸ’› #264 Adding git-ignore command, tests, and documentation., by tstone2077
πŸ’› #263 submodule foreach: fix recursion of options, by momoson
πŸ’› #262 add -p: fix checkout -p with pathological context, by phillipwood
πŸ’› #261 Create 'expire' and 'repack' verbs for git-multi-pack-index, by derrickstolee
πŸ’› #228 sha1-file: split OBJECT_INFO_FOR_PREFETCH, by derrickstolee
πŸ’› #223 Fix racy fsmonitor, by dscho
πŸ’› #221 Fix two issues pointed out by Coverity, by dscho
πŸ’› #196 status: remove the empty line after hints, by johnlinp
πŸ’› #189 trace2: Add variable description to git.txt, by derrickstolee
πŸ’› #184 Commit-graph: Write incremental files, by derrickstolee
πŸ’› #183 p4: fix "Not a valid object name HEAD0" when unshelving, by mdymike
πŸ’› #151 Fix a test on NTFS (and probably HFS+), by dscho
πŸ’› #145 Avoid spawning gzip in git archive, by dscho
πŸ’› #142 Optimize run_diff_files()' rename detection, by dscho
πŸ’› #112 Commit-graph write refactor (was: Create commit-graph file format v2), by derrickstolee


COMMITS

Last week there were 17 commits.
πŸ› οΈ The first batch after 2.22 Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'pw/rebase-edit-message-for-replayed-merge' A "merge -c" instruction during "git rebase --rebase-merges" should give the user a chance to edit the log message, even when there is otherwise no need to create a new merge and replace the existing one (i.e. fast-forward instead), but did not. Which has been corrected. * pw/rebase-edit-message-for-replayed-merge: rebase -r: always reword merge -c by gitster
πŸ› οΈ Merge branch 'ab/deprecate-R-for-dynpath' The way of specifying the path to find dynamic libraries at runtime has been simplified. The old default to pass -R/path/to/dir has been replaced with the new default to pass -Wl,-rpath,/path/to/dir, which is the more recent GCC uses. Those who need to build with an old GCC can still use "CC_LD_DYNPATH=-R" * ab/deprecate-R-for-dynpath: Makefile: remove the NO_R_TO_GCC_LINKER flag by gitster
πŸ› οΈ Merge branch 'mh/import-transport-fd-fix' The ownership rule for the file descriptor to fast-import remote backend was mixed up, leading to unrelated file descriptor getting closed, which has been fixed. * mh/import-transport-fd-fix: Use xmmap_gently instead of xmmap in use_pack dup() the input fd for fast-import used for remote helpers by gitster
πŸ› οΈ Merge branch 'ew/update-server-info' "git update-server-info" learned not to rewrite the file with the same contents. * ew/update-server-info: update-server-info: avoid needless overwrites by gitster
πŸ› οΈ Merge branch 'jk/help-unknown-ref-fix' Improve the code to show args with potential typo that cannot be interpreted as a commit-ish. * jk/help-unknown-ref-fix: help_unknown_ref(): check for refname ambiguity help_unknown_ref(): duplicate collected refnames by gitster
πŸ› οΈ Merge branch 'dl/format-patch-notes-config' "git format-patch" learns a configuration to set the default for its --notes= option. * dl/format-patch-notes-config: format-patch: teach format.notes config option git-format-patch.txt: document --no-notes option by gitster
πŸ› οΈ Merge branch 'nd/merge-quit' "git merge" learned "--quit" option that cleans up the in-progress merge while leaving the working tree and the index still in a mess. * nd/merge-quit: merge: add --quit merge: remove drop_save() in favor of remove_merge_branch_state() by gitster
πŸ› οΈ Merge branch 'ab/fail-prereqs-in-test' Developer support to emulate unsatisfied prerequisites in tests to ensure that the remainer of the tests still succeeds when tests with prerequisites are skipped. * ab/fail-prereqs-in-test: tests: add a special setup where prerequisites fail by gitster
πŸ› οΈ Merge branch 'nd/corrupt-worktrees' "git worktree add" used to fail when another worktree connected to the same repository was corrupt, which has been corrected. * nd/corrupt-worktrees: worktree add: be tolerant of corrupt worktrees by gitster
πŸ› οΈ Merge branch 'js/rebase-cleanup' Update supporting parts of "git rebase" to remove code that should no longer be used. * js/rebase-cleanup: rebase: fold git-rebase--common into the -p backend sequencer: the am and rebase--interactive scripts are gone .gitignore: there is no longer a built-in git-rebase--interactive t3400: stop referring to the scripted rebase Drop unused git-rebase--am.sh by gitster
πŸ› οΈ Merge branch 'nd/worktree-name-sanitization' In recent versions of Git, per-worktree refs are exposed in refs/worktrees// hierarchy, which means that worktree names must be a valid refname component. The code now sanitizes the names given to worktrees, to make sure these refs are well-formed. * nd/worktree-name-sanitization: worktree add: sanitize worktree names by gitster
πŸ› οΈ Merge branch 'en/fast-export-encoding' The "git fast-export/import" pair has been taught to handle commits with log messages in encoding other than UTF-8 better. * en/fast-export-encoding: fast-export: do automatic reencoding of commit messages only if requested fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8 fast-export: avoid stripping encoding header if we cannot reencode fast-import: support 'encoding' commit header t9350: fix encoding test to actually test reencoding by gitster
πŸ› οΈ Merge branch 'jk/unused-params-final-batch' * jk/unused-params-final-batch: verify-commit: simplify parameters to run_gpg_verify() show-branch: drop unused parameter from show_independent() rev-list: drop unused void pointer from finish_commit() remove_all_fetch_refspecs(): drop unused "remote" parameter receive-pack: drop unused "commands" from prepare_shallow_update() pack-objects: drop unused rev_info parameters name-rev: drop unused parameters from is_better_name() mktree: drop unused length parameter wt-status: drop unused status parameter read-cache: drop unused parameter from threaded load clone: drop dest parameter from copy_alternates() submodule: drop unused prefix parameter from some functions builtin: consistently pass cmd_* prefix to parse_options cmd_{read,write}_tree: rename "unused" variable that is used by gitster
πŸ› οΈ Merge branch 'sb/format-patch-base-patch-id-fix' The "--base" option of "format-patch" computed the patch-ids for prerequisite patches in an unstable way, which has been updated to compute in a way that is compatible with "git patch-id --stable". * sb/format-patch-base-patch-id-fix: format-patch: make --base patch-id output stable format-patch: inform user that patch-id generation is unstable by gitster
πŸ› οΈ Merge branch 'nd/init-relative-template-fix' A relative pathname given to "git init --template= " ought to be relative to the directory "git init" gets invoked in, but it instead was made relative to the repository, which has been corrected. * nd/init-relative-template-fix: init: make --template path relative to $CWD by gitster
πŸ› οΈ Merge branch 'ab/send-email-transferencoding-fix' Since "git send-email" learned to take 'auto' as the value for the transfer-encoding, it by mistake stopped honoring the values given to the configuration variables sendemail.transferencoding and/or sendemail..transferencoding. This has been corrected to (finally) redoing the order of setting the default, reading the configuration and command line options. * ab/send-email-transferencoding-fix: send-email: fix regression in sendemail.identity parsing send-email: document --no-[to|cc|bcc] send-email: fix broken transferEncoding tests send-email: remove cargo-culted multi-patch pattern in tests send-email: do defaults -> config -> getopt in that order send-email: rename the @bcclist variable for consistency send-email: move the read_config() function above getopts by gitster


CONTRIBUTORS

Last week there was 1 contributor.
πŸ‘€ gitster


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

Fix formatting of config values in documentation

Currently, in our config documentation, there are many inconsistencies with the way values are being marked up. This patch is a very small start but we should try to go through all of the config/*.txt files and mark up config values with surrounding backticks. This way, it'll be obvious that these are special values that a user should pay attention to.

In particular, true and false are major offenders for not being surrounded by backticks.

Add documentation for "git commit --date=now"

There are some special strings that we can pass to --date in git commit, e.g. now, yesterday, noon, tea...

Personally I think --date=now is the most useful because I will use it with git commit --amend. I guess we don't have to make an exhaustive list of special strings in the documentation, but I think we can at least mention now.

range-diff: allow comparing branches to mboxes

A neat trick that could come in real handy at times would be to teach git range-diff to compare a local branch to a patch series that is provided as an mbox, e.g. to use git range-diff to see
whether a given patch series on the mailing list has made it into git.git's pu branch yet.

We could introduce range-diff mbox:<file> A..B for that, for example.

This would still require some scripting to e.g. pull down the mbox files of a patch series from https://public-inbox.org/git.

But it would solve the problem where current range-diff requires local branches, and therefore the user would have to find a commit where the patch series actually applies first.

Weekly Digest (23 June, 2019 - 30 June, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 4 issues were created.
Of these, 1 issues have been closed and 3 issues are still open.

OPEN ISSUES

πŸ’š #277 Update git-clone doc: refer to long option, by kenden
πŸ’š #276 t3420 remove progress from output, by phillipwood
πŸ’š #275 Quieter sequencer status parsing, by phillipwood

CLOSED ISSUES

❀️ #278 l10n: de.po: Fix German translation, by derphilipp

NOISY ISSUE

πŸ”ˆ #275 Quieter sequencer status parsing, by phillipwood
It received 13 comments.


PULL REQUESTS

Last week, 22 pull requests were created, updated or merged.

UPDATED PULL REQUEST

Last week, 22 pull requests were updated.
πŸ’› #277 Update git-clone doc: refer to long option, by kenden
πŸ’› #275 Quieter sequencer status parsing, by phillipwood
πŸ’› #273 fetch: add --[no-]show-forced-updates, by derrickstolee
πŸ’› #272 git-status: create config for ahead/behind calculation, by derrickstolee
πŸ’› #269 Wip/fixΒ  continue/ skipΒ inΒ synopsis, by phillipwood
πŸ’› #267 t3404: fix a typo, by dscho
πŸ’› #266 ci: split linux-gcc into linux-gcc and linux-gcc-extra, by dscho
πŸ’› #265 Support building with GCC v8.x/v9.x, by dscho
πŸ’› #263 submodule foreach: fix recursion of options, by momoson
πŸ’› #262 add -p: fix checkout -p with pathological context, by phillipwood
πŸ’› #261 Create 'expire' and 'repack' verbs for git-multi-pack-index, by derrickstolee
πŸ’› #254 [RFC] Create 'core.featureAdoptionRate' setting to update config defaults, by derrickstolee
πŸ’› #253 Make rebase.reschedulefailedexec less overzealous, by dscho
πŸ’› #217 gettext(windows): always use UTF-8, by dscho
πŸ’› #215 mingw: enable GCC's stack smashing protector, by dscho
πŸ’› #214 windows: embed a manifest, by dscho
πŸ’› #184 Commit-graph: Write incremental files, by derrickstolee
πŸ’› #151 Fix a test on NTFS (and probably HFS+), by dscho
πŸ’› #149 Fix MSVC support, at long last, by dscho
πŸ’› #147 Let's use the Win32 API more precisely, by dscho
πŸ’› #123 fixup! trace2: collect Windows-specific process information, by jeffhostetler
πŸ’› #112 Commit-graph write refactor (was: Create commit-graph file format v2), by derrickstolee


COMMITS

Last week there were no commits.


CONTRIBUTORS

Last week there were no contributors.


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

Weekly Digest (26 May, 2019 - 2 June, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 26 issues were created.
Of these, 2 issues have been closed and 24 issues are still open.

OPEN ISSUES

πŸ’š #251 Turn the fetch_if_missing global into a field of struct repository, by dscho
πŸ’š #250 Implement command-line options to change branch.<name>.remote/pushRemote configs, by Denton-L
πŸ’š #249 Make git diff .. less confusing for newbies, by Denton-L
πŸ’š #248 Don't run Cocci on compat/ files that are pulled externally, by Denton-L
πŸ’š #247 format.outputDirectory should be based on the top of the repository, by Denton-L
πŸ’š #246 Make Git subcommand documentation more consistent, by Denton-L
πŸ’š #245 Investigate -Wformat-signedness, by Denton-L
πŸ’š #244 Fix formatting of config values in documentation, by Denton-L
πŸ’š #243 Document --stdin (and other options in setup_revisions), by Denton-L
πŸ’š #242 Split the linux-gcc in our CI builds into two separate jobs, by dscho
πŸ’š #241 Fix flaky "t0021.15 required process filter should filter data", by dscho
πŸ’š #240 Fix flaky "t5516.81 deny fetch unreachable SHA1, allowtipsha1inwant=false", by dscho
πŸ’š #239 some PRs need effective rebasing between gfs and upstream git., by PhilipOakley
πŸ’š #238 Document that Unspecified options should initialize to -1, by PhilipOakley
πŸ’š #237 CodingGuidelines: recommend to use -1 for unspecified values of command-line options of config settings, by PhilipOakley
πŸ’š #236 Invent a way to retain reflogs for a while after the ref was deleted, by dscho
πŸ’š #235 Fix inconsistent regexp usage, by dscho
πŸ’š #234 Add another set of GIT_{AUTHOR,COMMITTER}_{NAME,EMAIL} with lower priorities, by dscho
πŸ’š #233 Add more config IncludeIf conditions, by dscho
πŸ’š #231 Teach git stash and git commit the -A option, by dscho
πŸ’š #230 Reconcile dir_exists() and is_directory(), by dscho
πŸ’š #229 git-completion: sanitize the command names, by MrMebelMan
πŸ’š #228 sha1-file: split OBJECT_INFO_FOR_PREFETCH, by derrickstolee
πŸ’š #226 bundle verify: improve the user experience when called without a .git/ directory, by dscho

CLOSED ISSUES

❀️ #232 Having grep support the -o option like GNU grep et al, by dscho
❀️ #227 Deprecate git rebase -p even more, by dscho

NOISY ISSUE

πŸ”ˆ #227 Deprecate git rebase -p even more, by dscho
It received 12 comments.


PULL REQUESTS

Last week, 16 pull requests were created, updated or merged.

UPDATED PULL REQUEST

Last week, 16 pull requests were updated.
πŸ’› #238 Document that Unspecified options should initialize to -1, by PhilipOakley
πŸ’› #229 git-completion: sanitize the command names, by MrMebelMan
πŸ’› #228 sha1-file: split OBJECT_INFO_FOR_PREFETCH, by derrickstolee
πŸ’› #226 bundle verify: improve the user experience when called without a .git/ directory, by dscho
πŸ’› #223 Fix racy fsmonitor, by dscho
πŸ’› #221 Fix two issues pointed out by Coverity, by dscho
πŸ’› #219 Show an error if too-long paths are seen by git clean -dfx, by dscho
πŸ’› #208 Close commit-graph before calling 'gc', by derrickstolee
πŸ’› #196 status: remove the empty line after hints, by johnlinp
πŸ’› #195 Drop support for git rebase --preserve-merges, by dscho
πŸ’› #194 Clean up after the removal of the scripted rebase, by dscho
πŸ’› #189 trace2: Add variable description to git.txt, by derrickstolee
πŸ’› #184 [RFC] Commit-graph: Write incremental files, by derrickstolee
πŸ’› #183 p4: fix "Not a valid object name HEAD0" when unshelving, by mdymike
πŸ’› #177 documentation: add lab for first contribution, by nasamuffin
πŸ’› #112 Commit-graph write refactor (was: Create commit-graph file format v2), by derrickstolee


COMMITS

Last week there were 23 commits.
πŸ› οΈ Git 2.22-rc2 Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'js/rebase-config-bitfix' * js/rebase-config-bitfix: rebase: replace incorrect logical negation by correct bitwise one by gitster
πŸ› οΈ Merge branch 'es/doc-gitsubmodules-markup' Doc markup fix. * es/doc-gitsubmodules-markup: gitsubmodules: align html and nroff lists by gitster
πŸ› οΈ Merge branch 'ja/diff-opt-typofix' Typofix. * ja/diff-opt-typofix: diff: fix mistake in translatable strings by gitster
πŸ› οΈ Merge branch 'jt/clone-server-option' A brown-paper-bag bugfix to a change already in 'master'. * jt/clone-server-option: fetch-pack: send server options after command by gitster
πŸ› οΈ Merge branch 'sg/progress-off-by-one-fix' A brown-paper-bag bugfix to a change already in 'master'. * sg/progress-off-by-one-fix: progress: avoid empty line when breaking the progress line by gitster
πŸ› οΈ Merge branch 'js/rebase-deprecate-preserve-merges' A bit more leftover clean-up to deprepcate "rebase -p". * js/rebase-deprecate-preserve-merges: rebase docs: recommend -r over -p docs: say that --rebase=preserve is deprecated tests: mark a couple more test cases as requiring rebase -p by gitster
πŸ› οΈ Merge branch 'sg/trace2-rename' Rename environment variables that are used to control the "trace2" mechanism to a more readable name. * sg/trace2-rename: trace2: document the supported values of GIT_TRACE2* env variables trace2: rename environment variables to GIT_TRACE2* by gitster
πŸ› οΈ Merge branch 'jh/trace2' * jh/trace2: trace2: fix tracing when NO_PTHREADS is defined by gitster
πŸ› οΈ Merge branch 'nd/diff-parseopt' A brown-paper-bag bugfix to a change already in 'master'. * nd/diff-parseopt: parse-options: check empty value in OPT_INTEGER and OPT_ABBREV diff-parseopt: restore -U (no argument) behavior diff-parseopt: correct variable types that are used by parseopt by gitster
πŸ› οΈ parse-options: check empty value in OPT_INTEGER and OPT_ABBREV When parsing the argument for OPT_INTEGER and OPT_ABBREV, we check if we can parse the entire argument to a number with "if (*s)". There is one missing check: if "arg" is empty to begin with, we fail to notice. This could happen with long option by writing like git diff --inter-hunk-context= blah blah Before 16ed6c97cc (diff-parseopt: convert --inter-hunk-context, 2019-03-24), --inter-hunk-context is handled by a custom parser opt_arg() and does detect this correctly. This restores the bahvior for --inter-hunk-context and make sure all other integer options are handled the same (sane) way. For OPT_ABBREV this is new behavior. But it makes it consistent with the rest. PS. OPT_MAGNITUDE has similar code but git_parse_ulong() does detect empty "arg". So it's good to go. Signed-off-by: Nguyα»…n ThΓ‘i Ngọc Duy [email protected] Signed-off-by: Junio C Hamano [email protected] by pclouds
πŸ› οΈ diff-parseopt: restore -U (no argument) behavior Before d473e2e0e8 (diff.c: convert -U|--unified, 2019-01-27), -U and --unified are implemented with a custom parser opt_arg() in diff.c. I didn't check this code carefully and not realize that it's the equivalent of PARSE_OPT_NONEG | PARSE_OPT_OPTARG. In other words, if -U is specified without any argument, the option should be accepted, and the default value should be used. Without PARSE_OPT_OPTARG, parse_options() will reject this case and cause a regression. Reported-by: Bryan Turner [email protected] Signed-off-by: Nguyα»…n ThΓ‘i Ngọc Duy [email protected] Signed-off-by: Junio C Hamano [email protected] by pclouds
πŸ› οΈ diff-parseopt: correct variable types that are used by parseopt Most number-related OPT_ macros store the value in an 'int' variable. Many of the variables in 'struct diff_options' have a different type, but during the conversion to using parse_options() I failed to notice and correct. The problem was reported on s360x which is a big-endian architechture. The variable to store '-w' option in this case is xdl_opts, 'long' type, 8 bytes. But since parse_options() assumes 'int' (4 bytes), it will store bits in the wrong part of xdl_opts. The problem was found on little-endian platforms because parse_options() will accidentally store at the right part of xdl_opts. There aren't much to say about the type change (except that 'int' for xdl_opts should still be big enough, since Windows' long is the same size as 'int' and nobody has complained so far). Some safety checks may be implemented in the future to prevent class of bugs. Reported-by: Todd Zullinger [email protected] Signed-off-by: Nguyα»…n ThΓ‘i Ngọc Duy [email protected] Signed-off-by: Junio C Hamano [email protected] by pclouds
πŸ› οΈ rebase docs: recommend -r over -p The --preserve-merges option is now deprecated in favor of --rebase-merges; Let's stop recommending the former. Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by dscho
πŸ› οΈ docs: say that --rebase=preserve is deprecated As of Git v2.22.0, the --preserve-merges backend of git rebase will be officially deprecated in favor of the --rebase-merges backend. Consequently, git pull --rebase=preserve will also be deprected. State this explicitly. Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by dscho
πŸ› οΈ tests: mark a couple more test cases as requiring rebase -p The --preserve-merges option has been deprecated, and as a consequence we started to mark test cases that require that option to be supported, in preparation for removing that support eventually. Since we marked those test cases, a couple more crept into the test suite, and with this patch, we mark them, too. Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by dscho
πŸ› οΈ fetch-pack: send server options after command Currently, if any server options are specified during a protocol v2 fetch, server options will be sent before "command=fetch". Write server options to the request buffer in send_fetch_request() so that the components of the request are sent in the correct order. The protocol documentation states that the command must come first. The Git server implementation in serve.c (see process_request() in that file) tolerates any order of command and capability, which is perhaps why we haven't noticed this. This was noticed when testing against a JGit server implementation, which follows the documentation in this regard. Signed-off-by: Jonathan Tan [email protected] Acked-by: Jonathan Nieder [email protected] Signed-off-by: Junio C Hamano [email protected] by jonathantanmy
πŸ› οΈ trace2: fix tracing when NO_PTHREADS is defined Teach trace2 TLS code to not rely on pthread_getspecific() when NO_PTHREADS is defined. Instead, always assume the context data of the main thread. Signed-off-by: Jeff Hostetler [email protected] Signed-off-by: Junio C Hamano [email protected] by jeffhostetler
πŸ› οΈ rebase: replace incorrect logical negation by correct bitwise one In bff014dac7d9 (builtin rebase: support the verbose and diffstat options, 2018-09-04), we added a line that wanted to remove the REBASE_DIFFSTAT bit from the flags, but it used an incorrect negation. Found by Coverity. Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by dscho
πŸ› οΈ progress: avoid empty line when breaking the progress line Since commit 545dc345eb (progress: break too long progress bar lines, 2019-04-12) when splitting a too long progress line, sometimes it looks as if a superfluous empty line were added between the title line and the counters. To make sure that the previously displayed progress line is completely covered up when writing the new, shorter title line, we calculate how many characters need to be overwritten with spaces. Alas, this calculation doesn't account for the newline character at the end of the new title line, and resulted in printing one more space than strictly necessary. This extra space character doesn't matter, if the length of the previous progress line was shorter than the width of the terminal. However, if the previous line matched the terminal width, then this extra space made the new line longer, effectively adding that empty line after the title line. Fix this off-by-one to avoid that spurious empty line. Signed-off-by: SZEDER GΓ‘bor [email protected] Signed-off-by: Junio C Hamano [email protected] by szeder
πŸ› οΈ trace2: document the supported values of GIT_TRACE2* env variables The descriptions of the GIT_TRACE2* environment variables link to the technical docs for further details on the supported values. However, a link like this only really works if the docs are viewed in a browser and the full documentation is available. OTOH, in 'man git' there are no links to conveniently click on, and distro-shipped git packages tend to include only the man pages, while the technical docs and the docs in html format are in a separate 'git-doc' package. So let's describe the supported values to make the manpage more self-contained, but still keep the references to the technical docs because the details of the SID, and the JSON and perf output formats are definitely beyond the scope of 'man git'. Signed-off-by: SZEDER GΓ‘bor [email protected] Signed-off-by: Junio C Hamano [email protected] by szeder
πŸ› οΈ trace2: rename environment variables to GIT_TRACE2* For an environment variable that is supposed to be set by users, the GIT_TR2* env vars are just too unclear, inconsistent, and ugly. Most of the established GIT_* environment variables don't use abbreviations, and in case of the few that do (GIT_DIR, GIT_COMMON_DIR, GIT_DIFF_OPTS) it's quite obvious what the abbreviations (DIR and OPTS) stand for. But what does TR stand for? Track, traditional, trailer, transaction, transfer, transformation, transition, translation, transplant, transport, traversal, tree, trigger, truncate, trust, or ...?! The trace2 facility, as the '2' suffix in its name suggests, is supposed to eventually supercede Git's original trace facility. It's reasonable to expect that the corresponding environment variables follow suit, and after the original GIT_TRACE variables they are called GIT_TRACE2; there is no such thing is 'GIT_TR'. All trace2-specific config variables are, very sensibly, in the 'trace2' section, not in 'tr2'. OTOH, we don't gain anything at all by omitting the last three characters of "trace" from the names of these environment variables. So let's rename all GIT_TR2* environment variables to GIT_TRACE2*, before they make their way into a stable release. Signed-off-by: SZEDER GΓ‘bor [email protected] Signed-off-by: Junio C Hamano [email protected] by szeder
πŸ› οΈ gitsubmodules: align html and nroff lists There appears to be a bug in the toolchain generating manpages from lettered lists. When a list is enumerated with letters, the resulting nroff shows numbers instead. Mostly this is harmless, but in the case of gitsubmodules, the paragraph following the list refers back to each bullet by letter. As a result, reading this documentation via man gitsubmodules is hard to parse - readers must infer that a bug exists and a refers to 1, b refers to 2, and c refers to 3 in the list above. The problem specifically was introduced in ad47194; previously rather than generating numerated lists the bulleted area was entirely monospaced in HTML and shown in plaintext in nroff. The bug seems to exist in docbook-xml - I've reported it on May 1 via the docbook-apps mail list - but for now it may make more sense to just work around the issue. Signed-off-by: Emily Shaffer [email protected] Reviewed-by: Jonathan Nieder [email protected] Signed-off-by: Junio C Hamano [email protected] by nasamuffin


CONTRIBUTORS

Last week there were 7 contributors.
πŸ‘€ gitster
πŸ‘€ pclouds
πŸ‘€ dscho
πŸ‘€ jonathantanmy
πŸ‘€ jeffhostetler
πŸ‘€ szeder
πŸ‘€ nasamuffin


STARGAZERS

Last week there was 1 stargazer.
⭐ rafasc
You are the star! 🌟


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

Weekly Digest (16 June, 2019 - 23 June, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 5 issues were created.
Of these, 1 issues have been closed and 4 issues are still open.

OPEN ISSUES

πŸ’š #273 fetch: add --[no-]show-forced-updates, by derrickstolee
πŸ’š #272 git-status: create config for ahead/behind calculation, by derrickstolee
πŸ’š #271 refactor: rename is_directory() to dir_exists() and use it in clone.c, by johnlinp
πŸ’š #269 Wip/fixΒ  continue/ skipΒ inΒ synopsis, by phillipwood

CLOSED ISSUES

❀️ #270 blame: read diff config, by derrickstolee

NOISY ISSUE

πŸ”ˆ #273 fetch: add --[no-]show-forced-updates, by derrickstolee
It received 3 comments.


PULL REQUESTS

Last week, 16 pull requests were created, updated or merged.

UPDATED PULL REQUEST

Last week, 16 pull requests were updated.
πŸ’› #273 fetch: add --[no-]show-forced-updates, by derrickstolee
πŸ’› #272 git-status: create config for ahead/behind calculation, by derrickstolee
πŸ’› #271 refactor: rename is_directory() to dir_exists() and use it in clone.c, by johnlinp
πŸ’› #269 Wip/fixΒ  continue/ skipΒ inΒ synopsis, by phillipwood
πŸ’› #267 t3404: fix a typo, by dscho
πŸ’› #265 Support building with GCC v8.x/v9.x, by dscho
πŸ’› #264 Adding git-ignore command, tests, and documentation., by tstone2077
πŸ’› #263 submodule foreach: fix recursion of options, by momoson
πŸ’› #262 add -p: fix checkout -p with pathological context, by phillipwood
πŸ’› #261 Create 'expire' and 'repack' verbs for git-multi-pack-index, by derrickstolee
πŸ’› #254 [RFC] Create 'core.featureAdoptionRate' setting to update config defaults, by derrickstolee
πŸ’› #196 status: remove the empty line after hints, by johnlinp
πŸ’› #184 Commit-graph: Write incremental files, by derrickstolee
πŸ’› #151 Fix a test on NTFS (and probably HFS+), by dscho
πŸ’› #149 Fix MSVC support, at long last, by dscho
πŸ’› #112 Commit-graph write refactor (was: Create commit-graph file format v2), by derrickstolee


COMMITS

Last week there were 31 commits.
πŸ› οΈ The third batch Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ Merge branch 'md/url-parse-harden' The URL decoding code has been updated to avoid going past the end of the string while parsing %-- sequence. * md/url-parse-harden: url: do not allow %00 to represent NUL in URLs url: do not read past end of buffer by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ Merge branch 'ab/hash-object-doc' Doc update. * ab/hash-object-doc: hash-object doc: stop mentioning git-cvsimport by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ The second batch Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'xl/record-partial-clone-origin' When creating a partial clone, the object filtering criteria is recorded for the origin of the clone, but this incorrectly used a hardcoded name "origin" to name that remote; it has been corrected to honor the "--origin " option. * xl/record-partial-clone-origin: clone: respect user supplied origin name when setting up partial clone by gitster
πŸ› οΈ Merge branch 'pb/request-pull-verify-remote-ref' "git request-pull" learned to warn when the ref we ask them to pull from in the local repository and in the published repository are different. * pb/request-pull-verify-remote-ref: request-pull: warn if the remote object is not the same as the local one request-pull: quote regex metacharacters in local ref by gitster
πŸ› οΈ Merge branch 'mm/p4-unshelve-windows-fix' The command line to invoke a "git cat-file" command from inside "git p4" was not properly quoted to protect a caret and running a broken command on Windows, which has been corrected. * mm/p4-unshelve-windows-fix: p4 unshelve: fix "Not a valid object name HEAD0" on Windows by gitster
πŸ› οΈ Merge branch 'po/git-help-on-git-itself' "git help git" was hard to discover (well, at least for some people). * po/git-help-on-git-itself: Doc: git.txt: remove backticks from link and add git-scm.com/docs git.c: show usage for accessing the git(1) help page by gitster
πŸ› οΈ Merge branch 'es/first-contrib-tutorial' A new tutorial targetting specifically aspiring git-core developers. * es/first-contrib-tutorial: doc: add some nit fixes to MyFirstContribution documentation: add anchors to MyFirstContribution documentation: add tutorial for first contribution by gitster
πŸ› οΈ Merge branch 'bb/unicode-12.1-reiwa' Update to Unicode 12.1 width table. * bb/unicode-12.1-reiwa: unicode: update the width tables to Unicode 12.1 by gitster
πŸ› οΈ Merge branch 'sw/git-p4-unshelve-branched-files' "git p4" update. * sw/git-p4-unshelve-branched-files: git-p4: allow unshelving of branched files by gitster
πŸ› οΈ Merge branch 'js/fsmonitor-unflake' The data collected by fsmonitor was not properly written back to the on-disk index file, breaking t7519 tests occasionally, which has been corrected. * js/fsmonitor-unflake: mark_fsmonitor_valid(): mark the index as changed if needed fill_stat_cache_info(): prepare for an fsmonitor fix by gitster
πŸ› οΈ Merge branch 'ds/topo-traversal-using-commit-graph' Prepare use of reachability index in topological walker that works on a range (A..B). * ds/topo-traversal-using-commit-graph: revision: keep topo-walk free of unintersting commits revision: use generation for A..B --topo-order queries by gitster
πŸ› οΈ Merge branch 'bl/userdiff-octave' The pattern "git diff/grep" use to extract funcname and words boundary for Matlab has been extend to cover Octave, which is more or less equivalent. * bl/userdiff-octave: userdiff: fix grammar and style issues userdiff: add Octave by gitster
πŸ› οΈ Merge branch 'ba/clone-remote-submodules' "git clone --recurse-submodules" learned to set up the submodules to ignore commit object names recorded in the superproject gitlink and instead use the commits that happen to be at the tip of the remote-tracking branches from the get-go, by passing the new "--remote-submodules" option. * ba/clone-remote-submodules: clone: add --remote-submodules flag by gitster
πŸ› οΈ Merge branch 'vv/merge-squash-with-explicit-commit' "git merge --squash" is designed to update the working tree and the index without creating the commit, and this cannot be countermanded by adding the "--commit" option; the command now refuses to work when both options are given. * vv/merge-squash-with-explicit-commit: merge: refuse --commit with --squash by gitster
πŸ› οΈ Merge branch 'js/bundle-verify-require-object-store' "git bundle verify" needs to see if prerequisite objects exist in the receiving repository, but the command did not check if we are in a repository upfront, which has been corrected. * js/bundle-verify-require-object-store: bundle verify: error out if called without an object database by gitster
πŸ› οΈ Merge branch 'js/bisect-helper-check-get-oid-return-value' Code cleanup. * js/bisect-helper-check-get-oid-return-value: bisect--helper: verify HEAD could be parsed before continuing by gitster
πŸ› οΈ Merge branch 'jk/am-i-resolved-fix' "git am -i --resolved" segfaulted after trying to see a commit as if it were a tree, which has been corrected. * jk/am-i-resolved-fix: am: fix --interactive HEAD tree resolution am: drop tty requirement for --interactive am: read interactive input from stdin am: simplify prompt response handling by gitster
πŸ› οΈ Merge branch 'jk/HEAD-symref-in-xfer-namespaces' The server side support for "git fetch" used to show incorrect value for the HEAD symbolic ref when the namespace feature is in use, which has been corrected. * jk/HEAD-symref-in-xfer-namespaces: upload-pack: strip namespace from symref data by gitster
πŸ› οΈ Merge branch 'ew/server-info-remove-crufts' "git update-server-info" used to leave stale packfiles in its output, which has been corrected. * ew/server-info-remove-crufts: server-info: do not list unlinked packs by gitster
πŸ› οΈ Merge branch 'es/grep-require-name-when-needed' More parameter validation. * es/grep-require-name-when-needed: grep: fail if call could output and name is null by gitster
πŸ› οΈ Merge branch 'es/git-debugger-doc' Doc update. * es/git-debugger-doc: doc: hint about GIT_DEBUGGER in CodingGuidelines by gitster
πŸ› οΈ Merge branch 'ds/object-info-for-prefetch-fix' Code cleanup and futureproof. * ds/object-info-for-prefetch-fix: sha1-file: split OBJECT_INFO_FOR_PREFETCH by gitster


CONTRIBUTORS

Last week there was 1 contributor.
πŸ‘€ gitster


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

Add support for drop!/reword! commits to `git rebase -i`

This was already discussed briefly on the Git mailing list: https://public-inbox.org/git/alpine.DEB.2.21.1.1710151754070.40514@virtualbox/

In short, the reword! semantics are relatively easy in my mind: it would be called as

git commit --reword <commit>

would take staged changes (if any), otherwise implicitly --allow-empty,
then create a commit message to be edited in this style:

reword! <original-oneline>

<original-oneline>

<original-body>

This would be presented to the user in an editor (similar to git commit --amend).

Upon rebase --autosquash, it would work like a squash! but comment out all
previous commit messages, and also comment out the reword! line and the
empty line after that.

In case of multiple reword!, the last one would win, and it would
naturally integrate in any fixup!/squash! workflow.

What is more difficult is something else I frequently need: drop!
. That is, I want to explicitly mark a commit to be excluded in
subsequent rebase --autosquash. I guess the best way would be to
implement a

git revert --drop <commit>

that would work as if you called git revert -n <commit> && git commit -m 'drop! '"$(git show -s --oneline <commit>)", and upon rebase --autosquash, it would reorder like fixup!/squash!/reword!, replace the pickof the previous line (if it was apick) by dropand comment out the currentpick drop! ` line.

The reason why the semantics are more difficult in that case is that drop!
does not mix well with fixup!/squash!/reword!.

Document --stdin (and other options in setup_revisions)

Currently, Git accepts --stdin for the log family of commands. Well really, anything that calls setup_revisions from revisions.c and passes in its argv will implicitly have the --stdin option.

We should explicitly document this (and other) options.

Offer an easy way to fetch/pull the branch matching the name of the current branch

When fetching from a remote, one can specify which ref(s) to fetch.

When pulling, there is even a very convenient convention to fetch and merge the "upstream branch", i.e. the one connected via git branch --set-upstream-to=<remote>/<branch>.

However, there is no convenient way to specify the name of the current branch, other than typing it out. This is a problem e.g. when working on a multi-platform contribution for the Git project itself, where the upstream branch might be origin/master, but the contributor needs work on the same branch on multiple machines. In this instance, the branch might need to be updated with git pull --rebase my-fork <current-branch>.

Let's introduce the --current-branch option for this, automagically appending the name of the current branch to the commands git fetch and git pull, allowing e.g. git pull --rebase --current-branch my-fork.

rebase -i: error on fixup/squash when the corresponding pick was skipped

Imagine this todo list:

pick a123 this will conflict
fixup b124 want to fix up

Now, as the oneline suggests, let's assume that the pick results in merge conflicts, and let's further assume that the user decided to skip it via git rebase --skip.

Obviously, the fixup should not blindly amend HEAD at this point, so we will probably want to error out with a helpful message.

Weekly Digest (2 June, 2019 - 9 June, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 7 issues were created.
Of these, 2 issues have been closed and 5 issues are still open.

OPEN ISSUES

πŸ’š #259 Add support for drop!/reword! commits to git rebase -i, by dscho
πŸ’š #258 Fix flaky t5504 (in test case 9 - push with transfer.fsckobjects), by dscho
πŸ’š #256 Avoid using Perl in the test suite, by dscho
πŸ’š #254 [RFC] Create 'core.size=large' setting to update config defaults, by derrickstolee
πŸ’š #253 Make rebase.reschedulefailedexec less overzealous, by dscho

CLOSED ISSUES

❀️ #257 Fix flaky t5516-fetch-push (test case 79 - deny fetch unreachable SHA1, allowtipsha1inwant=true), by dscho
❀️ #255 Improve instructions around how to set git-prompt preference variables., by ghedsouza

LIKED ISSUE

πŸ‘ #253 Make rebase.reschedulefailedexec less overzealous, by dscho
It received πŸ‘ x1, πŸ˜„ x0, πŸŽ‰ x0 and ❀️ x0.

NOISY ISSUE

πŸ”ˆ #255 Improve instructions around how to set git-prompt preference variables., by ghedsouza
It received 16 comments.


PULL REQUESTS

Last week, 14 pull requests were created, updated or merged.

OPEN PULL REQUEST

Last week, 1 pull request was opened.
πŸ’š #256 Avoid using Perl in the test suite, by dscho

UPDATED PULL REQUEST

Last week, 13 pull requests were updated.
πŸ’› #254 [RFC] Create 'core.size=large' setting to update config defaults, by derrickstolee
πŸ’› #253 Make rebase.reschedulefailedexec less overzealous, by dscho
πŸ’› #228 sha1-file: split OBJECT_INFO_FOR_PREFETCH, by derrickstolee
πŸ’› #223 Fix racy fsmonitor, by dscho
πŸ’› #221 Fix two issues pointed out by Coverity, by dscho
πŸ’› #196 status: remove the empty line after hints, by johnlinp
πŸ’› #194 Clean up after the removal of the scripted rebase, by dscho
πŸ’› #184 Commit-graph: Write incremental files, by derrickstolee
πŸ’› #183 p4: fix "Not a valid object name HEAD0" when unshelving, by mdymike
πŸ’› #151 Fix a test on NTFS (and probably HFS+), by dscho
πŸ’› #149 Fix MSVC support, at long last, by dscho
πŸ’› #142 Optimize run_diff_files()' rename detection, by dscho
πŸ’› #112 Commit-graph write refactor (was: Create commit-graph file format v2), by derrickstolee


COMMITS

Last week there were 29 commits.
πŸ› οΈ Git 2.22 Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge tag 'l10n-2.22.0-rnd3' of git://github.com/git-l10n/git-po l10n-2.22.0-rnd3 * tag 'l10n-2.22.0-rnd3' of git://github.com/git-l10n/git-po: (25 commits) l10n: fr.po: Review French translation l10n: de.po: Update German translation l10n: de.po: improve description of 'git reset --quiet' l10n: TEAMS: Change German translation team leader l10n: bg.po: Updated Bulgarian translation (4581t) l10n: zh_CN: Revision for git v2.22.0 l10n l10n: zh_CN: for git v2.22.0 l10n round 1~3 l10n: es: 2.22.0 round 3 l10n: it.po: Updated Italian translation l10n: fr v2.22.0 rnd 3 l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3 l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed) l10n: es: 2.22.0 round 2 l10n: bg.po: Updated Bulgarian translation (4580t) l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2 l10n: fr.po v2.22.0 round 2 l10n: git.pot: v2.22.0 round 2 (6 new, 3 removed) l10n: bg.po: Updated Bulgarian translation (4577t) l10n: es: 2.22.0 round 1 l10n: vi.po(4577t): Updated Vietnamese translation for v2.22.0 round 1 ... by gitster
πŸ› οΈ Merge branch 'fr_review' of git://github.com/jnavila/git * 'fr_review' of git://github.com/jnavila/git: l10n: fr.po: Review French translation by jiangxin
πŸ› οΈ Merge branch 'master' of git://github.com/alshopov/git-po * 'master' of git://github.com/alshopov/git-po: l10n: bg.po: Updated Bulgarian translation (4581t) by jiangxin
πŸ› οΈ l10n: fr.po: Review French translation Signed-off-by: CΓ©dric Malard [email protected] Signed-off-by: Jean-Noel Avila [email protected] by cmalard
πŸ› οΈ Merge branch 'en/merge-directory-renames-fix' Recent code restructuring of merge-recursive engine introduced a regression dealing with rename/add conflict. * en/merge-directory-renames-fix: merge-recursive: restore accidentally dropped setting of path by gitster
πŸ› οΈ l10n: de.po: Update German translation Reviewed-by: Ralf Thielow [email protected] Signed-off-by: Matthias RΓΌster [email protected] by ruester
πŸ› οΈ l10n: de.po: improve description of 'git reset --quiet' Signed-off-by: Ralf Thielow [email protected] by ralfth
πŸ› οΈ l10n: TEAMS: Change German translation team leader Acked-by: Ralf Thielow [email protected] Signed-off-by: Matthias RΓΌster [email protected] by ruester
πŸ› οΈ merge-recursive: restore accidentally dropped setting of path In commit 8daec1df03de ("merge-recursive: switch from (oid,mode) pairs to a diff_filespec", 2019-04-05), we actually switched from (oid,mode,path) triplets to a diff_filespec -- but most callsites in the patch only needed to worry about oid and mode so the commit message focused on that. The oversight in the commit message apparently spilled over to the code as well; one of the dozen or so callsites accidentally dropped the setting of the path in the conversion. Restore the path setting in that location. Also, this pointed out that our testsuite was lacking a good rename/add test, at least one that involved the need for merge content with the rename. Add such a test, and since rename/add vs. add/rename could possibly be important, redo the merge the opposite direction to make sure we don't have issues with the direction of the merge. These testcases failed before restoring the setting of path, but with the paths appropriately set the testcases both pass. Reported-by: Ben Humphreys [email protected] Based-on-patch-by: SZEDER GΓ‘bor [email protected] Tested-by: Ben Humphreys [email protected] Signed-off-by: Elijah Newren [email protected] Signed-off-by: Junio C Hamano [email protected] by newren
πŸ› οΈ l10n: bg.po: Updated Bulgarian translation (4581t) Signed-off-by: Alexander Shopov [email protected] by alshopov
πŸ› οΈ l10n: zh_CN: Revision for git v2.22.0 l10n Revise 51 translations, improving consistency for some phrased. Update email address for Fangyi Zhou Signed-off-by: Fangyi Zhou [email protected] Signed-off-by: Jiang Xin [email protected] by fangyi-zhou
πŸ› οΈ l10n: zh_CN: for git v2.22.0 l10n round 1~3 Translate 274 new messages (4581t0f0u) for git 2.22.0. Signed-off-by: Jiang Xin [email protected] by jiangxin
πŸ› οΈ Merge branch '2.22' of https://github.com/ChrisADR/git-po * '2.22' of https://github.com/ChrisADR/git-po: l10n: es: 2.22.0 round 3 by jiangxin
πŸ› οΈ Merge branch 'it-l10n-wip' of github.com:AlessandroMenti/git-po * 'it-l10n-wip' of github.com:AlessandroMenti/git-po: l10n: it.po: Updated Italian translation by jiangxin
πŸ› οΈ l10n: es: 2.22.0 round 3 Signed-off-by: Christopher Diaz Riveros [email protected] by ChrisADR
πŸ› οΈ l10n: it.po: Updated Italian translation Signed-off-by: Alessandro Menti [email protected] by AlessandroMenti
πŸ› οΈ l10n: fr v2.22.0 rnd 3 Signed-off-by: Jean-NoΓ«l Avila [email protected] by jnavila
πŸ› οΈ l10n: vi.po(4581t): Updated Vietnamese translation for v2.22.0 round 3 Signed-off-by: Tran Ngoc Quan [email protected] by vnwildman
πŸ› οΈ l10n: git.pot: v2.22.0 round 3 (3 new, 2 removed) Generate po/git.pot from v2.22.0-rc3 for git v2.22.0 l10n round 3. Signed-off-by: Jiang Xin [email protected] by jiangxin
πŸ› οΈ Merge branch 'master' of git://git.kernel.org/pub/scm/git/git * 'master' of git://git.kernel.org/pub/scm/git/git: Git 2.22-rc3 i18n: fix typos found during l10n for git 2.22.0 RelNotes: minor typo fixes in 2.22.0 draft list-objects-filter: disable 'sparse:path' filters by jiangxin
πŸ› οΈ Git 2.22-rc3 Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'cc/list-objects-filter-wo-sparse-path' Disable "--filter=sparse:path=" that would allow reading from paths on the filesystem. * cc/list-objects-filter-wo-sparse-path: list-objects-filter: disable 'sparse:path' filters by gitster
πŸ› οΈ i18n: fix typos found during l10n for git 2.22.0 Fix two typos introduced by the following commits: + 31fba9d3b4 (diff-parseopt: convert --[src|dst]-prefix, 2019-03-24) + ed8b4132c8 (remote-curl: mark all error messages for translation, 2019-03-05) Signed-off-by: Jiang Xin [email protected] Acked-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by jiangxin
πŸ› οΈ RelNotes: minor typo fixes in 2.22.0 draft Signed-off-by: Todd Zullinger [email protected] Signed-off-by: Junio C Hamano [email protected] by tmzullinger
πŸ› οΈ l10n: es: 2.22.0 round 2 Signed-off-by: Christopher Diaz Riveros [email protected] by ChrisADR
πŸ› οΈ Merge branch 'master' of https://github.com/vnwildman/git * 'master' of https://github.com/vnwildman/git: l10n: vi.po(4580t): Updated Vietnamese translation for v2.22.0 round 2 by jiangxin
πŸ› οΈ Merge branch 'master' of git://github.com/alshopov/git-po * 'master' of git://github.com/alshopov/git-po: l10n: bg.po: Updated Bulgarian translation (4580t) by jiangxin
πŸ› οΈ l10n: bg.po: Updated Bulgarian translation (4580t) Signed-off-by: Alexander Shopov [email protected] by alshopov


CONTRIBUTORS

Last week there were 13 contributors.
πŸ‘€ gitster
πŸ‘€ jiangxin
πŸ‘€ cmalard
πŸ‘€ ruester
πŸ‘€ ralfth
πŸ‘€ newren
πŸ‘€ alshopov
πŸ‘€ fangyi-zhou
πŸ‘€ ChrisADR
πŸ‘€ AlessandroMenti
πŸ‘€ jnavila
πŸ‘€ vnwildman
πŸ‘€ tmzullinger


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

range-diff: add support for `--left-only` and `--right-only`

When contributing patches to Git, developers often need to compare in what form those patches made it upstream (e.g. to pick up fixes made by the Git maintainer in preparation for a new iteration). In such a case, a --left-only (or --right-only) option would come in real handy, to allow git range-diff --left-only <branch>..upstream/pu to skip commits that are upstream only (as there will be a metric ton of them).

Invent a way to retain reflogs for a while after the ref was deleted

It is a bit of a sad story that reflogs are deleted the moment the ref is deleted. So there is no easy "undo" there, even when the user has an "Ooops, I needed that branch and its reflog!" moment.

This will require a sane design around ref-less reflogs that can be garbage-collected after a configurable time.

format.outputDirectory should be based on the top of the repository

Currently, if one has format.outputDirectory set, the output directory will be relative to wherever they've run the command, not the top of the repository. We should make it relative to the Git repository instead so that users don't end up creating patches in unintended locations.

Or maybe the current behaviour is desired and we should just force users to use an absolute path if they don't want this to happen. This requires discussion.

Make Git subcommand documentation more consistent

In remote's documentation, in the Synopsis, the subcommands (add, remove, etc...) are underlined and Commands section, they are also underlined.

In submodule, the subcommands are not underlined in both they Synopsis and the Commands sections.

In worktree, the subcommands are underlined in the Synopsis but not in the Commands section.

I'm sure there are other Git commands that have subcommands and their documentation is probably all over the place as well. Anyway, we should look over this, find one style to stick with and standardise it for all the documentation.

Weekly Digest (7 July, 2019 - 14 July, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 1 issue was created.
It is still open.

OPEN ISSUES

πŸ’š #285 Update gpg.txt to correct gpg --verify syntax, by rtmorgan

NOISY ISSUE

πŸ”ˆ #285 Update gpg.txt to correct gpg --verify syntax, by rtmorgan
It received 10 comments.


PULL REQUESTS

Last week, 15 pull requests were created, updated or merged.

UPDATED PULL REQUEST

Last week, 15 pull requests were updated.
πŸ’› #285 Update gpg.txt to correct gpg --verify syntax, by rtmorgan
πŸ’› #282 contrib/completion: use __git() in bash completor to avoid aliased tools, by zaquestion
πŸ’› #281 git-prompt: improve cherry-pick/revert detection, by phillipwood
πŸ’› #280 Fix test bug with spaces in file owner, by derrickstolee
πŸ’› #276 t3420 remove progress from output, by phillipwood
πŸ’› #275 Quieter sequencer status parsing, by phillipwood
πŸ’› #264 Adding git-ignore command, tests, and documentation., by tstone2077
πŸ’› #261 Create 'expire' and 'repack' verbs for git-multi-pack-index, by derrickstolee
πŸ’› #254 [RFC] Create 'core.featureAdoptionRate' setting to update config defaults, by derrickstolee
πŸ’› #218 Give Git a HOME on Windows, by dscho
πŸ’› #217 gettext(windows): always use UTF-8, by dscho
πŸ’› #216 windows: avoid illegal filenames during a build, by dscho
πŸ’› #213 diff: release all handles before running external diff, by dscho
πŸ’› #184 Commit-graph: Write incremental files, by derrickstolee
πŸ’› #145 Avoid spawning gzip in git archive, by dscho


COMMITS

Last week there were 56 commits.
πŸ› οΈ The fifth batch Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'js/mingw-use-utf8' Windows update. * js/mingw-use-utf8: mingw: fix possible buffer overrun when calling GetUserNameW() mingw: use Unicode functions explicitly mingw: get pw_name in UTF-8 format by gitster
πŸ› οΈ Merge branch 'sg/ci-brew-gcc-workaround' Dev support update. * sg/ci-brew-gcc-workaround: ci/lib.sh: update a comment about installed P4 and Git-LFS versions ci: disable Homebrew's auto cleanup ci: don't update Homebrew by gitster
πŸ› οΈ Merge branch 'kb/windows-force-utf8' Windows update. * kb/windows-force-utf8: gettext: always use UTF-8 on native Windows by gitster
πŸ› οΈ Merge branch 'dr/progress-i18n' Progress messages have been made localizable. * dr/progress-i18n: l10n: localizable upload progress messages by gitster
πŸ› οΈ Merge branch 'qn/clone-doc-use-long-form' The "git clone" documentation refers to command line options in its description in the short form; they have been replaced with long forms to make them more recognisable. * qn/clone-doc-use-long-form: docs: git-clone: list short form of options first docs: git-clone: refer to long form of options by gitster
πŸ› οΈ Merge branch 'js/rebase-reschedule-applies-only-to-interactive' The configuration variable rebase.rescheduleFailedExec should be effective only while running an interactive rebase and should not affect anything when running an non-interactive one, which was not the case. This has been corrected. * js/rebase-reschedule-applies-only-to-interactive: rebase --am: ignore rebase.rescheduleFailedExec by gitster
πŸ› οΈ Merge branch 'sg/git-C-empty-doc' Doc update. * sg/git-C-empty-doc: Document that 'git -C ""' works and doesn't change directory by gitster
πŸ› οΈ Merge branch 'jt/t5551-test-chunked' Update smart-http test. * jt/t5551-test-chunked: t5551: test usage of chunked encoding explicitly by gitster
πŸ› οΈ Merge branch 'js/mingw-gcc-stack-protect' Windows update. * js/mingw-gcc-stack-protect: mingw: enable stack smashing protector by gitster
πŸ› οΈ Merge branch 'cb/windows-manifest' Windows update. * cb/windows-manifest: mingw: embed a manifest to trick UAC into Doing The Right Thing by gitster
πŸ› οΈ The fourth batch Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ Merge branch 'jw/gitweb-sample-update' Doc update. * jw/gitweb-sample-update: doc: don't use git.kernel.org as example gitweb URL by gitster
πŸ› οΈ Merge branch 'js/t0001-case-insensitive' Test update. * js/t0001-case-insensitive: t0001: fix on case-insensitive filesystems by gitster
πŸ› οΈ Merge branch 'cc/first-contrib-tutorial' Update docs used in a tutorial. * cc/first-contrib-tutorial: doc: improve usage string in MyFirstContribution by gitster
πŸ› οΈ Merge branch 'ab/fail-prereqs-in-test' Test updates. * ab/fail-prereqs-in-test: tests: mark two failing tests under FAIL_PREREQS by gitster
πŸ› οΈ 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" ... by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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() by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ Merge branch 'cb/mkstemps-uint-type-fix' Variable type fix. * cb/mkstemps-uint-type-fix: wrapper: avoid undefined behaviour in macOS by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ Merge branch 'js/t3404-typofix' Typofix. * js/t3404-typofix: t3404: fix a typo by gitster
πŸ› οΈ Merge branch 'pw/doc-synopsis-markup-opmode-options' Docfix. * pw/doc-synopsis-markup-opmode-options: show --continue/skip etc. consistently in synopsis by gitster
πŸ› οΈ Merge branch 'rs/copy-array' Code clean-up. * rs/copy-array: use COPY_ARRAY for copying arrays coccinelle: use COPY_ARRAY for copying arrays by gitster
πŸ› οΈ Merge branch 'cb/fsmonitor-intfix' Variable type fix. * cb/fsmonitor-intfix: fsmonitor: avoid signed integer overflow / infinite loop by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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" by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 by gitster
πŸ› οΈ 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 ](https://github.com/gitgitgadget/git/commit/71221f28ec3f887620f0089b8f42bcf9b19f4a42) by [gitster](https://github.com/gitster) :hammer_and_wrench: [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](https://github.com/gitgitgadget/git/commit/492d7a553c8a097ad66f4a39acf187e7f02a4117) by [gitster](https://github.com/gitster) :hammer_and_wrench: [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](https://github.com/gitgitgadget/git/commit/dbf491e9e947141eab7ffce65d6c97c121def6e0) by [gitster](https://github.com/gitster) :hammer_and_wrench: [Merge branch 'po/doc-branch' Doc update. * po/doc-branch: doc branch: provide examples for listing remote tracking branches](https://github.com/gitgitgadget/git/commit/ecf55ae4f0f73a9759eb58e01cfcc6758acc07c2) by [gitster](https://github.com/gitster) :hammer_and_wrench: [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](https://github.com/gitgitgadget/git/commit/99eea645832d376a3b214b78a57adabf1fa96547) by [gitster](https://github.com/gitster) :hammer_and_wrench: [mingw: fix possible buffer overrun when calling GetUserNameW() In 39a98e9b68b8 (mingw: get pw_name in UTF-8 format, 2019-06-27), this developer missed the fact that theGetUserNameW()function takes the number of characters aslen` parameter, not the number of bytes. Reported-by: Beat Bolli [email protected] Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by dscho
πŸ› οΈ ci/lib.sh: update a comment about installed P4 and Git-LFS versions A comment in 'ci/lib.sh' claims that the "OS X build installs the latest available versions" of P4 and Git-LFS, but since f2f47150 ("ci: don't update Homebrew", 2019-07-03) that's no longer the case, as it will install the versions which were recorded in the image's Homebrew database when the image was created. Update this comment accordingly. Signed-off-by: SZEDER GΓ‘bor [email protected] Acked-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by szeder


CONTRIBUTORS

Last week there were 3 contributors.
πŸ‘€ gitster
πŸ‘€ dscho
πŸ‘€ szeder


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

Fix flaky t5504 (in test case 9 - push with transfer.fsckobjects)

This seems to hit the linux-gcc job the most, maybe in the part where it runs the test suite with all kinds of GIT_TEST_* variables set to non-default settings.

See e.g. Attempt #1 of this linux-gcc run:

expecting success: 
	rm -rf dst &&
	git init dst &&
	(
		cd dst &&
		git config transfer.fsckobjects true
	) &&
	test_must_fail git push --porcelain dst master:refs/heads/test >act &&
	test_cmp exp act

+ rm -rf dst
+ git init dst
Initialized empty Git repository in /home/vsts/work/1/s/t/trash directory.t5504-fetch-receive-strict/dst/.git/
+ cd dst
+ git config transfer.fsckobjects true
+ test_must_fail git push --porcelain dst master:refs/heads/test
+ _test_ok=
+ git push --porcelain dst master:refs/heads/test
remote: fatal: object of unexpected type        
error: remote unpack failed: unpack-objects abnormal exit
error: failed to push some refs to 'dst'
+ exit_code=1
+ test 1 -eq 0
+ test_match_signal 13 1
+ test 1 = 141
+ test 1 = 269
+ return 1
+ test 1 -gt 129
+ test 1 -eq 127
+ test 1 -eq 126
+ return 0
+ test_cmp exp act
+ diff -u exp act
--- exp	2019-06-03 20:37:40.928834316 +0000
+++ act	2019-06-03 20:37:41.064834272 +0000
@@ -1,2 +0,0 @@
-To dst
-!	refs/heads/master:refs/heads/test	[remote rejected] (unpacker error)
error: last command exited with $?=1
not ok 9 - push with transfer.fsckobjects
#	
#		rm -rf dst &&
#		git init dst &&
#		(
#			cd dst &&
#			git config transfer.fsckobjects true
#		) &&
#		test_must_fail git push --porcelain dst master:refs/heads/test >act &&
#		test_cmp exp act
#	

Teach `git stash` and `git commit` the `-A` option

The git add -A command can be used to conveniently add all files, whether they are tracked or not yet tracked (excluding the ones ignored via .gitignore/.git/info/excludes).

This convenience would come in quite nicely in the stash/commit commands, too (in the latter case, many test cases could be simplified using this new option).

The git stash command already has the --include-untracked option that does this, but not the short-and-sweet short option -A. The git commit command does not have any equivalent (it has the --untracked-files option, but that is really just modifying the output of git status).

Sadly, we cannot add --all, too, as that is already used for something different in git stash: it includes the ignored files, too. Likewise, git commit --all commits all tracked files, and does not add the untracked files (unlike git add --all).

rebase -ir should warn (or error out) when commits were produced but not included in the final commit history

It is easy to do this:

pick something

reset somewhere else
pick something different
label this-is-my-branch

reset onto
merge this-is-my-branch

Obviously, the first pick was not included, by mistake.

So every time reset is executed, it should record the HEAD's hash in a growing list, and verify in the end that they are reachable (possibly using the refs/rewritten/* refs with name-rev to display nicer names).

This feature is similar in spirit to the warning when calling git checkout <branch> on a detached HEAD, where the user is told about the commits that would now be lost.

Migrated from https://bugs.chromium.org/p/git/issues/detail?id=32

Weekly Digest (12 May, 2019 - 19 May, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 21 issues were created.
Of these, 2 issues have been closed and 19 issues are still open.

OPEN ISSUES

πŸ’š #211 rebase -i: implement --reschedule, by dscho
πŸ’š #210 rebase -i: error on fixup/squash when the corresponding pick was skipped, by dscho
πŸ’š #209 rebase -r: implement an equivalent to skip_unnecessary_picks(), by dscho
πŸ’š #208 Close commit-graph before calling 'gc', by derrickstolee
πŸ’š #207 range-diff: allow comparing branches to mboxes, by dscho
πŸ’š #206 range-diff: add support for --left-only and --right-only, by dscho
πŸ’š #205 Offer an easy way to fetch/pull the branch matching the name of the current branch, by dscho
πŸ’š #204 rebase -ir: optionally auto-update local branches when executing label commands, by dscho
πŸ’š #203 git cherry-pick --pick-merges , by dscho
πŸ’š #202 rebase -ir should warn (or error out) when commits were produced but not included in the final commit history, by dscho
πŸ’š #201 Make OPT_RERERE_AUTOUPDATE's "unspecified" value consistent with other unspecified values, by dscho
πŸ’š #200 Mention core.excludesFile in git clean's documentation, by dscho
πŸ’š #199 Allow reset <tag> in git rebase -ir, by dscho
πŸ’š #198 Avoid duplicate entries in git ls-files for unmerged entries, by dscho
πŸ’š #197 Fix flakey t7519.15, by dscho
πŸ’š #196 status: remove the empty line after hints, by johnlinp
πŸ’š #195 Drop support for git rebase --preserve-merges, by dscho
πŸ’š #194 Clean up after the removal of the scripted rebase, by dscho
πŸ’š #191 Remove fast export munging, by newren

CLOSED ISSUES

❀️ #193 Document the stash.useBuiltin escape hatch, by dscho
❀️ #192 pkt-line: fix incorrect function declaration, by dscho

NOISY ISSUE

πŸ”ˆ #192 pkt-line: fix incorrect function declaration, by dscho
It received 10 comments.


PULL REQUESTS

Last week, 8 pull requests were created, updated or merged.

UPDATED PULL REQUEST

Last week, 8 pull requests were updated.
πŸ’› #196 status: remove the empty line after hints, by johnlinp
πŸ’› #195 Drop support for git rebase --preserve-merges, by dscho
πŸ’› #191 Remove fast export munging, by newren
πŸ’› #189 trace2: Add variable description to git.txt, by derrickstolee
πŸ’› #183 p4: fix "Not a valid object name HEAD0" when unshelving, by mdymike
πŸ’› #177 documentation: add lab for first contribution, by nasamuffin
πŸ’› #170 git add -i: add a rudimentary version in C (supporting only status and help so far), by dscho
πŸ’› #92 Create 'expire' and 'repack' verbs for git-multi-pack-index, by derrickstolee


COMMITS

Last week there were 32 commits.
πŸ› οΈ pkt-line: drop 'const'-ness of a param to set_packet_header() The function's definition has a paramter of type "int" qualified as "const". The fact that the incoming parameter is used as read-only in the fuction is an implementation detail that the callers should not have to be told in the prototype declaring it (and "const" there has no effect, as C passes parameters by value). The prototype defined for the function in pkt-line.h lacked the matching "const" for this reason, but apparently some compilers (e.g. MS Visual C 2017) complain about the parameter type mismatch. Let's squelch it by removing the "const" that is pointless in the definition of a small and trivial function like this, which would not help optimizing compilers nor reading humans that much. Noticed-by: Johannes Schindelin [email protected] Helped-by: Jeff King [email protected] Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ test-lib: try harder to ensure a working jgit The JGIT prereq uses type jgit to determine whether jgit is present. While this is usually sufficient, it won't help if the jgit found is badly broken. This wastes time running tests which fail due to no fault of our own. Use jgit --version instead, to guard against cases where jgit is present on the system, but will fail to run, e.g. because of some JRE issue, or missing Java dependencies. Checking that it gets far enough to process the '--version' argument isn't perfect, but seems to be good enough in practice. It's also consistent with how we detect some other dependencies, see e.g. the CURL and UNZIP prerequisites. Signed-off-by: Todd Zullinger [email protected] Signed-off-by: Junio C Hamano [email protected] by tmzullinger
πŸ› οΈ get_oid: handle NULL repo->index When get_oid() and its helpers see an index name like ":.gitmodules", they try to load the index on demand, like: if (repo->index->cache) repo_read_index(repo); However, that misses the case when "repo->index" itself is NULL; we'll segfault in the conditional. This never happens with the_repository; there we always point its index field to &the_index. But a submodule repository may have a NULL index field until somebody calls repo_read_index(). This bug is triggered by t7411, but it was hard to notice because it's in an expect_failure block. That test was added by 2b1257e463 (t/helper: add test-submodule-nested-repo-config, 2018-10-25). Back then we had no easy way to access the .gitmodules blob of a submodule repo, so we expected (and got) an error message to that effect. Later, d9b8b8f896 (submodule-config.c: use repo_get_oid for reading .gitmodules, 2019-04-16) started looking in the correct repo, which is when we started triggering the segfault. With this fix, the test starts passing (once we clean it up as its comment instructs). Note that as far as I know, this bug could not be triggered outside of the test suite. It requires resolving an index name in a submodule, and all of the code paths (aside from test-tool) which do that either load the index themselves, or always pass the_repository. Ultimately it comes from 3a7a698e93 (sha1-name.c: remove implicit dependency on the_index, 2019-01-12), which replaced a check of "the_index.cache" with "repo->index->cache". So even if there is another way to trigger it, it wouldn't affect any versions before then. Signed-off-by: Jeff King [email protected] Signed-off-by: Junio C Hamano [email protected] by peff
πŸ› οΈ http-push: prevent format overflow warning with gcc >= 9 In function 'finish_request', inlined from 'process_response' at http-push.c:248:2: http-push.c:587:4: warning: '%s' directive argument is null [-Wformat-overflow=] 587 | fprintf(stderr, "Unable to get pack file %s\n%s", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 588 | request->url, curl_errorstr); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ request->url is needed for the error message if there was a failure during fetch but was being cleared unnecessarily earlier. note that the leak is prevented by calling release_request unconditionally at the end. Signed-off-by: Carlo Marcelo Arenas BelΓ³n [email protected] Suggested-by: Eric Sunshine [email protected] Signed-off-by: Junio C Hamano [email protected] by carenas
πŸ› οΈ stash: document stash.useBuiltin The stash.useBuiltin variable introduced in 90a462725e ("stash: optionally use the scripted version again", 2019-02-25) was turned on by default, but had no documentation. Let's document it so that users who run into any stability issues with the C rewrite know there's an escape hatch, and spell out that the user should please report the bug when they have to turn off the built-in stash. Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by dscho
πŸ› οΈ sha1dc: update from upstream Update sha1dc from the latest version by the upstream maintainer[1]. See 07a20f569b ("Makefile: fix unaligned loads in sha1dc with UBSan", 2019-03-12) for the last update. This fixes an issue where HP-UX IA64 was wrongly detected as a Little-endian instead of a Big-endian system, see [2] and [3]. 1. https://github.com/cr-marcstevens/sha1collisiondetection/commit/855827c583bc30645ba427885caa40c5b81764d2 2. https://public-inbox.org/git/[email protected]/ 3. https://github.com/cr-marcstevens/sha1collisiondetection/pull/50 Signed-off-by: Γ†var ArnfjΓΆrΓ° Bjarmason [email protected] Signed-off-by: Junio C Hamano [email protected] by avar
πŸ› οΈ parse-options: adjust parse_opt_unknown_cb()s declared return type In f41179f16ba2 (parse-options: avoid magic return codes, 2019-01-27), the signature of the low-level parse-opt callback function was changed to return an enum. And while the implementations were changed, one declaration was left unchanged, still claiming to return int. This can potentially lead to problems, as compilers are free to choose any integral type for an enum as long as it can represent all declared values. Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by dscho
πŸ› οΈ Git 2.22-rc0 Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'jh/trace2' A few embarrassing bugfixes. * jh/trace2: trace2: fix up a missing "leave" entry point trace2: fix incorrect function pointer check by gitster
πŸ› οΈ Merge branch 'cc/access-on-aix-workaround' Workaround for standard-compliant but less-than-useful behaviour of access(2) for the root user. * cc/access-on-aix-workaround: git-compat-util: work around for access(X_OK) under root by gitster
πŸ› οΈ Merge branch 'pw/clean-sequencer-state-upon-final-commit' "git chery-pick" (and "revert" that shares the same runtime engine) that deals with multiple commits got confused when the final step gets stopped with a conflict and the user concluded the sequence with "git commit". Attempt to fix it by cleaning up the state files used by these commands in such a situation. * pw/clean-sequencer-state-upon-final-commit: fix cherry-pick/revert status after commit commit/reset: try to clean up sequencer state by gitster
πŸ› οΈ Merge branch 'pw/rebase-i-internal' The internal implementation of "git rebase -i" has been updated to avoid forking a separate "rebase--interactive" process. * pw/rebase-i-internal: rebase -i: run without forking rebase--interactive rebase: use a common action enum rebase -i: use struct rebase_options in do_interactive_rebase() rebase -i: use struct rebase_options to parse args rebase -i: use struct object_id for squash_onto rebase -i: use struct commit when parsing options rebase -i: remove duplication rebase -i: combine rebase--interactive.c with rebase.c rebase: use OPT_RERERE_AUTOUPDATE() rebase: rename write_basic_state() rebase: don't translate trace strings sequencer: always discard index after checkout by gitster
πŸ› οΈ Merge branch 'jk/perf-aggregate-wo-libjson' The script to aggregate perf result unconditionally depended on libjson-perl even though it did not have to, which has been corrected. * jk/perf-aggregate-wo-libjson: t/perf: depend on perl JSON only when using --codespeed by gitster
πŸ› οΈ Merge branch 'dl/rev-tilde-doc-clarify' Docfix. * dl/rev-tilde-doc-clarify: revisions.txt: remove ambibuity between : and : revisions.txt: mention ~ form revisions.txt: mark optional rev arguments with [] revisions.txt: change "rev" to "" by gitster
πŸ› οΈ Merge branch 'jc/make-dedup-ls-files-output' A "ls-files" that emulates "find" to enumerate files in the working tree resulted in duplicated Makefile rules that caused the build to issue an unnecessary warning during a trial build after merge conflicts are resolved in working tree *.h files but before the resolved results are added to the index. This has been corrected. * jc/make-dedup-ls-files-output: Makefile: dedup list of files obtained from ls-files by gitster
πŸ› οΈ Merge branch 'jk/ls-files-doc-markup-fix' Docfix. * jk/ls-files-doc-markup-fix: doc/ls-files: put nested list for "-t" option into block by gitster
πŸ› οΈ Merge branch 'jk/p5302-avoid-collision-check-cost' Fix index-pack perf test so that the repeated invocations always run in an empty repository, which emulates the initial clone situation better. * jk/p5302-avoid-collision-check-cost: p5302: create the repo in each index-pack test by gitster
πŸ› οΈ Merge branch 'dl/no-extern-in-func-decl' Mechanically and systematically drop "extern" from function declarlation. * dl/no-extern-in-func-decl: *.[ch]: manually align parameter lists *.[ch]: remove extern from function declarations using sed *.[ch]: remove extern from function declarations using spatch by gitster
πŸ› οΈ Merge branch 'ew/repack-with-bitmaps-by-default' The connectivity bitmaps are created by default in bare repositories now; also the pathname hash-cache is created by default to avoid making crappy deltas when repacking. * ew/repack-with-bitmaps-by-default: pack-objects: default to writing bitmap hash-cache t5310: correctly remove bitmaps for jgit test repack: enable bitmaps by default on bare repos by gitster
πŸ› οΈ Merge branch 'js/partial-clone-connectivity-check' During an initial "git clone --depth=..." partial clone, it is pointless to spend cycles for a large portion of the connectivity check that enumerates and skips promisor objects (which by definition is all objects fetched from the other side). This has been optimized out. * js/partial-clone-connectivity-check: t/perf: add perf script for partial clones clone: do faster object check for partial clones by gitster
πŸ› οΈ Merge branch 'jh/trace2-sid-fix' Polishing of the new trace2 facility continues. The system-level configuration can specify site-wide trace2 settings, which can be overridden with per-user configuration and environment variables. * jh/trace2-sid-fix: trace2: fixup access problem on /etc/gitconfig in read_very_early_config trace2: update docs to describe system/global config settings trace2: make SIDs more unique trace2: clarify UTC datetime formatting trace2: report peak memory usage of the process trace2: use system/global config for default trace2 settings config: add read_very_early_config() trace2: find exec-dir before trace2 initialization trace2: add absolute elapsed time to start event trace2: refactor setting process starting time config: initialize opts structure in repo_read_config() by gitster
πŸ› οΈ difftool: fallback on merge.guitool In git-difftool.txt, it says 'git difftool' falls back to 'git mergetool' config variables when the difftool equivalents have not been defined. However, when diff.guitool is missing, it doesn't fallback to anything. Make git-difftool fallback to merge.guitool when diff.guitool is missing. Signed-off-by: Denton Liu [email protected] Signed-off-by: Junio C Hamano [email protected] by Denton-L
πŸ› οΈ difftool: make --gui, --tool and --extcmd mutually exclusive In git-difftool, these options specify which tool to ultimately run. As a result, they are logically conflicting. Explicitly disallow these options from being used together. Signed-off-by: Denton Liu [email protected] Signed-off-by: Junio C Hamano [email protected] by Denton-L
πŸ› οΈ mergetool: fallback to tool when guitool unavailable In git-difftool, if the tool is called with --gui but diff.guitool is not set, it falls back to diff.tool. Make git-mergetool also fallback from merge.guitool to merge.tool if the former is undefined. If git-difftool, when called with --gui, were to use get_configured_mergetool in a future patch, it would also get the fallback behavior in the following precedence: 1. diff.guitool 2. merge.guitool 3. diff.tool 4. merge.tool The behavior for when difftool or mergetool are called without --gui should be identical with or without this patch. Note that the search loop could be written as sections="merge" keys="tool" if diff_mode then sections="diff $sections" fi if gui_mode then keys="guitool $keys" fi merge_tool=$( IFS=' ' for key in $keys do for section in $sections do selected=$(git config $section.$key) if test -n "$selected" then echo "$selected" return fi done done) which would make adding a mode in the future much easier. However, adding a new mode will likely never happen as it is highly discouraged so, as a result, it is written in its current form so that it is more readable for future readers. Signed-off-by: Denton Liu [email protected] Signed-off-by: Junio C Hamano [email protected] by Denton-L
πŸ› οΈ mergetool--lib: create gui_mode function Before, in get_configured_merge_tool, we would test the value of the first argument directly, which corresponded to whether we were using guitool. However, since $GIT_MERGETOOL_GUI is available as an environment variable, create the gui_mode function which increases the clarify of functions which use it. While we're at it, add a space before () in function definitions to fix the style. Signed-off-by: Denton Liu [email protected] Signed-off-by: Junio C Hamano [email protected] by Denton-L
πŸ› οΈ mergetool: use get_merge_tool function In git-mergetool, the logic for getting which merge tool to use is duplicated in git-mergetool--lib, except for the fact that it needs to know whether the tool was guessed or not. Rewrite get_merge_tool to return whether or not the tool was guessed through the return code and make git-mergetool call this function instead of duplicating the logic. Note that 1 was chosen to be the return code of when a tool is guessed because it seems like a slightly more abnormal condition than getting a tool that's explicitly specified but this is completely arbitrary. Also, let $GIT_MERGETOOL_GUI be set to determine whether or not the guitool will be selected. This change is not completely backwards compatible as there may be external users of git-mergetool--lib. However, only one user, git-diffall[1], was found from searching GitHub and Google, and this tool is superseded by git difftool --dir-diff anyway. It seems very unlikely that there exists an external caller that would take into account the return code of get_merge_tool as it would always return 0 before this change so this change probably does not affect any external users. [1]: https://github.com/thenigan/git-diffall Signed-off-by: Denton Liu [email protected] Signed-off-by: Junio C Hamano [email protected] by Denton-L
πŸ› οΈ trace2: add variable description to git.txt Documentation/technical/api-trace2.txt contains the full details of the trace2 API and the GIT_TR2* environment variables. However, most environment variables are included in Documentation/git.txt, including the GIT_TRACE* variables. Add a brief description of the GIT_TR2* variables with links to the full technical details. The biggest difference from the original variables is that we can specify a Unix Domain Socket. Mention this difference, but leave the details to the technical documents. Reported-by: Szeder GΓ‘bor [email protected] Signed-off-by: Derrick Stolee [email protected] Signed-off-by: Junio C Hamano [email protected] by derrickstolee
πŸ› οΈ status: fix display of rebase -ir's label command The argument of a label command does not want to be turned into an abbreviated SHA-1. Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by dscho
πŸ› οΈ trace2: fix up a missing "leave" entry point Fix a trivial bug that's been here since the shared/do_write_index tracing was added in 42fee7a388 ("trace2:data: add trace2 instrumentation to index read/write", 2019-02-22). We should have enter/leave points, not two enter/enter points. This resulted in an "enter" event without a corresponding "leave" event. Signed-off-by: Γ†var ArnfjΓΆrΓ° Bjarmason [email protected] Acked-by: Derrick Stolee [email protected] Signed-off-by: Junio C Hamano [email protected] by avar
πŸ› οΈ check-non-portable-shell: support Perl versions older than 5.10 For thoroughness when checking for one-shot environment variable assignments at shell function call sites, check-non-portable-shell stitches together incomplete lines (those ending with backslash). This allows it to correctly flag such undesirable usage even when the variable assignment and function call are split across lines, for example: FOO=bar \ func where 'func' is a shell function. The stitching is accomplished like this: while (<>) { chomp; # stitch together incomplete lines (those ending with "") while (s/\$//) { $_ .= readline; chomp; } # detect unportable/undesirable shell constructs ... } Although this implementation is well supported in reasonably modern Perl versions (5.10 and later), it fails with older versions (such as Perl 5.8 shipped with ancient Mac OS 10.5). In particular, in older Perl versions, 'readline' is not connected to the file handle associated with the "magic" while (<>) {...} construct, so 'readline' throws a "readline() on unopened filehandle" error. Work around this problem by dropping readline() and instead incorporating the stitching of incomplete lines directly into the existing while (<>) {...} loop. Helped-by: Γ†var ArnfjΓΆrΓ° Bjarmason [email protected] Signed-off-by: Eric Sunshine [email protected] Signed-off-by: Junio C Hamano [email protected] by sunshineco
πŸ› οΈ mingw: enable DEP and ASLR Enable DEP (Data Execution Prevention) and ASLR (Address Space Layout Randomization) support. This applies to both 32bit and 64bit builds and makes it substantially harder to exploit security holes in Git by offering a much more unpredictable attack surface. ASLR interferes with GDB's ability to set breakpoints. A similar issue holds true when compiling with -O2 (in which case single-stepping is messed up because GDB cannot map the code back to the original source code properly). Therefore we simply enable ASLR only when an optimization flag is present in the CFLAGS, using it as an indicator that the developer does not want to debug in GDB anyway. Signed-off-by: Δ°smail DΓΆnmez [email protected] Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by ismail
πŸ› οΈ mingw: do not let ld strip relocations This is the first step for enabling ASLR (Address Space Layout Randomization) support. We want to enable ASLR for better protection against exploiting security holes in Git: it makes it harder to attack software by making code addresses unpredictable. The problem fixed by this commit is that ld.exe seems to be stripping relocations which in turn will break ASLR support. We just make sure it's not stripping the main executable entry. Signed-off-by: Δ°smail DΓΆnmez [email protected] Signed-off-by: Johannes Schindelin [email protected] Signed-off-by: Junio C Hamano [email protected] by ismail


CONTRIBUTORS

Last week there were 10 contributors.
πŸ‘€ gitster
πŸ‘€ tmzullinger
πŸ‘€ peff
πŸ‘€ carenas
πŸ‘€ dscho
πŸ‘€ avar
πŸ‘€ Denton-L
πŸ‘€ derrickstolee
πŸ‘€ sunshineco
πŸ‘€ ismail


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

rebase -i: implement --nested

The problem: during an interactive rebase, the user might realize that they want to redo (part of) the rebase, e.g. to resolve merge conflicts in a different way, say, by re-picking the latest three commits. Usually one would do git rebase -i HEAD~3, but that does not work because we are already in a rebase.

What I typically do is to create a throw-away worktree with git worktree add --detach, call git rebase -i HEAD~3 in that worktree, then copy the output of git rev-parse HEAD, then remove the worktree, and call git reset --hard <commit> in the original worktree.

That is fraught with danger, though, and very inconvenient.

The proposed solution: a new git rebase -i --nested [...] option. The --nested option would allow

This would generate the todo list as usual, but then prepend it to the current todo list. At the end, it would insert a new command that indicates that the nested rebase is now complete, and at the same time provides enough information to allow git rebase --abort to abort the nested rebase.

Some care will have to be taken in case of combining --nested with --rebase-merges: that will potentially override the onto label. In that instance, at the end of the nested rebase we would have to re-set the onto label to the original value.

It is not yet possible to call label <name> <commit>, only label <name>. We would have to introduce the former form to make it possible to re-set the onto label. Or use reset <commit> and then label <name>, but that is somewhat ugly.

Weekly Digest (21 July, 2019 - 28 July, 2019)

Here's the Weekly Digest for gitgitgadget/git:


ISSUES

Last week 5 issues were created.
Of these, 0 issues have been closed and 5 issues are still open.

OPEN ISSUES

πŸ’š #296 Add the REBASE_P prerequisite to two more test cases, by dscho
πŸ’š #295 git svn: use rebase --rebase-merges instead of preserve-merges, by dscho
πŸ’š #294 rebase -r: support merge strategies other than recursive, by dscho
πŸ’š #293 Clean up more of the fall-out from dropping the scripted git rebase, by dscho
πŸ’š #292 Create 'feature.*' config area and some centralized config parsing, by derrickstolee

NOISY ISSUE

πŸ”ˆ #294 rebase -r: support merge strategies other than recursive, by dscho
It received 8 comments.


PULL REQUESTS

Last week, 10 pull requests were created, updated or merged.

UPDATED PULL REQUEST

Last week, 10 pull requests were updated.
πŸ’› #296 Add the REBASE_P prerequisite to two more test cases, by dscho
πŸ’› #295 git svn: use rebase --rebase-merges instead of preserve-merges, by dscho
πŸ’› #294 rebase -r: support merge strategies other than recursive, by dscho
πŸ’› #293 Clean up more of the fall-out from dropping the scripted git rebase, by dscho
πŸ’› #292 Create 'feature.*' config area and some centralized config parsing, by derrickstolee
πŸ’› #290 Travis CI: Lint for Python syntax errors and undefined names, by cclauss
πŸ’› #287 Reinstate support for Visual Studio, by dscho
πŸ’› #219 Show an error if too-long paths are seen by git clean -dfx, by dscho
πŸ’› #195 Drop support for git rebase --preserve-merges, by dscho
πŸ’› #170 git add -i: add a rudimentary version in C (supporting only status and help so far), by dscho


COMMITS

Last week there were 45 commits.
πŸ› οΈ Sync with maint Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Flush fixes up to the third batch post 2.22.0 Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'ab/hash-object-doc' into maint Doc update. * ab/hash-object-doc: hash-object doc: stop mentioning git-cvsimport by gitster
πŸ› οΈ Merge branch 'cm/send-email-document-req-modules' into maint A doc update. * cm/send-email-document-req-modules: send-email: update documentation of required Perl modules by gitster
πŸ› οΈ Merge branch 'sw/git-p4-unshelve-branched-files' into maint "git p4" update. * sw/git-p4-unshelve-branched-files: git-p4: allow unshelving of branched files by gitster
πŸ› οΈ Merge branch 'js/bisect-helper-check-get-oid-return-value' into maint Code cleanup. * js/bisect-helper-check-get-oid-return-value: bisect--helper: verify HEAD could be parsed before continuing by gitster
πŸ› οΈ Merge branch 'es/git-debugger-doc' into maint Doc update. * es/git-debugger-doc: doc: hint about GIT_DEBUGGER in CodingGuidelines by gitster
πŸ› οΈ Merge branch 'mo/clang-format-for-each-update' into maint 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 by gitster
πŸ› οΈ Merge branch 'md/url-parse-harden' into maint The URL decoding code has been updated to avoid going past the end of the string while parsing %-- sequence. * md/url-parse-harden: url: do not allow %00 to represent NUL in URLs url: do not read past end of buffer by gitster
πŸ› οΈ Merge branch 'an/ignore-doc-update' into maint 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 by gitster
πŸ› οΈ Merge branch 'md/list-objects-filter-memfix' into maint 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 by gitster
πŸ› οΈ Merge branch 'jt/partial-clone-missing-ref-delta-base' into maint "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 by gitster
πŸ› οΈ Merge branch 'xl/record-partial-clone-origin' into maint When creating a partial clone, the object filtering criteria is recorded for the origin of the clone, but this incorrectly used a hardcoded name "origin" to name that remote; it has been corrected to honor the "--origin " option. * xl/record-partial-clone-origin: clone: respect user supplied origin name when setting up partial clone by gitster
πŸ› οΈ Merge branch 'pb/request-pull-verify-remote-ref' into maint "git request-pull" learned to warn when the ref we ask them to pull from in the local repository and in the published repository are different. * pb/request-pull-verify-remote-ref: request-pull: warn if the remote object is not the same as the local one request-pull: quote regex metacharacters in local ref by gitster
πŸ› οΈ Merge branch 'mm/p4-unshelve-windows-fix' into maint The command line to invoke a "git cat-file" command from inside "git p4" was not properly quoted to protect a caret and running a broken command on Windows, which has been corrected. * mm/p4-unshelve-windows-fix: p4 unshelve: fix "Not a valid object name HEAD0" on Windows by gitster
πŸ› οΈ Merge branch 'bb/unicode-12.1-reiwa' into maint Update to Unicode 12.1 width table. * bb/unicode-12.1-reiwa: unicode: update the width tables to Unicode 12.1 by gitster
πŸ› οΈ Merge branch 'js/fsmonitor-unflake' into maint The data collected by fsmonitor was not properly written back to the on-disk index file, breaking t7519 tests occasionally, which has been corrected. * js/fsmonitor-unflake: mark_fsmonitor_valid(): mark the index as changed if needed fill_stat_cache_info(): prepare for an fsmonitor fix by gitster
πŸ› οΈ Merge branch 'vv/merge-squash-with-explicit-commit' into maint "git merge --squash" is designed to update the working tree and the index without creating the commit, and this cannot be countermanded by adding the "--commit" option; the command now refuses to work when both options are given. * vv/merge-squash-with-explicit-commit: merge: refuse --commit with --squash by gitster
πŸ› οΈ Merge branch 'js/bundle-verify-require-object-store' into maint "git bundle verify" needs to see if prerequisite objects exist in the receiving repository, but the command did not check if we are in a repository upfront, which has been corrected. * js/bundle-verify-require-object-store: bundle verify: error out if called without an object database by gitster
πŸ› οΈ Merge branch 'jk/am-i-resolved-fix' into maint "git am -i --resolved" segfaulted after trying to see a commit as if it were a tree, which has been corrected. * jk/am-i-resolved-fix: am: fix --interactive HEAD tree resolution am: drop tty requirement for --interactive am: read interactive input from stdin am: simplify prompt response handling by gitster
πŸ› οΈ Merge branch 'jk/HEAD-symref-in-xfer-namespaces' into maint The server side support for "git fetch" used to show incorrect value for the HEAD symbolic ref when the namespace feature is in use, which has been corrected. * jk/HEAD-symref-in-xfer-namespaces: upload-pack: strip namespace from symref data by gitster
πŸ› οΈ Merge branch 'ew/server-info-remove-crufts' into maint "git update-server-info" used to leave stale packfiles in its output, which has been corrected. * ew/server-info-remove-crufts: server-info: do not list unlinked packs by gitster
πŸ› οΈ Merge branch 'es/grep-require-name-when-needed' into maint More parameter validation. * es/grep-require-name-when-needed: grep: fail if call could output and name is null by gitster
πŸ› οΈ Merge branch 'ds/object-info-for-prefetch-fix' into maint Code cleanup and futureproof. * ds/object-info-for-prefetch-fix: sha1-file: split OBJECT_INFO_FOR_PREFETCH by gitster
πŸ› οΈ Merge branch 'mh/import-transport-fd-fix' into maint The ownership rule for the file descriptor to fast-import remote backend was mixed up, leading to unrelated file descriptor getting closed, which has been fixed. * mh/import-transport-fd-fix: Use xmmap_gently instead of xmmap in use_pack dup() the input fd for fast-import used for remote helpers by gitster
πŸ› οΈ Merge branch 'nd/corrupt-worktrees' into maint "git worktree add" used to fail when another worktree connected to the same repository was corrupt, which has been corrected. * nd/corrupt-worktrees: worktree add: be tolerant of corrupt worktrees by gitster
πŸ› οΈ Merge branch 'nd/init-relative-template-fix' into maint A relative pathname given to "git init --template= " ought to be relative to the directory "git init" gets invoked in, but it instead was made relative to the repository, which has been corrected. * nd/init-relative-template-fix: init: make --template path relative to $CWD by gitster
πŸ› οΈ The seventh batch Signed-off-by: Junio C Hamano [email protected] by gitster
πŸ› οΈ Merge branch 'jk/test-commit-bulk' A test helper has been introduced to optimize preparation of test repositories with many simple commits, and a handful of test scripts have been updated to use it. * jk/test-commit-bulk: t6200: use test_commit_bulk t5703: use test_commit_bulk t5702: use test_commit_bulk t3311: use test_commit_bulk t5310: increase the number of bitmapped commits test-lib: introduce test_commit_bulk by gitster
πŸ› οΈ Merge branch 'di/readme-markup-fix' Docfix. * di/readme-markup-fix: README: fix rendering of text in angle brackets by gitster
πŸ› οΈ Merge branch 'jc/denoise-rm-to-resolve' "git rm" to resolve a conflicted path leaked an internal message "needs merge" before actually removing the path, which was confusing. This has been corrected. * jc/denoise-rm-to-resolve: rm: resolving by removal is not a warning-worthy event by gitster
πŸ› οΈ Merge branch 'js/clean-report-too-long-a-path' "git clean" silently skipped a path when it cannot lstat() it; now it gives a warning. * js/clean-report-too-long-a-path: clean: show an error message when the path is too long by gitster
πŸ› οΈ Merge branch 'tg/stash-keep-index-with-removed-paths' "git stash --keep-index" did not work correctly on paths that have been removed, which has been fixed. * tg/stash-keep-index-with-removed-paths: stash: fix handling removed files with --keep-index by gitster
πŸ› οΈ Merge branch 'sr/gpg-interface-stop-at-the-end' A codepath that reads from GPG for signed object verification read past the end of allocated buffer, which has been fixed. * sr/gpg-interface-stop-at-the-end: gpg-interface: do not scan past the end of buffer by gitster
πŸ› οΈ Merge branch 'js/mingw-spawn-with-spaces-in-path' Window 7 update ;-) * js/mingw-spawn-with-spaces-in-path: mingw: support spawning programs containing spaces in their names by gitster
πŸ› οΈ Merge branch 'jc/post-c89-rules-doc' We have been trying out a few language features outside c89; the coding guidelines document did not talk about them and instead had a blanket ban against them. * jc/post-c89-rules-doc: CodingGuidelines: spell out post-C89 rules by gitster
πŸ› οΈ Merge branch 'mt/dir-iterator-updates' Adjust the dir-iterator API and apply it to the local clone optimization codepath. * mt/dir-iterator-updates: clone: replace strcmp by fspathcmp clone: use dir-iterator to avoid explicit dir traversal clone: extract function from copy_or_link_directory clone: copy hidden paths at local clone dir-iterator: add flags parameter to dir_iterator_begin dir-iterator: refactor state machine model dir-iterator: use warning_errno when possible dir-iterator: add tests for dir-iterator API clone: better handle symlinked files at .git/objects/ clone: test for our behavior on odd objects/* content by gitster
πŸ› οΈ Merge branch 'vn/xmmap-gently' Clean-up an error codepath. * vn/xmmap-gently: read-cache.c: do not die if mmap fails by gitster
πŸ› οΈ Merge branch 'ac/log-use-mailmap-by-default-transition' The "git log" command learns to issue a warning when log.mailmap configuration is not set and --[no-]mailmap option is not used, to prepare users for future versions of Git that uses the mailmap by default. * ac/log-use-mailmap-by-default-transition: tests: defang pager tests by explicitly disabling the log.mailmap warning documentation: mention --no-use-mailmap and log.mailmap false setting log: add warning for unspecified log.mailmap setting by gitster
πŸ› οΈ Merge branch 'es/local-atomic-push-failure-with-http' "git push --atomic" that goes over the transport-helper (namely, the smart http transport) failed to prevent refs to be pushed when it can locally tell that one of the ref update will fail without having to consult the other end, which has been corrected. * es/local-atomic-push-failure-with-http: transport-helper: avoid var decl in for () loop control transport-helper: enforce atomic in push_refs_with_push by gitster
πŸ› οΈ Merge branch 'rm/gpg-program-doc-fix' Docfix. * rm/gpg-program-doc-fix: gpg(docs): use correct --verify syntax by gitster
πŸ› οΈ Merge branch 'js/unmap-before-ext-diff' Windows update. * js/unmap-before-ext-diff: diff: munmap() file contents before running external diff by gitster
πŸ› οΈ Merge branch 'tg/range-diff-output-update' "git range-diff" output has been tweaked for easier identification of which part of what file the patch shown is about. * tg/range-diff-output-update: range-diff: add headers to the outer hunk header range-diff: add filename to inner diff range-diff: add section header instead of diff header range-diff: suppress line count in outer diff range-diff: don't remove funcname from inner diff range-diff: split lines manually range-diff: fix function parameter indentation apply: make parse_git_diff_header public apply: only pass required data to gitdiff_* functions apply: only pass required data to find_name_* apply: only pass required data to check_header_line apply: only pass required data to git_header_name apply: only pass required data to skip_tree_prefix apply: replace marc.info link with public-inbox by gitster
πŸ› οΈ Merge branch 'ab/test-env' Many GIT_TEST_* environment variables control various aspects of how our tests are run, but a few followed "non-empty is true, empty or unset is false" while others followed the usual "there are a few ways to spell true, like yes, on, etc., and also ways to spell false, like no, off, etc." convention. * ab/test-env: env--helper: mark a file-local symbol as static tests: make GIT_TEST_FAIL_PREREQS a boolean tests: replace test_tristate with "git env--helper" tests README: re-flow a previously changed paragraph tests: make GIT_TEST_GETTEXT_POISON a boolean t6040 test: stop using global "script" variable config.c: refactor die_bad_number() to not call gettext() early env--helper: new undocumented builtin wrapping git_env_*() config tests: simplify include cycle test by gitster
πŸ› οΈ t6200: use test_commit_bulk There's a loop that creates 30 commits using test_commit. Using test_commit_bulk speeds this up from: Benchmark #1: ./t6200-fmt-merge-msg.sh --root=/var/ram/git-tests Time (mean Β± Οƒ): 1.926 s Β± 0.240 s [User: 1.055 s, System: 0.963 s] Range (min … max): 1.431 s … 2.166 s 10 runs to: Benchmark #1: ./t6200-fmt-merge-msg.sh --root=/var/ram/git-tests Time (mean Β± Οƒ): 1.343 s Β± 0.179 s [User: 766.5 ms, System: 662.9 ms] Range (min … max): 1.032 s … 1.664 s 10 runs for an average savings of over 30%. Signed-off-by: Jeff King [email protected] Signed-off-by: Junio C Hamano [email protected] by peff


CONTRIBUTORS

Last week there were 2 contributors.
πŸ‘€ gitster
πŸ‘€ peff


STARGAZERS

Last week there were no stargazers.


RELEASES

Last week there were no releases.


That's all for last week, please πŸ‘€ Watch and ⭐ Star the repository gitgitgadget/git to receive next weekly updates. πŸ˜ƒ

You can also view all Weekly Digests by clicking here.

Your Weekly Digest bot. πŸ“†

rebase -ir: optionally auto-update local branches when executing `label` commands

The --rebase-merges mode allows users to rebase entire branch thickets, rather than only a linear commit history.

This feature can also be used to structure otherwise too-long patch series. Essentially the history looks like this:

o - A - B - C -D -E -F - G - H - I ...
  \          \             \
   ------------ first-batch - second-batch - ...

This makes sure that the whole feature can be developed from beginning to end, still keeping the "first-batch" in a shape that can be contributed individually to the Git mailing list. And then fixes (e.g. as a reaction to code review comments) can be integrated via git commit --fixup and then git rebase -ir.

However, the local branches first-batch and second-batch are not updated that way; They still have to be updated manually, which is tedious and error-prone.

How about an option to --rebase-merges that teaches label commands to see whether there is a local branch of the same name whose tip commit corresponds to the pre-rebase state of this label, and if such a branch was found, it is updated automatically (even updating a worktree if there is one, much like the receive.denyCurrentBranch=updateInstead feature does on push).

Mention `core.excludesFile` in `git clean`'s documentation

"man git-clean" explicitly mentions two locations related to cleaning:

  -x
        Don't use the standard ignore rules read from .gitignore
        (per directory) and $GIT_DIR/info/exclude, ...

without additionally explicitly mentioning core.excludesFile. if the
man page simply said something like, "using the standard ignore
processing" and left it at that, it would be fine, but to list two of
the locations without the third is potentially confusing.

See https://public-inbox.org/git/[email protected]/

Reconcile `dir_exists()` and `is_directory()`

In https://github.com/git/git/blob/v2.22.0-rc1/builtin/clone.c#L885-L889, there is a function with the short and sweet name dir_exists() (which is the obvious companion to file_exists()). However, it is marked as static, so nobody can use it outside builtin/clone.c.

There is also is_directory() which obviously tries to do the very same, but it uses a name that few developers will think of when they see file_exists() and look for the equivalent function to see whether a given directory exists.

Let's reconcile these, probably by renaming is_directory() to dir_exists() and using it also in builtin/clone.c.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.