2023-06-14 12:30:11 by Taylor R Campbell | Files touched by this commit (1) |
Log message: devel/git-gitk: Set gitexecdir when cross-compiling. Also predetermine some configure results that are detected by run-time tests. XXX This path relative to PREFIX, libexec/git-core, should perhaps be named somewhere more central for git stuff. |
2020-01-20 21:07:41 by Adam Ciarcinski | Files touched by this commit (6) | |
Log message: git: updated to 2.25.0 Git 2.25 Release Notes ====================== Updates since v2.24 ------------------- Backward compatibility notes UI, Workflows & Features * A tutorial on object enumeration has been added. * The branch description ("git branch --edit-description") has been used to fill the body of the cover letters by the format-patch command; this has been enhanced so that the subject can also be filled. * "git rebase --preserve-merges" has been marked as deprecated; this release stops advertising it in the "git rebase -h" output. * The code to generate multi-pack index learned to show (or not to show) progress indicators. * "git apply --3way" learned to honor merge.conflictStyle configuration variable, like merges would. * The custom format for "git log --format=<format>" learned the l/L placeholder that is similar to e/E that fills in the e-mail address, but only the local part on the left side of '@'. * Documentation pages for "git shortlog" now list commit limiting options explicitly. * The patterns to detect function boundary for Elixir language has been added. * The completion script (in contrib/) learned that the "--onto" option of "git rebase" can take its argument as the value of the option. * The userdiff machinery has been taught that "async def" is another way to begin a "function" in Python. * "git range-diff" learned to take the \ "--notes=<ref>" and the "--no-notes" options to control the commit notes included in the log message that gets compared. * "git rev-parse --show-toplevel" run outside of any working tree did not error out, which has been corrected. * A few commands learned to take the pathspec from the standard input or a named file, instead of taking it as the command line arguments, with the "--pathspec-from-file" option. * "git submodule" learned a subcommand "set-url". * "git log" family learned "--pretty=reference" that gives \ the name of a commit in the format that is often used to refer to it in log messages. * The interaction between "git clone --recurse-submodules" and alternate object store was ill-designed. The documentation and code have been taught to make more clear recommendations when the users see failures. * Management of sparsely checked-out working tree has gained a dedicated "sparse-checkout" command. * Miscellaneous small UX improvements on "git-p4". * "git sparse-checkout list" subcommand learned to give its output in a more concise form when the "cone" mode is in effect. Performance, Internal Implementation, Development Support etc. * Debugging support for lazy cloning has been a bit improved. * Move the definition of a set of bitmask constants from 0ctal literal to (1U<<count) notation. * Test updates to prepare for SHA-2 transition continues. * Crufty code and logic accumulated over time around the object parsing and low-level object access used in "git fsck" have been cleaned up. * The implementation of "git log --graph" got refactored and then its output got simplified. * Follow recent push to move API docs from Documentation/ to header files and update config.h * "git bundle" has been taught to use the parse options API. "git bundle verify" learned "--quiet" and "git bundle \ create" learned options to control the progress output. * Handling of commit objects that use non UTF-8 encoding during "rebase -i" has been improved. * The beginning of rewriting "git add -i" in C. * A label used in the todo list that are generated by "git rebase --rebase-merges" is used as a part of a refname; the logic to come up with the label has been tightened to avoid names that cannot be used as such. * The logic to avoid duplicate label names generated by "git rebase --rebase-merges" forgot that the machinery itself uses "onto" as a label name, which must be avoided by auto-generated labels, which has been corrected. * We have had compatibility fallback macro definitions for "PRIuMAX", "PRIu32", etc. but did not for "PRIdMAX", while the code \ used the last one apparently without any hiccup reported recently. The fallback macro definitions for these <inttypes.h> macros that must appear in C99 systems have been removed. * Recently we have declared that GIT_TEST_* variables take the usual boolean values (it used to be that some used "non-empty means true" and taking GIT_TEST_VAR=YesPlease as true); make sure we notice and fail when non-bool strings are given to these variables. * Users of oneway_merge() (like "reset --hard") learned to take advantage of fsmonitor to avoid unnecessary lstat(2) calls. * Performance tweak on "git push" into a repository with many refs that point at objects we have never heard of. * PerfTest fix to avoid stale result mixed up with the latest round of test results. * Hide lower-level verify_signed-buffer() API as a pure helper to implement the public check_signature() function, in order to encourage new callers to use the correct and more strict validation. * Unnecessary reading of state variables back from the disk during sequencer operation has been reduced. * The code has been made to avoid gmtime() and localtime() and prefer their reentrant counterparts. * In a repository with many packfiles, the cost of the procedure that avoids registering the same packfile twice was unnecessarily high by using an inefficient search algorithm, which has been corrected. * Redo "git name-rev" to avoid recursive calls. * FreeBSD CI support via Cirrus-CI has been added. Fixes since v2.24 ----------------- * "rebase -i" ceased to run post-commit hook by mistake in an earlier update, which has been corrected. * "git notes copy $original" ought to copy the notes attached to the original object to HEAD, but a mistaken tightening to command line parameter validation made earlier disabled that feature by mistake. * When all files from some subdirectory were renamed to the root directory, the directory rename heuristics would fail to detect that as a rename/merge of the subdirectory to the root directory, which has been corrected. * Code clean-up and a bugfix in the logic used to tell worktree local and repository global refs apart. * "git stash save" in a working tree that is sparsely checked out mistakenly removed paths that are outside the area of interest. * "git rev-parse --git-path HEAD.lock" did not give the right path when run in a secondary worktree. * "git merge --no-commit" needs "--no-ff" if you do not \ want to move HEAD, which has been corrected in the manual page for "git bisect". * "git worktree add" internally calls "reset --hard" that \ should not descend into submodules, even when submodule.recurse configuration is set, but it was affected. This has been corrected. * Messages from die() etc. can be mixed up from multiple processes without even line buffering on Windows, which has been worked around. * HTTP transport had possible allocator/deallocator mismatch, which has been corrected. * The watchman integration for fsmonitor was racy, which has been corrected to be more conservative. * Fetching from multiple remotes into the same repository in parallel had a bad interaction with the recent change to (optionally) update the commit-graph after a fetch job finishes, as these parallel fetches compete with each other. Which has been corrected. * Recent update to "git stash pop" made the command empty the index when run with the "--quiet" option, which has been corrected. * "git fetch" codepath had a big "do not lazily fetch missing objects when I ask if something exists" switch. This has been corrected by marking the "does this thing exist?" calls with "if not please \ do not lazily fetch it" flag. * Test update to avoid wasted cycles. * Error handling after "git push" finishes sending the packdata and waits for the response to the remote side has been improved. * Some codepaths in "gitweb" that forgot to escape URLs generated based on end-user input have been corrected. * CI jobs for macOS has been made less chatty when updating perforce package used during testing. * "git unpack-objects" used to show progress based only on the number of received and unpacked objects, which stalled when it has to handle an unusually large object. It now shows the throughput as well. * The sequencer machinery compared the HEAD and the state it is attempting to commit to decide if the result would be a no-op commit, even when amending a commit, which was incorrect, and has been corrected. * The code to parse GPG output used to assume incorrectly that the finterprint for the primary key would always be present for a valid signature, which has been corrected. * "git submodule status" and "git submodule status \ --cached" show different things, but the documentation did not cover them correctly, which has been corrected. * "git reset --patch $object" without any pathspec should allow a tree object to be given, but incorrectly required a committish, which has been corrected. * "git submodule status" that is run from a subdirectory of the superproject did not work well, which has been corrected. * The revision walking machinery uses resources like per-object flag bits that need to be reset before a new iteration of walking begins, but the resources related to topological walk were not cleared correctly, which has been corrected. * TravisCI update. * While running "revert" or "cherry-pick --edit" for multiple commits, a recent regression incorrectly detected "nothing to commit, working tree clean", instead of replaying the commits, which has been corrected. * Work around a issue where a FD that is left open when spawning a child process and is kept open in the child can interfere with the operation in the parent process on Windows. * One kind of progress messages were always given during commit-graph generation, instead of following the "if it takes more than two seconds, show progress" pattern, which has been corrected. * "git rebase" did not work well when format.useAutoBase configuration variable is set, which has been corrected. * The "diff" machinery learned not to lose added/removed blank lines in the context when --ignore-blank-lines and --function-context are used at the same time. * The test on "fast-import" used to get stuck when \ "fast-import" died in the middle. * "git format-patch" can take a set of configured format.notes values to specify which notes refs to use in the log message part of the output. The behaviour of this was not consistent with multiple --notes command line options, which has been corrected. * "git p4" used to ignore lfs.storage configuration variable, which has been corrected. * Assorted fixes to the directory traversal API. * Forbid pathnames that the platform's filesystem cannot represent on MinGW. * "git rebase --signoff" stopped working when the command was written in C, which has been corrected. * An earlier update to Git for Windows declared that a tree object is invalid if it has a path component with backslash in it, which was overly strict, which has been corrected. The only protection the Windows users need is to prevent such path (or any path that their filesystem cannot check out) from entering the index. * The code to write split commit-graph file(s) upon fetching computed bogus value for the parameter used in splitting the resulting files, which has been corrected. * Other code cleanup, docfix, build fix, etc. |
2019-11-08 13:24:31 by Adam Ciarcinski | Files touched by this commit (14) | |
Log message: git: updated to 2.24.0 Git 2.24 Release Notes ====================== Updates since v2.23 ------------------- Backward compatibility note * "filter-branch" is showing its age and alternatives are available. From this release, we started to discourage its use and hint people about filter-repo. UI, Workflows & Features * We now have an active interim maintainer for the Git-Gui part of the system. Praise and thank Pratyush Yadav for volunteering. * The command line parser learned "--end-of-options" notation; the standard convention for scripters to have hardcoded set of options first on the command line, and force the command to treat end-user input as non-options, has been to use "--" as the delimiter, but that would not work for commands that use "--" as a delimiter between revs and pathspec. * A mechanism to affect the default setting for a (related) group of configuration variables is introduced. * "git fetch" learned "--set-upstream" option to help those \ who first clone from their private fork they intend to push to, add the true upstream via "git remote add" and then "git fetch" from it. * Device-tree files learned their own userdiff patterns. (merge 3c81760bc6 sb/userdiff-dts later to maint). * "git rebase --rebase-merges" learned to drive different merge strategies and pass strategy specific options to them. * A new "pre-merge-commit" hook has been introduced. * Command line completion updates for "git -c var.name=val" have been added. * The lazy clone machinery has been taught that there can be more than one promisor remote and consult them in order when downloading missing objects on demand. * The list-objects-filter API (used to create a sparse/lazy clone) learned to take a combined filter specification. * The documentation and tests for "git format-patch" have been cleaned up. * On Windows, the root level of UNC share is now allowed to be used just like any other directory. * The command line completion support (in contrib/) learned about the "--skip" option of "git revert" and "git \ cherry-pick". * "git rebase --keep-base <upstream>" tries to find the \ original base of the topic being rebased and rebase on top of that same base, which is useful when running the "git rebase -i" (and its limited variant "git rebase -x"). The command also has learned to fast-forward in more cases where it can instead of replaying to recreate identical commits. * A configuration variable tells "git fetch" to write the commit graph after finishing. * "git add -i" has been taught to show the total number of hunks and the hunks that has been processed so far when showing prompts. * "git fetch --jobs=<n>" allowed <n> parallel jobs when \ fetching submodules, but this did not apply to "git fetch --multiple" that fetches from multiple remote repositories. It now does. * The installation instruction for zsh completion script (in contrib/) has been a bit improved. Performance, Internal Implementation, Development Support etc. * The code to write commit-graph over given commit object names has been made a bit more robust. * The first line of verbose output from each test piece now carries the test name and number to help scanning with eyeballs. * Further clean-up of the initialization code. * xmalloc() used to have a mechanism to ditch memory and address space resources as the last resort upon seeing an allocation failure from the underlying malloc(), which made the code complex and thread-unsafe with dubious benefit, as major memory resource users already do limit their uses with various other mechanisms. It has been simplified away. * Unnecessary full-tree diff in "git log -L" machinery has been optimized away. * The http transport lacked some optimization the native transports learned to avoid unnecessary ref advertisement, which has been corrected. * Preparation for SHA-256 upgrade continues in the test department. (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint). * The memory ownership model of the "git fast-import" got straightened out. * Output from trace2 subsystem is formatted more prettily now. * The internal code originally invented for ".gitignore" processing got reshuffled and renamed to make it less tied to "excluding" and stress more that it is about "matching", as it has been reused for things like sparse checkout specification that want to check if a path is "included". * "git stash" learned to write refreshed index back to disk. * Coccinelle checks are done on more source files than before now. * The cache-tree code has been taught to be less aggressive in attempting to see if a tree object it computed already exists in the repository. * The code to parse and use the commit-graph file has been made more robust against corrupted input. * The hg-to-git script (in contrib/) has been updated to work with Python 3. * Update the way build artifacts in t/helper/ directory are ignored. * Preparation for SHA-256 upgrade continues. * "git log --graph" for an octopus merge is sometimes colored incorrectly, which is demonstrated and documented but not yet fixed. * The trace2 output, when sending them to files in a designated directory, can populate the directory with too many files; a mechanism is introduced to set the maximum number of files and discard further logs when the maximum is reached. * We have adopted a Code-of-conduct document. (merge 3f9ef874a7 jk/coc later to maint). Fixes since v2.23 ----------------- * "git grep --recurse-submodules" that looks at the working tree files looked at the contents in the index in submodules, instead of files in the working tree. (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint). * Codepaths to walk tree objects have been audited for integer overflows and hardened. (merge 5aa02f9868 jk/tree-walk-overflow later to maint). * "git pack-refs" can lose refs that are created while running, which is getting corrected. (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint). * "git checkout" and "git restore" to re-populate the index \ from a tree-ish (typically HEAD) did not work correctly for a path that was removed and then added again with the intent-to-add bit, when the corresponding working tree file was empty. This has been corrected. * Compilation fix. (merge 70597e8386 rs/nedalloc-fixlets later to maint). * "git gui" learned to call the clean-up procedure before exiting. (merge 0d88f3d2c5 py/git-gui-do-quit later to maint). * We promoted the "indent heuristics" that decides where to split diff hunks from experimental to the default a few years ago, but some stale documentation still marked it as experimental, which has been corrected. (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint). * Fix a mismerge that happened in 2.22 timeframe. (merge acb7da05ac en/checkout-mismerge-fix later to maint). * "git archive" recorded incorrect length in extended pax header in some corner cases, which has been corrected. (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint). * On-demand object fetching in lazy clone incorrectly tried to fetch commits from submodule projects, while still working in the superproject, which has been corrected. (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint). * Prepare get_short_oid() codepath to be thread-safe. (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint). * "for-each-ref" and friends that show refs did not protect themselves against ancient tags that did not record tagger names when asked to show "%(taggername)", which have been corrected. (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint). * The "git am" based backend of "git rebase" ignored the \ result of updating ".gitattributes" done in one step when replaying subsequent steps. (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint). * Tell cURL library to use the same malloc() implementation, with the xmalloc() wrapper, as the rest of the system, for consistency. (merge 93b980e58f cb/curl-use-xmalloc later to maint). * Build fix to adjust .gitignore to unignore a path that we started to track. (merge aac6ff7b5b js/visual-studio later to maint). * A few implementation fixes in the notes API. (merge 60fe477a0b mh/notes-duplicate-entries later to maint). * Fix an earlier regression to "git push --all" which should have been forbidden when the target remote repository is set to be a mirror. (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint). * Fix an earlier regression in the test suite, which mistakenly stopped running HTTPD tests. (merge 3960290675 sg/git-test-boolean later to maint). * "git rebase --autostash <upstream> <branch>", when \ <branch> is different from the current branch, incorrectly moved the tip of the current branch, which has been corrected. (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint). * Update support for Asciidoctor documentation toolchain. (merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint). * Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0 no longer works with the older one. (merge f6461b82b9 bc/doc-use-docbook-5 later to maint). * The markup used in user-manual has been updated to work better with asciidoctor. (merge c4d2f6143a ma/user-manual-markup-update later to maint). * Make sure the grep machinery does not abort when seeing a payload that is not UTF-8 even when JIT is not in use with PCRE1. (merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint). * The name of the blob object that stores the filter specification for sparse cloning/fetching was interpreted in a wrong place in the code, causing Git to abort. * "git log --decorate-refs-exclude=<pattern>" was incorrectly overruled when the "--simplify-by-decoration" option is used, which has been corrected. (merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint). * The "upload-pack" (the counterpart of "git fetch") needs \ to disable commit-graph when responding to a shallow clone/fetch request, but the way this was done made Git panic, which has been corrected. * The object traversal machinery has been optimized not to load tree objects when we are only interested in commit history. (merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint). * The object name parser for "Nth parent" syntax has been made more robust against integer overflows. (merge 59fa5f5a25 rs/nth-parent-parse later to maint). * The code used in following tags in "git fetch" has been optimized. (merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint). * Regression fix for progress output. (merge 2bb74b53a4 sg/progress-fix later to maint). * A bug in merge-recursive code that triggers when a branch with a symbolic link is merged with a branch that replaces it with a directory has been fixed. (merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint). * The rename detection logic sorts a list of rename source candidates by similarity to pick the best candidate, which means that a tie between sources with the same similarity is broken by the original location in the original candidate list (which is sorted by path). Force the sorting by similarity done with a stable sort, which is not promised by system supplied qsort(3), to ensure consistent results across platforms. (merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint). * The code to skip "UTF" and "UTF-" prefix, when computing \ an advice message, did not work correctly when the prefix was "UTF", which has been fixed. (merge b181676ce9 rs/convert-fix-utf-without-dash later to maint). * The author names taken from SVN repositories may have extra leading or trailing whitespaces, which are now munged away. (merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint). * "git rebase -i" showed a wrong HEAD while "reword" open \ the editor. (merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint). * A few simplification and bugfixes to PCRE interface. (merge c581e4a749 ab/pcre-jit-fixes later to maint). * PCRE fixes. (merge ff61681b46 cb/pcre1-cleanup later to maint). * "git range-diff" segfaulted when diff.noprefix configuration was used, as it blindly expected the patch it internally generates to have the standard a/ and b/ prefixes. The command now forces the internal patch to be built without any prefix, not to be affected by any end-user configuration. (merge 937b76ed49 js/range-diff-noprefix later to maint). * "git stash apply" in a subdirectory of a secondary worktree failed to access the worktree correctly, which has been corrected. (merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint). * The merge-recursive machinery is one of the most complex parts of the system that accumulated cruft over time. This large series cleans up the implementation quite a bit. (merge b657047719 en/merge-recursive-cleanup later to maint). * Pretty-printed command line formatter (used in e.g. reporting the command being run by the tracing API) had a bug that lost an argument that is an empty string, which has been corrected. (merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint). * "git range-diff" failed to handle mode-only change, which has been corrected. (merge 2b6a9b13ca tg/range-diff-output-update later to maint). * Dev support update. (merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint). * "git format-patch -o <outdir>" did an equivalent of \ "mkdir <outdir>" not "mkdir -p <outdir>", which was corrected. * "git stash save" lost local changes to submodules, which has been corrected. (merge 556895d0c8 jj/stash-reset-only-toplevel later to maint). * The atomic push over smart HTTP transport did not work, which has been corrected. (merge 6f1194246a bc/smart-http-atomic-push later to maint). * Other code cleanup, docfix, build fix, etc. |
2019-11-03 11:39:32 by Roland Illig | Files touched by this commit (274) |
Log message: devel: align variable assignments pkglint -Wall -F --only aligned --only indent -r No manual corrections. |
2019-09-01 01:51:52 by Maya Rashish | Files touched by this commit (1) |
Log message: git-gitk: add missing PLIST entries for Darwin from Vincent Povirk in PR pkg/54512 |
2019-08-20 15:00:02 by Adam Ciarcinski | Files touched by this commit (9) | |
Log message: git: updated to 2.23.0 Git 2.23 Release Notes ====================== Updates since v2.22 ------------------- Backward compatibility note * 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". * The "git log" command by default behaves as if the --mailmap option was given. UI, Workflows & Features * The "git fast-export/import" pair has been taught to handle commits with log messages in encoding other than UTF-8 better. * In recent versions of Git, per-worktree refs are exposed in refs/worktrees/<wtname>/ 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. * "git merge" learned "--quit" option that cleans up the \ in-progress merge while leaving the working tree and the index still in a mess. * "git format-patch" learns a configuration to set the default for its --notes=<ref> option. * The code to show args with potential typo that cannot be interpreted as a commit-ish has been improved. * "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. * 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. * "git help git" was hard to discover (well, at least for some people). * The pattern "git diff/grep" use to extract funcname and words boundary for Rust has been added. * "git status" can be told a non-standard default value for the "--[no-]ahead-behind" option with a new configuration variable status.aheadBehind. * "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-show-forced-updates" option to disable this safety feature. * 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. * "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. * The conditional inclusion mechanism learned to base the choice on the branch the HEAD currently is on. * "git rev-list --objects" learned the "--no-object-names" \ option to squelch the path to the object that is used as a grouping hint for pack-objects. * A new tag.gpgSign configuration variable turns "git tag -a" into "git tag -s". * "git multi-pack-index" learned expire and repack subcommands. * "git blame" learned to "ignore" commits in the history, whose effects (as well as their presence) get ignored. * "git cherry-pick/revert" learned a new "--skip" action. * The tips of refs from the alternate object store can be used as starting point for reachability computation now. * Extra blank lines in "git status" output have been reduced. * The commits in a repository can be described by multiple commit-graph files now, which allows the commit-graph files to be updated incrementally. * "git range-diff" output has been tweaked for easier identification of which part of what file the patch shown is about. Performance, Internal Implementation, Development Support etc. * Update supporting parts of "git rebase" to remove code that should no longer be used. * Developer support to emulate unsatisfied prerequisites in tests to ensure that the remainder of the tests still succeeds when tests with prerequisites are skipped. * "git update-server-info" learned not to rewrite the file with the same contents. * 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" * Prepare use of reachability index in topological walker that works on a range (A..B). * A new tutorial targeting specifically aspiring git-core developers has been added. * Auto-detect how to tell HP-UX aCC where to use dynamically linked libraries from at runtime. * "git mergetool" and its tests now spawn fewer subprocesses. * Dev support update to help tracing out tests. * Support to build with MSVC has been updated. * "git fetch" that grabs from a group of remotes learned to run the auto-gc only once at the very end. * A handful of Windows build patches have been upstreamed. * 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. * "git for-each-ref" with multiple patterns have been optimized. * The tree-walk API learned to pass an in-core repository instance throughout more codepaths. * 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. * 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. * Adjust the dir-iterator API and apply it to the local clone optimization codepath. * 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. * 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. Fixes since v2.22 ----------------- * A relative pathname given to "git init --template=<path> \ <repo>" 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. * "git worktree add" used to fail when another worktree connected to the same repository was corrupt, which has been corrected. * The ownership rule for the file descriptor to fast-import remote backend was mixed up, leading to an unrelated file descriptor getting closed, which has been fixed. * 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. * Code cleanup and futureproof. * More parameter validation. * "git update-server-info" used to leave stale packfiles in its output, which has been corrected. * 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. * "git am -i --resolved" segfaulted after trying to see a commit as if it were a tree, which has been corrected. * "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. * "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. * The data collected by fsmonitor was not properly written back to the on-disk index file, breaking t7519 tests occasionally, which has been corrected. * Update to Unicode 12.1 width table. * 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. * "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. * 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 <name>" option. * "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. * 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. * The description about slashes in gitignore patterns (used to indicate things like "anchored to this level only" and "only matches directories") has been revamped. * The URL decoding code has been updated to avoid going past the end of the string while parsing %-<hex>-<hex> sequence. * The list of for-each like macros used by clang-format has been updated. * "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. (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint). * Code restructuring during 2.20 period broke fetching tags via "import" based transports. * 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. * "git checkout -p" needs to selectively apply a patch in reverse, which did not work well. * Code clean-up to avoid signed integer wraparounds during binary search. * "git interpret-trailers" always treated '#' as the comment character, regardless of core.commentChar setting, which has been corrected. * "git stash show 23" used to work, but no more after getting rewritten in C; this regression has been corrected. * "git rebase --abort" used to leave refs/rewritten/ when concluding "git rebase -r", which has been corrected. * 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. * The code to parse scaled numbers out of configuration files has been made more robust and also easier to follow. * The codepath to compute delta islands used to spew progress output without giving the callers any way to squelch it, which has been fixed. * 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. * Use "Erase in Line" CSI sequence that is already used in the editor support to clear cruft in the progress output. * "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. * The configuration variable rebase.rescheduleFailedExec should be effective only while running an interactive rebase and should not affect anything when running a non-interactive one, which was not the case. This has been corrected. * 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. * Generation of pack bitmaps are now disabled when .keep files exist, as these are mutually exclusive features. (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint). * "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. * "git stash --keep-index" did not work correctly on paths that have been removed, which has been fixed. (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint). * Window 7 update ;-) * A codepath that reads from GPG for signed object verification read past the end of allocated buffer, which has been fixed. * "git clean" silently skipped a path when it cannot lstat() it; now it gives a warning. * "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. * The internal diff machinery can be made to read out of bounds while looking for --function-context line in a corner case, which has been corrected. (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint). * Other code cleanup, docfix, build fix, etc. (merge fbec05c210 cc/test-oidmap later to maint). (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint). (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint). (merge d61e6ce1dd sg/fsck-config-in-doc later to maint). |
2018-04-11 21:39:35 by Adam Ciarcinski | Files touched by this commit (12) | |
Log message: git: updated to 2.17.0 Git 2.17: UI, Workflows & Features * "diff" family of commands learned \ "--find-object=<object-id>" option to limit the findings to changes that involve the named object. * "git format-patch" learned to give 72-cols to diffstat, which is consistent with other line length limits the subcommand uses for its output meant for e-mails. * The log from "git daemon" can be redirected with a new option; one relevant use case is to send the log to standard error (instead of syslog) when running it from inetd. * "git rebase" learned to take "--allow-empty-message" option. * "git am" has learned the "--quit" option, in addition to the existing "--abort" option; having the pair mirrors a few other commands like "rebase" and "cherry-pick". * "git worktree add" learned to run the post-checkout hook, just like "git clone" runs it upon the initial checkout. * "git tag" learned an explicit "--edit" option that allows the message given via "-m" and "-F" to be further edited. * "git fetch --prune-tags" may be used as a handy short-hand for getting rid of stale tags that are locally held. * The new "--show-current-patch" option gives an end-user facing way to get the diff being applied when "git rebase" (and "git am") stops with a conflict. * "git add -p" used to offer "/" (look for a matching hunk) as a choice, even there was only one hunk, which has been corrected. Also the single-key help is now given only for keys that are enabled (e.g. help for '/' won't be shown when there is only one hunk). * Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when the side branch being merged is a descendant of the current commit, create a merge commit instead of fast-forwarding) when merging a tag object. This was appropriate default for integrators who pull signed tags from their downstream contributors, but caused an unnecessary merges when used by downstream contributors who habitually "catch up" their topic branches with tagged releases from the upstream. Update "git merge" to default to --no-ff only when merging a tag object that does *not* sit at its usual place in refs/tags/ hierarchy, and allow fast-forwarding otherwise, to mitigate the problem. * "git status" can spend a lot of cycles to compute the relation between the current branch and its upstream, which can now be disabled with "--no-ahead-behind" option. * "git diff" and friends learned funcname patterns for Go language source files. * "git send-email" learned "--reply-to=<address>" option. * Funcname pattern used for C# now recognizes "async" keyword. * In a way similar to how "git tag" learned to honor the pager setting only in the list mode, "git config" learned to ignore the pager setting when it is used for setting values (i.e. when the purpose of the operation is not to "show"). Performance, Internal Implementation, Development Support etc. * More perf tests for threaded grep * "perf" test output can be sent to codespeed server. * The build procedure for perl/ part has been greatly simplified by weaning ourselves off of MakeMaker. * Perl 5.8 or greater has been required since Git 1.7.4 released in 2010, but we continued to assume some core modules may not exist and used a conditional "eval { require <<module>> }"; we no \ longer do this. Some platforms (Fedora/RedHat/CentOS, for example) ship Perl without all core modules by default (e.g. Digest::MD5, File::Temp, File::Spec, Net::Domain, Net::SMTP). Users on such platforms may need to install these additional modules. * As a convenience, we install copies of Perl modules we require which are not part of the core Perl distribution (e.g. Error and Mail::Address). Users and packagers whose operating system provides these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the bundled modules. * In preparation for implementing narrow/partial clone, the machinery for checking object connectivity used by gc and fsck has been taught that a missing object is OK when it is referenced by a packfile specially marked as coming from trusted repository that promises to make them available on-demand and lazily. * The machinery to clone & fetch, which in turn involves packing and unpacking objects, has been told how to omit certain objects using the filtering mechanism introduced by another topic. It now knows to mark the resulting pack as a promisor pack to tolerate missing objects, laying foundation for "narrow" clones. * The first step to getting rid of mru API and using the doubly-linked list API directly instead. * Retire mru API as it does not give enough abstraction over underlying list API to be worth it. * Rewrite two more "git submodule" subcommands in C. * The tracing machinery learned to report tweaking of environment variables as well. * Update Coccinelle rules to catch and optimize strbuf_addf(&buf, \ "%s", str) * Prevent "clang-format" from breaking line after function return type. * The sequencer infrastructure is shared across "git cherry-pick", "git rebase -i", etc., and has always spawned "git commit" \ when it needs to create a commit. It has been taught to do so internally, when able, by reusing the codepath "git commit" itself uses, which gives performance boost for a few tens of percents in some sample scenarios. * Push the submodule version of collision-detecting SHA-1 hash implementation a bit harder on builders. * Avoid mmapping small files while using packed refs (especially ones with zero size, which would cause later munmap() to fail). * Conversion from uchar[20] to struct object_id continues. * More tests for wildmatch functions. * The code to binary search starting from a fan-out table (which is how the packfile is indexed with object names) has been refactored into a reusable helper. * We now avoid using identifiers that clash with C++ keywords. Even though it is not a goal to compile Git with C++ compilers, changes like this help use of code analysis tools that targets C++ on our codebase. * The executable is now built in 'script' phase in Travis CI integration, to follow the established practice, rather than during 'before_script' phase. This allows the CI categorize the failures better ('failed' is project's fault, 'errored' is build environment's). * Writing out the index file when the only thing that changed in it is the untracked cache information is often wasteful, and this has been optimized out. * Various pieces of Perl code we have have been cleaned up. * Internal API clean-up to allow write_locked_index() optionally skip writing the in-core index when it is not modified. |
2017-02-25 09:32:57 by Adam Ciarcinski | Files touched by this commit (6) | |
Log message: Git 2.12 Release Notes ====================== Backward compatibility notes. * Use of an empty string that is used for 'everything matches' is still warned and Git asks users to use a more explicit '.' for that instead. The hope is that existing users will not mind this change, and eventually the warning can be turned into a hard error, upgrading the deprecation into removal of this (mis)feature. That is not scheduled to happen in the upcoming release (yet). * The historical argument order "git merge <msg> HEAD \ <commit>..." has been deprecated for quite some time, and will be removed in a future release. * An ancient script "git relink" has been removed. Updates since v2.11 ------------------- UI, Workflows & Features * Various updates to "git p4". * "git p4" didn't interact with the internal of .git directory correctly in the modern "git-worktree"-enabled world. * "git branch --list" and friends learned "--ignore-case" \ option to optionally sort branches and tags case insensitively. * In addition to %(subject), %(body), "log --pretty=format:..." learned a new placeholder %(trailers). * "git rebase" learned "--quit" option, which allows a user to remove the metadata left by an earlier "git rebase" that was manually aborted without using "git rebase --abort". * "git clone --reference $there --recurse-submodules $super" has been taught to guess repositories usable as references for submodules of $super that are embedded in $there while making a clone of the superproject borrow objects from $there; extend the mechanism to also allow submodules of these submodules to borrow repositories embedded in these clones of the submodules embedded in the clone of the superproject. * Porcelain scripts written in Perl are getting internationalized. * "git merge --continue" has been added as a synonym to "git \ commit" to conclude a merge that has stopped due to conflicts. * Finer-grained control of what protocols are allowed for transports during clone/fetch/push have been enabled via a new configuration mechanism. * "git shortlog" learned "--committer" option to group \ commits by committer, instead of author. * GitLFS integration with "git p4" has been updated. * The isatty() emulation for Windows has been updated to eradicate the previous hack that depended on internals of (older) MSVC runtime. * Some platforms no longer understand "latin-1" that is still seen in the wild in e-mail headers; replace them with "iso-8859-1" that is more widely known when conversion fails from/to it. * "git grep" has been taught to optionally recurse into submodules. * "git rm" used to refuse to remove a submodule when it has its own git repository embedded in its working tree. It learned to move the repository away to $GIT_DIR/modules/ of the superproject instead, and allow the submodule to be deleted (as long as there will be no loss of local modifications, that is). * A recent updates to "git p4" was not usable for older p4 but it could be made to work with minimum changes. Do so. * "git diff" learned diff.interHunkContext configuration variable that gives the default value for its --inter-hunk-context option. * The prereleaseSuffix feature of version comparison that is used in "git tag -l" did not correctly when two or more prereleases for the same release were present (e.g. when 2.0, 2.0-beta1, and 2.0-beta2 are there and the code needs to compare 2.0-beta1 and 2.0-beta2). * "git submodule push" learned "--recurse-submodules=only option to push submodules out without pushing the top-level superproject. * "git tag" and "git verify-tag" learned to put GPG verification status in their "--format=<placeholders>" output format. * An ancient repository conversion tool left in contrib/ has been removed. * "git show-ref HEAD" used with "--verify" because the user \ is not interested in seeing refs/remotes/origin/HEAD, and used with "--head" because the user does not want HEAD to be filtered out, i.e. "git show-ref --head --verify HEAD", did not work as expected. * "git submodule add" used to be confused and refused to add a locally created repository; users can now use "--force" option to add them. (merge 619acfc78c sb/submodule-add-force later to maint). * Some people feel the default set of colors used by "git log --graph" rather limiting. A mechanism to customize the set of colors has been introduced. * "git read-tree" and its underlying unpack_trees() machinery learned to report problematic paths prefixed with the --super-prefix option. * When a submodule "A", which has another submodule "B" \ nested within it, is "absorbed" into the top-level superproject, the inner submodule "B" used to be left in a strange state. The logic to adjust the .git pointers in these submodules has been corrected. * The user can specify a custom update method that is run when "submodule update" updates an already checked out submodule. This was ignored when checking the submodule out for the first time and we instead always just checked out the commit that is bound to the path in the superproject's index. * The command line completion (in contrib/) learned that "git diff --submodule=" can take "diff" as a recently \ added option. * The "core.logAllRefUpdates" that used to be boolean has been enhanced to take 'always' as well, to record ref updates to refs other than the ones that are expected to be updated (i.e. branches, remote-tracking branches and notes). * Comes with more command line completion (in contrib/) for recently introduced options. |