76 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
adam
|
3b88bd43a5 | Revbump post boost update | ||
adam
|
7d36c6e2e5 |
ixes since v2.10
----------------- * Clarify various ways to specify the "revision ranges" in the documentation. * "diff-highlight" script (in contrib/) learned to work better with "git log -p --graph" output. * The test framework left the number of tests and success/failure count in the t/test-results directory, keyed by the name of the test script plus the process ID. The latter however turned out not to serve any useful purpose. The process ID part of the filename has been removed. * Having a submodule whose ".git" repository is somehow corrupt caused a few commands that recurse into submodules loop forever. * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but the resulting repository becomes an invalid one. Teach the command to forbid removal of HEAD. * A test spawned a short-lived background process, which sometimes prevented the test directory from getting removed at the end of the script on some platforms. * Update a few tests that used to use GIT_CURL_VERBOSE to use the newer GIT_TRACE_CURL. * Update Japanese translation for "git-gui". * "git fetch http::/site/path" did not die correctly and segfaulted instead. * "git commit-tree" stopped reading commit.gpgsign configuration variable that was meant for Porcelain "git commit" in Git 2.9; we forgot to update "git gui" to look at the configuration to match this change. * "git log --cherry-pick" used to include merge commits as candidates to be matched up with other commits, resulting a lot of wasted time. The patch-id generation logic has been updated to ignore merges to avoid the wastage. * The http transport (with curl-multi option, which is the default these days) failed to remove curl-easy handle from a curlm session, which led to unnecessary API failures. * "git diff -W" output needs to extend the context backward to include the header line of the current function and also forward to include the body of the entire current function up to the header line of the next one. This process may have to merge to adjacent hunks, but the code forgot to do so in some cases. * Performance tests done via "t/perf" did not use the same set of build configuration if the user relied on autoconf generated configuration. * "git format-patch --base=..." feature that was recently added showed the base commit information after "-- " e-mail signature line, which turned out to be inconvenient. The base information has been moved above the signature line. * Even when "git pull --rebase=preserve" (and the underlying "git rebase --preserve") can complete without creating any new commit (i.e. fast-forwards), it still insisted on having a usable ident information (read: user.email is set correctly), which was less than nice. As the underlying commands used inside "git rebase" would fail with a more meaningful error message and advice text when the bogus ident matters, this extra check was removed. * "git gc --aggressive" used to limit the delta-chain length to 250, which is way too deep for gaining additional space savings and is detrimental for runtime performance. The limit has been reduced to 50. * Documentation for individual configuration variables to control use of color (like `color.grep`) said that their default value is 'false', instead of saying their default is taken from `color.ui`. When we updated the default value for color.ui from 'false' to 'auto' quite a while ago, all of them broke. This has been corrected. * A shell script example in check-ref-format documentation has been fixed. * "git checkout <word>" does not follow the usual disambiguation rules when the <word> can be both a rev and a path, to allow checking out a branch 'foo' in a project that happens to have a file 'foo' in the working tree without having to disambiguate. This was poorly documented and the check was incorrect when the command was run from a subdirectory. * Some codepaths in "git diff" used regexec(3) on a buffer that was mmap(2)ed, which may not have a terminating NUL, leading to a read beyond the end of the mapped region. This was fixed by introducing a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND extension. * The procedure to build Git on Mac OS X for Travis CI hardcoded the internal directory structure we assumed HomeBrew uses, which was a no-no. The procedure has been updated to ask HomeBrew things we need to know to fix this. * When "git rebase -i" is given a broken instruction, it told the user to fix it with "--edit-todo", but didn't say what the step after that was (i.e. "--continue"). * "git add --chmod=+x" added recently lacked documentation, which has been corrected. * "git add --chmod=+x <pathspec>" added recently only toggled the executable bit for paths that are either new or modified. This has been corrected to flip the executable bit for all paths that match the given pathspec. * "git pack-objects --include-tag" was taught that when we know that we are sending an object C, we want a tag B that directly points at C but also a tag A that points at the tag B. We used to miss the intermediate tag B in some cases. * Documentation around tools to import from CVS was fairly outdated. * In the codepath that comes up with the hostname to be used in an e-mail when the user didn't tell us, we looked at ai_canonname field in struct addrinfo without making sure it is not NULL first. Also contains minor documentation updates and code clean-ups. |
||
adam
|
a7a5e7cb6c |
Changes 2.10.0:
UI, Workflows & Features * "git pull --rebase --verify-signature" learned to warn the user that "--verify-signature" is a no-op when rebasing. * An upstream project can make a recommendation to shallowly clone some submodules in the .gitmodules file it ships. * "git worktree add" learned that '-' can be used as a short-hand for "@{-1}", the previous branch. * Update the funcname definition to support css files. * The completion script (in contrib/) learned to complete "git status" options. * Messages that are generated by auto gc during "git push" on the receiving end are now passed back to the sending end in such a way that they are shown with "remote: " prefix to avoid confusing the users. * "git add -i/-p" learned to honor diff.compactionHeuristic experimental knob, so that the user can work on the same hunk split as "git diff" output. * "upload-pack" allows a custom "git pack-objects" replacement when responding to "fetch/clone" via the uploadpack.packObjectsHook. (merge b738396 jk/upload-pack-hook later to maint). * Teach format-patch and mailsplit (hence "am") how a line that happens to begin with "From " in the e-mail message is quoted with ">", so that these lines can be restored to their original shape. (merge d9925d1 ew/mboxrd-format-am later to maint). * "git repack" learned the "--keep-unreachable" option, which sends loose unreachable objects to a pack instead of leaving them loose. This helps heuristics based on the number of loose objects (e.g. "gc --auto"). (merge e26a8c4 jk/repack-keep-unreachable later to maint). * "log --graph --format=" learned that "%>|(N)" specifies the width relative to the terminal's left edge, not relative to the area to draw text that is to the right of the ancestry-graph section. It also now accepts negative N that means the column limit is relative to the right border. * A careless invocation of "git send-email directory/" after editing 0001-change.patch with an editor often ends up sending both 0001-change.patch and its backup file, 0001-change.patch~, causing embarrassment and a minor confusion. Detect such an input and offer to skip the backup files when sending the patches out. (merge 531220b jc/send-email-skip-backup later to maint). * "git submodule update" that drives many "git clone" could eventually hit flaky servers/network conditions on one of the submodules; the command learned to retry the attempt. * The output coloring scheme learned two new attributes, italic and strike, in addition to existing bold, reverse, etc. * "git log" learns log.showSignature configuration variable, and a command line option "--no-show-signature" to countermand it. (merge fce04c3 mj/log-show-signature-conf later to maint). * More markings of messages for i18n, with updates to various tests to pass GETTEXT_POISON tests. * "git archive" learned to handle files that are larger than 8GB and commits far in the future than expressible by the traditional US-TAR format. (merge 560b0e8 jk/big-and-future-archive-tar later to maint). * A new configuration variable core.sshCommand has been added to specify what value for GIT_SSH_COMMAND to use per repository. * "git worktree prune" protected worktrees that are marked as "locked" by creating a file in a known location. "git worktree" command learned a dedicated command pair to create and remove such a file, so that the users do not have to do this with editor. * A handful of "git svn" updates. * "git push" learned to accept and pass extra options to the receiving end so that hooks can read and react to them. * "git status" learned to suggest "merge --abort" during a conflicted merge, just like it already suggests "rebase --abort" during a conflicted rebase. * "git jump" script (in contrib/) has been updated a bit. (merge a91e692 jk/git-jump later to maint). * "git push" and "git clone" learned to give better progress meters to the end user who is waiting on the terminal. * An entry "git log --decorate" for the tip of the current branch is shown as "HEAD -> name" (where "name" is the name of the branch); the arrow is now painted in the same color as "HEAD", not in the color for commits. * "git format-patch" learned format.from configuration variable to specify the default settings for its "--from" option. * "git am -3" calls "git merge-recursive" when it needs to fall back to a three-way merge; this call has been turned into an internal subroutine call instead of spawning a separate subprocess. * The command line completion scripts (in contrib/) now knows about "git branch --delete/--move [--remote]". (merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint). * "git rev-parse --git-path hooks/<hook>" learned to take core.hooksPath configuration variable (introduced during 2.9 cycle) into account. (merge 9445b49 ab/hooks later to maint). * "git log --show-signature" and other commands that display the verification status of PGP signature now shows the longer key-id, as 32-bit key-id is so last century. |
||
wiz
|
5e6a40336e |
Update git* to 2.9.3.
Fixes since v2.9.2 ------------------ * A helper function that takes the contents of a commit object and finds its subject line did not ignore leading blank lines, as is commonly done by other codepaths. Make it ignore leading blank lines to match. * Git does not know what the contents in the index should be for a path added with "git add -N" yet, so "git grep --cached" should not show hits (or show lack of hits, with -L) in such a path, but that logic does not apply to "git grep", i.e. searching in the working tree files. But we did so by mistake, which has been corrected. * "git rebase -i --autostash" did not restore the auto-stashed change when the operation was aborted. * "git commit --amend --allow-empty-message -S" for a commit without any message body could have misidentified where the header of the commit object ends. * More mark-up updates to typeset strings that are expected to literally typed by the end user in fixed-width font. * For a long time, we carried an in-code comment that said our colored output would work only when we use fprintf/fputs on Windows, which no longer is the case for the past few years. * "gc.autoPackLimit" when set to 1 should not trigger a repacking when there is only one pack, but the code counted poorly and did so. * One part of "git am" had an oddball helper function that called stuff from outside "his" as opposed to calling what we have "ours", which was not gender-neutral and also inconsistent with the rest of the system where outside stuff is usuall called "theirs" in contrast to "ours". * The test framework learned a new helper test_match_signal to check an exit code from getting killed by an expected signal. * "git blame -M" missed a single line that was moved within the file. * Fix recently introduced codepaths that are involved in parallel submodule operations, which gave up on reading too early, and could have wasted CPU while attempting to write under a corner case condition. * "git grep -i" has been taught to fold case in non-ascii locales correctly. * A test that unconditionally used "mktemp" learned that the command is not necessarily available everywhere. * "git blame file" allowed the lineage of lines in the uncommitted, unadded contents of "file" to be inspected, but it refused when "file" did not appear in the current commit. When "file" was created by renaming an existing file (but the change has not been committed), this restriction was unnecessarily tight. * "git add -N dir/file && git write-tree" produced an incorrect tree when there are other paths in the same directory that sorts after "file". * "git fetch http://user:pass [at] hos/repo..." scrubbed the userinfo part, but "git push" didn't. * An age old bug that caused "git diff --ignore-space-at-eol" misbehave has been fixed. * "git notes merge" had a code to see if a path exists (and fails if it does) and then open the path for writing (when it doesn't). Replace it with open with O_EXCL. * "git pack-objects" and "git index-pack" mostly operate with off_t when talking about the offset of objects in a packfile, but there were a handful of places that used "unsigned long" to hold that value, leading to an unintended truncation. * Recent update to "git daemon" tries to enable the socket-level KEEPALIVE, but when it is spawned via inetd, the standard input file descriptor may not necessarily be connected to a socket. Suppress an ENOTSOCK error from setsockopt(). * Recent FreeBSD stopped making perl available at /usr/bin/perl; switch the default the built-in path to /usr/local/bin/perl on not too ancient FreeBSD releases. * "git status" learned to suggest "merge --abort" during a conflicted merge, just like it already suggests "rebase --abort" during a conflicted rebase. * The .c/.h sources are marked as such in our .gitattributes file so that "git diff -W" and friends would work better. * Existing autoconf generated test for the need to link with pthread library did not check all the functions from pthread libraries; recent FreeBSD has some functions in libc but not others, and we mistakenly thought linking with libc is enough when it is not. * Allow http daemon tests in Travis CI tests. * Users of the parse_options_concat() API function need to allocate extra slots in advance and fill them with OPT_END() when they want to decide the set of supported options dynamically, which makes the code error-prone and hard to read. This has been corrected by tweaking the API to allocate and return a new copy of "struct option" array. * The use of strbuf in "git rm" to build filename to remove was a bit suboptimal, which has been fixed. * "git commit --help" said "--no-verify" is only about skipping the pre-commit hook, and failed to say that it also skipped the commit-msg hook. * "git merge" in Git v2.9 was taught to forbid merging an unrelated lines of history by default, but that is exactly the kind of thing the "--rejoin" mode of "git subtree" (in contrib/) wants to do. "git subtree" has been taught to use the "--allow-unrelated-histories" option to override the default. * The build procedure for "git persistent-https" helper (in contrib/) has been updated so that it can be built with more recent versions of Go. * There is an optimization used in "git diff $treeA $treeB" to borrow an already checked-out copy in the working tree when it is known to be the same as the blob being compared, expecting that open/mmap of such a file is faster than reading it from the object store, which involves inflating and applying delta. This however kicked in even when the checked-out copy needs to go through the convert-to-git conversion (including the clean filter), which defeats the whole point of the optimization. The optimization has been disabled when the conversion is necessary. * "git -c grep.patternType=extended log --basic-regexp" misbehaved because the internal API to access the grep machinery was not designed well. * Windows port was failing some tests in t4130, due to the lack of inum in the returned values by its lstat(2) emulation. * The characters in the label shown for tags/refs for commits in "gitweb" output are now properly escaped for proper HTML output. * FreeBSD can lie when asked mtime of a directory, which made the untracked cache code to fall back to a slow-path, which in turn caused tests in t7063 to fail because it wanted to verify the behaviour of the fast-path. * Squelch compiler warnings for netmalloc (in compat/) library. * The API documentation for hashmap was unclear if hashmap_entry can be safely discarded without any other consideration. State that it is safe to do so. * Not-so-recent rewrite of "git am" that started making internal calls into the commit machinery had an unintended regression, in that no matter how many seconds it took to apply many patches, the resulting committer timestamp for the resulting commits were all the same. * "git difftool <paths>..." started in a subdirectory failed to interpret the paths relative to that directory, which has been fixed. Also contains minor documentation updates and code clean-ups. |
||
wiz
|
e5fe132d52 |
Update git to 2.9.2.
Fixes since v2.9.1 ------------------ * A fix merged to v2.9.1 had a few tests that are not meant to be run on platforms without 64-bit long, which caused unnecessary test failures on them because we didn't detect the platform and skip them. These tests are now skipped on platforms that they are not applicable to. Fixes since v2.9 ---------------- * When "git daemon" is run without --[init-]timeout specified, a connection from a client that silently goes offline can hang around for a long time, wasting resources. The socket-level KEEPALIVE has been enabled to allow the OS to notice such failed connections. * The commands in `git log` family take %C(auto) in a custom format string. This unconditionally turned the color on, ignoring --no-color or with --color=auto when the output is not connected to a tty; this was corrected to make the format truly behave as "auto". * "git rev-list --count" whose walk-length is limited with "-n" option did not work well with the counting optimized to look at the bitmap index. * "git show -W" (extend hunks to cover the entire function, delimited by lines that match the "funcname" pattern) used to show the entire file when a change added an entire function at the end of the file, which has been fixed. * The documentation set has been updated so that literal commands, configuration variables and environment variables are consistently typeset in fixed-width font and bold in manpages. * "git svn propset" subcommand that was added in 2.3 days is documented now. * The documentation tries to consistently spell "GPG"; when referring to the specific program name, "gpg" is used. * "git reflog" stopped upon seeing an entry that denotes a branch creation event (aka "unborn"), which made it appear as if the reflog was truncated. * The git-prompt scriptlet (in contrib/) was not friendly with those who uses "set -u", which has been fixed. * A codepath that used alloca(3) to place an unbounded amount of data on the stack has been updated to avoid doing so. * "git update-index --add --chmod=+x file" may be usable as an escape hatch, but not a friendly thing to force for people who do need to use it regularly. "git add --chmod=+x file" can be used instead. * Build improvements for gnome-keyring (in contrib/) * "git status" used to say "working directory" when it meant "working tree". * Comments about misbehaving FreeBSD shells have been clarified with the version number (9.x and before are broken, newer ones are OK). * "git cherry-pick A" worked on an unborn branch, but "git cherry-pick A..B" didn't. * "git add -i/-p" learned to honor diff.compactionHeuristic experimental knob, so that the user can work on the same hunk split as "git diff" output. * "log --graph --format=" learned that "%>|(N)" specifies the width relative to the terminal's left edge, not relative to the area to draw text that is to the right of the ancestry-graph section. It also now accepts negative N that means the column limit is relative to the right border. * The ownership rule for the piece of memory that hold references to be fetched in "git fetch" was screwy, which has been cleaned up. * "git bisect" makes an internal call to "git diff-tree" when bisection finds the culprit, but this call did not initialize the data structure to pass to the diff-tree API correctly. * Formats of the various data (and how to validate them) where we use GPG signature have been documented. * Fix an unintended regression in v2.9 that breaks "clone --depth" that recurses down to submodules by forcing the submodules to also be cloned shallowly, which many server instances that host upstream of the submodules are not prepared for. * Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}' to set the default value, without enclosing it in double quotes. * Some platform-specific code had non-ANSI strict declarations of C functions that do not take any parameters, which has been corrected. * The internal code used to show local timezone offset is not prepared to handle timestamps beyond year 2100, and gave a bogus offset value to the caller. Use a more benign looking +0000 instead and let "git log" going in such a case, instead of aborting. * One among four invocations of readlink(1) in our test suite has been rewritten so that the test can run on systems without the command (others are in valgrind test framework and t9802). * t/perf needs /usr/bin/time with GNU extension; the invocation of it is updated to "gtime" on Darwin. * A bug, which caused "git p4" while running under verbose mode to report paths that are omitted due to branch prefix incorrectly, has been fixed; the command said "Ignoring file outside of prefix" for paths that are _inside_. * The top level documentation "git help git" still pointed at the documentation set hosted at now-defunct google-code repository. Update it to point to https://git.github.io/htmldocs/git.html instead. Also contains minor documentation updates and code clean-ups. |
||
wiz
|
2b0a009d0e | Bump PKGREVISION for perl-5.24.0 for everything mentioning perl. | ||
adam
|
ee3b82188d |
Git 2.9 Release Notes
===================== Backward compatibility notes ---------------------------- The end-user facing Porcelain level commands in the "git diff" and "git log" family by default enable the rename detection; you can still use "diff.renames" configuration variable to disable this. Merging two branches that have no common ancestor with "git merge" is by default forbidden now to prevent creating such an unusual merge by mistake. The output formats of "git log" that indents the commit log message by 4 spaces now expands HT in the log message by default. You can use the "--no-expand-tabs" option to disable this. "git commit-tree" plumbing command required the user to always sign its result when the user sets the commit.gpgsign configuration variable, which was an ancient mistake, which this release corrects. A script that drives commit-tree, if it relies on this mistake, now needs to read commit.gpgsign and pass the -S option as necessary. Updates since v2.8 ------------------ UI, Workflows & Features * Comes with git-multimail 1.3.1 (in contrib/). * The end-user facing commands like "git diff" and "git log" now enable the rename detection by default. * The credential.helper configuration variable is cumulative and there is no good way to override it from the command line. As a special case, giving an empty string as its value now serves as the signal to clear the values specified in various files. * A new "interactive.diffFilter" configuration can be used to customize the diff shown in "git add -i" sessions. * "git p4" now allows P4 author names to be mapped to Git author names. * "git rebase -x" can be used without passing "-i" option. * "git -c credential.<var>=<value> submodule" can now be used to propagate configuration variables related to credential helper down to the submodules. * "git tag" can create an annotated tag without explicitly given an "-a" (or "-s") option (i.e. when a tag message is given). A new configuration variable, tag.forceSignAnnotated, can be used to tell the command to create signed tag in such a situation. * "git merge" used to allow merging two branches that have no common base by default, which led to a brand new history of an existing project created and then get pulled by an unsuspecting maintainer, which allowed an unnecessary parallel history merged into the existing project. The command has been taught not to allow this by default, with an escape hatch "--allow-unrelated-histories" option to be used in a rare event that merges histories of two projects that started their lives independently. * "git pull" has been taught to pass the "--allow-unrelated-histories" option to underlying "git merge". * "git apply -v" learned to report paths in the patch that were skipped via --include/--exclude mechanism or being outside the current working directory. * Shell completion (in contrib/) updates. * The commit object name reported when "rebase -i" stops has been shortened. * "git worktree add" can be given "--no-checkout" option to only create an empty worktree without checking out the files. * "git mergetools" learned to drive ExamDiff. * "git pull --rebase" learned "--[no-]autostash" option, so that the rebase.autostash configuration variable set to true can be overridden from the command line. * When "git log" shows the log message indented by 4-spaces, the remainder of a line after a HT does not align in the way the author originally intended. The command now expands tabs by default to help such a case, and allows the users to override it with a new option, "--no-expand-tabs". * "git send-email" now uses a more readable timestamps when formulating a message ID. * "git rerere" can encounter two or more files with the same conflict signature that have to be resolved in different ways, but there was no way to record these separate resolutions. * "git p4" learned to record P4 jobs in Git commit that imports from the history in Perforce. * "git describe --contains" often made a hard-to-justify choice of tag to name a given commit, because it tried to come up with a name with smallest number of hops from a tag, causing an old commit whose close descendant that is recently tagged were not described with respect to an old tag but with a newer tag. It did not help that its computation of "hop" count was further tweaked to penalize being on a side branch of a merge. The logic has been updated to favor using the tag with the oldest tagger date, which is a lot easier to explain to the end users: "We describe a commit in terms of the (chronologically) oldest tag that contains the commit." * "git clone" learned the "--shallow-submodules" option. * HTTP transport clients learned to throw extra HTTP headers at the server, specified via http.extraHeader configuration variable. * The "--compaction-heuristic" option to "git diff" family of commands enables a heuristic to make the patch output more readable by using a blank line as a strong hint that the contents before and after it belong to logically separate units. It is still experimental. * A new configuration variable core.hooksPath allows customizing where the hook directory is. * An earlier addition of "sanitize_submodule_env" with 14111fc4 (git: submodule honor -c credential.* from command line, 2016-02-29) turned out to be a convoluted no-op; implement what it wanted to do correctly, and stop filtering settings given via "git -c var=val". * "git commit --dry-run" reported "No, no, you cannot commit." in one case where "git commit" would have allowed you to commit, and this improves it a little bit ("git commit --dry-run --short" still does not give you the correct answer, for example). This is a stop-gap measure in that "commit --short --dry-run" still gives an incorrect result. * The experimental "multiple worktree" feature gains more safety to forbid operations on a branch that is checked out or being actively worked on elsewhere, by noticing that e.g. it is being rebased. * "git format-patch" learned a new "--base" option to record what (public, well-known) commit the original series was built on in its output. * "git commit" learned to pay attention to the "commit.verbose" configuration variable and act as if the "--verbose" option was given from the command line. * Updated documentation gives hints to GMail users with two-factor auth enabled that they need app-specific-password when using "git send-email". * The manpage output of our documentation did not render well in terminal; typeset literals in bold by default to make them stand out more. * The mark-up in the top-level README.md file has been updated to typeset CLI command names differently from the body text. Performance, Internal Implementation, Development Support etc. * The embedded args argv-array in the child process is used to build the command line to run pack-objects instead of using a separate array of strings. * A test for tags has been restructured so that more parts of it can easily be run on a platform without a working GnuPG. * The startup_info data, which records if we are working inside a repository (among other things), are now uniformly available to Git subcommand implementations, and Git avoids attempting to touch references when we are not in a repository. * The command line argument parser for "receive-pack" has been rewritten to use parse-options. * A major part of "git submodule update" has been ported to C to take advantage of the recently added framework to run download tasks in parallel. Other updates to "git submodule" that move pieces of logic to C continues. * Rename bunch of tests on "git clone" for better organization. * The tests that involve running httpd leaked the system-wide configuration in /etc/gitconfig to the tested environment. * Build updates for MSVC. * The repository set-up sequence has been streamlined (the biggest change is that there is no longer git_config_early()), so that we do not attempt to look into refs/* when we know we do not have a Git repository. * Code restructuring around the "refs" API to prepare for pluggable refs backends. * Sources to many test helper binaries and the generated helpers have been moved to t/helper/ subdirectory to reduce clutter at the top level of the tree. * Unify internal logic between "git tag -v" and "git verify-tag" commands by making one directly call into the other. * "merge-recursive" strategy incorrectly checked if a path that is involved in its internal merge exists in the working tree. * The test scripts for "git p4" (but not "git p4" implementation itself) has been updated so that they would work even on a system where the installed version of Python is python 3. * As nobody maintains our in-tree git.spec.in and distros use their own spec file, we stopped pretending that we support "make rpm". * Move from "unsigned char[20]" to "struct object_id" continues. * The code for warning_errno/die_errno has been refactored and a new error_errno() reporting helper is introduced. (merge 1da045f nd/error-errno later to maint). * Running tests with '-x' option to trace the individual command executions is a useful way to debug test scripts, but some tests that capture the standard error stream and check what the command said can be broken with the trace output mixed in. When running our tests under "bash", however, we can redirect the trace output to another file descriptor to keep the standard error of programs being tested intact. * t0040 had too many unnecessary repetitions in its test data. Teach test-parse-options program so that a caller can tell what it expects in its output, so that these repetitions can be cleaned up. * Add perf test for "rebase -i". * Common mistakes when writing gitlink: in our documentation are found by "make check-docs". * t9xxx series has been updated primarily for readability, while fixing small bugs in it. A few scripted Porcelain commands have also been updated to fix possible bugs around their use of "test -z" and "test -n". * CI test was taught to run git-svn tests. * "git cat-file --batch-all" has been sped up, by taking advantage of the fact that it does not have to read a list of objects, in two ways. * test updates to make it more readable and maintainable. (merge e6273f4 es/t1500-modernize later to maint). * "make DEVELOPER=1" worked as expected; setting DEVELOPER=1 in config.mak didn't. (merge 51dd3e8 mm/makefile-developer-can-be-in-config-mak later to maint). * The way how "submodule--helper list" signals unmatch error to its callers has been updated. * A bash-ism "local" has been removed from "git submodule" scripted Porcelain. Also contains various documentation updates and code clean-ups. |
||
wiz
|
c55dbe1024 | Reset PKGREVISION after update. | ||
wiz
|
97247526fe |
Update git to 2.8.4:
Git v2.8.4 Release Notes ======================== Fixes since v2.8.3 ------------------ * Documentation for "git merge --verify-signatures" has been updated to clarify that the signature of only the commit at the tip is verified. Also the phrasing used for signature and key validity is adjusted to align with that used by OpenPGP. * On Windows, .git and optionally any files whose name starts with a dot are now marked as hidden, with a core.hideDotFiles knob to customize this behaviour. * Portability enhancement for "rebase -i" to help platforms whose shell does not like "for i in <empty>" (which is not POSIX-kosher). * "git fsck" learned to catch NUL byte in a commit object as potential error and warn. * CI test was taught to build documentation pages. * Many 'linkgit:<git documentation page>' references were broken, which are all fixed with this. * "git describe --contains" often made a hard-to-justify choice of tag to give name to a given commit, because it tried to come up with a name with smallest number of hops from a tag, causing an old commit whose close descendant that is recently tagged were not described with respect to an old tag but with a newer tag. It did not help that its computation of "hop" count was further tweaked to penalize being on a side branch of a merge. The logic has been updated to favor using the tag with the oldest tagger date, which is a lot easier to explain to the end users: "We describe a commit in terms of the (chronologically) oldest tag that contains the commit." * Running tests with '-x' option to trace the individual command executions is a useful way to debug test scripts, but some tests that capture the standard error stream and check what the command said can be broken with the trace output mixed in. When running our tests under "bash", however, we can redirect the trace output to another file descriptor to keep the standard error of programs being tested intact. * "http.cookieFile" configuration variable clearly wants a pathname, but we forgot to treat it as such by e.g. applying tilde expansion. * When de-initialising all submodules, "git submodule deinit" gave a faulty recommendation to use "git submodule deinit .", which would result in a strange error message in a pathological corner case. This has been corrected to suggest "submodule deinit --all" instead. * Many commands normalize command line arguments from NFD to NFC variant of UTF-8 on OSX, but commands in the "diff" family did not, causing "git diff $path" to complain that no such path is known to Git. They have been taught to do the normalization. * A couple of bugs around core.autocrlf have been fixed. * "git difftool" learned to handle unmerged paths correctly in dir-diff mode. * The "are we talking with TTY, doing an interactive session?" detection has been updated to work better for "Git for Windows". Also contains other minor documentation updates and code clean-ups. |
||
khorben
|
21cc674559 |
Move dependency on devel/cvsps to the new git-cvs package
As suggested by wiz@ Bumps PKGREVISION |
||
khorben
|
e3c147d0f0 |
Bump PKGREVISION
As required for the new dependency on cvsps. |
||
khorben
|
c529ed476a | Register dependency on devel/cvsps for git-cvsimport(1) | ||
wiz
|
5b8495d435 |
Update git to 2.8.3.
Git v2.8.3 Release Notes ======================== Fixes since v2.8.2 ------------------ * "git send-email" now uses a more readable timestamps when formulating a message ID. * The repository set-up sequence has been streamlined (the biggest change is that there is no longer git_config_early()), so that we do not attempt to look into refs/* when we know we do not have a Git repository. * When "git worktree" feature is in use, "git branch -d" allowed deletion of a branch that is checked out in another worktree * When "git worktree" feature is in use, "git branch -m" renamed a branch that is checked out in another worktree without adjusting the HEAD symbolic ref for the worktree. * "git format-patch --help" showed `-s` and `--no-patch` as if these are valid options to the command. We already hide `--patch` option from the documentation, because format-patch is about showing the diff, and the documentation now hides these options as well. * A change back in version 2.7 to "git branch" broke display of a symbolic ref in a non-standard place in the refs/ hierarchy (we expect symbolic refs to appear in refs/remotes/*/HEAD to point at the primary branch the remote has, and as .git/HEAD to point at the branch we locally checked out). * A partial rewrite of "git submodule" in the 2.7 timeframe changed the way the gitdir: pointer in the submodules point at the real repository location to use absolute paths by accident. This has been corrected. * "git commit" misbehaved in a few minor ways when an empty message is given via -m '', all of which has been corrected. * Support for CRAM-MD5 authentication method in "git imap-send" did not work well. * The socks5:// proxy support added back in 2.6.4 days was not aware that socks5h:// proxies behave differently. * "git config" had a codepath that tried to pass a NULL to printf("%s"), which nobody seems to have noticed. * On Cygwin, object creation uses the "create a temporary and then rename it to the final name" pattern, not "create a temporary, hardlink it to the final name and then unlink the temporary" pattern. This is necessary to use Git on Windows shared directories, and is already enabled for the MinGW and plain Windows builds. It also has been used in Cygwin packaged versions of Git for quite a while. See http://thread.gmane.org/gmane.comp.version-control.git/291853 and http://thread.gmane.org/gmane.comp.version-control.git/275680. * "git replace -e" did not honour "core.editor" configuration. * Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs we use in imap-send, which has been adjusted for the change. * "git submodule" reports the paths of submodules the command recurses into, but this was incorrect when the command was not run from the root level of the superproject. * The test scripts for "git p4" (but not "git p4" implementation itself) has been updated so that they would work even on a system where the installed version of Python is python 3. * The "user.useConfigOnly" configuration variable makes it an error if users do not explicitly set user.name and user.email. However, its check was not done early enough and allowed another error to trigger, reporting that the default value we guessed from the system setting was unusable. This was a suboptimal end-user experience as we want the users to set user.name/user.email without relying on the auto-detection at all. * "git mv old new" did not adjust the path for a submodule that lives as a subdirectory inside old/ directory correctly. * "git push" from a corrupt repository that attempts to push a large number of refs deadlocked; the thread to relay rejection notices for these ref updates blocked on writing them to the main thread, after the main thread at the receiving end notices that the push failed and decides not to read these notices and return a failure. * A question by "git send-email" to ask the identity of the sender has been updated. * Recent update to Git LFS broke "git p4" by changing the output from its "lfs pointer" subcommand. * Some multi-byte encoding can have a backslash byte as a later part of one letter, which would confuse "highlight" filter used in gitweb. Also contains minor documentation updates and code clean-ups. |
||
adam
|
cb9341dc69 |
Version 2.8.2
Fixes since v2.8.1 ------------------ * The embedded args argv-array in the child process is used to build the command line to run pack-objects instead of using a separate array of strings. * Bunch of tests on "git clone" has been renumbered for better organization. * The tests that involve running httpd leaked the system-wide configuration in /etc/gitconfig to the tested environment. * "index-pack --keep=<msg>" was broken since v2.1.0 timeframe. * "git config --get-urlmatch", unlike other variants of the "git config --get" family, did not signal error with its exit status when there was no matching configuration. * The "--local-env-vars" and "--resolve-git-dir" options of "git rev-parse" failed to work outside a repository when the command's option parsing was rewritten in 1.8.5 era. * Fetching of history by naming a commit object name directly didn't work across remote-curl transport. * A small memory leak in an error codepath has been plugged in xdiff code. * strbuf_getwholeline() did not NUL-terminate the buffer on certain corner cases in its error codepath. * The startup_info data, which records if we are working inside a repository (among other things), are now uniformly available to Git subcommand implementations, and Git avoids attempting to touch references when we are not in a repository. * "git mergetool" did not work well with conflicts that both sides deleted. * "git send-email" had trouble parsing alias file in mailrc format when lines in it had trailing whitespaces on them. * When "git merge --squash" stopped due to conflict, the concluding "git commit" failed to read in the SQUASH_MSG that shows the log messages from all the squashed commits. * "git merge FETCH_HEAD" dereferenced NULL pointer when merging nothing into an unborn history (which is arguably unusual usage, which perhaps was the reason why nobody noticed it). * Build updates for MSVC. * "git diff -M" used to work better when two originally identical files A and B got renamed to X/A and X/B by pairing A to X/A and B to X/B, but this was broken in the 2.0 timeframe. * "git send-pack --all <there>" was broken when its command line option parsing was written in the 2.6 timeframe. * When running "git blame $path" with unnormalized data in the index for the path, the data in the working tree was blamed, even though "git add" would not have changed what is already in the index, due to "safe crlf" that disables the line-end conversion. It has been corrected. |
||
dbj
|
dde82c09aa | update PKG_{FAIL,SKIP}_REASON with += | ||
adam
|
b116195642 |
Changes 2.8.1:
* "make rpmbuild" target was broken as its input, git.spec.in, was not updated to match a file it describes that has been renamed recently. This has been fixed. |
||
sevan
|
0f9a14f977 |
Patch for CVE-2016-2324
Obtained via Debian Security Tracker
https://security-tracker.debian.org/tracker/CVE-2016-2324
|
||
adam
|
4d2c6f7650 |
Changes 2.7.3:
* Traditionally, the tests that try commands that work on the contents in the working tree were named with "worktree" in their filenames, but with the recent addition of "git worktree" subcommand, whose tests are also named similarly, it has become harder to tell them apart. The traditional tests have been renamed to use "work-tree" instead in an attempt to differentiate them. * Many codepaths forget to check return value from git_config_set(); the function is made to die() to make sure we do not proceed when setting a configuration variable failed. * Handling of errors while writing into our internal asynchronous process has been made more robust, which reduces flakiness in our tests. * "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a rev, i.e. the object named by the the pathname with wildcard characters in a tree object. * "git rev-parse --git-common-dir" used in the worktree feature misbehaved when run from a subdirectory. * The "v(iew)" subcommand of the interactive "git am -i" command was broken in 2.6.0 timeframe when the command was rewritten in C. * "git merge-tree" used to mishandle "both sides added" conflict with its own "create a fake ancestor file that has the common parts of what both sides have added and do a 3-way merge" logic; this has been updated to use the usual "3-way merge with an empty blob as the fake common ancestor file" approach used in the rest of the system. * The memory ownership rule of fill_textconv() API, which was a bit tricky, has been documented a bit better. * The documentation did not clearly state that the 'simple' mode is now the default for "git push" when push.default configuration is not set. * Recent versions of GNU grep are pickier when their input contains arbitrary binary data, which some of our tests uses. Rewrite the tests to sidestep the problem. * A helper function "git submodule" uses since v2.7.0 to list the modules that match the pathspec argument given to its subcommands (e.g. "submodule add <repo> <path>") has been fixed. * "git config section.var value" to set a value in per-repository configuration file failed when it was run outside any repository, but didn't say the reason correctly. * The code to read the pack data using the offsets stored in the pack idx file has been made more carefully check the validity of the data in the idx. |
||
jperkin
|
17661ff9a5 | Bump PKGREVISION for security/openssl ABI bump. | ||
adam
|
30ea7e3fef |
Changes 2.7.2:
* The low-level merge machinery has been taught to use CRLF line termination when inserting conflict markers to merged contents that are themselves CRLF line-terminated. * "git worktree" had a broken code that attempted to auto-fix possible inconsistency that results from end-users moving a worktree to different places without telling Git (the original repository needs to maintain backpointers to its worktrees, but "mv" run by end-users who are not familiar with that fact will obviously not adjust them), which actually made things worse when triggered. * "git push --force-with-lease" has been taught to report if the push needed to force (or fast-forwarded). * The emulated "yes" command used in our test scripts has been tweaked not to spend too much time generating unnecessary output that is not used, to help those who test on Windows where it would not stop until it fills the pipe buffer due to lack of SIGPIPE. * The vimdiff backend for "git mergetool" has been tweaked to arrange and number buffers in the order that would match the expectation of majority of people who read left to right, then top down and assign buffers 1 2 3 4 "mentally" to local base remote merge windows based on that order. * The documentation for "git clean" has been corrected; it mentioned that .git/modules/* are removed by giving two "-f", which has never been the case. * Paths that have been told the index about with "add -N" are not quite yet in the index, but a few commands behaved as if they already are in a harmful way. |
||
adam
|
d0093a1c8a |
Git v2.7.1 Release Notes
======================== Fixes since v2.7 ---------------- * An earlier change in 2.5.x-era broke users' hooks and aliases by exporting GIT_WORK_TREE to point at the root of the working tree, interfering when they tried to use a different working tree without setting GIT_WORK_TREE environment themselves. * The "exclude_list" structure has the usual "alloc, nr" pair of fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot to reset 'alloc' to 0 when it cleared 'nr' to discard the managed array. * "git send-email" was confused by escaped quotes stored in the alias files saved by "mutt", which has been corrected. * A few unportable C construct have been spotted by clang compiler and have been fixed. * The documentation has been updated to hint the connection between the '--signoff' option and DCO. * "git reflog" incorrectly assumed that all objects that used to be at the tip of a ref must be commits, which caused it to segfault. * The ignore mechanism saw a few regressions around untracked file listing and sparse checkout selection areas in 2.7.0; the change that is responsible for the regression has been reverted. * Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR (e.g. COMMIT_EDITMSG) that is meant to be left after the command is done. This however did not work well if the repository is set to be shared with core.sharedRepository and the umask of the previous user is tighter. They have been made to work better by calling unlink(2) and retrying after fopen(3) fails with EPERM. * Asking gitweb for a nonexistent commit left a warning in the server log. * "git rebase", unlike all other callers of "gc --auto", did not ignore the exit code from "gc --auto". * Many codepaths that run "gc --auto" before exiting kept packfiles mapped and left the file descriptors to them open, which was not friendly to systems that cannot remove files that are open. They now close the packs before doing so. * A recent optimization to filter-branch in v2.7.0 introduced a regression when --prune-empty filter is used, which has been corrected. * The description for SANITY prerequisite the test suite uses has been clarified both in the comment and in the implementation. * "git tag" started listing a tag "foo" as "tags/foo" when a branch named "foo" exists in the same repository; remove this unnecessary disambiguation, which is a regression introduced in v2.7.0. * The way "git svn" uses auth parameter was broken by Subversion 1.9.0 and later. * The "split" subcommand of "git subtree" (in contrib/) incorrectly skipped merges when it shouldn't, which was corrected. * A few options of "git diff" did not work well when the command was run from a subdirectory. * dirname() emulation has been added, as Msys2 lacks it. * The underlying machinery used by "ls-files -o" and other commands have been taught not to create empty submodule ref cache for a directory that is not a submodule. This removes a ton of wasted CPU cycles. * Drop a few old "todo" items by deciding that the change one of them suggests is not such a good idea, and doing the change the other one suggested to do. * Documentation for "git fetch --depth" has been updated for clarity. * The command line completion learned a handful of additional options and command specific syntax. Also includes a handful of documentation and test updates. |
||
adam
|
2dc883f36f |
Changes 2.7.0:
UI, Workflows & Features * The appearance of "gitk", particularly on high DPI monitors, have been improved. "gitk" also comes with an undated translation for Swedish and Japanese. * "git remote" learned "get-url" subcommand to show the URL for a given remote name used for fetching and pushing. * There was no way to defeat a configured rebase.autostash variable from the command line, as "git rebase --no-autostash" was missing. * "git log --date=local" used to only show the normal (default) format in the local timezone. The command learned to take 'local' as an instruction to use the local timezone with other formats, * The refs used during a "git bisect" session is now per-worktree so that independent bisect sessions can be done in different worktrees created with "git worktree add". * Users who are too busy to type three extra keystrokes to ask for "git stash show -p" can now set stash.showPatch configuration variable to true to always see the actual patch, not just the list of paths affected with feel for the extent of damage via diffstat. * "quiltimport" allows to specify the series file by honoring the $QUILT_SERIES environment and also --series command line option. * The use of 'good/bad' in "git bisect" made it confusing to use when hunting for a state change that is not a regression (e.g. bugfix). The command learned 'old/new' and then allows the end user to say e.g. "bisect start --term-old=fast --term-new=slow" to find a performance regression. * "git interpret-trailers" can now run outside of a Git repository. * "git p4" learned to reencode the pathname it uses to communicate with the p4 depot with a new option. * Give progress meter to "git filter-branch". * Allow a later "!/abc/def" to override an earlier "/abc" that appears in the same .gitignore file to make it easier to express "everything in /abc directory is ignored, except for ...". * Teach "git p4" to send large blobs outside the repository by talking to Git LFS. * Prepare for Git on-disk repository representation to undergo backward incompatible changes by introducing a new repository format version "1", with an extension mechanism. * "git worktree" learned a "list" subcommand. * "git clone --dissociate" learned that it can be used even when "--reference" was not used at the same time. * "git blame" learnt to take "--first-parent" and "--reverse" at the same time when it makes sense. * "git checkout" did not follow the usual "--[no-]progress" convention and implemented only "--quiet" that is essentially a superset of "--no-progress". Extend the command to support the usual "--[no-]progress". * The semantics of transfer.hideRefs configuration variable have been extended to work better with the ref "namespace" feature that lets you throw unrelated bunches of repositories in a single physical repository and virtually serve them as separate ones. * send-email config variables whose values are pathnames now go through the ~username/ expansion. * bash completion learnt to TAB-complete recipient addresses given to send-email. * The credential-cache daemon can be told to ignore SIGHUP to work around issue when running Git from inside emacs. * "git push" learned new configuration for doing "--recurse-submodules" on each push. * "format-patch" has learned a new option to zero-out the commit object name on the mbox "From " line. |
||
adam
|
f8cd514db2 |
Fixes since v2.6.3
------------------ * The "configure" script did not test for -lpthread correctly, which upset some linkers. * Add support for talking http/https over socks proxy. * Portability fix for Windows, which may rewrite $SHELL variable using non-POSIX paths. * We now consistently allow all hooks to ignore their standard input, rather than having git complain of SIGPIPE. * Fix shell quoting in contrib script. * Test portability fix for a topic in v2.6.1. * Allow tilde-expansion in some http config variables. * Give a useful special case "diff/show --word-diff-regex=." as an example in the documentation. * Fix for a corner case in filter-branch. * Make git-p4 work on a detached head. * Documentation clarification for "check-ignore" without "--verbose". * Just like the working tree is cleaned up when the user cancelled submission in P4Submit.applyCommit(), clean up the mess if "p4 submit" fails. * Having a leftover .idx file without corresponding .pack file in the repository hurts performance; "git gc" learned to prune them. * The code to prepare the working tree side of temporary directory for the "dir-diff" feature forgot that symbolic links need not be copied (or symlinked) to the temporary area, as the code already special cases and overwrites them. Besides, it was wrong to try computing the object name of the target of symbolic link, which may not even exist or may be a directory. * There was no way to defeat a configured rebase.autostash variable from the command line, as "git rebase --no-autostash" was missing. * Allow "git interpret-trailers" to run outside of a Git repository. * Produce correct "dirty" marker for shell prompts, even when we are on an orphan or an unborn branch. * Some corner cases have been fixed in string-matching done in "git status". * Apple's common crypto implementation of SHA1_Update() does not take more than 4GB at a time, and we now have a compile-time workaround for it. |
||
adam
|
e5bcdf3e12 |
Changes 2.6.3:
* The error message from "git blame --contents --reverse" incorrectly talked about "--contents --children". * "git merge-file" tried to signal how many conflicts it found, which obviously would not work well when there are too many of them. * The name-hash subsystem that is used to cope with case insensitive filesystems keeps track of directories and their on-filesystem cases for all the paths in the index by holding a pointer to a randomly chosen cache entry that is inside the directory (for its ce->ce_name component). This pointer was not updated even when the cache entry was removed from the index, leading to use after free. This was fixed by recording the path for each directory instead of borrowing cache entries and restructuring the API somewhat. * When the "git am" command was reimplemented in C, "git am -3" had a small regression where it is aborted in its error handling codepath when underlying merge-recursive failed in some ways. * The synopsis text and the usage string of subcommands that read list of things from the standard input are often shown as if they only take input from a file on a filesystem, which was misleading. * A couple of commands still showed "[options]" in their usage string to note where options should come on their command line, but we spell that "[<options>]" in most places these days. * The submodule code has been taught to work better with separate work trees created via "git worktree add". * When "git gc --auto" is backgrounded, its diagnosis message is lost. It now is saved to a file in $GIT_DIR and is shown next time the "gc --auto" is run. * Work around "git p4" failing when the P4 depot records the contents in UTF-16 without UTF-16 BOM. * Recent update to "rebase -i" that tries to sanity check the edited insn sheet before it uses it has become too picky on Windows where CRLF left by the editor is turned into a trailing CR on the line read via the "read" built-in command. * "git clone --dissociate" runs a big "git repack" process at the end, and it helps to close file descriptors that are open on the packs and their idx files before doing so on filesystems that cannot remove a file that is still open. * Correct "git p4 --detect-labels" so that it does not fail to create a tag that points at a commit that is also being imported. * The internal stripspace() function has been moved to where it logically belongs to, i.e. strbuf API, and the command line parser of "git stripspace" has been updated to use the parse_options API. * Prepare for Git on-disk repository representation to undergo backward incompatible changes by introducing a new repository format version "1", with an extension mechanism. * "git gc" used to barf when a symbolic ref has gone dangling (e.g. the branch that used to be your upstream's default when you cloned from it is now gone, and you did "fetch --prune"). * The normalize_ceiling_entry() function does not muck with the end of the path it accepts, and the real world callers do rely on that, but a test insisted that the function drops a trailing slash. * "git gc" is safe to run anytime only because it has the built-in grace period to protect young objects. In order to run with no grace period, the user must make sure that the repository is quiescent. * A recent "filter-branch --msg-filter" broke skipping of the commit object header, which is fixed. * "git --literal-pathspecs add -u/-A" without any command line argument misbehaved ever since Git 2.0. * Merging a branch that removes a path and another that changes the mode bits on the same path should have conflicted at the path, but it didn't and silently favoured the removal. * "git imap-send" did not compile well with older version of cURL library. * The linkage order of libraries was wrong in places around libcurl. * It was not possible to use a repository-lookalike created by "git worktree add" as a local source of "git clone". * When "git send-email" wanted to talk over Net::SMTP::SSL, Net::Cmd::datasend() did not like to be fed too many bytes at the same time and failed to send messages. Send the payload one line at a time to work around the problem. * We peek objects from submodule's object store by linking it to the list of alternate object databases, but the code to do so forgot to correctly initialize the list. * "git status --branch --short" accessed beyond the constant string "HEAD", which has been corrected. * "git daemon" uses "run_command()" without "finish_command()", so it needs to release resources itself, which it forgot to do. Also contains typofixes, documentation updates and trivial code clean-ups. |
||
agc
|
efd9ad4549 | Remove duplicate SHA512 digests that crept in. | ||
agc
|
d9e4cfe05d |
Add SHA512 digests for distfiles for devel category
Issues found with existing distfiles: distfiles/eclipse-sourceBuild-srcIncluded-3.0.1.zip distfiles/fortran-utils-1.1.tar.gz distfiles/ivykis-0.39.tar.gz distfiles/enum-1.11.tar.gz distfiles/pvs-3.2-libraries.tgz distfiles/pvs-3.2-linux.tgz distfiles/pvs-3.2-solaris.tgz distfiles/pvs-3.2-system.tgz No changes made to these distinfo files. Otherwise, existing SHA1 digests verified and found to be the same on the machine holding the existing distfiles (morden). All existing SHA1 digests retained for now as an audit trail. |
||
adam
|
af1460d11c |
Changes 2.6.2:
* There were some classes of errors that "git fsck" diagnosed to its standard error that did not cause it to exit with non-zero status. * A test script for the HTTP service had a timing dependent bug, which was fixed. * Performance-measurement tests did not work without an installed Git. * On a case insensitive filesystems, setting GIT_WORK_TREE variable using a random cases that does not agree with what the filesystem thinks confused Git that it wasn't inside the working tree. * When "git am" was rewritten as a built-in, it stopped paying attention to user.signingkey, which was fixed. * After "git checkout --detach", "git status" reported a fairly useless "HEAD detached at HEAD", instead of saying at which exact commit. * "git rebase -i" had a minor regression recently, which stopped considering a line that begins with an indented '#' in its insn sheet not a comment, which is now fixed. * Description of the "log.follow" configuration variable in "git log" documentation is now also copied to "git config" documentation. * Allocation related functions and stdio are unsafe things to call inside a signal handler, and indeed killing the pager can cause glibc to deadlock waiting on allocation mutex as our signal handler tries to free() some data structures in wait_for_pager(). Reduce these unsafe calls. * The way how --ref/--notes to specify the notes tree reference are DWIMmed was not clearly documented. * Customization to change the behaviour with "make -w" and "make -s" in our Makefile was broken when they were used together. * The Makefile always runs the library archiver with hardcoded "crs" options, which was inconvenient for exotic platforms on which people want to use programs with totally different set of command line options. * The ssh transport, just like any other transport over the network, did not clear GIT_* environment variables, but it is possible to use SendEnv and AcceptEnv to leak them to the remote invocation of Git, which is not a good idea at all. Explicitly clear them just like we do for the local transport. * "git blame --first-parent v1.0..v2.0" was not rejected but did not limit the blame to commits on the first parent chain. * Very small number of options take a parameter that is optional (which is not a great UI element as they can only appear at the end of the command line). Add notice to documentation of each and every one of them. Also contains typofixes, documentation updates and trivial code clean-ups. |
||
ryoon
|
32b46836ef |
Update to 2.6.1
Changelog: Git v2.6.1 Release Notes ======================== Fixes since v2.6 ---------------- * xdiff code we use to generate diffs is not prepared to handle extremely large files. It uses "int" in many places, which can overflow if we have a very large number of lines or even bytes in our input files, for example. Cap the input size to soemwhere around 1GB for now. * Some protocols (like git-remote-ext) can execute arbitrary code found in the URL. The URLs that submodules use may come from arbitrary sources (e.g., .gitmodules files in a remote repository), and can hurt those who blindly enable recursive fetch. Restrict the allowed protocols to well known and safe ones. Git 2.6 Release Notes ===================== Updates since v2.5 ------------------ UI, Workflows & Features * An asterisk as a substring (as opposed to the entirety) of a path component for both side of a refspec, e.g. "refs/heads/o*:refs/remotes/heads/i*", is now allowed. * New userdiff pattern definition for fountain screenwriting markup format has been added. * "git log" and friends learned a new "--date=format:..." option to format timestamps using system's strftime(3). * "git fast-import" learned to respond to the get-mark command via its cat-blob-fd interface. * "git rebase -i" learned "drop commit-object-name subject" command as another way to skip replaying of a commit. * A new configuration variable can enable "--follow" automatically when "git log" is run with one pathspec argument. * "git status" learned to show a more detailed information regarding the "rebase -i" session in progress. * "git cat-file" learned "--batch-all-objects" option to enumerate all available objects in the repository more quickly than "rev-list --all --objects" (the output includes unreachable objects, though). * "git fsck" learned to ignore errors on a set of known-to-be-bad objects, and also allows the warning levels of various kinds of non-critical breakages to be tweaked. * "git rebase -i"'s list of todo is made configurable. * "git send-email" now performs alias-expansion on names that are given via --cccmd, etc. * An environment variable GIT_REPLACE_REF_BASE tells Git to look into refs hierarchy other than refs/replace/ for the object replacement data. * Allow untracked cache (experimental) to be used when sparse checkout (experimental) is also in use. * "git pull --rebase" has been taught to pay attention to rebase.autostash configuration. * The command-line completion script (in contrib/) has been updated. * A negative !ref entry in multi-value transfer.hideRefs configuration can be used to say "don't hide this one". * After "git am" without "-3" stops, running "git am -3" pays attention to "-3" only for the patch that caused the original invocation to stop. * When linked worktree is used, simultaneous "notes merge" instances for the same ref in refs/notes/* are prevented from stomping on each other. * "git send-email" learned a new option --smtp-auth to limit the SMTP AUTH mechanisms to be used to a subset of what the system library supports. * A new configuration variable http.sslVersion can be used to specify what specific version of SSL/TLS to use to make a connection. * "git notes merge" can be told with "--strategy=<how>" option how to automatically handle conflicts; this can now be configured by setting notes.mergeStrategy configuration variable. * "git log --cc" did not show any patch, even though most of the time the user meant "git log --cc -p -m" to see patch output for commits with a single parent, and combined diff for merge commits. The command is taught to DWIM "--cc" (without "--raw" and other forms of output specification) to "--cc -p -m". * "git config --list" output was hard to parse when values consist of multiple lines. "--name-only" option is added to help this. * A handful of usability & cosmetic fixes to gitk and l10n updates. * A completely empty e-mail address <> is now allowed in the authors file used by git-svn, to match the way it accepts the output from authors-prog. Performance, Internal Implementation, Development Support etc. * In preparation for allowing different "backends" to store the refs in a way different from the traditional "one ref per file in $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage, direct filesystem access to ref-like things like CHERRY_PICK_HEAD from scripts and programs has been reduced. * Computation of untracked status indicator by bash prompt script (in contrib/) has been optimized. * Memory use reduction when commit-slab facility is used to annotate sparsely (which is not recommended in the first place). * Clean up refs API and make "git clone" less intimate with the implementation detail. * "git pull" was reimplemented in C. * The packet tracing machinery allows to capture an incoming pack data to a file for debugging. * Move machinery to parse human-readable scaled numbers like 1k, 4M, and 2G as an option parameter's value from pack-objects to parse-options API, to make it available to other codepaths. * "git verify-tag" and "git verify-commit" have been taught to share more code, and then learned to optionally show the verification message from the underlying GPG implementation. * Various enhancements around "git am" reading patches generated by foreign SCM have been made. * Ref listing by "git branch -l" and "git tag -l" commands has started to be rebuilt, based on the for-each-ref machinery. * The code to perform multi-tree merges has been taught to repopulate the cache-tree upon a successful merge into the index, so that subsequent "diff-index --cached" (hence "status") and "write-tree" (hence "commit") will go faster. The same logic in "git checkout" may now be removed, but that is a separate issue. * Tests that assume how reflogs are represented on the filesystem too much have been corrected. * "git am" has been rewritten in "C". * git_path() and mkpath() are handy helper functions but it is easy to misuse, as the callers need to be careful to keep the number of active results below 4. Their uses have been reduced. * The "lockfile" API has been rebuilt on top of a new "tempfile" API. * To prepare for allowing a different "ref" backend to be plugged in to the system, update_ref()/delete_ref() have been taught about ref-like things like MERGE_HEAD that are per-worktree (they will always be written to the filesystem inside $GIT_DIR). * The gitmodules API that is accessed from the C code learned to cache stuff lazily. Also contains various documentation updates and code clean-ups. Fixes since v2.5 ---------------- Unless otherwise noted, all the fixes since v2.5 in the maintenance track are contained in this release (see the maintenance releases' notes for details). * "git subtree" (in contrib/) depended on "git log" output to be stable, which was a no-no. Apply a workaround to force a particular date format. (merge e7aac44 da/subtree-date-confusion later to maint). * An attempt to delete a ref by pushing into a repository whose HEAD symbolic reference points at an unborn branch that cannot be created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD points at refs/heads/a) failed. (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint). * The low-level "git send-pack" did not honor 'user.signingkey' configuration variable when sending a signed-push. (merge d830d39 db/send-pack-user-signingkey later to maint). * "sparse checkout" misbehaved for a path that is excluded from the checkout when switching between branches that differ at the path. (merge 7d78241 as/sparse-checkout-removal later to maint). * An experimental "untracked cache" feature used uname(2) in a slightly unportable way. (merge 100e433 cb/uname-in-untracked later to maint). * A "rebase" replays changes of the local branch on top of something else, as such they are placed in stage #3 and referred to as "theirs", while the changes in the new base, typically a foreign work, are placed in stage #2 and referred to as "ours". Clarify the "checkout --ours/--theirs". (merge f303016 se/doc-checkout-ours-theirs later to maint). * The "rev-parse --parseopt" mode parsed the option specification and the argument hint in a strange way to allow '=' and other special characters in the option name while forbidding them from the argument hint. This made it impossible to define an option like "--pair <key>=<value>" with "pair=key=value" specification, which instead would have defined a "--pair=key <value>" option. (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint). * Often a fast-import stream builds a new commit on top of the previous commit it built, and it often unconditionally emits a "from" command to specify the first parent, which can be omitted in such a case. This caused fast-import to forget the tree of the previous commit and then re-read it from scratch, which was inefficient. Optimize for this common case. (merge 0df3245 mh/fast-import-optimize-current-from later to maint). * Running an aliased command from a subdirectory when the .git thing in the working tree is a gitfile pointing elsewhere did not work. (merge d95138e nd/export-worktree later to maint). * "Is this subdirectory a separate repository that should not be touched?" check "git clean" was inefficient. This was replaced with a more optimized check. (merge fbf2fec ee/clean-remove-dirs later to maint). * The "new-worktree-mode" hack in "checkout" that was added in nd/multiple-work-trees topic has been removed by updating the implementation of new "worktree add". (merge 65f9b75 es/worktree-add-cleanup later to maint). * Remove remaining cruft from "git checkout --to", which transitioned to "git worktree add". (merge 114ff88 es/worktree-add later to maint). * An off-by-one error made "git remote" to mishandle a remote with a single letter nickname. (merge bc598c3 mh/get-remote-group-fix later to maint). * "git clone $URL", when cloning from a site whose sole purpose is to host a single repository (hence, no path after <scheme>://<site>/), tried to use the site name as the new repository name, but did not remove username or password when <site> part was of the form <user>@<pass>:<host>. The code is taught to redact these. (merge adef956 ps/guess-repo-name-at-root later to maint). * Running tests with the "-x" option to make them verbose had some unpleasant interactions with other features of the test suite. (merge 9b5fe78 jk/test-with-x later to maint). * t1509 test that requires a dedicated VM environment had some bitrot, which has been corrected. (merge faacc5a ps/t1509-chroot-test-fixup later to maint). * "git pull" in recent releases of Git has a regression in the code that allows custom path to the --upload-pack=<program>. This has been corrected. Note that this is irrelevant for 'master' with "git pull" rewritten in C. (merge 13e0e28 mm/pull-upload-pack later to maint). * When trying to see that an object does not exist, a state errno leaked from our "first try to open a packfile with O_NOATIME and then if it fails retry without it" logic on a system that refuses O_NOATIME. This confused us and caused us to die, saying that the packfile is unreadable, when we should have just reported that the object does not exist in that packfile to the caller. (merge dff6f28 cb/open-noatime-clear-errno later to maint). * The codepath to produce error messages had a hard-coded limit to the size of the message, primarily to avoid memory allocation while calling die(). (merge f4c3edc jk/long-error-messages later to maint). * strbuf_read() used to have one extra iteration (and an unnecessary strbuf_grow() of 8kB), which was eliminated. (merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint). * We rewrote one of the build scripts in Perl but this reimplements in Bourne shell. (merge 57cee8a sg/help-group later to maint). * The experimental untracked-cache feature were buggy when paths with a few levels of subdirectories are involved. (merge 73f9145 dt/untracked-subdir later to maint). * "interpret-trailers" helper mistook a single-liner log message that has a colon as the end of existing trailer. * The "interpret-trailers" helper mistook a multi-paragraph title of a commit log message with a colon in it as the end of the trailer block. (merge 5c99995 cc/trailers-corner-case-fix later to maint). * "git describe" without argument defaulted to describe the HEAD commit, but "git describe --contains" didn't. Arguably, in a repository used for active development, such defaulting would not be very useful as the tip of branch is typically not tagged, but it is better to be consistent. (merge 2bd0706 sg/describe-contains later to maint). * The client side codepaths in "git push" have been cleaned up and the user can request to perform an optional "signed push", i.e. sign only when the other end accepts signed push. (merge 68c757f db/push-sign-if-asked later to maint). * Because the configuration system does not allow "alias.0foo" and "pager.0foo" as the configuration key, the user cannot use '0foo' as a custom command name anyway, but "git 0foo" tried to look these keys up and emitted useless warnings before saying '0foo is not a git command'. These warning messages have been squelched. (merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint). * "git rev-list" does not take "--notes" option, but did not complain when one is given. (merge 2aea7a5 jk/rev-list-has-no-notes later to maint). * When re-priming the cache-tree opportunistically while committing the in-core index as-is, we mistakenly invalidated the in-core index too aggressively, causing the experimental split-index code to unnecessarily rewrite the on-disk index file(s). (merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint). * "git archive" did not use zip64 extension when creating an archive with more than 64k entries, which nobody should need, right ;-)? (merge 88329ca rs/archive-zip-many later to maint). * The code in "multiple-worktree" support that attempted to recover from an inconsistent state updated an incorrect file. (merge 82fde87 nd/fixup-linked-gitdir later to maint). * On case insensitive systems, "git p4" did not work well with client specs. * "git init empty && git -C empty log" said "bad default revision 'HEAD'", which was found to be a bit confusing to new users. (merge ce11360 jk/log-missing-default-HEAD later to maint). * Recent versions of scripted "git am" has a performance regression in "git am --skip" codepath, which no longer exists in the built-in version on the 'master' front. Fix the regression in the last scripted version that appear in 2.5.x maintenance track and older. (merge b9d6689 js/maint-am-skip-performance-regression later to maint). * The branch descriptions that are set with "git branch --edit-description" option were used in many places but they weren't clearly documented. (merge 561d2b7 po/doc-branch-desc later to maint). * Code cleanups and documentation updates. (merge 1c601af es/doc-clean-outdated-tools later to maint). (merge 3581304 kn/tag-doc-fix later to maint). (merge 3a59e59 kb/i18n-doc later to maint). (merge 45abdee sb/remove-unused-var-from-builtin-add later to maint). (merge 14691e3 sb/parse-options-codeformat later to maint). (merge 4a6ada3 ad/bisect-cleanup later to maint). (merge da4c5ad ta/docfix-index-format-tech later to maint). (merge ae25fd3 sb/check-return-from-read-ref later to maint). (merge b3325df nd/dwim-wildcards-as-pathspecs later to maint). (merge 7aa9b9b sg/wt-status-header-inclusion later to maint). (merge f04c690 as/docfix-reflog-expire-unreachable later to maint). (merge 1269847 sg/t3020-typofix later to maint). (merge 8b54c23 jc/calloc-pathspec later to maint). (merge a6926b8 po/po-readme later to maint). (merge 54d160e ss/fix-config-fd-leak later to maint). (merge b80fa84 ah/submodule-typofix-in-error later to maint). (merge 99885bc ah/reflog-typofix-in-error later to maint). (merge 9476c2c ah/read-tree-usage-string later to maint). (merge b8c1d27 ah/pack-objects-usage-strings later to maint). (merge 486e1e1 br/svn-doc-include-paths-config later to maint). (merge 1733ed3 ee/clean-test-fixes later to maint). (merge 5fcadc3 gb/apply-comment-typofix later to maint). (merge b894d3e mp/t7060-diff-index-test later to maint). (merge d238710 as/config-doc-markup-fix later to maint). |
||
adam
|
a9c50e1512 |
Changes 2.5.3:
* The experimental untracked-cache feature were buggy when paths with a few levels of subdirectories are involved. * Recent versions of scripted "git am" has a performance regression in "git am --skip" codepath, which no longer exists in the built-in version on the 'master' front. Fix the regression in the last scripted version that appear in 2.5.x maintenance track and older. Also contains typofixes, documentation updates and trivial code clean-ups. |
||
wiz
|
c0229f9e72 |
Update to 2.5.2:
Fixes since v2.5.1 ------------------ * "git init empty && git -C empty log" said "bad default revision 'HEAD'", which was found to be a bit confusing to new users. * The "interpret-trailers" helper mistook a multi-paragraph title of a commit log message with a colon in it as the end of the trailer block. * When re-priming the cache-tree opportunistically while committing the in-core index as-is, we mistakenly invalidated the in-core index too aggressively, causing the experimental split-index code to unnecessarily rewrite the on-disk index file(s). * "git archive" did not use zip64 extension when creating an archive with more than 64k entries, which nobody should need, right ;-)? * The code in "multiple-worktree" support that attempted to recover from an inconsistent state updated an incorrect file. * "git rev-list" does not take "--notes" option, but did not complain when one is given. * Because the configuration system does not allow "alias.0foo" and "pager.0foo" as the configuration key, the user cannot use '0foo' as a custom command name anyway, but "git 0foo" tried to look these keys up and emitted useless warnings before saying '0foo is not a git command'. These warning messages have been squelched. * We recently rewrote one of the build scripts in Perl, which made it necessary to have Perl to build Git. Reduced Perl dependency by rewriting it again using sed. * t1509 test that requires a dedicated VM environment had some bitrot, which has been corrected. * strbuf_read() used to have one extra iteration (and an unnecessary strbuf_grow() of 8kB), which was eliminated. * The codepath to produce error messages had a hard-coded limit to the size of the message, primarily to avoid memory allocation while calling die(). * When trying to see that an object does not exist, a state errno leaked from our "first try to open a packfile with O_NOATIME and then if it fails retry without it" logic on a system that refuses O_NOATIME. This confused us and caused us to die, saying that the packfile is unreadable, when we should have just reported that the object does not exist in that packfile to the caller. * An off-by-one error made "git remote" to mishandle a remote with a single letter nickname. * A handful of codepaths that used to use fixed-sized arrays to hold pathnames have been corrected to use strbuf and other mechanisms to allow longer pathnames without fearing overflows. Also contains typofixes, documentation updates and trivial code clean-ups. |
||
wiz
|
04cfdf1432 |
Update to 2.5.1:
Git v2.5.1 Release Notes ======================== Fixes since v2.5 ---------------- * Running an aliased command from a subdirectory when the .git thing in the working tree is a gitfile pointing elsewhere did not work. * Often a fast-import stream builds a new commit on top of the previous commit it built, and it often unconditionally emits a "from" command to specify the first parent, which can be omitted in such a case. This caused fast-import to forget the tree of the previous commit and then re-read it from scratch, which was inefficient. Optimize for this common case. * The "rev-parse --parseopt" mode parsed the option specification and the argument hint in a strange way to allow '=' and other special characters in the option name while forbidding them from the argument hint. This made it impossible to define an option like "--pair <key>=<value>" with "pair=key=value" specification, which instead would have defined a "--pair=key <value>" option. * A "rebase" replays changes of the local branch on top of something else, as such they are placed in stage #3 and referred to as "theirs", while the changes in the new base, typically a foreign work, are placed in stage #2 and referred to as "ours". Clarify the "checkout --ours/--theirs". * An experimental "untracked cache" feature used uname(2) in a slightly unportable way. * "sparse checkout" misbehaved for a path that is excluded from the checkout when switching between branches that differ at the path. * The low-level "git send-pack" did not honor 'user.signingkey' configuration variable when sending a signed-push. * An attempt to delete a ref by pushing into a repository whose HEAD symbolic reference points at an unborn branch that cannot be created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD points at refs/heads/a) failed. * "git subtree" (in contrib/) depended on "git log" output to be stable, which was a no-no. Apply a workaround to force a particular date format. * "git clone $URL" in recent releases of Git contains a regression in the code that invents a new repository name incorrectly based on the $URL. This has been corrected. (merge db2e220 jk/guess-repo-name-regression-fix later to maint). * Running tests with the "-x" option to make them verbose had some unpleasant interactions with other features of the test suite. (merge 9b5fe78 jk/test-with-x later to maint). * "git pull" in recent releases of Git has a regression in the code that allows custom path to the --upload-pack=<program>. This has been corrected. * pipe() emulation used in Git for Windows looked at a wrong variable when checking for an error from an _open_osfhandle() call. Also contains typofixes, documentation updates and trivial code clean-ups. |
||
adam
|
53e7a47abd |
Changes 2.5.0:
UI, Workflows & Features * The bash completion script (in contrib/) learned a few options that "git revert" takes. * Whitespace breakages in deleted and context lines can also be painted in the output of "git diff" and friends with the new --ws-error-highlight option. * List of commands shown by "git help" are grouped along the workflow elements to help early learners. * "git p4" now detects the filetype (e.g. binary) correctly even when the files are opened exclusively. * git p4 attempts to better handle branches in Perforce. * "git p4" learned "--changes-block-size <n>" to read the changes in chunks from Perforce, instead of making one call to "p4 changes" that may trigger "too many rows scanned" error from Perforce. * More workaround for Perforce's row number limit in "git p4". * Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the command and initial options (e.g. "/path/to/emacs -nw"), 'git p4' did not let the shell interpolate the contents of the environment variable that name the editor "$P4EDITOR" (and "$EDITOR", too). This release makes it in line with the rest of Git, as well as with Perforce. * A new short-hand <branch>@{push} denotes the remote-tracking branch that tracks the branch at the remote the <branch> would be pushed to. * "git show-branch --topics HEAD" (with no other arguments) did not do anything interesting. Instead, contrast the given revision against all the local branches by default. * A replacement for contrib/workdir/git-new-workdir that does not rely on symbolic links and make sharing of objects and refs safer by making the borrowee and borrowers aware of each other. Consider this as still an experimental feature; its UI is still likely to change. * Tweak the sample "store" backend of the credential helper to honor XDG configuration file locations when specified. * A heuristic we use to catch mistyped paths on the command line "git <cmd> <revs> <pathspec>" is to make sure that all the non-rev parameters in the later part of the command line are names of the files in the working tree, but that means "git grep $str -- \*.c" must always be disambiguated with "--", because nobody sane will create a file whose name literally is asterisk-dot-see. Loosen the heuristic to declare that with a wildcard string the user likely meant to give us a pathspec. * "git merge FETCH_HEAD" learned that the previous "git fetch" could be to create an Octopus merge, i.e. recording multiple branches that are not marked as "not-for-merge"; this allows us to lose an old style invocation "git merge <msg> HEAD $commits..." in the implementation of "git pull" script; the old style syntax can now be deprecated (but not removed yet). * Filter scripts were run with SIGPIPE disabled on the Git side, expecting that they may not read what Git feeds them to filter. We however treated a filter that does not read its input fully before exiting as an error. We no longer do and ignore EPIPE when writing to feed the filter scripts. This changes semantics, but arguably in a good way. If a filter can produce its output without fully consuming its input using whatever magic, we now let it do so, instead of diagnosing it as a programming error. * Instead of dying immediately upon failing to obtain a lock, the locking (of refs etc) retries after a short while with backoff. * Introduce http.<url>.SSLCipherList configuration variable to tweak the list of cipher suite to be used with libcURL when talking with https:// sites. * "git subtree" script (in contrib/) used "echo -n" to produce progress messages in a non-portable way. * "git subtree" script (in contrib/) does not have --squash option when pushing, but the documentation and help text pretended as if it did. * The Git subcommand completion (in contrib/) no longer lists credential helpers among candidates; they are not something the end user would invoke interactively. * The index file can be taught with "update-index --untracked-cache" to optionally remember already seen untracked files, in order to speed up "git status" in a working tree with tons of cruft. * "git mergetool" learned to drive WinMerge as a backend. * "git upload-pack" that serves "git fetch" can be told to serve commits that are not at the tip of any ref, as long as they are reachable from a ref, with uploadpack.allowReachableSHA1InWant configuration variable. |
||
adam
|
9a45688a7b |
Changes 2.4.6:
* "git fetch --depth=<depth>" and "git clone --depth=<depth>" issued a shallow transfer request even to an upload-pack that does not support the capability. * "git fsck" used to ignore missing or invalid objects recorded in reflog. * The tcsh completion writes a bash scriptlet but that would have failed for users with noclobber set. * Recent Mac OS X updates breaks the logic to detect that the machine is on the AC power in the sample pre-auto-gc script. * "git format-patch --ignore-if-upstream A..B" did not like to be fed tags as boundary commits. |
||
wiz
|
40bbad7ac6 |
Comment out dependencies of the style
{perl>=5.16.6,p5-ExtUtils-ParseXS>=3.15}:../../devel/p5-ExtUtils-ParseXS since pkgsrc enforces the newest perl version anyway, so they should always pick perl, but sometimes (pkg_add) don't due to the design of the {,} syntax. No effective change for the above reason. Ok joerg |
||
ryoon
|
bd8fa27fc2 |
Update to 2.4.5
Changelog: Git v2.4.5 Release Notes ======================== Fixes since v2.4.4 ------------------ * The setup code used to die when core.bare and core.worktree are set inconsistently, even for commands that do not need working tree. * There was a dead code that used to handle "git pull --tags" and show special-cased error message, which was made irrelevant when the semantics of the option changed back in Git 1.9 days. * "color.diff.plain" was a misnomer; give it 'color.diff.context' as a more logical synonym. * The configuration reader/writer uses mmap(2) interface to access the files; when we find a directory, it barfed with "Out of memory?". * Recent "git prune" traverses young unreachable objects to safekeep old objects in the reachability chain from them, which sometimes showed unnecessary error messages that are alarming. * "git rebase -i" fired post-rewrite hook when it shouldn't (namely, when it was told to stop sequencing with 'exec' insn). Also contains typofixes, documentation updates and trivial code clean-ups. Git v2.4.4 Release Notes ======================== Fixes since v2.4.3 ------------------ * l10n updates for German. * An earlier leakfix to bitmap testing code was incomplete. * "git clean pathspec..." tried to lstat(2) and complain even for paths outside the given pathspec. * Communication between the HTTP server and http_backend process can lead to a dead-lock when relaying a large ref negotiation request. Diagnose the situation better, and mitigate it by reading such a request first into core (to a reasonable limit). * The clean/smudge interface did not work well when filtering an empty contents (failed and then passed the empty input through). It can be argued that a filter that produces anything but empty for an empty input is nonsense, but if the user wants to do strange things, then why not? * Make "git stash something --help" error out, so that users can safely say "git stash drop --help". * Clarify that "log --raw" and "log --format=raw" are unrelated concepts. * Catch a programmer mistake to feed a pointer not an array to ARRAY_SIZE() macro, by using a couple of GCC extensions. Also contains typofixes, documentation updates and trivial code clean-ups. |
||
wiz
|
0982effce2 |
Recursive PKGREVISION bump for all packages mentioning 'perl',
having a PKGNAME of p5-*, or depending such a package, for perl-5.22.0. |
||
adam
|
402c14b180 |
Fixes since v2.4.3
------------------ * Error messages from "git branch" called remote-tracking branches as "remote branches". * "git rerere forget" in a repository without rerere enabled gave a cryptic error message; it should be a silent no-op instead. * "git pull --log" and "git pull --no-log" worked as expected, but "git pull --log=20" did not. * The pull.ff configuration was supposed to override the merge.ff configuration, but it didn't. * The code to read pack-bitmap wanted to allocate a few hundred pointers to a structure, but by mistake allocated and leaked memory enough to hold that many actual structures. Correct the allocation size and also have it on stack, as it is small enough. * Various documentation mark-up fixes to make the output more consistent in general and also make AsciiDoctor (an alternative formatter) happier. * "git bundle verify" did not diagnose extra parameters on the command line. * Multi-ref transaction support we merged a few releases ago unnecessarily kept many file descriptors open, risking to fail with resource exhaustion. * The ref API did not handle cases where 'refs/heads/xyzzy/frotz' is removed at the same time as 'refs/heads/xyzzy' is added (or vice versa) very well. * The "log --decorate" enhancement in Git 2.4 that shows the commit at the tip of the current branch e.g. "HEAD -> master", did not work with --decorate=full. * There was a commented-out (instead of being marked to expect failure) test that documented a breakage that was fixed since the test was written; turn it into a proper test. * core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed to be overridden by repository-specific .git/info/exclude file, but the order was swapped from the beginning. This belatedly fixes it. * The connection initiation code for "ssh" transport tried to absorb differences between the stock "ssh" and Putty-supplied "plink" and its derivatives, but the logic to tell that we are using "plink" variants were too loose and falsely triggered when "plink" appeared anywhere in the path (e.g. "/home/me/bin/uplink/ssh"). * "git rebase -i" moved the "current" command from "todo" to "done" a bit too prematurely, losing a step when a "pick" did not even start. * "git add -e" did not allow the user to abort the operation by killing the editor. * Git 2.4 broke setting verbosity and progress levels on "git clone" with native transports. * Some time ago, "git blame" (incorrectly) lost the convert_to_git() call when synthesizing a fake "tip" commit that represents the state in the working tree, which broke folks who record the history with LF line ending to make their project portabile across platforms while terminating lines in their working tree files with CRLF for their platform. * Code clean-up for xdg configuration path support. Also contains typofixes, documentation updates and trivial code clean-ups. |
||
ryoon
|
fe78233447 |
Update git packages to 2.4.2
Changelog: Git v2.4.2 Release Notes ======================== Fixes since v2.4.1 ------------------ * "git rev-list --objects $old --not --all" to see if everything that is reachable from $old is already connected to the existing refs was very inefficient. * "hash-object --literally" introduced in v2.2 was not prepared to take a really long object type name. * "git rebase --quiet" was not quite quiet when there is nothing to do. * The completion for "log --decorate=" parameter value was incorrect. * "filter-branch" corrupted commit log message that ends with an incomplete line on platforms with some "sed" implementations that munge such a line. Work it around by avoiding to use "sed". * "git daemon" fails to build from the source under NO_IPV6 configuration (regression in 2.4). * "git stash pop/apply" forgot to make sure that not just the working tree is clean but also the index is clean. The latter is important as a stash application can conflict and the index will be used for conflict resolution. * We have prepended $GIT_EXEC_PATH and the path "git" is installed in (typically "/usr/bin") to $PATH when invoking subprograms and hooks for almost eternity, but the original use case the latter tried to support was semi-bogus (i.e. install git to /opt/foo/git and run it without having /opt/foo on $PATH), and more importantly it has become less and less relevant as Git grew more mainstream (i.e. the users would _want_ to have it on their $PATH). Stop prepending the path in which "git" is installed to users' $PATH, as that would interfere the command search order people depend on (e.g. they may not like versions of programs that are unrelated to Git in /usr/bin and want to override them by having different ones in /usr/local/bin and have the latter directory earlier in their $PATH). Also contains typofixes, documentation updates and trivial code clean-ups. |
||
adam
|
65f67004ec |
Changes 2.4.1:
* The usual "git diff" when seeing a file turning into a directory showed a patchset to remove the file and create all files in the directory, but "git diff --no-index" simply refused to work. Also, when asked to compare a file and a directory, imitate POSIX "diff" and compare the file with the file with the same name in the directory, instead of refusing to run. * The default $HOME/.gitconfig file created upon "git config --global" that edits it had incorrectly spelled user.name and user.email entries in it. * "git commit --date=now" or anything that relies on approxidate lost the daylight-saving-time offset. * "git cat-file bl $blob" failed to barf even though there is no object type that is "bl". * Teach the codepaths that read .gitignore and .gitattributes files that these files encoded in UTF-8 may have UTF-8 BOM marker at the beginning; this makes it in line with what we do for configuration files already. * Access to objects in repositories that borrow from another one on a slow NFS server unnecessarily got more expensive due to recent code becoming more cautious in a naive way not to lose objects to pruning. * We avoid setting core.worktree when the repository location is the ".git" directory directly at the top level of the working tree, but the code misdetected the case in which the working tree is at the root level of the filesystem (which arguably is a silly thing to do, but still valid). Also contains typofixes, documentation updates and trivial code clean-ups. |
||
adam
|
59626ebf7f |
Changes 2.3.6:
* "diff-highlight" (in contrib/) used to show byte-by-byte differences, which meant that multi-byte characters can be chopped in the middle. It learned to pay attention to character boundaries (assuming the UTF-8 payload). Also contains typofixes, documentation updates and trivial code clean-ups. |
||
adam
|
5e1356c3d4 |
Changes 2.3.5:
* The prompt script (in contrib/) did not show the untracked sign when working in a subdirectory without any untracked files. * Even though "git grep --quiet" is run merely to ask for the exit status, we spawned the pager regardless. Stop doing that. * Recommend format-patch and send-email for those who want to submit patches to this project. * An failure early in the "git clone" that started creating the working tree and repository could have resulted in some directories and files left without getting cleaned up. * "git fetch" that fetches a commit using the allow-tip-sha1-in-want extension could have failed to fetch all the requested refs. * The split-index mode introduced at v2.3.0-rc0~41 was broken in the codepath to protect us against a broken reimplementation of Git that writes an invalid index with duplicated index entries, etc. * "git prune" used to largely ignore broken refs when deciding which objects are still being used, which could spread an existing small damage and make it a larger one. * "git tag -h" used to show the "--column" and "--sort" options that are about listing in a wrong section. * The transfer.hiderefs support did not quite work for smart-http transport. * The code that reads from the ctags file in the completion script (in contrib/) did not spell ${param/pattern/string} substitution correctly, which happened to work with bash but not with zsh. * The explanation on "rebase --preserve-merges", "pull --rebase=preserve", and "push --force-with-lease" in the documentation was unclear. |
||
adam
|
e797f69c10 |
Changes 2.3.1:
* "update-index --refresh" used to leak when an entry cannot be refreshed for whatever reason. * "git fast-import" used to crash when it could not close and conclude the resulting packfile cleanly. * "git blame" died, trying to free an uninitialized piece of memory. * "git merge-file" did not work correctly in a subdirectory. * "git submodule add" failed to squash "path/to/././submodule" to "path/to/submodule". * In v2.2.0, we broke "git prune" that runs in a repository that borrows from an alternate object store. * Certain older vintages of cURL give irregular output from "curl-config --vernum", which confused our build system. * An earlier workaround to squelch unhelpful deprecation warnings from the complier on Mac OSX unnecessarily set minimum required version of the OS, which the user might want to raise (or lower) for other reasons. * Longstanding configuration variable naming rules has been added to the documentation. * The credential helper for Windows (in contrib/) used to mishandle a user name with an at-sign in it. * Older GnuPG implementations may not correctly import the keyring material we prepare for the tests to use. * Clarify in the documentation that "remote.<nick>.pushURL" and "remote.<nick>.URL" are there to name the same repository accessed via different transports, not two separate repositories. * The pack bitmap support did not build with older versions of GCC. * Reading configuration from a blob object, when it ends with a lone CR, use to confuse the configuration parser. * We didn't format an integer that wouldn't fit in "int" but in "uintmax_t" correctly. * "git push --signed" gave an incorrectly worded error message when the other side did not support the capability. * "git fetch" over a remote-helper that cannot respond to "list" command could not fetch from a symbolic reference e.g. HEAD. * The insn sheet "git rebase -i" creates did not fully honor core.abbrev settings. * The tests that wanted to see that file becomes unreadable after running "chmod a-r file", and the tests that wanted to make sure it is not run as root, we used "can we write into the / directory?" as a cheap substitute, but on some platforms that is not a good heuristics. The tests and their prerequisites have been updated to check what they really require. * The configuration variable 'mailinfo.scissors' was hard to discover in the documentation. * Correct a breakage to git-svn around v2.2 era that triggers premature closing of FileHandle. * Even though we officially haven't dropped Perl 5.8 support, the Getopt::Long package that came with it does not support "--no-" prefix to negate a boolean option; manually add support to help people with older Getopt::Long package. |
||
adam
|
2581d9d1c6 |
Changes 2.3.0:
This one ended up to be a release with lots of small corrections and improvements without big uncomfortably exciting features. The recent security fix that went to 2.2.1 and older maintenance tracks is also contained in this update. |
||
adam
|
498d94cb17 |
Changes 2.2.2:
* "git checkout $treeish $path", when $path in the index and the working tree already matched what is in $treeish at the $path, still overwrote the $path unnecessarily. * "git config --get-color" did not parse its command line arguments carefully. * open() emulated on Windows platforms did not give EISDIR upon an attempt to open a directory for writing. * A few code paths used abs() when they should have used labs() on long integers. * "gitweb" used to depend on a behaviour recent CGI.pm deprecated. * "git init" (hence "git clone") initialized the per-repository configuration file .git/config with x-bit by mistake. * Git 2.0 was supposed to make the "simple" mode for the default of "git push", but it didn't. * "Everyday" document had a broken link. * The build procedure did not bother fixing perl and python scripts when NO_PERL and NO_PYTHON build-time configuration changed. * The code that reads the reflog from the newer to the older entries did not handle an entry that crosses a boundary of block it uses to read them correctly. * "git apply" was described in the documentation to take --ignore-date option, which it does not. * Traditionally we tried to avoid interpreting date strings given by the user as future dates, e.g. GIT_COMMITTER_DATE=2014-12-10 when used early November 2014 was taken as "October 12, 2014" because it is likely that a date in the future, December 10, is a mistake. This heuristics has been loosened to allow people to express future dates (most notably, --until=<date> may want to be far in the future) and we no longer tiebreak by future-ness of the date when (1) ISO-like format is used, and (2) the string can make sense interpreted as both y-m-d and y-d-m. Git may still have to use the heuristics to tiebreak between dd/mm/yy and mm/dd/yy, though. * The code to abbreviate an object name to its short unique prefix has been optimized when no abbreviation was requested. * "git add --ignore-errors ..." did not ignore an error to give a file that did not exist. * Git did not correctly read an overlong refname from a packed refs file. Also contains typofixes, documentation updates and trivial code clean-ups. |
||
schmonz
|
9a1384c382 |
Update to 2.2.1. From the changelog:
* We used to allow committing a path ".Git/config" with Git that is running on a case sensitive filesystem, but an attempt to check out such a path with Git that runs on a case insensitive filesystem would have clobbered ".git/config", which is definitely not what the user would have expected. Git now prevents you from tracking a path with ".Git" (in any case combination) as a path component. * On Windows, certain path components that are different from ".git" are mapped to ".git", e.g. "git~1/config" is treated as if it were ".git/config". HFS+ has a similar issue, where certain unicode codepoints are ignored, e.g. ".g\u200cit/config" is treated as if it were ".git/config". Pathnames with these potential issues are rejected on the affected systems. Git on systems that are not affected by this issue (e.g. Linux) can also be configured to reject them to ensure cross platform interoperability of the hosted projects. * "git fsck" notices a tree object that records such a path that can be confused with ".git", and with receive.fsckObjects configuration set to true, an attempt to "git push" such a tree object will be rejected. Such a path may not be a problem on some filesystems but in order to protect those on HFS+ and on case insensitive filesystems, this check is enabled on all platforms. A big "thanks!" for bringing this issue to us goes to our friends in the Mercurial land, namely, Matt Mackall and Augie Fackler. Also contains typofixes, documentation updates and trivial code clean-ups. Changes since v2.2.0 are as follows: Hartmut Henkel (1): l10n: de.po: fix typos Jeff King (8): unpack-trees: propagate errors adding entries to the index read-tree: add tests for confusing paths like ".." and ".git" verify_dotfile(): reject .git case-insensitively t1450: refactor ".", "..", and ".git" fsck tests fsck: notice .git case-insensitively utf8: add is_hfs_dotgit() helper read-cache: optionally disallow HFS+ .git variants fsck: complain about HFS+ ".git" aliases in trees Johannes Schindelin (3): path: add is_ntfs_dotgit() helper read-cache: optionally disallow NTFS .git variants fsck: complain about NTFS ".git" aliases in trees |
||
adam
|
11015567e8 |
Changes 2.2.0:
Ports * Building on older MacOS X systems automatically sets the necessary NO_APPLE_COMMON_CRYPTO build-time option. * Building with NO_PTHREADS has been resurrected. * Compilation options have been updated a bit to better support the z/OS port. UI, Workflows & Features * "git archive" learned to filter what gets archived with a pathspec. * "git config --edit --global" starts from a skeletal per-user configuration file contents, instead of a total blank, when the user does not already have any global config. This immediately reduces the need to later ask "Have you forgotten to set core.user?", and we can add more to the template as we gain more experience. * "git stash list -p" used to be almost always a no-op because each stash entry is represented as a merge commit. It learned to show the difference between the base commit version and the working tree version, which is in line with what "git stash show" gives. * Sometimes users want to report a bug they experience on their repository, but they are not at liberty to share the contents of the repository. "fast-export" was taught an "--anonymize" option to replace blob contents, names of people, paths and log messages with bland and simple strings to help them. * "git difftool" learned an option to stop feeding paths to the diff backend when it exits with a non-zero status. * "git grep" learned to paint (or not paint) partial matches on context lines when showing "grep -C<num>" output in color. * "log --date=iso" uses a slight variant of the ISO 8601 format that is more human readable. A new "--date=iso-strict" option gives datetime output that conforms more strictly. * The logic "git prune" uses is more resilient against various corner cases. * A broken reimplementation of Git could write an invalid index that records both stage 0 and higher-stage entries for the same path. We now notice and reject such an index, as there is no sensible fallback (we do not know if the broken tool wanted to resolve and forgot to remove the higher-stage entries, or if it wanted to unresolve and forgot to remove the stage 0 entry). * The temporary files "git mergetool" uses are renamed to avoid too many dots in them (e.g. a temporary file for "hello.c" used to be named e.g. "hello.BASE.4321.c" but now uses underscore instead, e.g. "hello_BASE_4321.c", to allow us to have multiple variants). * The temporary files "git mergetool" uses can be placed in a newly created temporary directory, instead of the current directory, by setting the mergetool.writeToTemp configuration variable. * "git mergetool" understands "--tool bc" now, as version 4 of BeyondCompare can be driven the same way as its version 3 and it feels awkward to say "--tool bc3" to run version 4. * The "pre-receive" and "post-receive" hooks are no longer required to consume their input fully (not following this requirement used to result in intermittent errors in "git push"). * The pretty-format specifier "%d", which expands to " (tagname)" for a tagged commit, gained a cousin "%D" that just gives the "tagname" without frills. * "git push" learned "--signed" push, that allows a push (i.e. request to update the refs on the other side to point at a new history, together with the transmission of necessary objects) to be signed, so that it can be verified and audited, using the GPG signature of the person who pushed, that the tips of branches at a public repository really point the commits the pusher wanted to, without having to "trust" the server. * "git interpret-trailers" is a new filter to programmatically edit the tail end of the commit log messages, e.g. "Signed-off-by:". * "git help everyday" shows the "Everyday Git in 20 commands or so" document, whose contents have been updated to match more modern Git practice. * On the "git svn" front, work progresses to reduce memory consumption and to improve handling of mergeinfo. |
||
bsiegert
|
8259160428 |
Do not attempt to set ownership of some files, this breaks unprivileged
builds on Mac OS X Tiger. Patch provided by Sevan Janiyan in PR pkg/49051. |
||
adam
|
6762903443 |
Changes 2.1.3:
* Some MUAs mangled a line in a message that begins with "From " to ">From " when writing to a mailbox file and feeding such an input to "git am" used to lose such a line. * "git daemon" (with NO_IPV6 build configuration) used to incorrectly use the hostname even when gethostbyname() reported that the given hostname is not found. * Newer versions of 'meld' breaks the auto-detection we use to see if they are new enough to support the `--output` option. * "git pack-objects" forgot to disable the codepath to generate object recheability bitmap when it needs to split the resulting pack. * "gitweb" used deprecated CGI::startfrom, which was removed from CGI.pm as of 4.04; use CGI::start_from instead. * "git log" documentation had an example section marked up not quite correctly, which passed AsciiDoc but failed with AsciiDoctor. Also contains some documentation updates. |
||
adam
|
1862d7a2a6 |
Changes 2.1.2:
* "git push" over HTTP transport had an artificial limit on number of refs that can be pushed imposed by the command line length. * When receiving an invalid pack stream that records the same object twice, multiple threads got confused due to a race. * An attempt to remove the entire tree in the "git fast-import" input stream caused it to misbehave. * Reachability check (used in "git prune" and friends) did not add a detached HEAD as a starting point to traverse objects still in use. * "git config --add section.var val" used to lose existing section.var whose value was an empty string. * "git fsck" failed to report that it found corrupt objects via its exit status in some cases. |
||
adam
|
971b663ae7 |
Changes 2.1.0:
Backward compatibility notes ---------------------------- * The default value we give to the environment variable LESS has been changed from "FRSX" to "FRX", losing "S" (chop long lines instead of wrapping). Existing users who prefer not to see line-wrapped output may want to set $ git config core.pager "less -S" to restore the traditional behaviour. It is expected that people find output from most subcommands easier to read with the new default, except for "blame" which tends to produce really long lines. To override the new default only for "git blame", you can do this: $ git config pager.blame "less -S" * A few disused directories in contrib/ have been retired. Updates since v2.0 ------------------ UI, Workflows & Features * Since the very beginning of Git, we gave the LESS environment a default value "FRSX" when we spawn "less" as the pager. "S" (chop long lines instead of wrapping) has been removed from this default set of options, because it is more or less a personal taste thing, as opposed to the others that have good justifications (i.e. "R" is very much justified because many kinds of output we produce are colored and "FX" is justified because output we produce is often shorter than a page). * The logic and data used to compute the display width needed for UTF-8 strings have been updated to match Unicode 7.0 better. * HTTP-based transports learned to better propagate the error messages from the webserver to the client coming over the HTTP transport. * The completion script for bash (in contrib/) has been updated to better handle aliases that define a complex sequence of commands. * The "core.preloadindex" configuration variable is enabled by default, allowing modern platforms to take advantage of their multiple cores. * "git clone" applies the "if cloning from a local disk, physically copy the repository using hardlinks, unless otherwise told not to with --no-local" optimization when the url.*.insteadOf mechanism rewrites a remote-repository "git clone $URL" into a clone from a local disk. * "git commit --date=<date>" option learned more timestamp formats, including "--date=now". * The `core.commentChar` configuration variable is used to specify a custom comment character (other than the default "#") for the commit message editor. This can be set to `auto` to attempt to choose a different character that does not conflict with any that already starts a line in the message being edited, for cases like "git commit --amend". * "git format-patch" learned --signature-file=<file> to add the contents of a file as a signature to the mail message it produces. * "git grep" learned the grep.fullname configuration variable to force "--full-name" to be the default. This may cause regressions for scripted users who do not expect this new behaviour. * "git imap-send" learned to ask the credential helper for auth material. * "git log" and friends now understand the value "auto" for the "log.decorate" configuration variable to enable the "--decorate" option automatically when the output is sent to tty. * "git merge" without an argument, even when there is an upstream defined for the current branch, refused to run until merge.defaultToUpstream is set to true. Flip the default of that configuration variable to true. * "git mergetool" learned to drive the vimdiff3 backend. * mergetool.prompt used to default to 'true', always asking "do you really want to run the tool on this path?". The default has been changed to 'false'. However, the prompt will still appear if mergetool used its autodetection system to guess which tool to use. Users who explicitly specify or configure a tool will no longer see the prompt by default. Strictly speaking, this is a backward incompatible change and users need to explicitly set the variable to 'true' if they want to be prompted to confirm running the tool on each path. * "git replace" learned the "--edit" subcommand to create a replacement by editing an existing object. * "git replace" learned a "--graft" option to rewrite the parents of a commit. * "git send-email" learned "--to-cover" and "--cc-cover" options, to tell it to copy To: and Cc: headers found in the first input file when emitting later input files. * "git svn" learned to cope with malformed timestamps with only one digit in the hour part, e.g. 2014-01-07T5:01:02.048176Z, emitted by some broken subversion server implementations. * "git tag" when editing the tag message shows the name of the tag being edited as a comment in the editor. * "git tag" learned to pay attention to "tag.sort" configuration, to be used as the default sort order when no --sort=<value> option is given. * A new "git verify-commit" command, to check GPG signatures in signed commits, in a way similar to "git verify-tag" is used to check signed tags, was added. |