37 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
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. |
||
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. |
||
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. |
||
schmonz
|
609dccc1fd |
Even though we specify OpenSSL, on sufficiently new Mac OS X, Git
has been linking with Apple's CommonCrypto instead. Add an "apple-common-crypto" option that explicitly avoids CommonCrypto when it's off. Turn it off by default, and set PKG_FAIL_REASON if it's enabled on an unsuitable system. While here, regenerate fuzzy patches. Addresses pkg/49051. Bump PKGREVISION. |
||
adam
|
7e964a6677 |
Fixes since v1.9.3
------------------ * Commands that take pathspecs on the command line misbehaved when the pathspec is given as an absolute pathname (which is a practice not particularly encouraged) that points at a symbolic link in the working tree. * An earlier fix to the shell prompt script (in contrib/) for using the PROMPT_COMMAND interface did not correctly check if the extra code path needs to trigger, causing the branch name not to appear when 'promptvars' option is disabled in bash or PROMPT_SUBST is unset in zsh. |
||
adam
|
ad0f4e2744 |
Changes 1.9.3:
* "git p4" dealing with changes in binary files were broken by a change in 1.9 release. * The shell prompt script (in contrib/), when using the PROMPT_COMMAND interface, used an unsafe construct when showing the branch name in $PS1. * "git rebase" used a POSIX shell construct FreeBSD /bin/sh does not work well with. * Some more Unicode codepoints defined in Unicode 6.3 as having zero width have been taught to our display column counting logic. * Some tests used shell constructs that did not work well on FreeBSD. |
||
adam
|
b90ff0d742 |
Changes 1.8.5:
Foreign interfaces, subsystems and ports. * The HTTP transport, when talking GSS-Negotiate, uses "100 Continue" response to avoid having to rewind and resend a large payload, which may not be always doable. * Various bugfixes to remote-bzr and remote-hg (in contrib/). * The build procedure is aware of MirBSD now. * Various "git p4", "git svn" and "gitk" updates. UI, Workflows & Features * Fetching from a shallowly-cloned repository used to be forbidden, primarily because the codepaths involved were not carefully vetted and we did not bother supporting such usage. This release attempts to allow object transfer out of a shallowly-cloned repository in a more controlled way (i.e. the receiver becomes a shallow repository with a truncated history). * Just like we give a reasonable default for "less" via the LESS environment variable, we now specify a reasonable default for "lv" via the "LV" environment variable when spawning the pager. * Two-level configuration variable names in "branch.*" and "remote.*" hierarchies, whose variables are predominantly three-level, were not completed by hitting a <TAB> in bash and zsh completions. * Fetching a 'frotz' branch with "git fetch", while a 'frotz/nitfol' remote-tracking branch from an earlier fetch was still there, would error out, primarily because the command was not told that it is allowed to lose any information on our side. "git fetch --prune" now can be used to remove 'frotz/nitfol' to make room for fetching and storing the 'frotz' remote-tracking branch. * "diff.orderfile=<file>" configuration variable can be used to pretend as if the "-O<file>" option were given from the command line of "git diff", etc. * The negative pathspec syntax allows "git log -- . ':!dir'" to tell us "I am interested in everything but 'dir' directory". * "git difftool" shows how many different paths there are in total, and how many of them have been shown so far, to indicate progress. * "git push origin master" used to push our 'master' branch to update the 'master' branch at the 'origin' repository. This has been enhanced to use the same ref mapping "git push origin" would use to determine what ref at the 'origin' to be updated with our 'master'. For example, with this configuration [remote "origin"] push = refs/heads/*:refs/review/* that would cause "git push origin" to push out our local branches to corresponding refs under refs/review/ hierarchy at 'origin', "git push origin master" would update 'refs/review/master' over there. Alternatively, if push.default is set to 'upstream' and our 'master' is set to integrate with 'topic' from the 'origin' branch, running "git push origin" while on our 'master' would update their 'topic' branch, and running "git push origin master" while on any of our branches does the same. * "gitweb" learned to treat ref hierarchies other than refs/heads as if they are additional branch namespaces (e.g. refs/changes/ in Gerrit). * "git for-each-ref --format=..." learned a few formatting directives; e.g. "%(color:red)%(HEAD)%(color:reset) %(refname:short) %(subject)". * The command string given to "git submodule foreach" is passed directly to the shell, without being eval'ed. This is a backward incompatible change that may break existing users. * "git log" and friends learned the "--exclude=<glob>" option, to allow people to say "list history of all branches except those that match this pattern" with "git log --exclude='*/*' --branches". * "git rev-parse --parseopt" learned a new "--stuck-long" option to help scripts parse options with an optional parameter. * The "--tags" option to "git fetch" no longer tells the command to fetch _only_ the tags. It instead fetches tags _in addition to_ what are fetched by the same command line without the option. |
||
adam
|
9f98f6b7c5 |
Changes 1.8.5.4:
* "git fetch --depth=0" was a no-op, and was silently ignored. Diagnose it as an error. * Remote repository URL expressed in scp-style host:path notation are parsed more carefully (e.g. "foo/bar:baz" is local, "[::1]:/~user" asks to connect to user's home directory on host at address ::1. * SSL-related options were not passed correctly to underlying socket layer in "git send-email". * "git commit -v" appends the patch to the log message before editing, and then removes the patch when the editor returned control. However, the patch was not stripped correctly when the first modified path was a submodule. * "git mv A B/", when B does not exist as a directory, should error out, but it didn't. * When we figure out how many file descriptors to allocate for keeping packfiles open, a system with non-working getrlimit() could cause us to die(), but because we make this call only to get a rough estimate of how many is available and we do not even attempt to use up all file descriptors available ourselves, it is nicer to fall back to a reasonable low value rather than dying. * "git log --decorate" did not handle a tag pointed by another tag nicely. * "git add -A" (no other arguments) in a totally empty working tree used to emit an error. * There is no reason to have a hardcoded upper limit of the number of parents for an octopus merge, created via the graft mechanism, but there was. * The implementation of 'git stash $cmd "stash@{...}"' did not quote the stash argument properly and left it split at IFS whitespace. * The documentation to "git pull" hinted there is an "-m" option because it incorrectly shared the documentation with "git merge". Also contains typofixes, documentation updates and trivial code clean-ups. |
||
adam
|
63554fd2b4 |
Changes 1.8.5.3:
* The "--[no-]informative-errors" options to "git daemon" were parsed a bit too loosely, allowing any other string after these option names. * A "gc" process running as a different user should be able to stop a new "gc" process from starting. * An earlier "clean-up" introduced an unnecessary memory leak to the credential subsystem. * "git mv A B/", when B does not exist as a directory, should error out, but it didn't. * "git rev-parse <revs> -- <paths>" did not implement the usual disambiguation rules the commands in the "git log" family used in the same way. * "git cat-file --batch=", an admittedly useless command, did not behave very well. Also contains typofixes, documentation updates and trivial code clean-ups. |
||
wiz
|
644c42ccff |
Add a patch from the git mailing list fixing a problem with 'git svn':
git-svn: workaround for a bug in svn serf backend Subversion serf backend in versions 1.8.5 and below has a bug that the function creating the descriptor of a file change -- add_file() -- doesn't make a copy of its 3d argument when storing it on the returned descriptor. As a result, by the time this field is used (in transactions of file copying or renaming) it may well be released. This patch works around this bug, by storing the value to be passed as the 3d argument to add_file() in a local variable with the same scope as the file change descriptor, making sure their lifetime is the same. Cc: Benjamin Pabst <benjamin.pabst85 <at> gmail.com> Cc: Eric Wong <normalperson <at> yhbt.net> Signed-off-by: Roman Kagan <rkagan <at> mail.ru> --- perl/Git/SVN/Editor.pm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) http://permalink.gmane.org/gmane.comp.version-control.git/239690 |
||
bsiegert
|
242c7819ab |
Add support for MirBSD.
This needs some more work, there is a segfault when trying to pull or clone. But at least it builds and basic operations work. |
||
adam
|
69f533e673 |
Changes 1.8.5.2:
* "git diff -- ':(icase)makefile'" was unnecessarily rejected at the command line parser. * "git cat-file --batch-check=ok" did not check the existence of the named object. * "git am --abort" sometimes complained about not being able to write a tree with an 0{40} object in it. * Two processes creating loose objects at the same time could have failed unnecessarily when the name of their new objects started with the same byte value, due to a race condition. Also contains typofixes, documentation updates and trivial code clean-ups |
||
adam
|
d7521cb02b |
Changes 1.8.5.1:
* "git submodule init" copied "submodule.$name.update" settings from .gitmodules to .git/config without making sure if the suggested value was sensible. |
||
adam
|
500ac0ea0b |
Changes 1.8.4.3:
* The interaction between use of Perl in our test suite and NO_PERL has been clarified a bit. * A fast-import stream expresses a pathname with funny characters by quoting them in C style; remote-hg remote helper (in contrib/) forgot to unquote such a path. * One long-standing flaw in the pack transfer protocol used by "git clone" was that there was no way to tell the other end which branch "HEAD" points at, and the receiving end needed to guess. A new capability has been defined in the pack protocol to convey this information so that cloning from a repository with more than one branches pointing at the same commit where the HEAD is at now reliably sets the initial branch in the resulting repository. * We did not handle cases where http transport gets redirected during the authorization request (e.g. from http:// to https://). * "git rev-list --objects ^v1.0^ v1.0" gave v1.0 tag itself in the output, but "git rev-list --objects v1.0^..v1.0" did not. * The fall-back parsing of commit objects with broken author or committer lines were less robust than ideal in picking up the timestamps. * Bash prompting code to deal with an SVN remote as an upstream were coded in a way not supported by older Bash versions (3.x). * "git checkout topic", when there is not yet a local "topic" branch but there is a unique remote-tracking branch for a remote "topic" branch, pretended as if "git checkout -t -b topic remote/$r/topic" (for that unique remote $r) was run. This hack however was not implemented for "git checkout topic --". * Coloring around octopus merges in "log --graph" output was screwy. * We did not generate HTML version of documentation to "git subtree" in contrib/. * The synopsis section of "git unpack-objects" documentation has been clarified a bit. * An ancient How-To on serving Git repositories on an HTTP server lacked a warning that it has been mostly superseded with more modern way. |
||
adam
|
1c7af9e015 |
Changes 1.8.4.2:
* "git clone" gave some progress messages to the standard output, not to the standard error, and did not allow suppressing them with the "--no-progress" option. * "format-patch --from=<whom>" forgot to omit unnecessary in-body from line, i.e. when <whom> is the same as the real author. * "git shortlog" used to choke and die when there is a malformed commit (e.g. missing authors); it now simply ignore such a commit and keeps going. * "git merge-recursive" did not parse its "--diff-algorithm=" command line option correctly. * "git branch --track" had a minor regression in v1.8.3.2 and later that made it impossible to base your local work on anything but a local branch of the upstream repository you are tracking from. * "git ls-files -k" needs to crawl only the part of the working tree that may overlap the paths in the index to find killed files, but shared code with the logic to find all the untracked files, which made it unnecessarily inefficient. * When there is no sufficient overlap between old and new history during a "git fetch" into a shallow repository, objects that the sending side knows the receiving end has were unnecessarily sent. * When running "fetch -q", a long silence while the sender side computes the set of objects to send can be mistaken by proxies as dropped connection. The server side has been taught to send a small empty messages to keep the connection alive. * When the webserver responds with "405 Method Not Allowed", "git http-backend" should tell the client what methods are allowed with the "Allow" header. * "git cvsserver" computed the permission mode bits incorrectly for executable files. * The implementation of "add -i" has a crippling code to work around ActiveState Perl limitation but it by mistake also triggered on Git for Windows where MSYS perl is used. * We made sure that we notice the user-supplied GIT_DIR is actually a gitfile, but did not do the same when the default ".git" is a gitfile. * When an object is not found after checking the packfiles and then loose object directory, read_sha1_file() re-checks the packfiles to prevent racing with a concurrent repacker; teach the same logic to has_sha1_file(). * "git commit --author=$name", when $name is not in the canonical "A. U. Thor <au.thor@example.xz>" format, looks for a matching name from existing history, but did not consult mailmap to grab the preferred author name. * The commit object names in the insn sheet that was prepared at the beginning of "rebase -i" session can become ambiguous as the rebasing progresses and the repository gains more commits. Make sure the internal record is kept with full 40-hex object names. * "git rebase --preserve-merges" internally used the merge machinery and as a side effect, left merge summary message in the log, but when rebasing, there should not be a need for merge summary. * "git rebase -i" forgot that the comment character can be configurable while reading its insn sheet. |
||
adam
|
29f4a8921d |
Changes 1.8.4.1:
* Some old versions of bash do not grok some constructs like 'printf -v varname' which the prompt and completion code started to use recently. The completion and prompt scripts have been adjusted to work better with these old versions of bash. * In FreeBSD's and NetBSD's "sh", a return in a dot script in a function returns from the function, not only in the dot script, breaking "git rebase" on these platforms (regression introduced in 1.8.4-rc1). * "git rebase -i" and other scripted commands were feeding a random, data dependant error message to 'echo' and expecting it to come out literally. * Setting the "submodule.<name>.path" variable to the empty "true" caused the configuration parser to segfault. * Output from "git log --full-diff -- <pathspec>" looked strange because comparison was done with the previous ancestor that touched the specified <pathspec>, causing the patches for paths outside the pathspec to show more than the single commit has changed. * The auto-tag-following code in "git fetch" tries to reuse the same transport twice when the serving end does not cooperate and does not give tags that point to commits that are asked for as part of the primary transfer. Unfortunately, Git-aware transport helper interface is not designed to be used more than once, hence this did not work over smart-http transfer. Fixed. * Send a large request to read(2)/write(2) as a smaller but still reasonably large chunks, which would improve the latency when the operation needs to be killed and incidentally works around broken 64-bit systems that cannot take a 2GB write or read in one go. * A ".mailmap" file that ends with an incomplete line, when read from a blob, was not handled properly. * The recent "short-cut clone connectivity check" topic broke a shallow repository when a fetch operation tries to auto-follow tags. * When send-email comes up with an error message to die with upon failure to start an SSL session, it tried to read the error string from a wrong place. * A call to xread() was used without a loop to cope with short read in the codepath to stream large blobs to a pack. * On platforms with fgetc() and friends defined as macros, the configuration parser did not compile. * New versions of MediaWiki introduced a new API for returning more than 500 results in response to a query, which would cause the MediaWiki remote helper to go into an infinite loop. * Subversion's serf access method (the only one available in Subversion 1.8) for http and https URLs in skelta mode tells its caller to open multiple files at a time, which made "git svn fetch" complain that "Temp file with moniker 'svn_delta' already in use" instead of fetching. Also contains a handful of trivial code clean-ups, documentation updates, updates to the test suite, etc. |
||
prlw1
|
b56637b5c3 |
Apply fix for rebase from Matthieu Moy in
https://github.com/git/git/commit/99855dd Reported Sergey Svishchev. |
||
wiz
|
b7adfdb4f4 |
Reimport scmgit-base as git-base-1.8.4 in devel/git-base.
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows. This package contains only the git program (and subcommands). It does not contain man pages or the tk-based repository browser. |