Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Git v1.7.0.5 Release Notes
- ==========================
- Fixes since v1.7.0.4
- --------------------
- * "git daemon" failed to compile on platforms without sockaddr_storage type.
- * Output from "git rev-list --pretty=oneline" was unparsable when a
- commit did not have any message, which is abnormal but possible in a
- repository converted from foreign scm.
- * "git stash show <commit-that-is-not-a-stash>" gave an error message
- that was not so useful. Reworded the message to "<it> is not a
- stash".
- * Python scripts in contrib/ area now start with "#!/usr/bin/env python"
- to honor user's PATH.
- * "git imap-send" used to mistake any line that begins with "From " as a
- message separator in format-patch output.
- * Smart http server backend failed to report an internal server error and
- infinitely looped instead after output pipe was closed.
- And other minor fixes and documentation updates.
- Git v1.7.0.4 Release Notes
- ==========================
- Fixes since v1.7.0.3
- --------------------
- * Optimized ntohl/htonl on big-endian machines were broken.
- * Color values given to "color.<cmd>.<slot>" configuration can now have
- more than one attributes (e.g. "bold ul").
- * "git add -u nonexistent-path" did not complain.
- * "git apply --whitespace=fix" didn't work well when an early patch in
- a patch series adds trailing blank lines and a later one depended on
- such a block of blank lines at the end.
- * "git fast-export" didn't check error status and stop when marks file
- cannot be opened.
- * "git format-patch --ignore-if-in-upstream" gave unwarranted errors
- when the range was empty, instead of silently finishing.
- * "git remote prune" did not detect remote tracking refs that became
- dangling correctly.
- And other minor fixes and documentation updates.
- Git v1.7.0.3 Release Notes
- ==========================
- Fixes since v1.7.0.2
- --------------------
- * Object files are created in a more ACL friendly way in repositories
- where group permission is ACL controlled.
- * "git add -i" didn't handle a deleted path very well.
- * "git blame" padded line numbers with one extra SP when the total number
- of lines was one less than multiple of ten due to an off-by-one error.
- * "git fetch --all/--multi" used to discard information for remotes that
- are fetched earlier.
- * "git log --author=me --grep=it" tried to find commits that have "it"
- or are written by "me", instead of the ones that have "it" _and_ are
- written by "me".
- * "git log -g branch" misbehaved when there was no entries in the reflog
- for the named branch.
- * "git mailinfo" (hence "git am") incorrectly removed initial indent from
- paragraphs.
- * "git prune" and "git reflog" (hence "git gc" as well) didn't honor
- an instruction never to expire by setting gc.reflogexpire to never.
- * "git push" misbehaved when branch.<name>.merge was configured without
- matching branch.<name>.remote.
- And other minor fixes and documentation updates.
- Git v1.7.0.2 Release Notes
- ==========================
- Fixes since v1.7.0.1
- --------------------
- * GIT_PAGER was not honored consistently by some scripted Porcelains, most
- notably "git am".
- * updating working tree files after telling git to add them to the
- index and while it is still working created garbage object files in
- the repository without diagnosing it as an error.
- * "git bisect -- pathspec..." did not diagnose an error condition properly when
- the simplification with given pathspec made the history empty.
- * "git rev-list --cherry-pick A...B" now has an obvious optimization when the
- histories haven't diverged (i.e. when one end is an ancestor of the other).
- * "git diff --quiet -w" did not work as expected.
- * "git fast-import" didn't work with a large input, as it lacked support
- for producing the pack index in v2 format.
- * "git imap-send" didn't use CRLF line endings over the imap protocol
- when storing its payload to the draft box, violating RFC 3501.
- * "git log --format='%w(x,y,z)%b'" and friends that rewrap message
- has been optimized for utf-8 payload.
- * Error messages generated on the receiving end did not come back to "git
- push".
- * "git status" in 1.7.0 lacked the optimization we used to have in 1.6.X series
- to speed up scanning of large working tree.
- * "gitweb" did not diagnose parsing errors properly while reading tis configuration
- file.
- And other minor fixes and documentation updates.
- Git v1.7.0.1 Release Notes
- ==========================
- Fixes since v1.7.0
- ------------------
- * In a freshly created repository "rev-parse HEAD^0" complained that
- it is dangling symref, even though "rev-parse HEAD" didn't.
- * "git show :no-such-name" tried to access the index without bounds
- check, leading to a potential segfault.
- * Message from "git cherry-pick" was harder to read and use than necessary
- when it stopped due to conflicting changes.
- * We referred to ".git/refs/" throughout the documentation when we
- meant to talk about abstract notion of "ref namespace". Because
- people's repositories often have packed refs these days, this was
- confusing.
- * "git diff --output=/path/that/cannot/be/written" did not correctly
- error out.
- * "git grep -e -pattern-that-begin-with-dash paths..." could not be
- spelled as "git grep -- -pattern-that-begin-with-dash paths..." which
- would be a GNU way to use "--" as "end of options".
- * "git grep" compiled with threading support tried to access an
- uninitialized mutex on boxes with a single CPU.
- * "git stash pop -q --index" failed because the unnecessary --index
- option was propagated to "git stash drop" that is internally run at the
- end.
- And other minor fixes and documentation updates.
- Git v1.7.0 Release Notes
- ========================
- Notes on behaviour change
- -------------------------
- * "git push" into a branch that is currently checked out (i.e. pointed at by
- HEAD in a repository that is not bare) is refused by default.
- Similarly, "git push $there :$killed" to delete the branch $killed
- in a remote repository $there, when $killed branch is the current
- branch pointed at by its HEAD, will be refused by default.
- Setting the configuration variables receive.denyCurrentBranch and
- receive.denyDeleteCurrent to 'ignore' in the receiving repository
- can be used to override these safety features.
- * "git send-email" does not make deep threads by default when sending a
- patch series with more than two messages. All messages will be sent
- as a reply to the first message, i.e. cover letter.
- It has been possible already to configure send-email to send "shallow thread"
- by setting sendemail.chainreplyto configuration variable to false. The
- only thing this release does is to change the default when you haven't
- configured that variable.
- * "git status" is not "git commit --dry-run" anymore. This change does
- not affect you if you run the command without argument.
- * "git diff" traditionally treated various "ignore whitespace" options
- only as a way to filter the patch output. "git diff --exit-code -b"
- exited with non-zero status even if all changes were about changing the
- amount of whitespace and nothing else; and "git diff -b" showed the
- "diff --git" header line for such a change without patch text.
- In this release, the "ignore whitespaces" options affect the semantics
- of the diff operation. A change that does not affect anything but
- whitespaces is reported with zero exit status when run with
- --exit-code, and there is no "diff --git" header for such a change.
- * External diff and textconv helpers are now executed using the shell.
- This makes them consistent with other programs executed by git, and
- allows you to pass command-line parameters to the helpers. Any helper
- paths containing spaces or other metacharacters now need to be
- shell-quoted. The affected helpers are GIT_EXTERNAL_DIFF in the
- environment, and diff.*.command and diff.*.textconv in the config
- file.
- * The --max-pack-size argument to 'git repack', 'git pack-objects', and
- 'git fast-import' was assuming the provided size to be expressed in MiB,
- unlike the corresponding config variable and other similar options accepting
- a size value. It is now expecting a size expressed in bytes, with a possible
- unit suffix of 'k', 'm', or 'g'.
- Updates since v1.6.6
- --------------------
- (subsystems)
- * "git fast-import" updates; adds "option" and "feature" to detect the
- mismatch between fast-import and the frontends that produce the input
- stream.
- * "git svn" support of subversion "merge tickets" and miscellaneous fixes.
- * "gitk" and "git gui" translation updates.
- * "gitweb" updates (code clean-up, load checking etc.)
- (portability)
- * Some more MSVC portability patches for msysgit port.
- * Minimum Pthreads emulation for msysgit port.
- (performance)
- * More performance improvement patches for msysgit port.
- (usability, bells and whistles)
- * More commands learned "--quiet" and "--[no-]progress" options.
- * Various commands given by the end user (e.g. diff.type.textconv,
- and GIT_EDITOR) can be specified with command line arguments. E.g. it
- is now possible to say "[diff "utf8doc"] textconv = nkf -w".
- * "sparse checkout" feature allows only part of the work tree to be
- checked out.
- * HTTP transfer can use authentication scheme other than basic
- (i.e./e.g. digest).
- * Switching from a version of superproject that used to have a submodule
- to another version of superproject that no longer has it did not remove
- the submodule directory when it should (namely, when you are not
- interested in the submodule at all and didn't clone/checkout).
- * A new attribute conflict-marker-size can be used to change the size of
- the conflict markers from the default 7; this is useful when tracked
- contents (e.g. git-merge documentation) have strings that resemble the
- conflict markers.
- * A new syntax "<branch>@{upstream}" can be used on the command line to
- substitute the name of the "upstream" of the branch. Missing branch
- defaults to the current branch, so "git fetch && git merge @{upstream}"
- will be equivalent to "git pull".
- * "git am --resolved" has a synonym "git am --continue".
- * "git branch --set-upstream" can be used to update the (surprise!) upstream,
- i.e. where the branch is supposed to pull and merge from (or rebase onto).
- * "git checkout A...B" is a way to detach HEAD at the merge base between
- A and B.
- * "git checkout -m path" to reset the work tree file back into the
- conflicted state works even when you already ran "git add path" and
- resolved the conflicts.
- * "git commit --date='<date>'" can be used to override the author date
- just like "git commit --author='<name> <email>'" can be used to
- override the author identity.
- * "git commit --no-status" can be used to omit the listing of the index
- and the work tree status in the editor used to prepare the log message.
- * "git commit" warns a bit more aggressively until you configure user.email,
- whose default value almost always is not (and fundamentally cannot be)
- what you want.
- * "git difftool" has been extended to make it easier to integrate it
- with gitk.
- * "git fetch --all" can now be used in place of "git remote update".
- * "git grep" does not rely on external grep anymore. It can use more than
- one thread to accelerate the operation.
- * "git grep" learned "--quiet" option.
- * "git log" and friends learned "--glob=heads/*" syntax that is a more
- flexible way to complement "--branches/--tags/--remotes".
- * "git merge" learned to pass options specific to strategy-backends. E.g.
- - "git merge -Xsubtree=path/to/directory" can be used to tell the subtree
- strategy how much to shift the trees explicitly.
- - "git merge -Xtheirs" can be used to auto-merge as much as possible,
- while discarding your own changes and taking merged version in
- conflicted regions.
- * "git push" learned "git push origin --delete branch", a syntactic sugar
- for "git push origin :branch".
- * "git push" learned "git push --set-upstream origin forker:forkee" that
- lets you configure your "forker" branch to later pull from "forkee"
- branch at "origin".
- * "git rebase --onto A...B" means the history is replayed on top of the
- merge base between A and B.
- * "git rebase -i" learned new action "fixup" that squashes the change
- but does not affect existing log message.
- * "git rebase -i" also learned --autosquash option that is useful
- together with the new "fixup" action.
- * "git remote" learned set-url subcommand that updates (surprise!) url
- for an existing remote nickname.
- * "git rerere" learned "forget path" subcommand. Together with "git
- checkout -m path" it will be useful when you recorded a wrong
- resolution.
- * Use of "git reset --merge" has become easier when resetting away a
- conflicted mess left in the work tree.
- * "git rerere" had rerere.autoupdate configuration but there was no way
- to countermand it from the command line; --no-rerere-autoupdate option
- given to "merge", "revert", etc. fixes this.
- * "git status" learned "-s(hort)" output format.
- (developers)
- * The infrastructure to build foreign SCM interface has been updated.
- * Many more commands are now built-in.
- * THREADED_DELTA_SEARCH is no more. If you build with threads, delta
- compression will always take advantage of it.
- Fixes since v1.6.6
- ------------------
- All of the fixes in v1.6.6.X maintenance series are included in this
- release, unless otherwise noted.
- * "git branch -d branch" used to refuse deleting the branch even when
- the branch is fully merged to its upstream branch if it is not merged
- to the current branch. It now deletes it in such a case.
- * "fiter-branch" command incorrectly said --prune-empty and --filter-commit
- were incompatible; the latter should be read as --commit-filter.
- * When using "git status" or asking "git diff" to compare the work tree
- with something, they used to consider that a checked-out submodule with
- uncommitted changes is not modified; this could cause people to forget
- committing these changes in the submodule before committing in the
- superproject. They now consider such a change as a modification and
- "git diff" will append a "-dirty" to the work tree side when generating
- patch output or when used with the --submodule option.
- Git v1.6.6.2 Release Notes
- ==========================
- Fixes since v1.6.6.1
- --------------------
- * recursive merge didn't correctly diagnose its own programming errors,
- and instead caused the caller to segfault.
- * The new "smart http" aware clients probed the web servers to see if
- they support smart http, but did not fall back to dumb http transport
- correctly with some servers.
- * Time based reflog syntax e.g. "@{yesterday}" didn't diagnose a misspelled
- time specification and instead assumed "@{now}".
- * "git archive HEAD -- no-such-directory" produced an empty archive
- without complaining.
- * "git blame -L start,end -- file" misbehaved when given a start that is
- larger than the number of lines in the file.
- * "git checkout -m" didn't correctly call custom merge backend supplied
- by the end user.
- * "git config -f <file>" misbehaved when run from a subdirectory.
- * "git cvsserver" didn't like having regex metacharacters (e.g. '+') in
- CVSROOT environment.
- * "git fast-import" did not correctly handle large blobs that may
- bust the pack size limit.
- * "git gui" is supposed to work even when launched from inside a .git
- directory.
- * "git gui" misbehaved when applying a hunk that ends with deletion.
- * "git imap-send" did not honor imap.preformattedHTML as documented.
- * "git log" family incorrectly showed the commit notes unconditionally by
- mistake, which was especially irritating when running "git log --oneline".
- * "git status" shouldn't require an write access to the repository.
- Other minor documentation updates are included.
- Git v1.6.6.1 Release Notes
- ==========================
- Fixes since v1.6.6
- ------------------
- * "git blame" did not work well when commit lacked the author name.
- * "git branch -a name" wasn't diagnosed as an error.
- * "git count-objects" did not handle packfiles that are bigger than 4G on
- platforms with 32-bit off_t.
- * "git checkout -m other" while on a branch that does not have any commit
- segfaulted, instead of failing.
- * "git fast-import" choked when fed a tag that do not point at a
- commit.
- * "git grep" finding from work tree files could have fed garbage to
- the underlying regexec(3).
- * "git grep -L" didn't show empty files (they should never match, and
- they should always appear in -L output as unmatching).
- * "git rebase -i" did not abort cleanly if it failed to launch the editor.
- * "git reset --hard" did not work correctly when GIT_WORK_TREE environment
- variable is used to point at the root of the true work tree.
- * http-backend was not listed in the command list in the documentation.
- * Building on FreeBSD (both 7 and 8) needs OLD_ICONV set in the Makefile
- * "git checkout -m some-branch" while on an unborn branch crashed.
- Other minor documentation updates are included.
- Git v1.6.6 Release Notes
- ========================
- Notes on behaviour change
- -------------------------
- * In this release, "git fsck" defaults to "git fsck --full" and
- checks packfiles, and because of this it will take much longer to
- complete than before. If you prefer a quicker check only on loose
- objects (the old default), you can say "git fsck --no-full". This
- has been supported by 1.5.4 and newer versions of git, so it is
- safe to write it in your script even if you use slightly older git
- on some of your machines.
- Preparing yourselves for compatibility issues in 1.7.0
- ------------------------------------------------------
- In git 1.7.0, which is planned to be the release after 1.6.6, there will
- be a handful of behaviour changes that will break backward compatibility.
- These changes were discussed long time ago and existing behaviours have
- been identified as more problematic to the userbase than keeping them for
- the sake of backward compatibility.
- When necessary, a transition strategy for existing users has been designed
- not to force them running around setting configuration variables and
- updating their scripts in order to either keep the traditional behaviour
- or adjust to the new behaviour, on the day their sysadmin decides to install
- the new version of git. When we switched from "git-foo" to "git foo" in
- 1.6.0, even though the change had been advertised and the transition
- guide had been provided for a very long time, the users procrastinated
- during the entire transtion period, and ended up panicking on the day
- their sysadmins updated their git installation. We are trying to avoid
- repeating that unpleasantness in the 1.7.0 release.
- For changes decided to be in 1.7.0, commands that will be affected
- have been much louder to strongly discourage such procrastination, and
- they continue to be in this release. If you have been using recent
- versions of git, you would have seen warnings issued when you used
- features whose behaviour will change, with a clear instruction on how
- to keep the existing behaviour if you want to. You hopefully are
- already well prepared.
- Of course, we have also been giving "this and that will change in
- 1.7.0; prepare yourselves" warnings in the release notes and
- announcement messages for the past few releases. Let's see how well
- users will fare this time.
- * "git push" into a branch that is currently checked out (i.e. pointed by
- HEAD in a repository that is not bare) will be refused by default.
- Similarly, "git push $there :$killed" to delete the branch $killed
- in a remote repository $there, when $killed branch is the current
- branch pointed at by its HEAD, will be refused by default.
- Setting the configuration variables receive.denyCurrentBranch and
- receive.denyDeleteCurrent to 'ignore' in the receiving repository
- can be used to override these safety features. Versions of git
- since 1.6.2 have issued a loud warning when you tried to do these
- operations without setting the configuration, so repositories of
- people who still need to be able to perform such a push should
- already have been future proofed.
- Please refer to:
- http://git.or.cz/gitwiki/GitFaq#non-bare
- http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
- for more details on the reason why this change is needed and the
- transition process that already took place so far.
- * "git send-email" will not make deep threads by default when sending a
- patch series with more than two messages. All messages will be sent
- as a reply to the first message, i.e. cover letter. Git 1.6.6 (this
- release) will issue a warning about the upcoming default change, when
- it uses the traditional "deep threading" behaviour as the built-in
- default. To squelch the warning but still use the "deep threading"
- behaviour, give --chain-reply-to option or set sendemail.chainreplyto
- to true.
- It has been possible to configure send-email to send "shallow thread"
- by setting sendemail.chainreplyto configuration variable to false.
- The only thing 1.7.0 release will do is to change the default when
- you haven't configured that variable.
- * "git status" will not be "git commit --dry-run". This change does not
- affect you if you run the command without pathspec.
- Nobody sane found the current behaviour of "git status Makefile" useful
- nor meaningful, and it confused users. "git commit --dry-run" has been
- provided as a way to get the current behaviour of this command since
- 1.6.5.
- * "git diff" traditionally treated various "ignore whitespace" options
- only as a way to filter the patch output. "git diff --exit-code -b"
- exited with non-zero status even if all changes were about changing the
- ammount of whitespace and nothing else. and "git diff -b" showed the
- "diff --git" header line for such a change without patch text.
- In 1.7.0, the "ignore whitespaces" will affect the semantics of the
- diff operation itself. A change that does not affect anything but
- whitespaces will be reported with zero exit status when run with
- --exit-code, and there will not be "diff --git" header for such a
- change.
- Updates since v1.6.5
- --------------------
- (subsystems)
- * various gitk updates including use of themed widgets under Tk 8.5,
- Japanese translation, a fix to a bug when running "gui blame" from
- a subdirectory, etc.
- * various git-gui updates including new translations, wm states fixes,
- Tk bug workaround after quitting, improved heuristics to trigger gc,
- etc.
- * various git-svn updates.
- * "git fetch" over http learned a new mode that is different from the
- traditional "dumb commit walker".
- (portability)
- * imap-send can be built on mingw port.
- (performance)
- * "git diff -B" has smaller memory footprint.
- (usability, bells and whistles)
- * The object replace mechanism can be bypassed with --no-replace-objects
- global option given to the "git" program.
- * In configuration files, a few variables that name paths can begin with ~/
- and ~username/ and they are expanded as expected.
- * "git subcmd -h" now shows short usage help for many more subcommands.
- * "git bisect reset" can reset to an arbitrary commit.
- * "git checkout frotz" when there is no local branch "frotz" but there
- is only one remote tracking branch "frotz" is taken as a request to
- start the named branch at the corresponding remote tracking branch.
- * "git commit -c/-C/--amend" can be told with a new "--reset-author" option
- to ignore authorship information in the commit it is taking the message
- from.
- * "git describe" can be told to add "-dirty" suffix with "--dirty" option.
- * "git diff" learned --submodule option to show a list of one-line logs
- instead of differences between the commit object names.
- * "git diff" learned to honor diff.color.func configuration to paint
- function name hint printed on the hunk header "@@ -j,k +l,m @@" line
- in the specified color.
- * "git fetch" learned --all and --multiple options, to run fetch from
- many repositories, and --prune option to remove remote tracking
- branches that went stale. These make "git remote update" and "git
- remote prune" less necessary (there is no plan to remove "remote
- update" nor "remote prune", though).
- * "git fsck" by default checks the packfiles (i.e. "--full" is the
- default); you can turn it off with "git fsck --no-full".
- * "git grep" can use -F (fixed strings) and -i (ignore case) together.
- * import-tars contributed fast-import frontend learned more types of
- compressed tarballs.
- * "git instaweb" knows how to talk with mod_cgid to apache2.
- * "git log --decorate" shows the location of HEAD as well.
- * "git log" and "git rev-list" learned to take revs and pathspecs from
- the standard input with the new "--stdin" option.
- * "--pretty=format" option to "log" family of commands learned:
- . to wrap text with the "%w()" specifier.
- . to show reflog information with "%g[sdD]" specifier.
- * "git notes" command to annotate existing commits.
- * "git merge" (and "git pull") learned --ff-only option to make it fail
- if the merge does not result in a fast-forward.
- * "git mergetool" learned to use p4merge.
- * "git rebase -i" learned "reword" that acts like "edit" but immediately
- starts an editor to tweak the log message without returning control to
- the shell, which is done by "edit" to give an opportunity to tweak the
- contents.
- * "git send-email" can be told with "--envelope-sender=auto" to use the
- same address as "From:" address as the envelope sender address.
- * "git send-email" will issue a warning when it defaults to the
- --chain-reply-to behaviour without being told by the user and
- instructs to prepare for the change of the default in 1.7.0 release.
- * In "git submodule add <repository> <path>", <path> is now optional and
- inferred from <repository> the same way "git clone <repository>" does.
- * "git svn" learned to read SVN 1.5+ and SVK merge tickets.
- * "git svn" learned to recreate empty directories tracked only by SVN.
- * "gitweb" can optionally render its "blame" output incrementally (this
- requires JavaScript on the client side).
- * Author names shown in gitweb output are links to search commits by the
- author.
- Fixes since v1.6.5
- ------------------
- All of the fixes in v1.6.5.X maintenance series are included in this
- release, unless otherwise noted.
- Git v1.6.5.8 Release Notes
- ==========================
- Fixes since v1.6.5.7
- --------------------
- * "git count-objects" did not handle packfiles that are bigger than 4G on
- platforms with 32-bit off_t.
- * "git rebase -i" did not abort cleanly if it failed to launch the editor.
- * "git blame" did not work well when commit lacked the author name.
- * "git fast-import" choked when handling a tag that points at an object
- that is not a commit.
- * "git reset --hard" did not work correctly when GIT_WORK_TREE environment
- variable is used to point at the root of the true work tree.
- * "git grep" fed a buffer that is not NUL-terminated to underlying
- regexec().
- * "git checkout -m other" while on a branch that does not have any commit
- segfaulted, instead of failing.
- * "git branch -a other" should have diagnosed the command as an error.
- Other minor documentation updates are also included.
- Git v1.6.5.7 Release Notes
- ==========================
- Fixes since v1.6.5.6
- --------------------
- * If a user specifies a color for a <slot> (i.e. a class of things to show
- in a particular color) that is known only by newer versions of git
- (e.g. "color.diff.func" was recently added for upcoming 1.6.6 release),
- an older version of git should just ignore them. Instead we diagnosed
- it as an error.
- * With help.autocorrect set to non-zero value, the logic to guess typoes
- in the subcommand name misfired and ran a random nonsense command.
- * If a command is run with an absolute path as a pathspec inside a bare
- repository, e.g. "rev-list HEAD -- /home", the code tried to run
- strlen() on NULL, which is the result of get_git_work_tree(), and
- segfaulted.
- Git v1.6.5.6 Release Notes
- ==========================
- Fixes since v1.6.5.5
- --------------------
- * "git add -p" had a regression since v1.6.5.3 that broke deletion of
- non-empty files.
- * "git archive -o o.zip -- Makefile" produced an archive in o.zip
- but in POSIX tar format.
- * Error message given to "git pull --rebase" when the user didn't give
- enough clue as to what branch to integrate with still talked about
- "merging with" the branch.
- * Error messages given by "git merge" when the merge resulted in a
- fast-forward still were in plumbing lingo, even though in v1.6.5
- we reworded messages in other cases.
- * The post-upload-hook run by upload-pack in response to "git fetch" has
- been removed, due to security concerns (the hook first appeared in
- 1.6.5).
- Git v1.6.5.5 Release Notes
- ==========================
- Fixes since v1.6.5.4
- --------------------
- * Manual pages can be formatted with older xmlto again.
- * GREP_OPTIONS exported from user's environment could have broken
- our scripted commands.
- * In configuration files, a few variables that name paths can begin with
- ~/ and ~username/ and they are expanded as expected. This is not a
- bugfix but 1.6.6 will have this and without backporting users cannot
- easily use the same ~/.gitconfig across versions.
- * "git diff -B -M" did the same computation to hash lines of contents
- twice, and held onto memory after it has used the data in it
- unnecessarily before it freed.
- * "git diff -B" and "git diff --dirstat" was not counting newly added
- contents correctly.
- * "git format-patch revisions... -- path" issued an incorrect error
- message that suggested to use "--" on the command line when path
- does not exist in the current work tree (it is a separate matter if
- it makes sense to limit format-patch with pathspecs like that
- without using the --full-diff option).
- * "git grep -F -i StRiNg" did not work as expected.
- * Enumeration of available merge strategies iterated over the list of
- commands in a wrong way, sometimes producing an incorrect result.
- * "git shortlog" did not honor the "encoding" header embedded in the
- commit object like "git log" did.
- * Reading progress messages that come from the remote side while running
- "git pull" is given precedence over reading the actual pack data to
- prevent garbled progress message on the user's terminal.
- * "git rebase" got confused when the log message began with certain
- strings that looked like Subject:, Date: or From: header.
- * "git reset" accidentally run in .git/ directory checked out the
- work tree contents in there.
- Other minor documentation updates are included.
- Git v1.6.5.4 Release Notes
- ==========================
- Fixes since v1.6.5.3
- --------------------
- * "git help" (without argument) used to check if you are in a directory
- under git control. There was no breakage in behaviour per-se, but this
- was unnecessary.
- * "git prune-packed" gave progress output even when its standard error is
- not connected to a terminal; this caused cron jobs that run it to
- produce crufts.
- * "git pack-objects --all-progress" is an option to ask progress output
- from write-object phase _if_ progress output were to be produced, and
- shouldn't have forced the progress output.
- * "git apply -p<n> --directory=<elsewhere>" did not work well for a
- non-default value of n.
- * "git merge foo HEAD" was misparsed as an old-style invocation of the
- command and produced a confusing error message. As it does not specify
- any other branch to merge, it shouldn't be mistaken as such. We will
- remove the old style "git merge <message> HEAD <commit>..." syntax in
- future versions, but not in this release,
- * "git merge -m <message> <branch>..." added the standard merge message
- on its own after user-supplied message, which should have overrided the
- standard one.
- Other minor documentation updates are included.
- Git v1.6.5.3 Release Notes
- ==========================
- Fixes since v1.6.5.2
- --------------------
- * info/grafts file didn't ignore trailing CR at the end of lines.
- * Packages generated on newer FC were unreadable by older versions of
- RPM as the new default is to use stronger hash.
- * output from "git blame" was unreadable when the file ended in an
- incomplete line.
- * "git add -i/-p" didn't handle deletion of empty files correctly.
- * "git clone" takes up to two parameters, but did not complain when
- given more arguments than necessary and silently ignored them.
- * "git cvsimport" did not read files given as command line arguments
- correctly when it is run from a subdirectory.
- * "git diff --color-words -U0" didn't work correctly.
- * The handling of blank lines at the end of file by "git diff/apply
- --whitespace" was inconsistent with the other kinds of errors.
- They are now colored, warned against, and fixed the same way as others.
- * There was no way to allow blank lines at the end of file without
- allowing extra blanks at the end of lines. You can use blank-at-eof
- and blank-at-eol whitespace error class to specify them separately.
- The old trailing-space error class is now a short-hand to set both.
- * "-p" option to "git format-patch" was supposed to suppress diffstat
- generation, but it was broken since 1.6.1.
- * "git imap-send" did not compile cleanly with newer OpenSSL.
- * "git help -a" outside of a git repository was broken.
- * "git ls-files -i" was supposed to be inverse of "git ls-files" without -i
- with respect to exclude patterns, but it was broken since 1.6.5.2.
- * "git ls-remote" outside of a git repository over http was broken.
- * "git rebase -i" gave bogus error message when the command word was
- misspelled.
- * "git receive-pack" that is run in response to "git push" did not run
- garbage collection nor update-server-info, but in larger hosting sites,
- these almost always need to be run. To help site administrators, the
- command now runs "gc --auto" and "u-s-i" by setting receive.autogc
- and receive.updateserverinfo configuration variables, respectively.
- * Release notes spelled the package name with incorrect capitalization.
- * "gitweb" did not escape non-ascii characters correctly in the URL.
- * "gitweb" showed "patch" link even for merge commits.
- * "gitweb" showed incorrect links for blob line numbers in pathinfo mode.
- Other minor documentation updates are included.
- GIT v1.6.5.2 Release Notes
- ==========================
- Fixes since v1.6.5.1
- --------------------
- * Installation of templates triggered a bug in busybox when using tar
- implementation from it.
- * "git add -i" incorrectly ignored paths that are already in the index
- if they matched .gitignore patterns.
- * "git describe --always" should have produced some output even there
- were no tags in the repository, but it didn't.
- * "git ls-files" when showing tracked files incorrectly paid attention
- to the exclude patterns.
- Other minor documentation updates are included.
- GIT v1.6.5.1 Release Notes
- ==========================
- Fixes since v1.6.5
- ------------------
- * An corrupt pack could make codepath to read objects into an
- infinite loop.
- * Download throughput display was always shown in KiB/s but on fast links
- it is more appropriate to show it in MiB/s.
- * "git grep -f filename" used uninitialized variable and segfaulted.
- * "git clone -b branch" gave a wrong commit object name to post-checkout
- hook.
- * "git pull" over http did not work on msys.
- Other minor documentation updates are included.
- GIT v1.6.5 Release Notes
- ========================
- In git 1.7.0, which was planned to be the release after 1.6.5, "git
- push" into a branch that is currently checked out will be refused by
- default.
- You can choose what should happen upon such a push by setting the
- configuration variable receive.denyCurrentBranch in the receiving
- repository.
- Also, "git push $there :$killed" to delete the branch $killed in a remote
- repository $there, when $killed branch is the current branch pointed at by
- its HEAD, will be refused by default.
- You can choose what should happen upon such a push by setting the
- configuration variable receive.denyDeleteCurrent in the receiving
- repository.
- To ease the transition plan, the receiving repository of such a
- push running this release will issue a big warning when the
- configuration variable is missing. Please refer to:
- http://git.or.cz/gitwiki/GitFaq#non-bare
- http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
- for more details on the reason why this change is needed and the
- transition plan.
- Updates since v1.6.4
- --------------------
- (subsystems)
- * various updates to gitk, git-svn and gitweb.
- (portability)
- * more improvements on mingw port.
- * mingw will also give FRSX as the default value for the LESS
- environment variable when the user does not have one.
- * initial support to compile git on Windows with MSVC.
- (performance)
- * On major platforms, the system can be compiled to use with Linus's
- block-sha1 implementation of the SHA-1 hash algorithm, which
- outperforms the default fallback implementation we borrowed from
- Mozilla.
- * Unnecessary inefficiency in deepening of a shallow repository has
- been removed.
- * "git clone" does not grab objects that it does not need (i.e.
- referenced only from refs outside refs/heads and refs/tags
- hierarchy) anymore.
- * The "git" main binary used to link with libcurl, which then dragged
- in a large number of external libraries. When using basic plumbing
- commands in scripts, this unnecessarily slowed things down. We now
- implement http/https/ftp transfer as a separate executable as we
- used to.
- * "git clone" run locally hardlinks or copies the files in .git/ to
- newly created repository. It used to give new mtime to copied files,
- but this delayed garbage collection to trigger unnecessarily in the
- cloned repository. We now preserve mtime for these files to avoid
- this issue.
- (usability, bells and whistles)
- * Human writable date format to various options, e.g. --since=yesterday,
- master@{2000.09.17}, are taught to infer some omitted input properly.
- * A few programs gave verbose "advice" messages to help uninitiated
- people when issuing error messages. An infrastructure to allow
- users to squelch them has been introduced, and a few such messages
- can be silenced now.
- * refs/replace/ hierarchy is designed to be usable as a replacement
- of the "grafts" mechanism, with the added advantage that it can be
- transferred across repositories.
- * "git am" learned to optionally ignore whitespace differences.
- * "git am" handles input e-mail files that has CRLF line endings sensibly.
- * "git am" learned "--scissors" option to allow you to discard early part
- of an incoming e-mail.
- * "git archive -o output.zip" works without being told what format to
- use with an explicit "--format=zip".option.
- * "git checkout", "git reset" and "git stash" learned to pick and
- choose to use selected changes you made, similar to "git add -p".
- * "git clone" learned a "-b" option to pick a HEAD to check out
- different from the remote's default branch.
- * "git clone" learned --recursive option.
- * "git clone" from a local repository on a different filesystem used to
- copy individual object files without preserving the old timestamp, giving
- them extra lifetime in the new repository until they gc'ed.
- * "git commit --dry-run $args" is a new recommended way to ask "what would
- happen if I try to commit with these arguments."
- * "git commit --dry-run" and "git status" shows conflicted paths in a
- separate section to make them easier to spot during a merge.
- * "git cvsimport" now supports password-protected pserver access even
- when the password is not taken from ~/.cvspass file.
- * "git fast-export" learned --no-data option that can be useful when
- reordering commits and trees without touching the contents of
- blobs.
- * "git fast-import" has a pair of new front-end in contrib/ area.
- * "git init" learned to mkdir/chdir into a directory when given an
- extra argument (i.e. "git init this").
- * "git instaweb" optionally can use mongoose as the web server.
- * "git log --decorate" can optionally be told with --decorate=full to
- give the reference name in full.
- * "git merge" issued an unnecessarily scary message when it detected
- that the merge may have to touch the path that the user has local
- uncommitted changes to. The message has been reworded to make it
- clear that the command aborted, without doing any harm.
- * "git push" can be told to be --quiet.
- * "git push" pays attention to url.$base.pushInsteadOf and uses a URL
- that is derived from the URL used for fetching.
- * informational output from "git reset" that lists the locally modified
- paths is made consistent with that of "git checkout $another_branch".
- * "git submodule" learned to give submodule name to scripts run with
- "foreach" subcommand.
- * various subcommands to "git submodule" learned --recursive option.
- * "git submodule summary" learned --files option to compare the work
- tree vs the commit bound at submodule path, instead of comparing
- the index.
- * "git upload-pack", which is the server side support for "git clone" and
- "git fetch", can call a new post-upload-pack hook for statistics purposes.
- (developers)
- * With GIT_TEST_OPTS="--root=/p/a/t/h", tests can be run outside the
- source directory; using tmpfs may give faster turnaround.
- * With NO_PERL_MAKEMAKER set, DESTDIR= is now honoured, so you can
- build for one location, and install into another location to tar it
- up.
- Fixes since v1.6.4
- ------------------
- All of the fixes in v1.6.4.X maintenance series are included in this
- release, unless otherwise noted.
- GIT v1.6.4.4 Release Notes
- ==========================
- Fixes since v1.6.4.4
- --------------------
- * The workaround for Github server that sometimes gave 500 (Internal server
- error) response to HEAD requests in 1.6.4.3 introduced a regression that
- caused re-fetching projects over http to segfault in certain cases due
- to uninitialized pointer being freed.
- * "git pull" on an unborn branch used to consider anything in the work
- tree and the index discardable.
- * "git diff -b/w" did not work well on the incomplete line at the end of
- the file, due to an incorrect hashing of lines in the low-level xdiff
- routines.
- * "git checkout-index --prefix=$somewhere" used to work when $somewhere is
- a symbolic link to a directory elsewhere, but v1.6.4.2 broke it.
- * "git unpack-objects --strict", invoked when receive.fsckobjects
- configuration is set in the receiving repository of "git push", did not
- properly check the objects, especially the submodule links, it received.
- Other minor documentation updates are included.
- GIT v1.6.4.3 Release Notes
- ==========================
- Fixes since v1.6.4.2
- --------------------
- * "git clone" from an empty repository gave unnecessary error message,
- even though it did everything else correctly.
- * "git cvsserver" invoked git commands via "git-foo" style, which has long
- been deprecated.
- * "git fetch" and "git clone" had an extra sanity check to verify the
- presense of the corresponding *.pack file before downloading *.idx
- file by issuing a HEAD request. Github server however sometimes
- gave 500 (Internal server error) response to HEAD even if a GET
- request for *.pack file to the same URL would have succeeded, and broke
- clone over HTTP from some of their repositories. As a workaround, this
- verification has been removed (as it is not absolutely necessary).
- * "git grep" did not like relative pathname to refer outside the current
- directory when run from a subdirectory.
- * an error message from "git push" was formatted in a very ugly way.
- * "git svn" did not quote the subversion user name correctly when
- running its author-prog helper program.
- Other minor documentation updates are included.
- GIT v1.6.4.2 Release Notes
- ==========================
- Fixes since v1.6.4.1
- --------------------
- * --date=relative output between 1 and 5 years ago rounded the number of
- years when saying X years Y months ago, instead of rounding it down.
- * "git add -p" did not handle changes in executable bits correctly
- (a regression around 1.6.3).
- * "git apply" did not honor GNU diff's convention to mark the creation/deletion
- event with UNIX epoch timestamp on missing side.
- * "git checkout" incorrectly removed files in a directory pointed by a
- symbolic link during a branch switch that replaces a directory with
- a symbolic link.
- * "git clean -d -f" happily descended into a subdirectory that is managed by a
- separate git repository. It now requires two -f options for safety.
- * "git fetch/push" over http transports had two rather grave bugs.
- * "git format-patch --cover-letter" did not prepare the cover letter file
- for use with non-ASCII strings when there are the series contributors with
- non-ASCII names.
- * "git pull origin branch" and "git fetch origin && git merge origin/branch"
- left different merge messages in the resulting commit.
- Other minor documentation updates are included.
- GIT v1.6.4.1 Release Notes
- ==========================
- Fixes since v1.6.4
- ------------------
- * An unquoted value in the configuration file, when it contains more than
- one whitespaces in a row, got them replaced with a single space.
- * "git am" used to accept a single piece of e-mail per file (not a mbox)
- as its input, but multiple input format support in v1.6.4 broke it.
- Apparently many people have been depending on this feature.
- * The short help text for "git filter-branch" command was a single long
- line, wrapped by terminals, and was hard to read.
- * The "recursive" strategy of "git merge" segfaulted when a merge has
- more than one merge-bases, and merging of these merge-bases involves
- a rename/rename or a rename/add conflict.
- * "git pull --rebase" did not use the right fork point when the
- repository has already fetched from the upstream that rewinds the
- branch it is based on in an earlier fetch.
- * Explain the concept of fast-forward more fully in "git push"
- documentation, and hint to refer to it from an error message when the
- command refuses an update to protect the user.
- * The default value for pack.deltacachesize, used by "git repack", is now
- 256M, instead of unbounded. Otherwise a repack of a moderately sized
- repository would needlessly eat into swap.
- * Document how "git repack" (hence "git gc") interacts with a repository
- that borrows its objects from other repositories (e.g. ones created by
- "git clone -s").
- * "git show" on an annotated tag lacked a delimiting blank line between
- the tag itself and the contents of the object it tags.
- * "git verify-pack -v" erroneously reported number of objects with too
- deep delta depths as "chain length 0" objects.
- * Long names of authors and committers outside US-ASCII were sometimes
- incorrectly shown in "gitweb".
- Other minor documentation updates are included.
- GIT v1.6.4 Release Notes
- ========================
- With the next major release, "git push" into a branch that is
- currently checked out will be refused by default. You can choose
- what should happen upon such a push by setting the configuration
- variable receive.denyCurrentBranch in the receiving repository.
- To ease the transition plan, the receiving repository of such a
- push running this release will issue a big warning when the
- configuration variable is missing. Please refer to:
- http://git.or.cz/gitwiki/GitFaq#non-bare
- http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
- for more details on the reason why this change is needed and the
- transition plan.
- For a similar reason, "git push $there :$killed" to delete the branch
- $killed in a remote repository $there, if $killed branch is the current
- branch pointed at by its HEAD, gets a large warning. You can choose what
- should happen upon such a push by setting the configuration variable
- receive.denyDeleteCurrent in the receiving repository.
- Updates since v1.6.3
- --------------------
- (subsystems)
- * gitweb Perl style clean-up.
- * git-svn updates, including a new --authors-prog option to map author
- names by invoking an external program, 'git svn reset' to unwind
- 'git svn fetch', support for more than one branches, documenting
- of the useful --minimize-url feature, new "git svn gc" command, etc.
- (portability)
- * We feed iconv with "UTF-8" instead of "utf8"; the former is
- understood more widely. Similarly updated test scripts to use
- encoding names more widely understood (e.g. use "ISO8859-1" instead
- of "ISO-8859-1").
- * Various portability fixes/workarounds for different vintages of
- SunOS, IRIX, and Windows.
- * Git-over-ssh transport on Windows supports PuTTY plink and TortoisePlink.
- (performance)
- * Many repeated use of lstat() are optimized out in "checkout" codepath.
- * git-status (and underlying git-diff-index --cached) are optimized
- to take advantage of cache-tree information in the index.
- (usability, bells and whistles)
- * "git add --edit" lets users edit the whole patch text to fine-tune what
- is added to the index.
- * "git am" accepts StGIT series file as its input.
- * "git bisect skip" skips to a more randomly chosen place in the hope
- to avoid testing a commit that is too close to a commit that is
- already known to be untestable.
- * "git cvsexportcommit" learned -k option to stop CVS keywords expansion
- * "git fast-export" learned to handle history simplification more
- gracefully.
- * "git fast-export" learned an option --tag-of-filtered-object to handle
- dangling tags resulting from history simplification more usefully.
- * "git grep" learned -p option to show the location of the match using the
- same context hunk marker "git diff" uses.
- * https transport can optionally be told that the used client
- certificate is password protected, in which case it asks the
- password only once.
- * "git imap-send" is IPv6 aware.
- * "git log --graph" draws graphs more compactly by using horizontal lines
- when able.
- * "git log --decorate" shows shorter refnames by stripping well-known
- refs/* prefix.
- * "git push $name" honors remote.$name.pushurl if present before
- using remote.$name.url. In other words, the URL used for fetching
- and pushing can be different.
- * "git send-email" understands quoted aliases in .mailrc files (might
- have to be backported to 1.6.3.X).
- * "git send-email" can fetch the sender address from the configuration
- variable "sendmail.from" (and "sendmail.<identity>.from").
- * "git show-branch" can color its output.
- * "add" and "update" subcommands to "git submodule" learned --reference
- option to use local clone with references.
- * "git submodule update" learned --rebase option to update checked
- out submodules by rebasing the local changes.
- * "gitweb" can optionally use gravatar to adorn author/committer names.
- (developers)
- * A major part of the "git bisect" wrapper has moved to C.
- * Formatting with the new version of AsciiDoc 8.4.1 is now supported.
- Fixes since v1.6.3
- ------------------
- All of the fixes in v1.6.3.X maintenance series are included in this
- release, unless otherwise noted.
- Here are fixes that this release has, but have not been backported to
- v1.6.3.X series.
- * "git diff-tree -r -t" used to omit new or removed directories from
- the output. df533f3 (diff-tree -r -t: include added/removed
- directories in the output, 2009-06-13) may need to be cherry-picked
- to backport this fix.
- * The way Git.pm sets up a Repository object was not friendly to callers
- that chdir around. It now internally records the repository location
- as an absolute path when autodetected.
- * Removing a section with "git config --remove-section", when its
- section header has a variable definition on the same line, lost
- that variable definition.
- * "git rebase -p --onto" used to always leave side branches of a merge
- intact, even when both branches are subject to rewriting.
- * "git repack" used to faithfully follow grafts and considered true
- parents recorded in the commit object unreachable from the commit.
- After such a repacking, you cannot remove grafts without corrupting
- the repository.
- * "git send-email" did not detect erroneous loops in alias expansion.
- GIT v1.6.3.4 Release Notes
- ==========================
- Fixes since v1.6.3.3
- --------------------
- * "git add --no-ignore-errors" did not override configured
- add.ignore-errors configuration.
- * "git apply --whitespace=fix" did not fix trailing whitespace on an
- incomplete line.
- * "git branch" opened too many commit objects unnecessarily.
- * "git checkout -f $commit" with a path that is a file (or a symlink) in
- the work tree to a commit that has a directory at the path issued an
- unnecessary error message.
- * "git diff -c/--cc" was very inefficient in coalescing the removed lines
- shared between parents.
- * "git diff -c/--cc" showed removed lines at the beginning of a file
- incorrectly.
- * "git remote show nickname" did not honor configured
- remote.nickname.uploadpack when inspecting the branches at the remote.
- * "git request-pull" when talking to the terminal for a preview
- showed some of the output in the pager.
- * "git request-pull start nickname [end]" did not honor configured
- remote.nickname.uploadpack when it ran git-ls-remote against the remote
- repository to learn the current tip of branches.
- Includes other documentation updates and minor fixes.
- GIT v1.6.3.3 Release Notes
- ==========================
- Fixes since v1.6.3.2
- --------------------
- * "git archive" running on Cygwin can get stuck in an infinite loop.
- * "git daemon" did not correctly parse the initial line that carries
- virtual host request information.
- * "git diff --textconv" leaked memory badly when the textconv filter
- errored out.
- * The built-in regular expressions to pick function names to put on
- hunk header lines for java and objc were very inefficiently written.
- * in certain error situations git-fetch (and git-clone) on Windows didn't
- detect connection abort and ended up waiting indefinitely.
- * import-tars script (in contrib) did not import symbolic links correctly.
- * http.c used CURLOPT_SSLKEY even on libcURL version 7.9.2, even though
- it was only available starting 7.9.3.
- * low-level filelevel merge driver used return value from strdup()
- without checking if we ran out of memory.
- * "git rebase -i" left stray closing parenthesis in its reflog message.
- * "git remote show" did not show all the URLs associated with the named
- remote, even though "git remote -v" did. Made them consistent by
- making the former show all URLs.
- * "whitespace" attribute that is set was meant to detect all errors known
- to git, but it told git to ignore trailing carriage-returns.
- Includes other documentation fixes.
- GIT v1.6.3.2 Release Notes
- ==========================
- Fixes since v1.6.3.1
- --------------------
- * A few codepaths picked up the first few bytes from an sha1[] by
- casting the (char *) pointer to (int *); GCC 4.4 did not like this,
- and aborted compilation.
- * Some unlink(2) failures went undiagnosed.
- * The "recursive" merge strategy misbehaved when faced rename/delete
- conflicts while coming up with an intermediate merge base.
- * The low-level merge algorithm did not handle a degenerate case of
- merging a file with itself using itself as the common ancestor
- gracefully. It should produce the file itself, but instead
- produced an empty result.
- * GIT_TRACE mechanism segfaulted when tracing a shell-quoted aliases.
- * OpenBSD also uses st_ctimspec in "struct stat", instead of "st_ctim".
- * With NO_CROSS_DIRECTORY_HARDLINKS, "make install" can be told not to
- create hardlinks between $(gitexecdir)/git-$builtin_commands and
- $(bindir)/git.
- * command completion code in bash did not reliably detect that we are
- in a bare repository.
- * "git add ." in an empty directory complained that pathspec "." did not
- match anything, which may be technically correct, but not useful. We
- silently make it a no-op now.
- * "git add -p" (and "patch" action in "git add -i") was broken when
- the first hunk that adds a line at the top was split into two and
- both halves are marked to be used.
- * "git blame path" misbehaved at the commit where path became file
- from a directory with some files in it.
- * "git for-each-ref" had a segfaulting bug when dealing with a tag object
- created by an ancient git.
- * "git format-patch -k" still added patch numbers if format.numbered
- configuration was set.
- * "git grep --color ''" did not terminate. The command also had
- subtle bugs with its -w option.
- * http-push had a small use-after-free bug.
- * "git push" was converting OFS_DELTA pack representation into less
- efficient REF_DELTA representation unconditionally upon transfer,
- making the transferred data unnecessarily larger.
- * "git remote show origin" segfaulted when origin was still empty.
- Many other general usability updates around help text, diagnostic messages
- and documentation are included as well.
- GIT v1.6.3.1 Release Notes
- ==========================
- Fixes since v1.6.3
- ------------------
- * "git checkout -b new-branch" with a staged change in the index
- incorrectly primed the in-index cache-tree, resulting a wrong tree
- object to be written out of the index. This is a grave regression
- since the last 1.6.2.X maintenance release.
- GIT v1.6.3 Release Notes
- ========================
- With the next major release, "git push" into a branch that is
- currently checked out will be refused by default. You can choose
- what should happen upon such a push by setting the configuration
- variable receive.denyCurrentBranch in the receiving repository.
- To ease the transition plan, the receiving repository of such a
- push running this release will issue a big warning when the
- configuration variable is missing. Please refer to:
- http://git.or.cz/gitwiki/GitFaq#non-bare
- http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
- for more details on the reason why this change is needed and the
- transition plan.
- For a similar reason, "git push $there :$killed" to delete the branch
- $killed in a remote repository $there, if $killed branch is the current
- branch pointed at by its HEAD, gets a large warning. You can choose what
- should happen upon such a push by setting the configuration variable
- receive.denyDeleteCurrent in the receiving repository.
- When the user does not tell "git push" what to push, it has always
- pushed matching refs. For some people it is unexpected, and a new
- configuration variable push.default has been introduced to allow
- changing a different default behaviour. To advertise the new feature,
- a big warning is issued if this is not configured and a git push without
- arguments is attempted.
- Updates since v1.6.2
- --------------------
- (subsystems)
- * various git-svn updates.
- * git-gui updates, including an update to Russian translation, and a
- fix to an infinite loop when showing an empty diff.
- * gitk updates, including an update to Russian translation and improved Windows
- support.
- (performance)
- * many uses of lstat(2) in the codepath for "git checkout" have been
- optimized out.
- (usability, bells and whistles)
- * Boolean configuration variable yes/no can be written as on/off.
- * rsync:/path/to/repo can be used to run git over rsync for local
- repositories. It may not be useful in practice; meant primarily for
- testing.
- * http transport learned to prompt and use password when fetching from or
- pushing to http://user@host.xz/ URL.
- * (msysgit) progress output that is sent over the sideband protocol can
- be handled appropriately in Windows console.
- * "--pretty=<style>" option to the log family of commands can now be
- spelled as "--format=<style>". In addition, --format=%formatstring
- is a short-hand for --pretty=tformat:%formatstring.
- * "--oneline" is a synonym for "--pretty=oneline --abbrev-commit".
- * "--graph" to the "git log" family can draw the commit ancestry graph
- in colors.
- * If you realize that you botched the patch when you are editing hunks
- with the 'edit' action in git-add -i/-p, you can abort the editor to
- tell git not to apply it.
- * @{-1} is a new way to refer to the last branch you were on introduced in
- 1.6.2, but the initial implementation did not teach this to a few
- commands. Now the syntax works with "branch -m @{-1} newname".
- * git-archive learned --output=<file> option.
- * git-archive takes attributes from the tree being archived; strictly
- speaking, this is an incompatible behaviour change, but is a good one.
- Use --worktree-attributes option to allow it to read attributes from
- the work tree as before (deprecated git-tar tree command always reads
- attributes from the work tree).
- * git-bisect shows not just the number of remaining commits whose goodness
- is unknown, but also shows the estimated number of remaining rounds.
- * You can give --date=<format> option to git-blame.
- * "git-branch -r" shows HEAD symref that points at a remote branch in
- interest of each tracked remote repository.
- * "git-branch -v -v" is a new way to get list of names for branches and the
- "upstream" branch for them.
- * git-config learned -e option to open an editor to edit the config file
- directly.
- * git-clone runs post-checkout hook when run without --no-checkout.
- * git-difftool is now part of the officially supported command, primarily
- maintained by David Aguilar.
- * git-for-each-ref learned a new "upstream" token.
- * git-format-patch can be told to use attachment with a new configuration,
- format.attach.
- * git-format-patch can be told to produce deep or shallow message threads.
- * git-format-patch can be told to always add sign-off with a configuration
- variable.
- * git-format-patch learned format.headers configuration to add extra
- header fields to the output. This behaviour is similar to the existing
- --add-header=<header> option of the command.
- * git-format-patch gives human readable names to the attached files, when
- told to send patches as attachments.
- * git-grep learned to highlight the found substrings in color.
- * git-imap-send learned to work around Thunderbird's inability to easily
- disable format=flowed with a new configuration, imap.preformattedHTML.
- * git-rebase can be told to rebase the series even if your branch is a
- descendant of the commit you are rebasing onto with --force-rebase
- option.
- * git-rebase can be told to report diffstat with the --stat option.
- * Output from git-remote command has been vastly improved.
- * "git remote update --prune $remote" updates from the named remote and
- then prunes stale tracking branches.
- * git-send-email learned --confirm option to review the Cc: list before
- sending the messages out.
- (developers)
- * Test scripts can be run under valgrind.
- * Test scripts can be run with installed git.
- * Makefile learned 'coverage' option to run the test suites with
- coverage tracking enabled.
- * Building the manpages with docbook-xsl between 1.69.1 and 1.71.1 now
- requires setting DOCBOOK_SUPPRESS_SP to work around a docbook-xsl bug.
- This workaround used to be enabled by default, but causes problems
- with newer versions of docbook-xsl. In addition, there are a few more
- knobs you can tweak to work around issues with various versions of the
- docbook-xsl package. See comments in Documentation/Makefile for details.
- * Support for building and testing a subset of git on a system without a
- working perl has been improved.
- Fixes since v1.6.2
- ------------------
- All of the fixes in v1.6.2.X maintenance series are included in this
- release, unless otherwise noted.
- Here are fixes that this release has, but have not been backported to
- v1.6.2.X series.
- * "git-apply" rejected a patch that swaps two files (i.e. renames A to B
- and B to A at the same time). May need to be backported by cherry
- picking d8c81df and then 7fac0ee).
- * The initial checkout did not read the attributes from the .gitattribute
- file that is being checked out.
- * git-gc spent excessive amount of time to decide if an object appears
- in a locally existing pack (if needed, backport by merging 69e020a).
- GIT v1.6.2.5 Release Notes
- ==========================
- Fixes since v1.6.2.4
- --------------------
- * "git apply" mishandled if you fed a git generated patch that renames
- file A to B and file B to A at the same time.
- * "git diff -c -p" (and "diff --cc") did not expect to see submodule
- differences and instead refused to work.
- * "git grep -e '('" segfaulted, instead of diagnosing a mismatched
- parentheses error.
- * "git fetch" generated packs with offset-delta encoding when both ends of
- the connection are capable of producing one; this cannot be read by
- ancient git and the user should be able to disable this by setting
- repack.usedeltabaseoffset configuration to false.
- GIT v1.6.2.4 Release Notes
- ==========================
- Fixes since v1.6.2.3
- --------------------
- * The configuration parser had a buffer overflow while parsing an overlong
- value.
- * pruning reflog entries that are unreachable from the tip of the ref
- during "git reflog prune" (hence "git gc") was very inefficient.
- * "git-add -p" lacked a way to say "q"uit to refuse staging any hunks for
- the remaining paths. You had to say "d" and then ^C.
- * "git-checkout <tree-ish> <submodule>" did not update the index entry at
- the named path; it now does.
- * "git-fast-export" choked when seeing a tag that does not point at commit.
- * "git init" segfaulted when given an overlong template location via
- the --template= option.
- * "git-ls-tree" and "git-diff-tree" used a pathspec correctly when
- deciding to descend into a subdirectory but they did not match the
- individual paths correctly. This caused pathspecs "abc/d ab" to match
- "abc/0" ("abc/d" made them decide to descend into the directory "abc/",
- and then "ab" incorrectly matched "abc/0" when it shouldn't).
- * "git-merge-recursive" was broken when a submodule entry was involved in
- a criss-cross merge situation.
- Many small documentation updates are included as well.
- ---
- exec >/var/tmp/1
- echo O=$(git describe maint)
- O=v1.6.2.3-38-g318b847
- git shortlog --no-merges $O..maint
- GIT v1.6.2.3 Release Notes
- ==========================
- Fixes since v1.6.2.2
- --------------------
- * Setting an octal mode value to core.sharedrepository configuration to
- restrict access to the repository to group members did not work as
- advertised.
- * A fairly large and trivial memory leak while rev-list shows list of
- reachable objects has been identified and plugged.
- * "git-commit --interactive" did not abort when underlying "git-add -i"
- signaled a failure.
- * git-repack (invoked from git-gc) did not work as nicely as it should in
- a repository that borrows objects from neighbours via alternates
- mechanism especially when some packs are marked with the ".keep" flag
- to prevent them from being repacked.
- Many small documentation updates are included as well.
- GIT v1.6.2.2 Release Notes
- ==========================
- Fixes since v1.6.2.1
- --------------------
- * A longstanding confusing description of what --pickaxe option of
- git-diff does has been clarified in the documentation.
- * "git-blame -S" did not quite work near the commits that were given
- on the command line correctly.
- * "git diff --pickaxe-regexp" did not count overlapping matches
- correctly.
- * "git diff" did not feed files in work-tree representation to external
- diff and textconv.
- * "git-fetch" in a repository that was not cloned from anywhere said
- it cannot find 'origin', which was hard to understand for new people.
- * "git-format-patch --numbered-files --stdout" did not have to die of
- incompatible options; it now simply ignores --numbered-files as no files
- are produced anyway.
- * "git-ls-files --deleted" did not work well with GIT_DIR&GIT_WORK_TREE.
- * "git-read-tree A B C..." without -m option has been broken for a long
- time.
- * git-send-email ignored --in-reply-to when --no-thread was given.
- * 'git-submodule add' did not tolerate extra slashes and ./ in the path it
- accepted from the command line; it now is more lenient.
- * git-svn misbehaved when the project contained a path that began with
- two dashes.
- * import-zips script (in contrib) did not compute the common directory
- prefix correctly.
- * miscompilation of negated enum constants by old gcc (2.9) affected the
- codepaths to spawn subprocesses.
- Many small documentation updates are included as well.
- GIT v1.6.2.1 Release Notes
- ==========================
- Fixes since v1.6.2
- ------------------
- * .gitignore learned to handle backslash as a quoting mechanism for
- comment introduction character "#".
- * timestamp output in --date=relative mode used to display timestamps that
- are long time ago in the default mode; it now uses "N years M months
- ago", and "N years ago".
- * git-add -i/-p now works with non-ASCII pathnames.
- * "git hash-object -w" did not read from the configuration file from the
- correct .git directory.
- * git-send-email learned to correctly handle multiple Cc: addresses.
- GIT v1.6.2 Release Notes
- ========================
- With the next major release, "git push" into a branch that is
- currently checked out will be refused by default. You can choose
- what should happen upon such a push by setting the configuration
- variable receive.denyCurrentBranch in the receiving repository.
- To ease the transition plan, the receiving repository of such a
- push running this release will issue a big warning when the
- configuration variable is missing. Please refer to:
- http://git.or.cz/gitwiki/GitFaq#non-bare
- http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
- for more details on the reason why this change is needed and the
- transition plan.
- For a similar reason, "git push $there :$killed" to delete the branch
- $killed in a remote repository $there, if $killed branch is the current
- branch pointed at by its HEAD, gets a large warning. You can choose what
- should happen upon such a push by setting the configuration variable
- receive.denyDeleteCurrent in the receiving repository.
- Updates since v1.6.1
- --------------------
- (subsystems)
- * git-svn updates.
- * gitweb updates, including a new patch view and RSS/Atom feed
- improvements.
- * (contrib/emacs) git.el now has commands for checking out a branch,
- creating a branch, cherry-picking and reverting commits; vc-git.el
- is not shipped with git anymore (it is part of official Emacs).
- (performance)
- * pack-objects autodetects the number of CPUs available and uses threaded
- version.
- (usability, bells and whistles)
- * automatic typo correction works on aliases as well
- * @{-1} is a way to refer to the last branch you were on. This is
- accepted not only where an object name is expected, but anywhere
- a branch name is expected and acts as if you typed the branch name.
- E.g. "git branch --track mybranch @{-1}", "git merge @{-1}", and
- "git rev-parse --symbolic-full-name @{-1}" would work as expected.
- * When refs/remotes/origin/HEAD points at a remote tracking branch that
- has been pruned away, many git operations issued warning when they
- internally enumerated the refs. We now warn only when you say "origin"
- to refer to that pruned branch.
- * The location of .mailmap file can be configured, and its file format was
- enhanced to allow mapping an incorrect e-mail field as well.
- * "git add -p" learned 'g'oto action to jump directly to a hunk.
- * "git add -p" learned to find a hunk with given text with '/'.
- * "git add -p" optionally can be told to work with just the command letter
- without Enter.
- * when "git am" stops upon a patch that does not apply, it shows the
- title of the offending patch.
- * "git am --directory=<dir>" and "git am --reject" passes these options
- to underlying "git apply".
- * "git am" learned --ignore-date option.
- * "git blame" aligns author names better when they are spelled in
- non US-ASCII encoding.
- * "git clone" now makes its best effort when cloning from an empty
- repository to set up configuration variables to refer to the remote
- repository.
- * "git checkout -" is a shorthand for "git checkout @{-1}".
- * "git cherry" defaults to whatever the current branch is tracking (if
- exists) when the <upstream> argument is not given.
- * "git cvsserver" can be told not to add extra "via git-CVS emulator" to
- the commit log message it serves via gitcvs.commitmsgannotation
- configuration.
- * "git cvsserver" learned to handle 'noop' command some CVS clients seem
- to expect to work.
- * "git diff" learned a new option --inter-hunk-context to coalesce close
- hunks together and show context between them.
- * The definition of what constitutes a word for "git diff --color-words"
- can be customized via gitattributes, command line or a configuration.
- * "git diff" learned --patience to run "patience diff" algorithm.
- * "git filter-branch" learned --prune-empty option that discards commits
- that do not change the contents.
- * "git fsck" now checks loose objects in alternate object stores, instead
- of misreporting them as missing.
- * "git gc --prune" was resurrected to allow "git gc --no-prune" and
- giving non-default expiration period e.g. "git gc --prune=now".
- * "git grep -w" and "git grep" for fixed strings have been optimized.
- * "git mergetool" learned -y(--no-prompt) option to disable prompting.
- * "git rebase -i" can transplant a history down to root to elsewhere
- with --root option.
- * "git reset --merge" is a new mode that works similar to the way
- "git checkout" switches branches, taking the local changes while
- switching to another commit.
- * "git submodule update" learned --no-fetch option.
- * "git tag" learned --contains that works the same way as the same option
- from "git branch".
- Fixes since v1.6.1
- ------------------
- All of the fixes in v1.6.1.X maintenance series are included in this
- release, unless otherwise noted.
- Here are fixes that this release has, but have not been backported to
- v1.6.1.X series.
- * "git-add sub/file" when sub is a submodule incorrectly added the path to
- the superproject.
- * "git bundle" did not exclude annotated tags even when a range given
- from the command line wanted to.
- * "git filter-branch" unnecessarily refused to work when you had
- checked out a different commit from what is recorded in the superproject
- index in a submodule.
- * "git filter-branch" incorrectly tried to update a nonexistent work tree
- at the end when it is run in a bare repository.
- * "git gc" did not work if your repository was created with an ancient git
- and never had any pack files in it before.
- * "git mergetool" used to ignore autocrlf and other attributes
- based content rewriting.
- * branch switching and merges had a silly bug that did not validate
- the correct directory when making sure an existing subdirectory is
- clean.
- * "git -p cmd" when cmd is not a built-in one left the display in funny state
- when killed in the middle.
- GIT v1.6.1.3 Release Notes
- ==========================
- Fixes since v1.6.1.2
- --------------------
- * "git diff --binary | git apply" pipeline did not work well when
- a binary blob is changed to a symbolic link.
- * Some combinations of -b/-w/--ignore-space-at-eol to "git diff" did
- not work as expected.
- * "git grep" did not pass the -I (ignore binary) option when
- calling out an external grep program.
- * "git log" and friends include HEAD to the set of starting points
- when --all is given. This makes a difference when you are not
- on any branch.
- * "git mv" to move an untracked file to overwrite a tracked
- contents misbehaved.
- * "git merge -s octopus" with many potential merge bases did not
- work correctly.
- * RPM binary package installed the html manpages in a wrong place.
- Also includes minor documentation fixes and updates.
- --
- git shortlog --no-merges v1.6.1.2-33-gc789350..
- GIT v1.6.1.2 Release Notes
- ==========================
- Fixes since v1.6.1.1
- --------------------
- * The logic for rename detection in internal diff used by commands like
- "git diff" and "git blame" has been optimized to avoid loading the same
- blob repeatedly.
- * We did not allow writing out a blob that is larger than 2GB for no good
- reason.
- * "git format-patch -o $dir", when $dir is a relative directory, used it
- as relative to the root of the work tree, not relative to the current
- directory.
- * v1.6.1 introduced an optimization for "git push" into a repository (A)
- that borrows its objects from another repository (B) to avoid sending
- objects that are available in repository B, when they are not yet used
- by repository A. However the code on the "git push" sender side was
- buggy and did not work when repository B had new objects that are not
- known by the sender. This caused pushing into a "forked" repository
- served by v1.6.1 software using "git push" from v1.6.1 sometimes did not
- work. The bug was purely on the "git push" sender side, and has been
- corrected.
- * "git status -v" did not paint its diff output in colour even when
- color.ui configuration was set.
- * "git ls-tree" learned --full-tree option to help Porcelain scripts that
- want to always see the full path regardless of the current working
- directory.
- * "git grep" incorrectly searched in work tree paths even when they are
- marked as assume-unchanged. It now searches in the index entries.
- * "git gc" with no grace period needlessly ejected packed but unreachable
- objects in their loose form, only to delete them right away.
- GIT v1.6.1.1 Release Notes
- ==========================
- Fixes since v1.6.1
- ------------------
- * "git add frotz/nitfol" when "frotz" is a submodule should have errored
- out, but it didn't.
- * "git apply" took file modes from the patch text and updated the mode
- bits of the target tree even when the patch was not about mode changes.
- * "git bisect view" on Cygwin did not launch gitk
- * "git checkout $tree" did not trigger an error.
- * "git commit" tried to remove COMMIT_EDITMSG from the work tree by mistake.
- * "git describe --all" complained when a commit is described with a tag,
- which was nonsense.
- * "git diff --no-index --" did not trigger no-index (aka "use git-diff as
- a replacement of diff on untracked files") behaviour.
- * "git format-patch -1 HEAD" on a root commit failed to produce patch
- text.
- * "git fsck branch" did not work as advertised; instead it behaved the same
- way as "git fsck".
- * "git log --pretty=format:%s" did not handle a multi-line subject the
- same way as built-in log listers (i.e. shortlog, --pretty=oneline, etc.)
- * "git daemon", and "git merge-file" are more careful when freopen fails
- and barf, instead of going on and writing to unopened filehandle.
- * "git http-push" did not like some RFC 4918 compliant DAV server
- responses.
- * "git merge -s recursive" mistakenly overwritten an untracked file in the
- work tree upon delete/modify conflict.
- * "git merge -s recursive" didn't leave the index unmerged for entries with
- rename/delete conflicts.
- * "git merge -s recursive" clobbered untracked files in the work tree.
- * "git mv -k" with more than one erroneous paths misbehaved.
- * "git read-tree -m -u" hence branch switching incorrectly lost a
- subdirectory in rare cases.
- * "git rebase -i" issued an unnecessary error message upon a user error of
- marking the first commit to be "squash"ed.
- * "git shortlog" did not format a commit message with multi-line
- subject correctly.
- Many documentation updates.
- GIT v1.6.1 Release Notes
- ========================
- Updates since v1.6.0
- --------------------
- When some commands (e.g. "git log", "git diff") spawn pager internally, we
- used to make the pager the parent process of the git command that produces
- output. This meant that the exit status of the whole thing comes from the
- pager, not the underlying git command. We swapped the order of the
- processes around and you will see the exit code from the command from now
- on.
- (subsystems)
- * gitk can call out to git-gui to view "git blame" output; git-gui in turn
- can run gitk from its blame view.
- * Various git-gui updates including updated translations.
- * Various gitweb updates from repo.or.cz installation.
- * Updates to emacs bindings.
- (portability)
- * A few test scripts used nonportable "grep" that did not work well on
- some platforms, e.g. Solaris.
- * Sample pre-auto-gc script has OS X support.
- * Makefile has support for (ancient) FreeBSD 4.9.
- (performance)
- * Many operations that are lstat(3) heavy can be told to pre-execute
- necessary lstat(3) in parallel before their main operations, which
- potentially gives much improved performance for cold-cache cases or in
- environments with weak metadata caching (e.g. NFS).
- * The underlying diff machinery to produce textual output has been
- optimized, which would result in faster "git blame" processing.
- * Most of the test scripts (but not the ones that try to run servers)
- can be run in parallel.
- * Bash completion of refnames in a repository with massive number of
- refs has been optimized.
- * Cygwin port uses native stat/lstat implementations when applicable,
- which leads to improved performance.
- * "git push" pays attention to alternate repositories to avoid sending
- unnecessary objects.
- * "git svn" can rebuild an out-of-date rev_map file.
- (usability, bells and whistles)
- * When you mistype a command name, git helpfully suggests what it guesses
- you might have meant to say. help.autocorrect configuration can be set
- to a non-zero value to accept the suggestion when git can uniquely
- guess.
- * The packfile machinery hopefully is more robust when dealing with
- corrupt packs if redundant objects involved in the corruption are
- available elsewhere.
- * "git add -N path..." adds the named paths as an empty blob, so that
- subsequent "git diff" will show a diff as if they are creation events.
- * "git add" gained a built-in synonym for people who want to say "stage
- changes" instead of "add contents to the staging area" which amounts
- to the same thing.
- * "git apply" learned --include=paths option, similar to the existing
- --exclude=paths option.
- * "git bisect" is careful about a user mistake and suggests testing of
- merge base first when good is not a strict ancestor of bad.
- * "git bisect skip" can take a range of commits.
- * "git blame" re-encodes the commit metainfo to UTF-8 from i18n.commitEncoding
- by default.
- * "git check-attr --stdin" can check attributes for multiple paths.
- * "git checkout --track origin/hack" used to be a syntax error. It now
- DWIMs to create a corresponding local branch "hack", i.e. acts as if you
- said "git checkout --track -b hack origin/hack".
- * "git checkout --ours/--theirs" can be used to check out one side of a
- conflicting merge during conflict resolution.
- * "git checkout -m" can be used to recreate the initial conflicted state
- during conflict resolution.
- * "git cherry-pick" can also utilize rerere for conflict resolution.
- * "git clone" learned to be verbose with -v
- * "git commit --author=$name" can look up author name from existing
- commits.
- * output from "git commit" has been reworded in a more concise and yet
- more informative way.
- * "git count-objects" reports the on-disk footprint for packfiles and
- their corresponding idx files.
- * "git daemon" learned --max-connections=<count> option.
- * "git daemon" exports REMOTE_ADDR to record client address, so that
- spawned programs can act differently on it.
- * "git describe --tags" favours closer lightweight tags than farther
- annotated tags now.
- * "git diff" learned to mimic --suppress-blank-empty from GNU diff via a
- configuration option.
- * "git diff" learned to put more sensible hunk headers for Python,
- HTML and ObjC contents.
- * "git diff" learned to vary the a/ vs b/ prefix depending on what are
- being compared, controlled by diff.mnemonicprefix configuration.
- * "git diff" learned --dirstat-by-file to count changed files, not number
- of lines, when summarizing the global picture.
- * "git diff" learned "textconv" filters --- a binary or hard-to-read
- contents can be munged into human readable form and the difference
- between the results of the conversion can be viewed (obviously this
- cannot produce a patch that can be applied, so this is disabled in
- format-patch among other things).
- * "--cached" option to "git diff has an easier to remember synonym "--staged",
- to ask "what is the difference between the given commit and the
- contents staged in the index?"
- * "git for-each-ref" learned "refname:short" token that gives an
- unambiguously abbreviated refname.
- * Auto-numbering of the subject lines is the default for "git
- format-patch" now.
- * "git grep" learned to accept -z similar to GNU grep.
- * "git help" learned to use GIT_MAN_VIEWER environment variable before
- using "man" program.
- * "git imap-send" can optionally talk SSL.
- * "git index-pack" is more careful against disk corruption while
- completing a thin pack.
- * "git log --check" and "git log --exit-code" passes their underlying diff
- status with their exit status code.
- * "git log" learned --simplify-merges, a milder variant of --full-history;
- "gitk --simplify-merges" is easier to view than with --full-history.
- * "git log" learned "--source" to show what ref each commit was reached
- from.
- * "git log" also learned "--simplify-by-decoration" to show the
- birds-eye-view of the topology of the history.
- * "git log --pretty=format:" learned "%d" format element that inserts
- names of tags that point at the commit.
- * "git merge --squash" and "git merge --no-ff" into an unborn branch are
- noticed as user errors.
- * "git merge -s $strategy" can use a custom built strategy if you have a
- command "git-merge-$strategy" on your $PATH.
- * "git pull" (and "git fetch") can be told to operate "-v"erbosely or
- "-q"uietly.
- * "git push" can be told to reject deletion of refs with receive.denyDeletes
- configuration.
- * "git rebase" honours pre-rebase hook; use --no-verify to bypass it.
- * "git rebase -p" uses interactive rebase machinery now to preserve the merges.
- * "git reflog expire branch" can be used in place of "git reflog expire
- refs/heads/branch".
- * "git remote show $remote" lists remote branches one-per-line now.
- * "git send-email" can be given revision range instead of files and
- maildirs on the command line, and automatically runs format-patch to
- generate patches for the given revision range.
- * "git submodule foreach" subcommand allows you to iterate over checked
- out submodules.
- * "git submodule sync" subcommands allows you to update the origin URL
- recorded in submodule directories from the toplevel .gitmodules file.
- * "git svn branch" can create new branches on the other end.
- * "gitweb" can use more saner PATH_INFO based URL.
- (internal)
- * "git hash-object" learned to lie about the path being hashed, so that
- correct gitattributes processing can be done while hashing contents
- stored in a temporary file.
- * various callers of git-merge-recursive avoid forking it as an external
- process.
- * Git class defined in "Git.pm" can be subclasses a bit more easily.
- * We used to link GNU regex library as a compatibility layer for some
- platforms, but it turns out it is not necessary on most of them.
- * Some path handling routines used fixed number of buffers used alternately
- but depending on the call depth, this arrangement led to hard to track
- bugs. This issue is being addressed.
- Fixes since v1.6.0
- ------------------
- All of the fixes in v1.6.0.X maintenance series are included in this
- release, unless otherwise noted.
- * Porcelains implemented as shell scripts were utterly confused when you
- entered to a subdirectory of a work tree from sideways, following a
- symbolic link (this may need to be backported to older releases later).
- * Tracking symbolic links would work better on filesystems whose lstat()
- returns incorrect st_size value for them.
- * "git add" and "git update-index" incorrectly allowed adding S/F when S
- is a tracked symlink that points at a directory D that has a path F in
- it (we still need to fix a similar nonsense when S is a submodule and F
- is a path in it).
- * "git am" after stopping at a broken patch lost --whitespace, -C, -p and
- --3way options given from the command line initially.
- * "git diff --stdin" used to take two trees on a line and compared them,
- but we dropped support for such a use case long time ago. This has
- been resurrected.
- * "git filter-branch" failed to rewrite a tag name with slashes in it.
- * "git http-push" did not understand URI scheme other than opaquelocktoken
- when acquiring a lock from the server (this may need to be backported to
- older releases later).
- * After "git rebase -p" stopped with conflicts while replaying a merge,
- "git rebase --continue" did not work (may need to be backported to older
- releases).
- * "git revert" records relative to which parent a revert was made when
- reverting a merge. Together with new documentation that explains issues
- around reverting a merge and merging from the updated branch later, this
- hopefully will reduce user confusion (this may need to be backported to
- older releases later).
- * "git rm --cached" used to allow an empty blob that was added earlier to
- be removed without --force, even when the file in the work tree has
- since been modified.
- * "git push --tags --all $there" failed with generic usage message without
- telling saying these two options are incompatible.
- * "git log --author/--committer" match used to potentially match the
- timestamp part, exposing internal implementation detail. Also these did
- not work with --fixed-strings match at all.
- * "gitweb" did not mark non-ASCII characters imported from external HTML fragments
- correctly.
- --
- exec >/var/tmp/1
- O=v1.6.1-rc3-74-gf66bc5f
- echo O=$(git describe master)
- git shortlog --no-merges $O..master ^maint
- GIT v1.6.0.6 Release Notes
- ==========================
- Fixes since 1.6.0.5
- -------------------
- * "git fsck" had a deep recursion that wasted stack space.
- * "git fast-export" and "git fast-import" choked on an old style
- annotated tag that lack the tagger information.
- * "git mergetool -- file" did not correctly skip "--" marker that
- signals the end of options list.
- * "git show $tag" segfaulted when an annotated $tag pointed at a
- nonexistent object.
- * "git show 2>error" when the standard output is automatically redirected
- to the pager redirected the standard error to the pager as well; there
- was no need to.
- * "git send-email" did not correctly handle list of addresses when
- they had quoted comma (e.g. "Lastname, Givenname" <mail@addre.ss>).
- * Logic to discover branch ancestry in "git svn" was unreliable when
- the process to fetch history was interrupted.
- * Removed support for an obsolete gitweb request URI, whose
- implementation ran "git diff" Porcelain, instead of using plumbing,
- which would have run an external diff command specified in the
- repository configuration as the gitweb user.
- Also contains numerous documentation typofixes.
- GIT v1.6.0.5 Release Notes
- ==========================
- Fixes since v1.6.0.4
- --------------------
- * "git checkout" used to crash when your HEAD was pointing at a deleted
- branch.
- * "git checkout" from an un-checked-out state did not allow switching out
- of the current branch.
- * "git diff" always allowed GIT_EXTERNAL_DIFF and --no-ext-diff was no-op for
- the command.
- * Giving 3 or more tree-ish to "git diff" is supposed to show the combined
- diff from second and subsequent trees to the first one, but the order was
- screwed up.
- * "git fast-export" did not export all tags.
- * "git ls-files --with-tree=<tree>" did not work with options other
- than -c, most notably with -m.
- * "git pack-objects" did not make its best effort to honor --max-pack-size
- option when a single first object already busted the given limit and
- placed many objects in a single pack.
- * "git-p4" fast import frontend was too eager to trigger its keyword expansion
- logic, even on a keyword-looking string that does not have closing '$' on the
- same line.
- * "git push $there" when the remote $there is defined in $GIT_DIR/branches/$there
- behaves more like what cg-push from Cogito used to work.
- * when giving up resolving a conflicted merge, "git reset --hard" failed
- to remove new paths from the working tree.
- * "git tag" did not complain when given mutually incompatible set of options.
- * The message constructed in the internal editor was discarded when "git
- tag -s" failed to sign the message, which was often caused by the user
- not configuring GPG correctly.
- * "make check" cannot be run without sparse; people may have meant to say
- "make test" instead, so suggest that.
- * Internal diff machinery had a corner case performance bug that choked on
- a large file with many repeated contents.
- * "git repack" used to grab objects out of packs marked with .keep
- into a new pack.
- * Many unsafe call to sprintf() style varargs functions are corrected.
- * Also contains quite a few documentation updates.
- GIT v1.6.0.4 Release Notes
- ==========================
- Fixes since v1.6.0.3
- --------------------
- * 'git add -p' said "No changes" when only binary files were changed.
- * 'git archive' did not work correctly in bare repositories.
- * 'git checkout -t -b newbranch' when you are on detached HEAD was broken.
- * when we refuse to detect renames because there are too many new or
- deleted files, 'git diff' did not say how many there are.
- * 'git push --mirror' tried and failed to push the stash; there is no
- point in sending it to begin with.
- * 'git push' did not update the remote tracking reference if the corresponding
- ref on the remote end happened to be already up to date.
- * 'git pull $there $branch:$current_branch' did not work when you were on
- a branch yet to be born.
- * when giving up resolving a conflicted merge, 'git reset --hard' failed
- to remove new paths from the working tree.
- * 'git send-email' had a small fd leak while scanning directory.
- * 'git status' incorrectly reported a submodule directory as an untracked
- directory.
- * 'git svn' used deprecated 'git-foo' form of subcommand invocation.
- * 'git update-ref -d' to remove a reference did not honor --no-deref option.
- * Plugged small memleaks here and there.
- * Also contains many documentation updates.
- GIT v1.6.0.3 Release Notes
- ==========================
- Fixes since v1.6.0.2
- --------------------
- * "git archive --format=zip" did not honor core.autocrlf while
- --format=tar did.
- * Continuing "git rebase -i" was very confused when the user left modified
- files in the working tree while resolving conflicts.
- * Continuing "git rebase -i" was also very confused when the user left
- some staged changes in the index after "edit".
- * "git rebase -i" now honors the pre-rebase hook, just like the
- other rebase implementations "git rebase" and "git rebase -m".
- * "git rebase -i" incorrectly aborted when there is no commit to replay.
- * Behaviour of "git diff --quiet" was inconsistent with "diff --exit-code"
- with the output redirected to /dev/null.
- * "git diff --no-index" on binary files no longer outputs a bogus
- "diff --git" header line.
- * "git diff" hunk header patterns with multiple elements separated by LF
- were not used correctly.
- * Hunk headers in "git diff" default to using extended regular
- expressions, fixing some of the internal patterns on non-GNU
- platforms.
- * New config "diff.*.xfuncname" exposes extended regular expressions
- for user specified hunk header patterns.
- * "git gc" when ejecting otherwise unreachable objects from packfiles into
- loose form leaked memory.
- * "git index-pack" was recently broken and mishandled objects added by
- thin-pack completion processing under memory pressure.
- * "git index-pack" was recently broken and misbehaved when run from inside
- .git/objects/pack/ directory.
- * "git stash apply sash@{1}" was fixed to error out. Prior versions
- would have applied stash@{0} incorrectly.
- * "git stash apply" now offers a better suggestion on how to continue
- if the working tree is currently dirty.
- * "git for-each-ref --format=%(subject)" fixed for commits with no
- no newline in the message body.
- * "git remote" fixed to protect printf from user input.
- * "git remote show -v" now displays all URLs of a remote.
- * "git checkout -b branch" was confused when branch already existed.
- * "git checkout -q" once again suppresses the locally modified file list.
- * "git clone -q", "git fetch -q" asks remote side to not send
- progress messages, actually making their output quiet.
- * Cross-directory renames are no longer used when creating packs. This
- allows more graceful behavior on filesystems like sshfs.
- * Stale temporary files under $GIT_DIR/objects/pack are now cleaned up
- automatically by "git prune".
- * "git merge" once again removes directories after the last file has
- been removed from it during the merge.
- * "git merge" did not allocate enough memory for the structure itself when
- enumerating the parents of the resulting commit.
- * "git blame -C -C" no longer segfaults while trying to pass blame if
- it encounters a submodule reference.
- * "git rm" incorrectly claimed that you have local modifications when a
- path was merely stat-dirty.
- * "git svn" fixed to display an error message when 'set-tree' failed,
- instead of a Perl compile error.
- * "git submodule" fixed to handle checking out a different commit
- than HEAD after initializing the submodule.
- * The "git commit" error message when there are still unmerged
- files present was clarified to match "git write-tree".
- * "git init" was confused when core.bare or core.sharedRepository are set
- in system or user global configuration file by mistake. When --bare or
- --shared is given from the command line, these now override such
- settings made outside the repositories.
- * Some segfaults due to uncaught NULL pointers were fixed in multiple
- tools such as apply, reset, update-index.
- * Solaris builds now default to OLD_ICONV=1 to avoid compile warnings;
- Solaris 8 does not define NEEDS_LIBICONV by default.
- * "Git.pm" tests relied on unnecessarily more recent version of Perl.
- * "gitweb" triggered undef warning on commits without log messages.
- * "gitweb" triggered undef warnings on missing trees.
- * "gitweb" now removes PATH_INFO from its URLs so users don't have
- to manually set the URL in the gitweb configuration.
- * Bash completion removed support for legacy "git-fetch", "git-push"
- and "git-pull" as these are no longer installed. Dashless form
- ("git fetch") is still however supported.
- Many other documentation updates.
- GIT v1.6.0.2 Release Notes
- ==========================
- Fixes since v1.6.0.1
- --------------------
- * Installation on platforms that needs .exe suffix to git-* programs were
- broken in 1.6.0.1.
- * Installation on filesystems without symbolic links support did not
- work well.
- * In-tree documentations and test scripts now use "git foo" form to set a
- better example, instead of the "git-foo" form (which is an acceptable
- form if you have "PATH=$(git --exec-path):$PATH" in your script)
- * Many commands did not use the correct working tree location when used
- with GIT_WORK_TREE environment settings.
- * Some systems needs to use compatibility fnmach and regex libraries
- independent from each other; the compat/ area has been reorganized to
- allow this.
- * "git apply --unidiff-zero" incorrectly applied a -U0 patch that inserts
- a new line before the second line.
- * "git blame -c" did not exactly work like "git annotate" when range
- boundaries are involved.
- * "git checkout file" when file is still unmerged checked out contents from
- a random high order stage, which was confusing.
- * "git clone $there $here/" with extra trailing slashes after explicit
- local directory name $here did not work as expected.
- * "git diff" on tracked contents with CRLF line endings did not drive "less"
- intelligently when showing added or removed lines.
- * "git diff --dirstat -M" did not add changes in subdirectories up
- correctly for renamed paths.
- * "git diff --cumulative" did not imply "--dirstat".
- * "git for-each-ref refs/heads/" did not work as expected.
- * "git gui" allowed users to feed patch without any context to be applied.
- * "git gui" botched parsing "diff" output when a line that begins with two
- dashes and a space gets removed or a line that begins with two pluses
- and a space gets added.
- * "git gui" translation updates and i18n fixes.
- * "git index-pack" is more careful against disk corruption while completing
- a thin pack.
- * "git log -i --grep=pattern" did not ignore case; neither "git log -E
- --grep=pattern" triggered extended regexp.
- * "git log --pretty="%ad" --date=short" did not use short format when
- showing the timestamp.
- * "git log --author=author" match incorrectly matched with the
- timestamp part of "author " line in commit objects.
- * "git log -F --author=author" did not work at all.
- * Build procedure for "git shell" that used stub versions of some
- functions and globals was not understood by linkers on some platforms.
- * "git stash" was fooled by a stat-dirty but otherwise unmodified paths
- and refused to work until the user refreshed the index.
- * "git svn" was broken on Perl before 5.8 with recent fixes to reduce
- use of temporary files.
- * "git verify-pack -v" did not work correctly when given more than one
- packfile.
- Also contains many documentation updates.
- --
- exec >/var/tmp/1
- O=v1.6.0.1-78-g3632cfc
- echo O=$(git describe maint)
- git shortlog --no-merges $O..maint
- GIT v1.6.0.1 Release Notes
- ==========================
- Fixes since v1.6.0
- ------------------
- * "git diff --cc" did not honor content mangling specified by
- gitattributes and core.autocrlf when reading from the work tree.
- * "git diff --check" incorrectly detected new trailing blank lines when
- whitespace check was in effect.
- * "git for-each-ref" tried to dereference NULL when asked for '%(body)" on
- a tag with a single incomplete line as its payload.
- * "git format-patch" peeked before the beginning of a string when
- "format.headers" variable is empty (a misconfiguration).
- * "git help help" did not work correctly.
- * "git mailinfo" (hence "git am") was unhappy when MIME multipart message
- contained garbage after the finishing boundary.
- * "git mailinfo" also was unhappy when the "From: " line only had a bare
- e-mail address.
- * "git merge" did not refresh the index correctly when a merge resulted in
- a fast-forward.
- * "git merge" did not resolve a truly trivial merges that can be done
- without content level merges.
- * "git svn dcommit" to a repository with URL that has embedded usernames
- did not work correctly.
- Contains other various documentation fixes.
- GIT v1.6.0 Release Notes
- ========================
- User visible changes
- --------------------
- With the default Makefile settings, most of the programs are now
- installed outside your $PATH, except for "git", "gitk" and
- some server side programs that need to be accessible for technical
- reasons. Invoking a git subcommand as "git-xyzzy" from the command
- line has been deprecated since early 2006 (and officially announced in
- 1.5.4 release notes); use of them from your scripts after adding
- output from "git --exec-path" to the $PATH is still supported in this
- release, but users are again strongly encouraged to adjust their
- scripts to use "git xyzzy" form, as we will stop installing
- "git-xyzzy" hardlinks for built-in commands in later releases.
- An earlier change to page "git status" output was overwhelmingly unpopular
- and has been reverted.
- Source changes needed for porting to MinGW environment are now all in the
- main git.git codebase.
- By default, packfiles created with this version uses delta-base-offset
- encoding introduced in v1.4.4. Pack idx files are using version 2 that
- allows larger packs and added robustness thanks to its CRC checking,
- introduced in v1.5.2 and v1.4.4.5. If you want to keep your repositories
- backwards compatible past these versions, set repack.useDeltaBaseOffset
- to false or pack.indexVersion to 1, respectively.
- We used to prevent sample hook scripts shipped in templates/ from
- triggering by default by relying on the fact that we install them as
- unexecutable, but on some filesystems, this approach does not work.
- They are now shipped with ".sample" suffix. If you want to activate
- any of these samples as-is, rename them to drop the ".sample" suffix,
- instead of running "chmod +x" on them. For example, you can rename
- hooks/post-update.sample to hooks/post-update to enable the sample
- hook that runs update-server-info, in order to make repositories
- friendly to dumb protocols (i.e. HTTP).
- GIT_CONFIG, which was only documented as affecting "git config", but
- actually affected all git commands, now only affects "git config".
- GIT_LOCAL_CONFIG, also only documented as affecting "git config" and
- not different from GIT_CONFIG in a useful way, is removed.
- The ".dotest" temporary area "git am" and "git rebase" use is now moved
- inside the $GIT_DIR, to avoid mistakes of adding it to the project by
- accident.
- An ancient merge strategy "stupid" has been removed.
- Updates since v1.5.6
- --------------------
- (subsystems)
- * git-p4 in contrib learned "allowSubmit" configuration to control on
- which branch to allow "submit" subcommand.
- * git-gui learned to stage changes per-line.
- (portability)
- * Changes for MinGW port have been merged, thanks to Johannes Sixt and
- gangs.
- * Sample hook scripts shipped in templates/ are now suffixed with
- *.sample.
- * perl's in-place edit (-i) does not work well without backup files on Windows;
- some tests are rewritten to cope with this.
- (documentation)
- * Updated howto/update-hook-example
- * Got rid of usage of "git-foo" from the tutorial and made typography
- more consistent.
- * Disambiguating "--" between revs and paths is finally documented.
- (performance, robustness, sanity etc.)
- * index-pack used too much memory when dealing with a deep delta chain.
- This has been optimized.
- * reduced excessive inlining to shrink size of the "git" binary.
- * verify-pack checks the object CRC when using version 2 idx files.
- * When an object is corrupt in a pack, the object became unusable even
- when the same object is available in a loose form, We now try harder to
- fall back to these redundant objects when able. In particular, "git
- repack -a -f" can be used to fix such a corruption as long as necessary
- objects are available.
- * Performance of "git-blame -C -C" operation is vastly improved.
- * git-clone does not create refs in loose form anymore (it behaves as
- if you immediately ran git-pack-refs after cloning). This will help
- repositories with insanely large number of refs.
- * core.fsyncobjectfiles configuration can be used to ensure that the loose
- objects created will be fsync'ed (this is only useful on filesystems
- that does not order data writes properly).
- * "git commit-tree" plumbing can make Octopus with more than 16 parents.
- "git commit" has been capable of this for quite some time.
- (usability, bells and whistles)
- * even more documentation pages are now accessible via "man" and "git help".
- * A new environment variable GIT_CEILING_DIRECTORIES can be used to stop
- the discovery process of the toplevel of working tree; this may be useful
- when you are working in a slow network disk and are outside any working tree,
- as bash-completion and "git help" may still need to run in these places.
- * By default, stash entries never expire. Set reflogexpire in [gc
- "refs/stash"] to a reasonable value to get traditional auto-expiration
- behaviour back
- * Longstanding latency issue with bash completion script has been
- addressed. This will need to be backmerged to 'maint' later.
- * pager.<cmd> configuration variable can be used to enable/disable the
- default paging behaviour per command.
- * "git-add -i" has a new action 'e/dit' to allow you edit the patch hunk
- manually.
- * git-am records the original tip of the branch in ORIG_HEAD before it
- starts applying patches.
- * git-apply can handle a patch that touches the same path more than once
- much better than before.
- * git-apply can be told not to trust the line counts recorded in the input
- patch but recount, with the new --recount option.
- * git-apply can be told to apply a patch to a path deeper than what the
- patch records with --directory option.
- * git-archive can be told to omit certain paths from its output using
- export-ignore attributes.
- * git-archive uses the zlib default compression level when creating
- zip archive.
- * git-archive's command line options --exec and --remote can take their
- parameters as separate command line arguments, similar to other commands.
- IOW, both "--exec=path" and "--exec path" are now supported.
- * With -v option, git-branch describes the remote tracking statistics
- similar to the way git-checkout reports by how many commits your branch
- is ahead/behind.
- * git-branch's --contains option used to always require a commit parameter
- to limit the branches with; it now defaults to list branches that
- contains HEAD if this parameter is omitted.
- * git-branch's --merged and --no-merged option used to always limit the
- branches relative to the HEAD, but they can now take an optional commit
- argument that is used in place of HEAD.
- * git-bundle can read the revision arguments from the standard input.
- * git-cherry-pick can replay a root commit now.
- * git-clone can clone from a remote whose URL would be rewritten by
- configuration stored in $HOME/.gitconfig now.
- * "git-clone --mirror" is a handy way to set up a bare mirror repository.
- * git-cvsserver learned to respond to "cvs co -c".
- * git-diff --check now checks leftover merge conflict markers.
- * "git-diff -p" learned to grab a better hunk header lines in
- BibTex, Pascal/Delphi, and Ruby files and also pays attention to
- chapter and part boundary in TeX documents.
- * When remote side used to have branch 'foo' and git-fetch finds that now
- it has branch 'foo/bar', it refuses to lose the existing remote tracking
- branch and its reflog. The error message has been improved to suggest
- pruning the remote if the user wants to proceed and get the latest set
- of branches from the remote, including such 'foo/bar'.
- * fast-export learned to export and import marks file; this can be used to
- interface with fast-import incrementally.
- * fast-import and fast-export learned to export and import gitlinks.
- * "gitk" left background process behind after being asked to dig very deep
- history and the user killed the UI; the process is killed when the UI goes
- away now.
- * git-rebase records the original tip of branch in ORIG_HEAD before it is
- rewound.
- * "git rerere" can be told to update the index with auto-reused resolution
- with rerere.autoupdate configuration variable.
- * git-rev-parse learned $commit^! and $commit^@ notations used in "log"
- family. These notations are available in gitk as well, because the gitk
- command internally uses rev-parse to interpret its arguments.
- * git-rev-list learned --children option to show child commits it
- encountered during the traversal, instead of showing parent commits.
- * git-send-mail can talk not just over SSL but over TLS now.
- * git-shortlog honors custom output format specified with "--pretty=format:".
- * "git-stash save" learned --keep-index option. This lets you stash away the
- local changes and bring the changes staged in the index to your working
- tree for examination and testing.
- * git-stash also learned branch subcommand to create a new branch out of
- stashed changes.
- * git-status gives the remote tracking statistics similar to the way
- git-checkout reports by how many commits your branch is ahead/behind.
- * "git-svn dcommit" is now aware of auto-props setting the subversion user
- has.
- * You can tell "git status -u" to even more aggressively omit checking
- untracked files with --untracked-files=no.
- * Original SHA-1 value for "update-ref -d" is optional now.
- * Error codes from gitweb are made more descriptive where possible, rather
- than "403 forbidden" as we used to issue everywhere.
- (internal)
- * git-merge has been reimplemented in C.
- Fixes since v1.5.6
- ------------------
- All of the fixes in v1.5.6 maintenance series are included in
- this release, unless otherwise noted.
- * git-clone ignored its -u option; the fix needs to be backported to
- 'maint';
- * git-mv used to lose the distinction between changes that are staged
- and that are only in the working tree, by staging both in the index
- after moving such a path.
- * "git-rebase -i -p" rewrote the parents to wrong ones when amending
- (either edit or squash) was involved, and did not work correctly
- when fast forwarding.
- GIT v1.5.6.6 Release Notes
- ==========================
- Fixes since 1.5.6.5
- -------------------
- * Removed support for an obsolete gitweb request URI, whose
- implementation ran "git diff" Porcelain, instead of using plumbing,
- which would have run an external diff command specified in the
- repository configuration as the gitweb user.
- GIT v1.5.6.5 Release Notes
- ==========================
- Fixes since v1.5.6.4
- --------------------
- * "git cvsimport" used to spit out "UNKNOWN LINE..." diagnostics to stdout.
- * "git commit -F filename" and "git tag -F filename" run from subdirectories
- did not read the right file.
- * "git init --template=" with blank "template" parameter linked files
- under root directories to .git, which was a total nonsense. Instead, it
- means "I do not want to use anything from the template directory".
- * "git diff-tree" and other diff plumbing ignored diff.renamelimit configuration
- variable when the user explicitly asked for rename detection.
- * "git name-rev --name-only" did not work when "--stdin" option was in effect.
- * "git show-branch" mishandled its 8th branch.
- * Addition of "git update-index --ignore-submodules" that happened during
- 1.5.6 cycle broke "git update-index --ignore-missing".
- * "git send-email" did not parse charset from an existing Content-type:
- header properly.
- Contains other various documentation fixes.
- GIT v1.5.6.4 Release Notes
- ==========================
- Fixes since v1.5.6.3
- --------------------
- * Various commands could overflow its internal buffer on a platform
- with small PATH_MAX value in a repository that has contents with
- long pathnames.
- * There wasn't a way to make --pretty=format:%<> specifiers to honor
- .mailmap name rewriting for authors and committers. Now you can with
- %aN and %cN.
- * Bash completion wasted too many cycles; this has been optimized to be
- usable again.
- * Bash completion lost ref part when completing something like "git show
- pu:Makefile".
- * "git-cvsserver" did not clean up its temporary working area after annotate
- request.
- * "git-daemon" called syslog() from its signal handler, which was a
- no-no.
- * "git-fetch" into an empty repository used to remind that the fetch will
- be huge by saying "no common commits", but this was an unnecessary
- noise; it is already known by the user anyway.
- * "git-http-fetch" would have segfaulted when pack idx file retrieved
- from the other side was corrupt.
- * "git-index-pack" used too much memory when dealing with a deep delta chain.
- * "git-mailinfo" (hence "git-am") did not correctly handle in-body [PATCH]
- line to override the commit title taken from the mail Subject header.
- * "git-rebase -i -p" lost parents that are not involved in the history
- being rewritten.
- * "git-rm" lost track of where the index file was when GIT_DIR was
- specified as a relative path.
- * "git-rev-list --quiet" was not quiet as advertised.
- Contains other various documentation fixes.
- GIT v1.5.6.3 Release Notes
- ==========================
- Fixes since v1.5.6.2
- --------------------
- * Setting core.sharerepository to traditional "true" value was supposed to make
- the repository group writable but should not affect permission for others.
- However, since 1.5.6, it was broken to drop permission for others when umask is
- 022, making the repository unreadable by others.
- * Setting GIT_TRACE will report spawning of external process via run_command().
- * Using an object with very deep delta chain pinned memory needed for extracting
- intermediate base objects unnecessarily long, leading to excess memory usage.
- * Bash completion script did not notice '--' marker on the command
- line and tried the relatively slow "ref completion" even when
- completing arguments after one.
- * Registering a non-empty blob racily and then truncating the working
- tree file for it confused "racy-git avoidance" logic into thinking
- that the path is now unchanged.
- * The section that describes attributes related to git-archive were placed
- in a wrong place in the gitattributes(5) manual page.
- * "git am" was not helpful to the users when it detected that the committer
- information is not set up properly yet.
- * "git clone" had a leftover debugging fprintf().
- * "git clone -q" was not quiet enough as it used to and gave object count
- and progress reports.
- * "git clone" marked downloaded packfile with .keep; this could be a
- good thing if the remote side is well packed but otherwise not,
- especially for a project that is not really big.
- * "git daemon" used to call syslog() from a signal handler, which
- could raise signals of its own but generally is not reentrant. This
- was fixed by restructuring the code to report syslog() after the handler
- returns.
- * When "git push" tries to remove a remote ref, and corresponding
- tracking ref is missing, we used to report error (i.e. failure to
- remove something that does not exist).
- * "git mailinfo" (hence "git am") did not handle commit log messages in a
- MIME multipart mail correctly.
- Contains other various documentation fixes.
- GIT v1.5.6.2 Release Notes
- ==========================
- Futureproof
- -----------
- * "git-shell" accepts requests without a dash between "git" and
- subcommand name (e.g. "git upload-pack") which the newer client will
- start to make sometime in the future.
- Fixes since v1.5.6.1
- --------------------
- * "git clone" from a remote that is named with url.insteadOf setting in
- $HOME/.gitconfig did not work well.
- * "git describe --long --tags" segfaulted when the described revision was
- tagged with a lightweight tag.
- * "git diff --check" did not report the result via its exit status
- reliably.
- * When remote side used to have branch 'foo' and git-fetch finds that now
- it has branch 'foo/bar', it refuses to lose the existing remote tracking
- branch and its reflog. The error message has been improved to suggest
- pruning the remote if the user wants to proceed and get the latest set
- of branches from the remote, including such 'foo/bar'.
- * "git reset file" should mean the same thing as "git reset HEAD file",
- but we required disambiguating -- even when "file" is not ambiguous.
- * "git show" segfaulted when an annotated tag that points at another
- annotated tag was given to it.
- * Optimization for a large import via "git-svn" introduced in v1.5.6 had a
- serious memory and temporary file leak, which made it unusable for
- moderately large import.
- * "git-svn" mangled remote nickname used in the configuration file
- unnecessarily.
- GIT v1.5.6.1 Release Notes
- ==========================
- Fixes since v1.5.6
- ------------------
- * Last minute change broke loose object creation on AIX.
- * (performance fix) We used to make $GIT_DIR absolute path early in the
- programs but keeping it relative to the current directory internally
- gives 1-3 per-cent performance boost.
- * bash completion knows the new --graph option to git-log family.
- * git-diff -c/--cc showed unnecessary "deletion" lines at the context
- boundary.
- * git-for-each-ref ignored %(object) and %(type) requests for tag
- objects.
- * git-merge usage had a typo.
- * Rebuilding of git-svn metainfo database did not take rewriteRoot
- option into account.
- * Running "git-rebase --continue/--skip/--abort" before starting a
- rebase gave nonsense error messages.
- GIT v1.5.6 Release Notes
- ========================
- Updates since v1.5.5
- --------------------
- (subsystems)
- * Comes with updated gitk and git-gui.
- (portability)
- * git will build on AIX better than before now.
- * core.ignorecase configuration variable can be used to work better on
- filesystems that are not case sensitive.
- * "git init" now autodetects the case sensitivity of the filesystem and
- sets core.ignorecase accordingly.
- * cpio is no longer used; neither "curl" binary (libcurl is still used).
- (documentation)
- * Many freestanding documentation pages have been converted and made
- available to "git help" (aka "man git<something>") as section 7 of
- the manual pages. This means bookmarks to some HTML documentation
- files may need to be updated (eg "tutorial.html" became
- "gittutorial.html").
- (performance)
- * "git clone" was rewritten in C. This will hopefully help cloning a
- repository with insane number of refs.
- * "git rebase --onto $there $from $branch" used to switch to the tip of
- $branch only to immediately reset back to $from, smudging work tree
- files unnecessarily. This has been optimized.
- * Object creation codepath in "git-svn" has been optimized by enhancing
- plumbing commands git-cat-file and git-hash-object.
- (usability, bells and whistles)
- * "git add -p" (and the "patch" subcommand of "git add -i") can choose to
- apply (or not apply) mode changes independently from contents changes.
- * "git bisect help" gives longer and more helpful usage information.
- * "git bisect" does not use a special branch "bisect" anymore; instead, it
- does its work on a detached HEAD.
- * "git branch" (and "git checkout -b") can be told to set up
- branch.<name>.rebase automatically, so that later you can say "git pull"
- and magically cause "git pull --rebase" to happen.
- * "git branch --merged" and "git branch --no-merged" can be used to list
- branches that have already been merged (or not yet merged) to the
- current branch.
- * "git cherry-pick" and "git revert" can add a sign-off.
- * "git commit" mentions the author identity when you are committing
- somebody else's changes.
- * "git diff/log --dirstat" output is consistent between binary and textual
- changes.
- * "git filter-branch" rewrites signed tags by demoting them to annotated.
- * "git format-patch --no-binary" can produce a patch that lack binary
- changes (i.e. cannot be used to propagate the whole changes) meant only
- for reviewing.
- * "git init --bare" is a synonym for "git --bare init" now.
- * "git gc --auto" honors a new pre-auto-gc hook to temporarily disable it.
- * "git log --pretty=tformat:<custom format>" gives a LF after each entry,
- instead of giving a LF between each pair of entries which is how
- "git log --pretty=format:<custom format>" works.
- * "git log" and friends learned the "--graph" option to show the ancestry
- graph at the left margin of the output.
- * "git log" and friends can be told to use date format that is different
- from the default via 'log.date' configuration variable.
- * "git send-email" now can send out messages outside a git repository.
- * "git send-email --compose" was made aware of rfc2047 quoting.
- * "git status" can optionally include output from "git submodule
- summary".
- * "git svn" learned --add-author-from option to propagate the authorship
- by munging the commit log message.
- * new object creation and looking up in "git svn" has been optimized.
- * "gitweb" can read from a system-wide configuration file.
- (internal)
- * "git unpack-objects" and "git receive-pack" is now more strict about
- detecting breakage in the objects they receive over the wire.
- Fixes since v1.5.5
- ------------------
- All of the fixes in v1.5.5 maintenance series are included in
- this release, unless otherwise noted.
- And there are too numerous small fixes to otherwise note here ;-)
- GIT v1.5.5.6 Release Notes
- ==========================
- Fixes since 1.5.5.5
- -------------------
- * Removed support for an obsolete gitweb request URI, whose
- implementation ran "git diff" Porcelain, instead of using plumbing,
- which would have run an external diff command specified in the
- repository configuration as the gitweb user.
- GIT v1.5.5.5 Release Notes
- ==========================
- I personally do not think there is any reason anybody should want to
- run v1.5.5.X series these days, because 'master' version is always
- more stable than any tagged released version of git.
- This is primarily to futureproof "git-shell" to accept requests
- without a dash between "git" and subcommand name (e.g. "git
- upload-pack") which the newer client will start to make sometime in
- the future.
- GIT v1.5.5.4 Release Notes
- ==========================
- Fixes since v1.5.5.4
- --------------------
- * "git name-rev --all" used to segfault.
- GIT v1.5.5.3 Release Notes
- ==========================
- Fixes since v1.5.5.2
- --------------------
- * "git send-email --compose" did not notice that non-ascii contents
- needed some MIME magic.
- * "git fast-export" did not export octopus merges correctly.
- Also comes with various documentation updates.
- GIT v1.5.5.2 Release Notes
- ==========================
- Fixes since v1.5.5.1
- --------------------
- * "git repack -n" was mistakenly made no-op earlier.
- * "git imap-send" wanted to always have imap.host even when use of
- imap.tunnel made it unnecessary.
- * reflog syntax that uses time e.g. "HEAD@{10 seconds ago}:path" did not
- stop parsing at the closing "}".
- * "git rev-parse --symbolic-full-name ^master^2" printed solitary "^",
- but it should print nothing.
- * "git commit" did not detect when it failed to write tree objects.
- * "git fetch" sometimes transferred too many objects unnecessarily.
- * a path specification "a/b" in .gitattributes file should not match
- "sub/a/b".
- * various gitweb fixes.
- Also comes with various documentation updates.
- GIT v1.5.5.1 Release Notes
- ==========================
- Fixes since v1.5.5
- ------------------
- * "git archive --prefix=$path/" mishandled gitattributes.
- * "git fetch -v" that fetches into FETCH_HEAD did not report the summary
- the same way as done for updating the tracking refs.
- * "git svn" misbehaved when the configuration file customized the "git
- log" output format using format.pretty.
- * "git submodule status" leaked an unnecessary error message.
- * "git log --date-order --topo-order" did not override the earlier
- date-order with topo-order as expected.
- * "git bisect good $this" did not check the validity of the revision
- given properly.
- * "url.<there>.insteadOf" did not work correctly.
- * "git clean" ran inside subdirectory behaved as if the directory was
- explicitly specified for removal by the end user from the top level.
- * "git bisect" from a detached head leaked an unnecessary error message.
- * "git bisect good $a $b" when $a is Ok but $b is bogus should have
- atomically failed before marking $a as good.
- * "git fmt-merge-msg" did not clean up leading empty lines from commit
- log messages like "git log" family does.
- * "git am" recorded a commit with empty Subject: line without
- complaining.
- * when given a commit log message whose first paragraph consists of
- multiple lines, "git rebase" squashed it into a single line.
- * "git remote add $bogus_name $url" did not complain properly.
- Also comes with various documentation updates.
- GIT v1.5.5 Release Notes
- ========================
- Updates since v1.5.4
- --------------------
- (subsystems)
- * Comes with git-gui 0.10.1
- (portability)
- * We shouldn't ask for BSD group ownership semantics by setting g+s bit
- on directories on older BSD systems that refuses chmod() by non root
- users. BSD semantics is the default there anyway.
- * Bunch of portability improvement patches coming from an effort to port
- to Solaris has been applied.
- (performance)
- * On platforms with suboptimal qsort(3) implementation, there
- is an option to use more reasonable substitute we ship with
- our software.
- * New configuration variable "pack.packsizelimit" can be used
- in place of command line option --max-pack-size.
- * "git fetch" over the native git protocol used to make a
- connection to find out the set of current remote refs and
- another to actually download the pack data. We now use only
- one connection for these tasks.
- * "git commit" does not run lstat(2) more than necessary
- anymore.
- (usability, bells and whistles)
- * Bash completion script (in contrib) are aware of more commands and
- options.
- * You can be warned when core.autocrlf conversion is applied in
- such a way that results in an irreversible conversion.
- * A catch-all "color.ui" configuration variable can be used to
- enable coloring of all color-capable commands, instead of
- individual ones such as "color.status" and "color.branch".
- * The commands refused to take absolute pathnames where they
- require pathnames relative to the work tree or the current
- subdirectory. They now can take absolute pathnames in such a
- case as long as the pathnames do not refer outside of the
- work tree. E.g. "git add $(pwd)/foo" now works.
- * Error messages used to be sent to stderr, only to get hidden,
- when $PAGER was in use. They now are sent to stdout along
- with the command output to be shown in the $PAGER.
- * A pattern "foo/" in .gitignore file now matches a directory
- "foo". Pattern "foo" also matches as before.
- * bash completion's prompt helper function can talk about
- operation in-progress (e.g. merge, rebase, etc.).
- * Configuration variables "url.<usethis>.insteadof = <otherurl>" can be
- used to tell "git-fetch" and "git-push" to use different URL than what
- is given from the command line.
- * "git add -i" behaves better even before you make an initial commit.
- * "git am" refused to run from a subdirectory without a good reason.
- * After "git apply --whitespace=fix" fixes whitespace errors in a patch,
- a line before the fix can appear as a context or preimage line in a
- later patch, causing the patch not to apply. The command now knows to
- see through whitespace fixes done to context lines to successfully
- apply such a patch series.
- * "git branch" (and "git checkout -b") to branch from a local branch can
- optionally set "branch.<name>.merge" to mark the new branch to build on
- the other local branch, when "branch.autosetupmerge" is set to
- "always", or when passing the command line option "--track" (this option
- was ignored when branching from local branches). By default, this does
- not happen when branching from a local branch.
- * "git checkout" to switch to a branch that has "branch.<name>.merge" set
- (i.e. marked to build on another branch) reports how much the branch
- and the other branch diverged.
- * When "git checkout" has to update a lot of paths, it used to be silent
- for 4 seconds before it showed any progress report. It is now a bit
- more impatient and starts showing progress report early.
- * "git commit" learned a new hook "prepare-commit-msg" that can
- inspect what is going to be committed and prepare the commit
- log message template to be edited.
- * "git cvsimport" can now take more than one -M options.
- * "git describe" learned to limit the tags to be used for
- naming with --match option.
- * "git describe --contains" now barfs when the named commit
- cannot be described.
- * "git describe --exact-match" describes only commits that are tagged.
- * "git describe --long" describes a tagged commit as $tag-0-$sha1,
- instead of just showing the exact tagname.
- * "git describe" warns when using a tag whose name and path contradict
- with each other.
- * "git diff" learned "--relative" option to limit and output paths
- relative to the current directory when working in a subdirectory.
- * "git diff" learned "--dirstat" option to show birds-eye-summary of
- changes more concisely than "--diffstat".
- * "git format-patch" learned --cover-letter option to generate a cover
- letter template.
- * "git gc" learned --quiet option.
- * "git gc" now automatically prunes unreachable objects that are two
- weeks old or older.
- * "git gc --auto" can be disabled more easily by just setting gc.auto
- to zero. It also tolerates more packfiles by default.
- * "git grep" now knows "--name-only" is a synonym for the "-l" option.
- * "git help <alias>" now reports "'git <alias>' is alias to <what>",
- instead of saying "No manual entry for git-<alias>".
- * "git help" can use different backends to show manual pages and this can
- be configured using "man.viewer" configuration.
- * "gitk" does not restore window position from $HOME/.gitk anymore (it
- still restores the size).
- * "git log --grep=<what>" learned "--fixed-strings" option to look for
- <what> without treating it as a regular expression.
- * "git gui" learned an auto-spell checking.
- * "git push <somewhere> HEAD" and "git push <somewhere> +HEAD" works as
- expected; they push the current branch (and only the current branch).
- In addition, HEAD can be written as the value of "remote.<there>.push"
- configuration variable.
- * When the configuration variable "pack.threads" is set to 0, "git
- repack" auto detects the number of CPUs and uses that many threads.
- * "git send-email" learned to prompt for passwords
- interactively.
- * "git send-email" learned an easier way to suppress CC
- recipients.
- * "git stash" learned "pop" command, that applies the latest stash and
- removes it from the stash, and "drop" command to discard the named
- stash entry.
- * "git submodule" learned a new subcommand "summary" to show the
- symmetric difference between the HEAD version and the work tree version
- of the submodule commits.
- * Various "git cvsimport", "git cvsexportcommit", "git cvsserver",
- "git svn" and "git p4" improvements.
- (internal)
- * Duplicated code between git-help and git-instaweb that
- launches user's preferred browser has been refactored.
- * It is now easier to write test scripts that records known
- breakages.
- * "git checkout" is rewritten in C.
- * "git remote" is rewritten in C.
- * Two conflict hunks that are separated by a very short span of common
- lines are now coalesced into one larger hunk, to make the result easier
- to read.
- * Run-command API's use of file descriptors is documented clearer and
- is more consistent now.
- * diff output can be sent to FILE * that is different from stdout. This
- will help reimplementing more things in C.
- Fixes since v1.5.4
- ------------------
- All of the fixes in v1.5.4 maintenance series are included in
- this release, unless otherwise noted.
- * "git-http-push" did not allow deletion of remote ref with the usual
- "push <remote> :<branch>" syntax.
- * "git-rebase --abort" did not go back to the right location if
- "git-reset" was run during the "git-rebase" session.
- * "git imap-send" without setting imap.host did not error out but
- segfaulted.
- GIT v1.5.4.7 Release Notes
- ==========================
- Fixes since 1.5.4.7
- -------------------
- * Removed support for an obsolete gitweb request URI, whose
- implementation ran "git diff" Porcelain, instead of using plumbing,
- which would have run an external diff command specified in the
- repository configuration as the gitweb user.
- GIT v1.5.4.6 Release Notes
- ==========================
- I personally do not think there is any reason anybody should want to
- run v1.5.4.X series these days, because 'master' version is always
- more stable than any tagged released version of git.
- This is primarily to futureproof "git-shell" to accept requests
- without a dash between "git" and subcommand name (e.g. "git
- upload-pack") which the newer client will start to make sometime in
- the future.
- Fixes since v1.5.4.5
- --------------------
- * Command line option "-n" to "git-repack" was not correctly parsed.
- * Error messages from "git-apply" when the patchfile cannot be opened
- have been improved.
- * Error messages from "git-bisect" when given nonsense revisions have
- been improved.
- * reflog syntax that uses time e.g. "HEAD@{10 seconds ago}:path" did not
- stop parsing at the closing "}".
- * "git rev-parse --symbolic-full-name ^master^2" printed solitary "^",
- but it should print nothing.
- * "git apply" did not enforce "match at the beginning" correctly.
- * a path specification "a/b" in .gitattributes file should not match
- "sub/a/b", but it did.
- * "git log --date-order --topo-order" did not override the earlier
- date-order with topo-order as expected.
- * "git fast-export" did not export octopus merges correctly.
- * "git archive --prefix=$path/" mishandled gitattributes.
- As usual, it also comes with many documentation fixes and clarifications.
- GIT v1.5.4.5 Release Notes
- ==========================
- Fixes since v1.5.4.4
- --------------------
- * "git fetch there" when the URL information came from the Cogito style
- branches/there file did not update refs/heads/there (regression in
- 1.5.4).
- * Bogus refspec configuration such as "remote.there.fetch = =" were not
- detected as errors (regression in 1.5.4).
- * You couldn't specify a custom editor whose path contains a whitespace
- via GIT_EDITOR (and core.editor).
- * The subdirectory filter to "git filter-branch" mishandled a history
- where the subdirectory becomes empty and then later becomes non-empty.
- * "git shortlog" gave an empty line if the original commit message was
- malformed (e.g. a botched import from foreign SCM). Now it finds the
- first non-empty line and uses it for better information.
- * When the user fails to give a revision parameter to "git svn", an error
- from the Perl interpreter was issued because the script lacked proper
- error checking.
- * After "git rebase" stopped due to conflicts, if the user played with
- "git reset" and friends, "git rebase --abort" failed to go back to the
- correct commit.
- * Additional work trees prepared with git-new-workdir (in contrib/) did
- not share git-svn metadata directory .git/svn with the original.
- * "git-merge-recursive" did not mark addition of the same path with
- different filemodes correctly as a conflict.
- * "gitweb" gave malformed URL when pathinfo stype paths are in use.
- * "-n" stands for "--no-tags" again for "git fetch".
- * "git format-patch" did not detect the need to add 8-bit MIME header
- when the user used format.header configuration.
- * "rev~" revision specifier used to mean "rev", which was inconsistent
- with how "rev^" worked. Now "rev~" is the same as "rev~1" (hence it
- also is the same as "rev^1"), and "rev~0" is the same as "rev^0"
- (i.e. it has to be a commit).
- * "git quiltimport" did not grok empty lines, lines in "file -pNNN"
- format to specify the prefix levels and lines with trailing comments.
- * "git rebase -m" triggered pre-commit verification, which made
- "rebase --continue" impossible.
- As usual, it also comes with many documentation fixes and clarifications.
- GIT v1.5.4.4 Release Notes
- ==========================
- Fixes since v1.5.4.3
- --------------------
- * Building and installing with an overtight umask such as 077 made
- installed templates unreadable by others, while the rest of the install
- are done in a way that is friendly to umask 022.
- * "git cvsexportcommit -w $cvsdir" misbehaved when GIT_DIR is set to a
- relative directory.
- * "git http-push" had an invalid memory access that could lead it to
- segfault.
- * When "git rebase -i" gave control back to the user for a commit that is
- marked to be edited, it just said "modify it with commit --amend",
- without saying what to do to continue after modifying it. Give an
- explicit instruction to run "rebase --continue" to be more helpful.
- * "git send-email" in 1.5.4.3 issued a bogus empty In-Reply-To: header.
- * "git bisect" showed mysterious "won't bisect on seeked tree" error message.
- This was leftover from Cogito days to prevent "bisect" starting from a
- cg-seeked state. We still keep the Cogito safety, but running "git bisect
- start" when another bisect was in effect will clean up and start over.
- * "git push" with an explicit PATH to receive-pack did not quite work if
- receive-pack was not on usual PATH. We earlier fixed the same issue
- with "git fetch" and upload-pack, but somehow forgot to do so in the
- other direction.
- * git-gui's info dialog was not displayed correctly when the user tries
- to commit nothing (i.e. without staging anything).
- * "git revert" did not properly fail when attempting to run with a
- dirty index.
- * "git merge --no-commit --no-ff <other>" incorrectly made commits.
- * "git merge --squash --no-ff <other>", which is a nonsense combination
- of options, was not rejected.
- * "git ls-remote" and "git remote show" against an empty repository
- failed, instead of just giving an empty result (regression).
- * "git fast-import" did not handle a renamed path whose name needs to be
- quoted, due to a bug in unquote_c_style() function.
- * "git cvsexportcommit" was confused when multiple files with the same
- basename needed to be pushed out in the same commit.
- * "git daemon" did not send early errors to syslog.
- * "git log --merge" did not work well with --left-right option.
- * "git svn" prompted for client cert password every time it accessed the
- server.
- * The reset command in "git fast-import" data stream was documented to
- end with an optional LF, but it actually required one.
- * "git svn dcommit/rebase" did not honor --rewrite-root option.
- Also included are a handful documentation updates.
- GIT v1.5.4.3 Release Notes
- ==========================
- Fixes since v1.5.4.2
- --------------------
- * RPM spec used to pull in everything with 'git'. This has been
- changed so that 'git' package contains just the core parts,
- and we now supply 'git-all' metapackage to slurp in everything.
- This should match end user's expectation better.
- * When some refs failed to update, git-push reported "failure"
- which was unclear if some other refs were updated or all of
- them failed atomically (the answer is the former). Reworded
- the message to clarify this.
- * "git clone" from a repository whose HEAD was misconfigured
- did not set up the remote properly. Now it tries to do
- better.
- * Updated git-push documentation to clarify what "matching"
- means, in order to reduce user confusion.
- * Updated git-add documentation to clarify "add -u" operates in
- the current subdirectory you are in, just like other commands.
- * git-gui updates to work on OSX and Windows better.
- GIT v1.5.4.2 Release Notes
- ==========================
- Fixes since v1.5.4
- ------------------
- * The configuration parser was not prepared to see string
- valued variables misspelled as boolean and segfaulted.
- * Temporary files left behind due to interrupted object
- transfers were not cleaned up with "git prune".
- * "git config --unset" was confused when the unset variables
- were spelled with continuation lines in the config file.
- * The merge message detection in "git cvsimport" did not catch
- a message that began with "Merge...".
- * "git status" suggests "git rm --cached" for unstaging the
- earlier "git add" before the initial commit.
- * "git status" output was incorrect during a partial commit.
- * "git bisect" refused to start when the HEAD was detached.
- * "git bisect" allowed a wildcard character in the commit
- message expanded while writing its log file.
- * Manual pages were not formatted correctly with docbook xsl
- 1.72; added a workaround.
- * "git-commit -C $tag" used to work but rewrite in C done in
- 1.5.4 broke it. This was fixed in 1.5.4.1.
- * An entry in the .gitattributes file that names a pattern in a
- subdirectory of the directory it is in did not match
- correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should
- match "a/b/foo.c" but it didn't). This was fixed in 1.5.4.1.
- * Customized color specification was parsed incorrectly when
- numeric color values are used. This was fixed in 1.5.4.1.
- * http transport misbehaved when linked with curl-gnutls.
- GIT v1.5.4.1 Release Notes
- ==========================
- Fixes since v1.5.4
- ------------------
- * "git-commit -C $tag" used to work but rewrite in C done in
- 1.5.4 broke it.
- * An entry in the .gitattributes file that names a pattern in a
- subdirectory of the directory it is in did not match
- correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should
- match "a/b/foo.c" but it didn't).
- * Customized color specification was parsed incorrectly when
- numeric color values are used. This was fixed in 1.5.4.1.
- GIT v1.5.4 Release Notes
- ========================
- Removal
- -------
- * "git svnimport" was removed in favor of "git svn". It is still there
- in the source tree (contrib/examples) but unsupported.
- * As git-commit and git-status have been rewritten, "git runstatus"
- helper script lost all its users and has been removed.
- Temporarily disabled
- --------------------
- * "git http-push" is known not to work well with cURL library older
- than 7.16, and we had reports of repository corruption. It is
- disabled on such platforms for now. Unfortunately, 1.5.3.8 shares
- the same issue. In other words, this does not mean you will be
- fine if you stick to an older git release. For now, please do not
- use http-push from older git with cURL older than 7.16 if you
- value your data. A proper fix will hopefully materialize in
- later versions.
- Deprecation notices
- -------------------
- * From v1.6.0, git will by default install dashed form of commands
- (e.g. "git-commit") outside of users' normal $PATH, and will install
- only selected commands ("git" itself, and "gitk") in $PATH. This
- implies:
- - Using dashed forms of git commands (e.g. "git-commit") from the
- command line has been informally deprecated since early 2006, but
- now it officially is, and will be removed in the future. Use
- dash-less forms (e.g. "git commit") instead.
- - Using dashed forms from your scripts, without first prepending the
- return value from "git --exec-path" to the scripts' PATH, has been
- informally deprecated since early 2006, but now it officially is.
- - Use of dashed forms with "PATH=$(git --exec-path):$PATH; export
- PATH" early in your script is not deprecated with this change.
- Users are strongly encouraged to adjust their habits and scripts now
- to prepare for this change.
- * The post-receive hook was introduced in March 2007 to supersede
- the post-update hook, primarily to overcome the command line length
- limitation of the latter. Use of post-update hook will be deprecated
- in future versions of git, starting from v1.6.0.
- * "git lost-found" was deprecated in favor of "git fsck"'s --lost-found
- option, and will be removed in the future.
- * "git peek-remote" is deprecated, as "git ls-remote" was written in C
- and works for all transports; "git peek-remote" will be removed in
- the future.
- * "git repo-config" which was an old name for "git config" command
- has been supported without being advertised for a long time. The
- next feature release will remove it.
- * From v1.6.0, the repack.usedeltabaseoffset config option will default
- to true, which will give denser packfiles (i.e. more efficient storage).
- The downside is that git older than version 1.4.4 will not be able
- to directly use a repository packed using this setting.
- * From v1.6.0, the pack.indexversion config option will default to 2,
- which is slightly more efficient, and makes repacking more immune to
- data corruptions. Git older than version 1.5.2 may revert to version 1
- of the pack index with a manual "git index-pack" to be able to directly
- access corresponding pack files.
- Updates since v1.5.3
- --------------------
- * Comes with much improved gitk, with i18n.
- * Comes with git-gui 0.9.2 with i18n.
- * gitk is now merged as a subdirectory of git.git project, in
- preparation for its i18n.
- * progress displays from many commands are a lot nicer to the eye.
- Transfer commands show throughput data.
- * many commands that pay attention to per-directory .gitignore now do
- so lazily, which makes the usual case go much faster.
- * Output processing for '--pretty=format:<user format>' has been
- optimized.
- * Rename detection of diff family while detecting exact matches has
- been greatly optimized.
- * Rename detection of diff family tries to make more natural looking
- pairing. Earlier, if multiple identical rename sources were
- found in the preimage, the source used was picked pretty much at random.
- * Value "true" for color.diff and color.status configuration used to
- mean "always" (even when the output is not going to a terminal).
- This has been corrected to mean the same thing as "auto".
- * "git diff" Porcelain now respects diff.external configuration, which
- is another way to specify GIT_EXTERNAL_DIFF.
- * "git diff" can be told to use different prefixes other than
- "a/" and "b/" e.g. "git diff --src-prefix=l/ --dst-prefix=k/".
- * "git diff" sometimes did not quote paths with funny
- characters properly.
- * "git log" (and any revision traversal commands) misbehaved
- when --diff-filter is given but was not asked to actually
- produce diff.
- * HTTP proxy can be specified per remote repository using
- remote.*.httpproxy configuration, or global http.proxy configuration
- variable.
- * Various Perforce importer updates.
- * Example update and post-receive hooks have been improved.
- * Any command that wants to take a commit object name can now use
- ":/string" syntax to name a commit.
- * "git reset" is now built-in and its output can be squelched with -q.
- * "git reset --hard" does not make any sense in a bare
- repository, but did not error out; fixed.
- * "git send-email" can optionally talk over ssmtp and use SMTP-AUTH.
- * "git rebase" learned --whitespace option.
- * In "git rebase", when you decide not to replay a particular change
- after the command stopped with a conflict, you can say "git rebase
- --skip" without first running "git reset --hard", as the command now
- runs it for you.
- * "git rebase --interactive" mode can now work on detached HEAD.
- * Other minor to serious bugs in "git rebase -i" have been fixed.
- * "git rebase" now detaches head during its operation, so after a
- successful "git rebase" operation, the reflog entry branch@{1} for
- the current branch points at the commit before the rebase was
- started.
- * "git rebase -i" also triggers rerere to help your repeated merges.
- * "git merge" can call the "post-merge" hook.
- * "git pack-objects" can optionally run deltification with multiple
- threads.
- * "git archive" can optionally substitute keywords in files marked with
- export-subst attribute.
- * "git cherry-pick" made a misguided attempt to repeat the original
- command line in the generated log message, when told to cherry-pick a
- commit by naming a tag that points at it. It does not anymore.
- * "git for-each-ref" learned %(xxxdate:<date-format>) syntax to show the
- various date fields in different formats.
- * "git gc --auto" is a low-impact way to automatically run a variant of
- "git repack" that does not lose unreferenced objects (read: safer
- than the usual one) after the user accumulates too many loose
- objects.
- * "git clean" has been rewritten in C.
- * You need to explicitly set clean.requireForce to "false" to allow
- "git clean" without -f to do any damage (lack of the configuration
- variable used to mean "do not require -f option to lose untracked
- files", but we now use the safer default).
- * The kinds of whitespace errors "git diff" and "git apply" notice (and
- fix) can be controlled via 'core.whitespace' configuration variable
- and 'whitespace' attribute in .gitattributes file.
- * "git push" learned --dry-run option to show what would happen if a
- push is run.
- * "git push" does not update a tracking ref on the local side when the
- remote refused to update the corresponding ref.
- * "git push" learned --mirror option. This is to push the local refs
- one-to-one to the remote, and deletes refs from the remote that do
- not exist anymore in the repository on the pushing side.
- * "git push" can remove a corrupt ref at the remote site with the usual
- ":ref" refspec.
- * "git remote" knows --mirror mode. This is to set up configuration to
- push into a remote repository to store local branch heads to the same
- branch on the remote side, and remove branch heads locally removed
- from local repository at the same time. Suitable for pushing into a
- back-up repository.
- * "git remote" learned "rm" subcommand.
- * "git cvsserver" can be run via "git shell". Also, "cvs" is
- recognized as a synonym for "git cvsserver", so that CVS users
- can be switched to git just by changing their login shell.
- * "git cvsserver" acts more like receive-pack by running post-receive
- and post-update hooks.
- * "git am" and "git rebase" are far less verbose.
- * "git pull" learned to pass --[no-]ff option to underlying "git
- merge".
- * "git pull --rebase" is a different way to integrate what you fetched
- into your current branch.
- * "git fast-export" produces data-stream that can be fed to fast-import
- to reproduce the history recorded in a git repository.
- * "git add -i" takes pathspecs to limit the set of files to work on.
- * "git add -p" is a short-hand to go directly to the selective patch
- subcommand in the interactive command loop and to exit when done.
- * "git add -i" UI has been colorized. The interactive prompt
- and menu can be colored by setting color.interactive
- configuration. The diff output (including the hunk picker)
- are colored with color.diff configuration.
- * "git commit --allow-empty" allows you to create a single-parent
- commit that records the same tree as its parent, overriding the usual
- safety valve.
- * "git commit --amend" can amend a merge that does not change the tree
- from its first parent.
- * "git commit" used to unconditionally strip comment lines that
- began with '#' and removed excess blank lines. This behavior has
- been made configurable.
- * "git commit" has been rewritten in C.
- * "git stash random-text" does not create a new stash anymore. It was
- a UI mistake. Use "git stash save random-text", or "git stash"
- (without extra args) for that.
- * "git stash clear extra-text" does not clear the whole stash
- anymore. It is tempting to expect "git stash clear stash@{2}"
- to drop only a single named stash entry, and it is rude to
- discard everything when that is asked (but not provided).
- * "git prune --expire <time>" can exempt young loose objects from
- getting pruned.
- * "git branch --contains <commit>" can list branches that are
- descendants of a given commit.
- * "git log" learned --early-output option to help interactive GUI
- implementations.
- * "git bisect" learned "skip" action to mark untestable commits.
- * "git bisect visualize" learned a shorter synonym "git bisect view".
- * "git bisect visualize" runs "git log" in a non-windowed
- environments. It also can be told what command to run (e.g. "git
- bisect visualize tig").
- * "git format-patch" learned "format.numbered" configuration variable
- to automatically turn --numbered option on when more than one commits
- are formatted.
- * "git ls-files" learned "--exclude-standard" to use the canned set of
- exclude files.
- * "git tag -a -f existing" begins the editor session using the existing
- annotation message.
- * "git tag -m one -m bar" (multiple -m options) behaves similarly to
- "git commit"; the parameters to -m options are formatted as separate
- paragraphs.
- * The format "git show" outputs an annotated tag has been updated to
- include "Tagger: " and "Date: " lines from the tag itself. Strictly
- speaking this is a backward incompatible change, but this is a
- reasonable usability fix and people's scripts shouldn't have been
- relying on the exact output from "git show" Porcelain anyway.
- * "git cvsimport" did not notice errors from underlying "cvsps"
- and produced a corrupt import silently.
- * "git cvsexportcommit" learned -w option to specify and switch to the
- CVS working directory.
- * "git checkout" from a subdirectory learned to use "../path" to allow
- checking out a path outside the current directory without cd'ing up.
- * "git checkout" from and to detached HEAD leaves a bit more
- information in the reflog.
- * "git send-email --dry-run" shows full headers for easier diagnosis.
- * "git merge-ours" is now built-in.
- * "git svn" learned "info" and "show-externals" subcommands.
- * "git svn" run from a subdirectory failed to read settings from the
- .git/config.
- * "git svn" learned --use-log-author option, which picks up more
- descriptive name from From: and Signed-off-by: lines in the commit
- message.
- * "git svn" wasted way too much disk to record revision mappings
- between svn and git; a new representation that is much more compact
- for this information has been introduced to correct this.
- * "git svn" left temporary index files it used without cleaning them
- up; this was corrected.
- * "git status" from a subdirectory now shows relative paths, which
- makes copy-and-pasting for git-checkout/git-add/git-rm easier. The
- traditional behavior to show the full path relative to the top of
- the work tree can be had by setting status.relativepaths
- configuration variable to false.
- * "git blame" kept text for each annotated revision in core needlessly;
- this has been corrected.
- * "git shortlog" learned to default to HEAD when the standard input is
- a terminal and the user did not give any revision parameter.
- * "git shortlog" learned "-e" option to show e-mail addresses as well as
- authors' names.
- * "git help" learned "-w" option to show documentation in browsers.
- * In addition there are quite a few internal clean-ups. Notably:
- - many fork/exec have been replaced with run-command API,
- brought from the msysgit effort.
- - introduction and more use of the option parser API.
- - enhancement and more use of the strbuf API.
- * Makefile tweaks to support HP-UX is in.
- Fixes since v1.5.3
- ------------------
- All of the fixes in v1.5.3 maintenance series are included in
- this release, unless otherwise noted.
- These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance
- series.
- * The way "git diff --check" behaves is much more consistent with the way
- "git apply --whitespace=warn" works.
- * "git svn" talking with the SVN over HTTP will correctly quote branch
- and project names.
- * "git config" did not work correctly on platforms that define
- REG_NOMATCH to an even number.
- * Recent versions of AsciiDoc 8 has a change to break our
- documentation; a workaround has been implemented.
- * "git diff --color-words" colored context lines in a wrong color.
- GIT v1.5.3.8 Release Notes
- ==========================
- Fixes since v1.5.3.7
- --------------------
- * Some documentation used "email.com" as an example domain.
- * git-svn fix to handle funky branch and project names going over
- http/https correctly.
- * git-svn fix to tone down a needlessly alarming warning message.
- * git-clone did not correctly report errors while fetching over http.
- * git-send-email added redundant Message-Id: header to the outgoing
- e-mail when the patch text already had one.
- * a read-beyond-end-of-buffer bug in configuration file updater was fixed.
- * git-grep used to show the same hit repeatedly for unmerged paths.
- * After amending the patch title in "git-am -i", the command did not
- report the patch it applied with the updated title.
- GIT v1.5.3.7 Release Notes
- ==========================
- Fixes since v1.5.3.6
- --------------------
- * git-send-email added 8-bit contents to the payload without
- marking it as 8-bit in a CTE header.
- * "git-bundle create a.bndl HEAD" dereferenced the symref and
- did not record the ref as 'HEAD'; this prevented a bundle
- from being used as a normal source of git-clone.
- * The code to reject nonsense command line of the form
- "git-commit -a paths..." and "git-commit --interactive
- paths..." were broken.
- * Adding a signature that is not ASCII-only to an original
- commit that is ASCII-only would make the result non-ASCII.
- "git-format-patch -s" did not mark such a message correctly
- with MIME encoding header.
- * git-add sometimes did not mark the resulting index entry
- stat-clean. This affected only cases when adding the
- contents with the same length as the previously staged
- contents, and the previous staging made the index entry
- "racily clean".
- * git-commit did not honor GIT_INDEX_FILE the user had in the
- environment.
- * When checking out a revision, git-checkout did not report where the
- updated HEAD is if you happened to have a file called HEAD in the
- work tree.
- * "git-rev-list --objects" mishandled a tree that points at a
- submodule.
- * "git cvsimport" was not ready for packed refs that "git gc" can
- produce and gave incorrect results.
- * Many scripted Porcelains were confused when you happened to have a
- file called "HEAD" in your work tree.
- Also it contains updates to the user manual and documentation.
- GIT v1.5.3.6 Release Notes
- ==========================
- Fixes since v1.5.3.5
- --------------------
- * git-cvsexportcommit handles root commits better.
- * git-svn dcommit used to clobber when sending a series of
- patches.
- * git-svn dcommit failed after attempting to rebase when
- started with a dirty index; now it stops upfront.
- * git-grep sometimes refused to work when your index was
- unmerged.
- * "git-grep -A1 -B2" acted as if it was told to run "git -A1 -B21".
- * git-hash-object did not honor configuration variables, such as
- core.compression.
- * git-index-pack choked on a huge pack on 32-bit machines, even when
- large file offsets are supported.
- * atom feeds from git-web said "10" for the month of November.
- * a memory leak in commit walker was plugged.
- * When git-send-email inserted the original author's From:
- address in body, it did not mark the message with
- Content-type: as needed.
- * git-revert and git-cherry-pick incorrectly refused to start
- when the work tree was dirty.
- * git-clean did not honor core.excludesfile configuration.
- * git-add mishandled ".gitignore" files when applying them to
- subdirectories.
- * While importing a too branchy history, git-fastimport did not
- honor delta depth limit properly.
- * Support for zlib implementations that lack ZLIB_VERNUM and definition
- of deflateBound() has been added.
- * Quite a lot of documentation clarifications.
- GIT v1.5.3.5 Release Notes
- ==========================
- Fixes since v1.5.3.4
- --------------------
- * Comes with git-gui 0.8.4.
- * "git-config" silently ignored options after --list; now it will
- error out with a usage message.
- * "git-config --file" failed if the argument used a relative path
- as it changed directories before opening the file.
- * "git-config --file" now displays a proper error message if it
- cannot read the file specified on the command line.
- * "git-config", "git-diff", "git-apply" failed if run from a
- subdirectory with relative GIT_DIR and GIT_WORK_TREE set.
- * "git-blame" crashed if run during a merge conflict.
- * "git-add -i" did not handle single line hunks correctly.
- * "git-rebase -i" and "git-stash apply" failed if external diff
- drivers were used for one or more files in a commit. They now
- avoid calling the external diff drivers.
- * "git-log --follow" did not work unless diff generation (e.g. -p)
- was also requested.
- * "git-log --follow -B" did not work at all. Fixed.
- * "git-log -M -B" did not correctly handle cases of very large files
- being renamed and replaced by very small files in the same commit.
- * "git-log" printed extra newlines between commits when a diff
- was generated internally (e.g. -S or --follow) but not displayed.
- * "git-push" error message is more helpful when pushing to a
- repository with no matching refs and none specified.
- * "git-push" now respects + (force push) on wildcard refspecs,
- matching the behavior of git-fetch.
- * "git-filter-branch" now updates the working directory when it
- has finished filtering the current branch.
- * "git-instaweb" no longer fails on Mac OS X.
- * "git-cvsexportcommit" didn't always create new parent directories
- before trying to create new child directories. Fixed.
- * "git-fetch" printed a scary (but bogus) error message while
- fetching a tag that pointed to a tree or blob. The error did
- not impact correctness, only user perception. The bogus error
- is no longer printed.
- * "git-ls-files --ignored" did not properly descend into non-ignored
- directories that themselves contained ignored files if d_type
- was not supported by the filesystem. This bug impacted systems
- such as AFS. Fixed.
- * Git segfaulted when reading an invalid .gitattributes file. Fixed.
- * post-receive-email example hook was fixed for non-fast-forward
- updates.
- * Documentation updates for supported (but previously undocumented)
- options of "git-archive" and "git-reflog".
- * "make clean" no longer deletes the configure script that ships
- with the git tarball, making multiple architecture builds easier.
- * "git-remote show origin" spewed a warning message from Perl
- when no remote is defined for the current branch via
- branch.<name>.remote configuration settings.
- * Building with NO_PERL_MAKEMAKER excessively rebuilt contents
- of perl/ subdirectory by rewriting perl.mak.
- * http.sslVerify configuration settings were not used in scripted
- Porcelains.
- * "git-add" leaked a bit of memory while scanning for files to add.
- * A few workarounds to squelch false warnings from recent gcc have
- been added.
- * "git-send-pack $remote frotz" segfaulted when there is nothing
- named 'frotz' on the local end.
- * "git-rebase --interactive" did not handle its "--strategy" option
- properly.
- GIT v1.5.3.4 Release Notes
- ==========================
- Fixes since v1.5.3.3
- --------------------
- * Change to "git-ls-files" in v1.5.3.3 that was introduced to support
- partial commit of removal better had a segfaulting bug, which was
- diagnosed and fixed by Keith and Carl.
- * Performance improvements for rename detection has been backported
- from the 'master' branch.
- * "git-for-each-ref --format='%(numparent)'" was not working
- correctly at all, and --format='%(parent)' was not working for
- merge commits.
- * Sample "post-receive-hook" incorrectly sent out push
- notification e-mails marked as "From: " the committer of the
- commit that happened to be at the tip of the branch that was
- pushed, not from the person who pushed.
- * "git-remote" did not exit non-zero status upon error.
- * "git-add -i" did not respond very well to EOF from tty nor
- bogus input.
- * "git-rebase -i" squash subcommand incorrectly made the
- author of later commit the author of resulting commit,
- instead of taking from the first one in the squashed series.
- * "git-stash apply --index" was not documented.
- * autoconfiguration learned that "ar" command is found as "gas" on
- some systems.
- GIT v1.5.3.3 Release Notes
- ==========================
- Fixes since v1.5.3.2
- --------------------
- * git-quiltimport did not like it when a patch described in the
- series file does not exist.
- * p4 importer missed executable bit in some cases.
- * The default shell on some FreeBSD did not execute the
- argument parsing code correctly and made git unusable.
- * git-svn incorrectly spawned pager even when the user
- explicitly asked not to.
- * sample post-receive hook overquoted the envelope sender
- value.
- * git-am got confused when the patch contained a change that is
- only about type and not contents.
- * git-mergetool did not show our and their version of the
- conflicted file when started from a subdirectory of the
- project.
- * git-mergetool did not pass correct options when invoking diff3.
- * git-log sometimes invoked underlying "diff" machinery
- unnecessarily.
- GIT v1.5.3.2 Release Notes
- ==========================
- Fixes since v1.5.3.1
- --------------------
- * git-push sent thin packs by default, which was not good for
- the public distribution server (no point in saving transfer
- while pushing; no point in making the resulting pack less
- optimum).
- * git-svn sometimes terminated with "Malformed network data" when
- talking over svn:// protocol.
- * git-send-email re-issued the same message-id about 10% of the
- time if you fired off 30 messages within a single second.
- * git-stash was not terminating the log message of commits it
- internally creates with LF.
- * git-apply failed to check the size of the patch hunk when its
- beginning part matched the remainder of the preimage exactly,
- even though the preimage recorded in the hunk was much larger
- (therefore the patch should not have applied), leading to a
- segfault.
- * "git rm foo && git commit foo" complained that 'foo' needs to
- be added first, instead of committing the removal, which was a
- nonsense.
- * git grep -c said "/dev/null: 0".
- * git-add -u failed to recognize a blob whose type changed
- between the index and the work tree.
- * The limit to rename detection has been tightened a lot to
- reduce performance problems with a huge change.
- * cvsimport and svnimport barfed when the input tried to move
- a tag.
- * "git apply -pN" did not chop the right number of directories.
- * "git svnimport" did not like SVN tags with funny characters in them.
- * git-gui 0.8.3, with assorted fixes, including:
- - font-chooser on X11 was unusable with large number of fonts;
- - a diff that contained a deleted symlink made it barf;
- - an untracked symbolic link to a directory made it fart;
- - a file with % in its name made it vomit;
- Documentation updates
- ---------------------
- User manual has been somewhat restructured. I think the new
- organization is much easier to read.
- GIT v1.5.3.1 Release Notes
- ==========================
- Fixes since v1.5.3
- ------------------
- This is solely to fix the generated RPM's dependencies. We used
- to have git-p4 package but we do not anymore. As suggested on
- the mailing list, this release makes git-core "Obsolete" git-p4,
- so that yum update would not complain.
- GIT v1.5.3 Release Notes
- ========================
- Updates since v1.5.2
- --------------------
- * The commit walkers other than http are officially deprecated,
- but still supported for now.
- * The submodule support has Porcelain layer.
- Note that the current submodule support is minimal and this is
- deliberately so. A design decision we made is that operations
- at the supermodule level do not recurse into submodules by
- default. The expectation is that later we would add a
- mechanism to tell git which submodules the user is interested
- in, and this information might be used to determine the
- recursive behaviour of certain commands (e.g. "git checkout"
- and "git diff"), but currently we haven't agreed on what that
- mechanism should look like. Therefore, if you use submodules,
- you would probably need "git submodule update" on the
- submodules you care about after running a "git checkout" at
- the supermodule level.
- * There are a handful pack-objects changes to help you cope better
- with repositories with pathologically large blobs in them.
- * For people who need to import from Perforce, a front-end for
- fast-import is in contrib/fast-import/.
- * Comes with git-gui 0.8.2.
- * Comes with updated gitk.
- * New commands and options.
- - "git log --date=<format>" can use more formats: iso8601, rfc2822.
- - The hunk header output from "git diff" family can be customized
- with the attributes mechanism. See gitattributes(5) for details.
- - "git stash" allows you to quickly save away your work in
- progress and replay it later on an updated state.
- - "git rebase" learned an "interactive" mode that let you
- pick and reorder which commits to rebuild.
- - "git fsck" can save its findings in $GIT_DIR/lost-found, without a
- separate invocation of "git lost-found" command. The blobs stored by
- lost-found are stored in plain format to allow you to grep in them.
- - $GIT_WORK_TREE environment variable can be used together with
- $GIT_DIR to work in a subdirectory of a working tree that is
- not located at "$GIT_DIR/..".
- - Giving "--file=<file>" option to "git config" is the same as
- running the command with GIT_CONFIG=<file> environment.
- - "git log" learned a new option "--follow", to follow
- renaming history of a single file.
- - "git filter-branch" lets you rewrite the revision history of
- specified branches. You can specify a number of filters to
- modify the commits, files and trees.
- - "git cvsserver" learned new options (--base-path, --export-all,
- --strict-paths) inspired by "git daemon".
- - "git daemon --base-path-relaxed" can help migrating a repository URL
- that did not use to use --base-path to use --base-path.
- - "git commit" can use "-t templatefile" option and commit.template
- configuration variable to prime the commit message given to you in the
- editor.
- - "git submodule" command helps you manage the projects from
- the superproject that contain them.
- - In addition to core.compression configuration option,
- core.loosecompression and pack.compression options can
- independently tweak zlib compression levels used for loose
- and packed objects.
- - "git ls-tree -l" shows size of blobs pointed at by the
- tree entries, similar to "/bin/ls -l".
- - "git rev-list" learned --regexp-ignore-case and
- --extended-regexp options to tweak its matching logic used
- for --grep filtering.
- - "git describe --contains" is a handier way to call more
- obscure command "git name-rev --tags".
- - "git gc --aggressive" tells the command to spend more cycles
- to optimize the repository harder.
- - "git repack" learned a "window-memory" limit which
- dynamically reduces the window size to stay within the
- specified memory usage.
- - "git repack" can be told to split resulting packs to avoid
- exceeding limit specified with "--max-pack-size".
- - "git fsck" gained --verbose option. This is really really
- verbose but it might help you identify exact commit that is
- corrupt in your repository.
- - "git format-patch" learned --numbered-files option. This
- may be useful for MH users.
- - "git format-patch" learned format.subjectprefix configuration
- variable, which serves the same purpose as "--subject-prefix"
- option.
- - "git tag -n -l" shows tag annotations while listing tags.
- - "git cvsimport" can optionally use the separate-remote layout.
- - "git blame" can be told to see through commits that change
- whitespaces and indentation levels with "-w" option.
- - "git send-email" can be told not to thread the messages when
- sending out more than one patches.
- - "git send-email" can also be told how to find whom to cc the
- message to for each message via --cc-cmd.
- - "git config" learned NUL terminated output format via -z to
- help scripts.
- - "git add" learned "--refresh <paths>..." option to selectively refresh
- the cached stat information.
- - "git init -q" makes the command quieter.
- - "git -p command" now has a cousin of opposite sex, "git --no-pager
- command".
- * Updated behavior of existing commands.
- - "gitweb" can offer multiple snapshot formats.
- ***NOTE*** Unfortunately, this changes the format of the
- $feature{snapshot}{default} entry in the per-site
- configuration file 'gitweb_config.perl'. It used to be a
- three-element tuple that describe a single format; with the
- new configuration item format, you only have to say the name
- of the format ('tgz', 'tbz2' or 'zip'). Please update the
- your configuration file accordingly.
- - "git clone" uses -l (hardlink files under .git) by default when
- cloning locally.
- - URL used for "git clone" and friends can specify nonstandard SSH port
- by using ssh://host:port/path/to/repo syntax.
- - "git bundle create" can now create a bundle without negative refs,
- i.e. "everything since the beginning up to certain points".
- - "git diff" (but not the plumbing level "git diff-tree") now
- recursively descends into trees by default.
- - "git diff" does not show differences that come only from
- stat-dirtiness in the form of "diff --git" header anymore.
- It runs "update-index --refresh" silently as needed.
- - "git tag -l" used to match tags by globbing its parameter as if it
- has wildcard '*' on both ends, which made "git tag -l gui" to match
- tag 'gitgui-0.7.0'; this was very annoying. You now have to add
- asterisk on the sides you want to wildcard yourself.
- - The editor to use with many interactive commands can be
- overridden with GIT_EDITOR environment variable, or if it
- does not exist, with core.editor configuration variable. As
- before, if you have neither, environment variables VISUAL
- and EDITOR are consulted in this order, and then finally we
- fall back on "vi".
- - "git rm --cached" does not complain when removing a newly
- added file from the index anymore.
- - Options to "git log" to affect how --grep/--author options look for
- given strings now have shorter abbreviations. -i is for ignore case,
- and -E is for extended regexp.
- - "git log" learned --log-size to show the number of bytes in
- the log message part of the output to help qgit.
- - "git log --name-status" does not require you to give "-r" anymore.
- As a general rule, Porcelain commands should recurse when showing
- diff.
- - "git format-patch --root A" can be used to format everything
- since the beginning up to A. This was supported with
- "git format-patch --root A A" for a long time, but was not
- properly documented.
- - "git svn dcommit" retains local merge information.
- - "git svnimport" allows an empty string to be specified as the
- trunk/ directory. This is necessary to suck data from a SVN
- repository that doe not have trunk/ branches/ and tags/ organization
- at all.
- - "git config" to set values also honors type flags like --bool
- and --int.
- - core.quotepath configuration can be used to make textual git
- output to emit most of the characters in the path literally.
- - "git mergetool" chooses its backend more wisely, taking
- notice of its environment such as use of X, Gnome/KDE, etc.
- - "gitweb" shows merge commits a lot nicer than before. The
- default view uses more compact --cc format, while the UI
- allows to choose normal diff with any parent.
- - snapshot files "gitweb" creates from a repository at
- $path/$project/.git are more useful. We use $project part
- in the filename, which we used to discard.
- - "git cvsimport" creates lightweight tags; there is no
- interesting information we can record in an annotated tag,
- and the handcrafted ones the old code created was not
- properly formed anyway.
- - "git push" pretends that you immediately fetched back from
- the remote by updating corresponding remote tracking
- branches if you have any.
- - The diffstat given after a merge (or a pull) honors the
- color.diff configuration.
- - "git commit --amend" is now compatible with various message source
- options such as -m/-C/-c/-F.
- - "git apply --whitespace=strip" removes blank lines added at
- the end of the file.
- - "git fetch" over git native protocols with "-v" option shows
- connection status, and the IP address of the other end, to
- help diagnosing problems.
- - We used to have core.legacyheaders configuration, when
- set to false, allowed git to write loose objects in a format
- that mimics the format used by objects stored in packs. It
- turns out that this was not so useful. Although we will
- continue to read objects written in that format, we do not
- honor that configuration anymore and create loose objects in
- the legacy/traditional format.
- - "--find-copies-harder" option to diff family can now be
- spelled as "-C -C" for brevity.
- - "git mailsplit" (hence "git am") can read from Maildir
- formatted mailboxes.
- - "git cvsserver" does not barf upon seeing "cvs login"
- request.
- - "pack-objects" honors "delta" attribute set in
- .gitattributes. It does not attempt to deltify blobs that
- come from paths with delta attribute set to false.
- - "new-workdir" script (in contrib) can now be used with a
- bare repository.
- - "git mergetool" learned to use gvimdiff.
- - "gitview" (in contrib) has a better blame interface.
- - "git log" and friends did not handle a commit log message
- that is larger than 16kB; they do now.
- - "--pretty=oneline" output format for "git log" and friends
- deals with "malformed" commit log messages that have more
- than one lines in the first paragraph better. We used to
- show the first line, cutting the title at mid-sentence; we
- concatenate them into a single line and treat the result as
- "oneline".
- - "git p4import" has been demoted to contrib status. For
- a superior option, checkout the "git p4" front end to
- "git fast-import" (also in contrib). The man page and p4
- rpm have been removed as well.
- - "git mailinfo" (hence "am") now tries to see if the message
- is in utf-8 first, instead of assuming iso-8859-1, if
- incoming e-mail does not say what encoding it is in.
- * Builds
- - old-style function definitions (most notably, a function
- without parameter defined with "func()", not "func(void)")
- have been eradicated.
- - "git tag" and "git verify-tag" have been rewritten in C.
- * Performance Tweaks
- - "git pack-objects" avoids re-deltification cost by caching
- small enough delta results it creates while looking for the
- best delta candidates.
- - "git pack-objects" learned a new heuristic to prefer delta
- that is shallower in depth over the smallest delta
- possible. This improves both overall packfile access
- performance and packfile density.
- - diff-delta code that is used for packing has been improved
- to work better on big files.
- - when there are more than one pack files in the repository,
- the runtime used to try finding an object always from the
- newest packfile; it now tries the same packfile as we found
- the object requested the last time, which exploits the
- locality of references.
- - verifying pack contents done by "git fsck --full" got boost
- by carefully choosing the order to verify objects in them.
- - "git read-tree -m" to read into an already populated index
- has been optimized vastly. The effect of this can be seen
- when switching branches that have differences in only a
- handful paths.
- - "git add paths..." and "git commit paths..." has also been
- heavily optimized.
- Fixes since v1.5.2
- ------------------
- All of the fixes in v1.5.2 maintenance series are included in
- this release, unless otherwise noted.
- * Bugfixes
- - "gitweb" had trouble handling non UTF-8 text with older
- Encode.pm Perl module.
- - "git svn" misparsed the data from the commits in the repository when
- the user had "color.diff = true" in the configuration. This has been
- fixed.
- - There was a case where "git svn dcommit" clobbered changes made on the
- SVN side while committing multiple changes.
- - "git-write-tree" had a bad interaction with racy-git avoidance and
- gitattributes mechanisms.
- - "git --bare command" overrode existing GIT_DIR setting and always
- made it treat the current working directory as GIT_DIR.
- - "git ls-files --error-unmatch" does not complain if you give the
- same path pattern twice by mistake.
- - "git init" autodetected core.filemode but not core.symlinks, which
- made a new directory created automatically by "git clone" cumbersome
- to use on filesystems that require these configurations to be set.
- - "git log" family of commands behaved differently when run as "git
- log" (no pathspec) and as "git log --" (again, no pathspec). This
- inconsistency was introduced somewhere in v1.3.0 series but now has
- been corrected.
- - "git rebase -m" incorrectly displayed commits that were skipped.
- GIT v1.5.2.5 Release Notes
- ==========================
- Fixes since v1.5.2.4
- --------------------
- * Bugfixes
- - "git add -u" had a serious data corruption problem in one
- special case (when the changes to a subdirectory's files
- consist only deletion of files).
- - "git add -u <path>" did not work from a subdirectory.
- - "git apply" left an empty directory after all its files are
- renamed away.
- - "git $anycmd foo/bar", when there is a file 'foo' in the
- working tree, complained that "git $anycmd foo/bar --" form
- should be used to disambiguate between revs and files,
- which was completely bogus.
- - "git checkout-index" and other commands that checks out
- files to the work tree tried unlink(2) on directories,
- which is a sane thing to do on sane systems, but not on
- Solaris when you are root.
- * Documentation Fixes and Updates
- - A handful documentation fixes.
- GIT v1.5.2.4 Release Notes
- ==========================
- Fixes since v1.5.2.3
- --------------------
- * Bugfixes
- - "git-gui" bugfixes, including a handful fixes to run it
- better on Cygwin/MSYS.
- - "git checkout" failed to switch back and forth between
- branches, one of which has "frotz -> xyzzy" symlink and
- file "xyzzy/filfre", while the other one has a file
- "frotz/filfre".
- - "git prune" used to segfault upon seeing a commit that is
- referred to by a tree object (aka "subproject").
- - "git diff --name-status --no-index" mishandled an added file.
- - "git apply --reverse --whitespace=warn" still complained
- about whitespaces that a forward application would have
- introduced.
- * Documentation Fixes and Updates
- - A handful documentation updates.
- GIT v1.5.2.3 Release Notes
- ==========================
- Fixes since v1.5.2.2
- --------------------
- * Bugfixes
- - Version 2 pack index format was introduced in version 1.5.2
- to support pack files that has offset that cannot be
- represented in 32-bit. The runtime code to validate such
- an index mishandled such an index for an empty pack.
- - Commit walkers (most notably, fetch over http protocol)
- tried to traverse commit objects contained in trees (aka
- subproject); they shouldn't.
- - A build option NO_R_TO_GCC_LINKER was not explained in Makefile
- comment correctly.
- * Documentation Fixes and Updates
- - git-config --regexp was not documented properly.
- - git-repack -a was not documented properly.
- - git-remote -n was not documented properly.
- GIT v1.5.2.2 Release Notes
- ==========================
- Fixes since v1.5.2.1
- --------------------
- * Usability fix
- - git-gui is shipped with its updated blame interface. It is
- rumored that the older one was not just unusable but was
- active health hazard, but this one is actually pretty.
- Please see for yourself.
- * Bugfixes
- - "git checkout fubar" was utterly confused when there is a
- branch fubar and a tag fubar at the same time. It correctly
- checks out the branch fubar now.
- - "git clone /path/foo" to clone a local /path/foo.git
- repository left an incorrect configuration.
- - "git send-email" correctly unquotes RFC 2047 quoted names in
- the patch-email before using their values.
- - We did not accept number of seconds since epoch older than
- year 2000 as a valid timestamp. We now interpret positive
- integers more than 8 digits as such, which allows us to
- express timestamps more recent than March 1973.
- - git-cvsimport did not work when you have GIT_DIR to point
- your repository at a nonstandard location.
- - Some systems (notably, Solaris) lack hstrerror() to make
- h_errno human readable; prepare a replacement
- implementation.
- - .gitignore file listed git-core.spec but what we generate is
- git.spec, and nobody noticed for a long time.
- - "git-merge-recursive" does not try to run file level merge
- on binary files.
- - "git-branch --track" did not create tracking configuration
- correctly when the branch name had slash in it.
- - The email address of the user specified with user.email
- configuration was overridden by EMAIL environment variable.
- - The tree parser did not warn about tree entries with
- nonsense file modes, and assumed they must be blobs.
- - "git log -z" without any other request to generate diff still
- invoked the diff machinery, wasting cycles.
- * Documentation
- - Many updates to fix stale or missing documentation.
- - Although our documentation was primarily meant to be formatted
- with AsciiDoc7, formatting with AsciiDoc8 is supported better.
- GIT v1.5.2.1 Release Notes
- ==========================
- Fixes since v1.5.2
- ------------------
- * Bugfixes
- - Temporary files that are used when invoking external diff
- programs did not tolerate a long TMPDIR.
- - git-daemon did not notice when it could not write into its
- pid file.
- - git-status did not honor core.excludesFile configuration like
- git-add did.
- - git-annotate did not work from a subdirectory while
- git-blame did.
- - git-cvsserver should have disabled access to a repository
- with "gitcvs.pserver.enabled = false" set even when
- "gitcvs.enabled = true" was set at the same time. It
- didn't.
- - git-cvsimport did not work correctly in a repository with
- its branch heads were packed with pack-refs.
- - ident unexpansion to squash "$Id: xxx $" that is in the
- repository copy removed incorrect number of bytes.
- - git-svn misbehaved when the subversion repository did not
- provide MD5 checksums for files.
- - git rebase (and git am) misbehaved on commits that have '\n'
- (literally backslash and en, not a linefeed) in the title.
- - code to decode base85 used in binary patches had one error
- return codepath wrong.
- - RFC2047 Q encoding output by git-format-patch used '_' for a
- space, which is not understood by some programs. It uses =20
- which is safer.
- - git-fastimport --import-marks was broken; fixed.
- - A lot of documentation updates, clarifications and fixes.
- --
- exec >/var/tmp/1
- O=v1.5.2-65-g996e2d6
- echo O=`git describe refs/heads/maint`
- git shortlog --no-merges $O..refs/heads/maint
- GIT v1.5.2 Release Notes
- ========================
- Updates since v1.5.1
- --------------------
- * Plumbing level superproject support.
- You can include a subdirectory that has an independent git
- repository in your index and tree objects of your project
- ("superproject"). This plumbing (i.e. "core") level
- superproject support explicitly excludes recursive behaviour.
- The "subproject" entries in the index and trees of a superproject
- are incompatible with older versions of git. Experimenting with
- the plumbing level support is encouraged, but be warned that
- unless everybody in your project updates to this release or
- later, using this feature would make your project
- inaccessible by people with older versions of git.
- * Plumbing level gitattributes support.
- The gitattributes mechanism allows you to add 'attributes' to
- paths in your project, and affect the way certain git
- operations work. Currently you can influence if a path is
- considered a binary or text (the former would be treated by
- 'git diff' not to produce textual output; the latter can go
- through the line endings conversion process in repositories
- with core.autocrlf set), expand and unexpand '$Id$' keyword
- with blob object name, specify a custom 3-way merge driver,
- and specify a custom diff driver. You can also apply
- arbitrary filter to contents on check-in/check-out codepath
- but this feature is an extremely sharp-edged razor and needs
- to be handled with caution (do not use it unless you
- understand the earlier mailing list discussion on keyword
- expansion). These conversions apply when checking files in
- or out, and exporting via git-archive.
- * The packfile format now optionally supports 64-bit index.
- This release supports the "version 2" format of the .idx
- file. This is automatically enabled when a huge packfile
- needs more than 32-bit to express offsets of objects in the
- pack.
- * Comes with an updated git-gui 0.7.1
- * Updated gitweb:
- - can show combined diff for merges;
- - uses font size of user's preference, not hardcoded in pixels;
- - can now 'grep';
- * New commands and options.
- - "git bisect start" can optionally take a single bad commit and
- zero or more good commits on the command line.
- - "git shortlog" can optionally be told to wrap its output.
- - "subtree" merge strategy allows another project to be merged in as
- your subdirectory.
- - "git format-patch" learned a new --subject-prefix=<string>
- option, to override the built-in "[PATCH]".
- - "git add -u" is a quick way to do the first stage of "git
- commit -a" (i.e. update the index to match the working
- tree); it obviously does not make a commit.
- - "git clean" honors a new configuration, "clean.requireforce". When
- set to true, this makes "git clean" a no-op, preventing you
- from losing files by typing "git clean" when you meant to
- say "make clean". You can still say "git clean -f" to
- override this.
- - "git log" family of commands learned --date={local,relative,default}
- option. --date=relative is synonym to the --relative-date.
- --date=local gives the timestamp in local timezone.
- * Updated behavior of existing commands.
- - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
- but $EMAIL is set, the latter is used as a substitute.
- - "git diff --stat" shows size of preimage and postimage blobs
- for binary contents. Earlier it only said "Bin".
- - "git lost-found" shows stuff that are unreachable except
- from reflogs.
- - "git checkout branch^0" now detaches HEAD at the tip commit
- on the named branch, instead of just switching to the
- branch (use "git checkout branch" to switch to the branch,
- as before).
- - "git bisect next" can be used after giving only a bad commit
- without giving a good one (this starts bisection half-way to
- the root commit). We used to refuse to operate without a
- good and a bad commit.
- - "git push", when pushing into more than one repository, does
- not stop at the first error.
- - "git archive" does not insist you to give --format parameter
- anymore; it defaults to "tar".
- - "git cvsserver" can use backends other than sqlite.
- - "gitview" (in contrib/ section) learned to better support
- "git-annotate".
- - "git diff $commit1:$path2 $commit2:$path2" can now report
- mode changes between the two blobs.
- - Local "git fetch" from a repository whose object store is
- one of the alternates (e.g. fetching from the origin in a
- repository created with "git clone -l -s") avoids
- downloading objects unnecessarily.
- - "git blame" uses .mailmap to canonicalize the author name
- just like "git shortlog" does.
- - "git pack-objects" pays attention to pack.depth
- configuration variable.
- - "git cherry-pick" and "git revert" does not use .msg file in
- the working tree to prepare commit message; instead it uses
- $GIT_DIR/MERGE_MSG as other commands do.
- * Builds
- - git-p4import has never been installed; now there is an
- installation option to do so.
- - gitk and git-gui can be configured out.
- - Generated documentation pages automatically get version
- information from GIT_VERSION.
- - Parallel build with "make -j" descending into subdirectory
- was fixed.
- * Performance Tweaks
- - Optimized "git-rev-list --bisect" (hence "git-bisect").
- - Optimized "git-add $path" in a large directory, most of
- whose contents are ignored.
- - Optimized "git-diff-tree" for reduced memory footprint.
- - The recursive merge strategy updated a worktree file that
- was changed identically in two branches, when one of them
- renamed it. We do not do that when there is no rename, so
- match that behaviour. This avoids excessive rebuilds.
- - The default pack depth has been increased to 50, as the
- recent addition of delta_base_cache makes deeper delta chains
- much less expensive to access. Depending on the project, it was
- reported that this reduces the resulting pack file by 10%
- or so.
- Fixes since v1.5.1
- ------------------
- All of the fixes in v1.5.1 maintenance series are included in
- this release, unless otherwise noted.
- * Bugfixes
- - Switching branches with "git checkout" refused to work when
- a path changes from a file to a directory between the
- current branch and the new branch, in order not to lose
- possible local changes in the directory that is being turned
- into a file with the switch. We now allow such a branch
- switch after making sure that there is no locally modified
- file nor un-ignored file in the directory. This has not
- been backported to 1.5.1.x series, as it is rather an
- intrusive change.
- - Merging branches that have a file in one and a directory in
- another at the same path used to get quite confused. We
- handle such a case a bit more carefully, even though that is
- still left as a conflict for the user to sort out. This
- will not be backported to 1.5.1.x series, as it is rather an
- intrusive change.
- - git-fetch had trouble with a remote with insanely large number
- of refs.
- - "git clean -d -X" now does not remove non-excluded directories.
- - rebasing (without -m) a series that changes a symlink to a directory
- in the middle of a path confused git-apply greatly and refused to
- operate.
- GIT v1.5.1.6 Release Notes
- ==========================
- Fixes since v1.5.1.4
- --------------------
- * Bugfixes
- - git-send-email did not understand aliases file for mutt, which
- allows leading whitespaces.
- - git-format-patch emitted Content-Type and Content-Transfer-Encoding
- headers for non ASCII contents, but failed to add MIME-Version.
- - git-name-rev had a buffer overrun with a deep history.
- - contributed script import-tars did not get the directory in
- tar archives interpreted correctly.
- - git-svn was reported to segfault for many people on list and
- #git; hopefully this has been fixed.
- - git-svn also had a bug to crash svnserve by sending a bad
- sequence of requests.
- - "git-svn clone" does not try to minimize the URL
- (i.e. connect to higher level hierarchy) by default, as this
- can prevent clone to fail if only part of the repository
- (e.g. 'trunk') is open to public.
- - "git checkout branch^0" did not detach the head when you are
- already on 'branch'; backported the fix from the 'master'.
- - "git-config section.var" did not correctly work when
- existing configuration file had both [section] and [section "name"]
- next to each other.
- - "git clone ../other-directory" was fooled if the current
- directory $PWD points at is a symbolic link.
- - (build) tree_entry_extract() function was both static inline
- and extern, which caused trouble compiling with Forte12
- compilers on Sun.
- - Many many documentation fixes and updates.
- GIT v1.5.1.5 Release Notes
- ==========================
- Fixes since v1.5.1.4
- --------------------
- * Bugfixes
- - git-send-email did not understand aliases file for mutt, which
- allows leading whitespaces.
- - git-format-patch emitted Content-Type and Content-Transfer-Encoding
- headers for non ASCII contents, but failed to add MIME-Version.
- - git-name-rev had a buffer overrun with a deep history.
- - contributed script import-tars did not get the directory in
- tar archives interpreted correctly.
- - git-svn was reported to segfault for many people on list and
- #git; hopefully this has been fixed.
- - "git-svn clone" does not try to minimize the URL
- (i.e. connect to higher level hierarchy) by default, as this
- can prevent clone to fail if only part of the repository
- (e.g. 'trunk') is open to public.
- - "git checkout branch^0" did not detach the head when you are
- already on 'branch'; backported the fix from the 'master'.
- - "git-config section.var" did not correctly work when
- existing configuration file had both [section] and [section "name"]
- next to each other.
- - "git clone ../other-directory" was fooled if the current
- directory $PWD points at is a symbolic link.
- - (build) tree_entry_extract() function was both static inline
- and extern, which caused trouble compiling with Forte12
- compilers on Sun.
- - Many many documentation fixes and updates.
- GIT v1.5.1.4 Release Notes
- ==========================
- Fixes since v1.5.1.3
- --------------------
- * Bugfixes
- - "git-http-fetch" did not work around a bug in libcurl
- earlier than 7.16 (curl_multi_remove_handle() was broken).
- - "git cvsserver" handles a file that was once removed and
- then added again correctly.
- - import-tars script (in contrib/) handles GNU tar archives
- that contain pathnames longer than 100 bytes (long-link
- extension) correctly.
- - xdelta test program did not build correctly.
- - gitweb sometimes tried incorrectly to apply function to
- decode utf8 twice, resulting in corrupt output.
- - "git blame -C" mishandled text at the end of a group of
- lines.
- - "git log/rev-list --boundary" did not produce output
- correctly without --left-right option.
- - Many documentation updates.
- GIT v1.5.1.3 Release Notes
- ==========================
- Fixes since v1.5.1.2
- --------------------
- * Bugfixes
- - git-add tried to optimize by finding common leading
- directories across its arguments but botched, causing very
- confused behaviour.
- - unofficial rpm.spec file shipped with git was letting
- ETC_GITCONFIG set to /usr/etc/gitconfig. Tweak the official
- Makefile to make it harder for distro people to make the
- same mistake, by setting the variable to /etc/gitconfig if
- prefix is set to /usr.
- - git-svn inconsistently stripped away username from the URL
- only when svnsync_props was in use.
- - git-svn got confused when handling symlinks on Mac OS.
- - git-send-email was not quoting recipient names that have
- period '.' in them. Also it did not allow overriding
- envelope sender, which made it impossible to send patches to
- certain subscriber-only lists.
- - built-in write_tree() routine had a sequence that renamed a
- file that is still open, which some systems did not like.
- - when memory is very tight, sliding mmap code to read
- packfiles incorrectly closed the fd that was still being
- used to read the pack.
- - import-tars contributed front-end for fastimport was passing
- wrong directory modes without checking.
- - git-fastimport trusted its input too much and allowed to
- create corrupt tree objects with entries without a name.
- - git-fetch needlessly barfed when too long reflog action
- description was given by the caller.
- Also contains various documentation updates.
- GIT v1.5.1.2 Release Notes
- ==========================
- Fixes since v1.5.1.1
- --------------------
- * Bugfixes
- - "git clone" over http from a repository that has lost the
- loose refs by running "git pack-refs" were broken (a code to
- deal with this was added to "git fetch" in v1.5.0, but it
- was missing from "git clone").
- - "git diff a/ b/" incorrectly fell in "diff between two
- filesystem objects" codepath, when the user most likely
- wanted to limit the extent of output to two tracked
- directories.
- - git-quiltimport had the same bug as we fixed for
- git-applymbox in v1.5.1.1 -- it gave an alarming "did not
- have any patch" message (but did not actually fail and was
- harmless).
- - various git-svn fixes.
- - Sample update hook incorrectly always refused requests to
- delete branches through push.
- - git-blame on a very long working tree path had buffer
- overrun problem.
- - git-apply did not like to be fed two patches in a row that created
- and then modified the same file.
- - git-svn was confused when a non-project was stored directly under
- trunk/, branches/ and tags/.
- - git-svn wants the Error.pm module that was at least as new
- as what we ship as part of git; install ours in our private
- installation location if the one on the system is older.
- - An earlier update to command line integer parameter parser was
- botched and made 'update-index --cacheinfo' completely useless.
- * Documentation updates
- - Various documentation updates from J. Bruce Fields, Frank
- Lichtenheld, Alex Riesen and others. Andrew Ruder started a
- war on undocumented options.
- GIT v1.5.1.1 Release Notes
- ==========================
- Fixes since v1.5.1
- ------------------
- * Documentation updates
- - The --left-right option of rev-list and friends is documented.
- - The documentation for cvsimport has been majorly improved.
- - "git-show-ref --exclude-existing" was documented.
- * Bugfixes
- - The implementation of -p option in "git cvsexportcommit" had
- the meaning of -C (context reduction) option wrong, and
- loosened the context requirements when it was told to be
- strict.
- - "git cvsserver" did not behave like the real cvsserver when
- client side removed a file from the working tree without
- doing anything else on the path. In such a case, it should
- restore it from the checked out revision.
- - "git fsck" issued an alarming error message on detached
- HEAD. It is not an error since at least 1.5.0.
- - "git send-email" produced of References header of unbounded length;
- fixed this with line-folding.
- - "git archive" to download from remote site should not
- require you to be in a git repository, but it incorrectly
- did.
- - "git apply" ignored -p<n> for "diff --git" formatted
- patches.
- - "git rerere" recorded a conflict that had one side empty
- (the other side adds) incorrectly; this made merging in the
- other direction fail to use previously recorded resolution.
- - t4200 test was broken where "wc -l" pads its output with
- spaces.
- - "git branch -m old new" to rename branch did not work
- without a configuration file in ".git/config".
- - The sample hook for notification e-mail was misnamed.
- - gitweb did not show type-changing patch correctly in the
- blobdiff view.
- - git-svn did not error out with incorrect command line options.
- - git-svn fell into an infinite loop when insanely long commit
- message was found.
- - git-svn dcommit and rebase was confused by patches that were
- merged from another branch that is managed by git-svn.
- - git-svn used to get confused when globbing remote branch/tag
- spec (e.g. "branches = proj/branches/*:refs/remotes/origin/*")
- is used and there was a plain file that matched the glob.
- GIT v1.5.1 Release Notes
- ========================
- Updates since v1.5.0
- --------------------
- * Deprecated commands and options.
- - git-diff-stages and git-resolve have been removed.
- * New commands and options.
- - "git log" and friends take --reverse, which instructs them
- to give their output in the order opposite from their usual.
- They typically output from new to old, but with this option
- their output would read from old to new. "git shortlog"
- usually lists older commits first, but with this option,
- they are shown from new to old.
- - "git log --pretty=format:<string>" to allow more flexible
- custom log output.
- - "git diff" learned --ignore-space-at-eol. This is a weaker
- form of --ignore-space-change.
- - "git diff --no-index pathA pathB" can be used as diff
- replacement with git specific enhancements.
- - "git diff --no-index" can read from '-' (standard input).
- - "git diff" also learned --exit-code to exit with non-zero
- status when it found differences. In the future we might
- want to make this the default but that would be a rather big
- backward incompatible change; it will stay as an option for
- now.
- - "git diff --quiet" is --exit-code with output turned off,
- meant for scripted use to quickly determine if there is any
- tree-level difference.
- - Textual patch generation with "git diff" without -w/-b
- option has been significantly optimized. "git blame" got
- faster because of the same change.
- - "git log" and "git rev-list" has been optimized
- significantly when they are used with pathspecs.
- - "git branch --track" can be used to set up configuration
- variables to help it easier to base your work on branches
- you track from a remote site.
- - "git format-patch --attach" now emits attachments. Use
- --inline to get an inlined multipart/mixed.
- - "git name-rev" learned --refs=<pattern>, to limit the tags
- used for naming the given revisions only to the ones
- matching the given pattern.
- - "git remote update" is to run "git fetch" for defined remotes
- to update tracking branches.
- - "git cvsimport" can now take '-d' to talk with a CVS
- repository different from what are recorded in CVS/Root
- (overriding it with environment CVSROOT does not work).
- - "git bundle" can help sneaker-netting your changes between
- repositories.
- - "git mergetool" can help 3-way file-level conflict
- resolution with your favorite graphical merge tools.
- - A new configuration "core.symlinks" can be used to disable
- symlinks on filesystems that do not support them; they are
- checked out as regular files instead.
- - You can name a commit object with its first line of the
- message. The syntax to use is ':/message text'. E.g.
- $ git show ":/object name: introduce ':/<oneline prefix>' notation"
- means the same thing as:
- $ git show 28a4d940443806412effa246ecc7768a21553ec7
- - "git bisect" learned a new command "run" that takes a script
- to run after each revision is checked out to determine if it
- is good or bad, to automate the bisection process.
- - "git log" family learned a new traversal option --first-parent,
- which does what the name suggests.
- * Updated behavior of existing commands.
- - "git-merge-recursive" used to barf when there are more than
- one common ancestors for the merge, and merging them had a
- rename/rename conflict. This has been fixed.
- - "git fsck" does not barf on corrupt loose objects.
- - "git rm" does not remove newly added files without -f.
- - "git archimport" allows remapping when coming up with git
- branch names from arch names.
- - git-svn got almost a rewrite.
- - core.autocrlf configuration, when set to 'true', makes git
- to convert CRLF at the end of lines in text files to LF when
- reading from the filesystem, and convert in reverse when
- writing to the filesystem. The variable can be set to
- 'input', in which case the conversion happens only while
- reading from the filesystem but files are written out with
- LF at the end of lines. Currently, which paths to consider
- 'text' (i.e. be subjected to the autocrlf mechanism) is
- decided purely based on the contents, but the plan is to
- allow users to explicitly override this heuristic based on
- paths.
- - The behavior of 'git-apply', when run in a subdirectory,
- without --index nor --cached were inconsistent with that of
- the command with these options. This was fixed to match the
- behavior with --index. A patch that is meant to be applied
- with -p1 from the toplevel of the project tree can be
- applied with any custom -p<n> option. A patch that is not
- relative to the toplevel needs to be applied with -p<n>
- option with or without --index (or --cached).
- - "git diff" outputs a trailing HT when pathnames have embedded
- SP on +++/--- header lines, in order to help "GNU patch" to
- parse its output. "git apply" was already updated to accept
- this modified output format since ce74618d (Sep 22, 2006).
- - "git cvsserver" runs hooks/update and honors its exit status.
- - "git cvsserver" can be told to send everything with -kb.
- - "git diff --check" also honors the --color output option.
- - "git name-rev" used to stress the fact that a ref is a tag too
- much, by saying something like "v1.2.3^0~22". It now says
- "v1.2.3~22" in such a case (it still says "v1.2.3^0" if it does
- not talk about an ancestor of the commit that is tagged, which
- makes sense).
- - "git rev-list --boundary" now shows boundary markers for the
- commits omitted by --max-age and --max-count condition.
- - The configuration mechanism now reads $(prefix)/etc/gitconfig.
- - "git apply --verbose" shows what preimage lines were wanted
- when it couldn't find them.
- - "git status" in a read-only repository got a bit saner.
- - "git fetch" (hence "git clone" and "git pull") are less
- noisy when the output does not go to tty.
- - "git fetch" between repositories with many refs were slow
- even when there are not many changes that needed
- transferring. This has been sped up by partially rewriting
- the heaviest parts in C.
- - "git mailinfo" which splits an e-mail into a patch and the
- meta-information was rewritten, thanks to Don Zickus. It
- handles nested multipart better. The command was broken for
- a brief period on 'master' branch since 1.5.0 but the
- breakage is fixed now.
- - send-email learned configurable bcc and chain-reply-to.
- - "git remote show $remote" also talks about branches that
- would be pushed if you run "git push remote".
- - Using objects from packs is now seriously optimized by clever
- use of a cache. This should be most noticeable in git-log
- family of commands that involve reading many tree objects.
- In addition, traversing revisions while filtering changes
- with pathspecs is made faster by terminating the comparison
- between the trees as early as possible.
- * Hooks
- - The part to send out notification e-mails was removed from
- the sample update hook, as it was not an appropriate place
- to do so. The proper place to do this is the new post-receive
- hook. An example hook has been added to contrib/hooks/.
- * Others
- - git-revert, git-gc and git-cherry-pick are now built-ins.
- Fixes since v1.5.0
- ------------------
- These are all in v1.5.0.x series.
- * Documentation updates
- - Clarifications and corrections to 1.5.0 release notes.
- - The main documentation did not link to git-remote documentation.
- - Clarified introductory text of git-rebase documentation.
- - Converted remaining mentions of update-index on Porcelain
- documents to git-add/git-rm.
- - Some i18n.* configuration variables were incorrectly
- described as core.*; fixed.
- - added and clarified core.bare, core.legacyheaders configurations.
- - updated "git-clone --depth" documentation.
- - user-manual updates.
- - Options to 'git remote add' were described insufficiently.
- - Configuration format.suffix was not documented.
- - Other formatting and spelling fixes.
- - user-manual has better cross references.
- - gitweb installation/deployment procedure is now documented.
- * Bugfixes
- - git-upload-pack closes unused pipe ends; earlier this caused
- many zombies to hang around.
- - git-rerere was recording the contents of earlier hunks
- duplicated in later hunks. This prevented resolving the same
- conflict when performing the same merge the other way around.
- - git-add and git-update-index on a filesystem on which
- executable bits are unreliable incorrectly reused st_mode
- bits even when the path changed between symlink and regular
- file.
- - git-daemon marks the listening sockets with FD_CLOEXEC so
- that it won't be leaked into the children.
- - segfault from git-blame when the mandatory pathname
- parameter was missing was fixed; usage() message is given
- instead.
- - git-rev-list did not read $GIT_DIR/config file, which means
- that did not honor i18n.logoutputencoding correctly.
- - Automated merge conflict handling when changes to symbolic
- links conflicted were completely broken. The merge-resolve
- strategy created a regular file with conflict markers in it
- in place of the symbolic link. The default strategy,
- merge-recursive was even more broken. It removed the path
- that was pointed at by the symbolic link. Both of these
- problems have been fixed.
- - 'git diff maint master next' did not correctly give combined
- diff across three trees.
- - 'git fast-import' portability fix for Solaris.
- - 'git show-ref --verify' without arguments did not error out
- but segfaulted.
- - 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra
- slashes after a/ and b/.
- - 'git format-patch' produced too long filenames if the commit
- message had too long line at the beginning.
- - Running 'make all' and then without changing anything
- running 'make install' still rebuilt some files. This
- was inconvenient when building as yourself and then
- installing as root (especially problematic when the source
- directory is on NFS and root is mapped to nobody).
- - 'git-rerere' failed to deal with two unconflicted paths that
- sorted next to each other.
- - 'git-rerere' attempted to open(2) a symlink and failed if
- there was a conflict. Since a conflicting change to a
- symlink would not benefit from rerere anyway, the command
- now ignores conflicting changes to symlinks.
- - 'git-repack' did not like to pass more than 64 arguments
- internally to underlying 'rev-list' logic, which made it
- impossible to repack after accumulating many (small) packs
- in the repository.
- - 'git-diff' to review the combined diff during a conflicted
- merge were not reading the working tree version correctly
- when changes to a symbolic link conflicted. It should have
- read the data using readlink(2) but read from the regular
- file the symbolic link pointed at.
- - 'git-remote' did not like period in a remote's name.
- - 'git.el' honors the commit coding system from the configuration.
- - 'blameview' in contrib/ correctly digs deeper when a line is
- clicked.
- - 'http-push' correctly makes sure the remote side has leading
- path. Earlier it started in the middle of the path, and
- incorrectly.
- - 'git-merge' did not exit with non-zero status when the
- working tree was dirty and cannot fast forward. It does
- now.
- - 'cvsexportcommit' does not lose yet-to-be-used message file.
- - int-vs-size_t typefix when running combined diff on files
- over 2GB long.
- - 'git apply --whitespace=strip' should not touch unmodified
- lines.
- - 'git-mailinfo' choke when a logical header line was too long.
- - 'git show A..B' did not error out. Negative ref ("not A" in
- this example) does not make sense for the purpose of the
- command, so now it errors out.
- - 'git fmt-merge-msg --file' without file parameter did not
- correctly error out.
- - 'git archimport' barfed upon encountering a commit without
- summary.
- - 'git index-pack' did not protect itself from getting a short
- read out of pread(2).
- - 'git http-push' had a few buffer overruns.
- - Build dependency fixes to rebuild fetch.o when other headers
- change.
- - git.el does not add duplicate sign-off lines.
- - git-commit shows the full stat of the resulting commit, not
- just about the files in the current directory, when run from
- a subdirectory.
- - "git-checkout -m '@{8 hours ago}'" had a funny failure from
- eval; fixed.
- - git-merge (hence git-pull) did not refuse fast-forwarding
- when the working tree had local changes that would have
- conflicted with it.
- - a handful small fixes to gitweb.
- - build procedure for user-manual is fixed not to require locally
- installed stylesheets.
- - "git commit $paths" on paths whose earlier contents were
- already updated in the index were failing out.
- * Tweaks
- - sliding mmap() inefficiently mmaped the same region of a
- packfile with an access pattern that used objects in the
- reverse order. This has been made more efficient.
- GIT v1.5.0.7 Release Notes
- ==========================
- Fixes since v1.5.0.6
- --------------------
- * Bugfixes
- - git-upload-pack failed to close unused pipe ends, resulting
- in many zombies to hang around.
- - git-rerere was recording the contents of earlier hunks
- duplicated in later hunks. This prevented resolving the same
- conflict when performing the same merge the other way around.
- * Documentation
- - a few documentation fixes from Debian package maintainer.
- GIT v1.5.0.6 Release Notes
- ==========================
- Fixes since v1.5.0.5
- --------------------
- * Bugfixes
- - a handful small fixes to gitweb.
- - build procedure for user-manual is fixed not to require locally
- installed stylesheets.
- - "git commit $paths" on paths whose earlier contents were
- already updated in the index were failing out.
- * Documentation
- - user-manual has better cross references.
- - gitweb installation/deployment procedure is now documented.
- GIT v1.5.0.5 Release Notes
- ==========================
- Fixes since v1.5.0.3
- --------------------
- * Bugfixes
- - git-merge (hence git-pull) did not refuse fast-forwarding
- when the working tree had local changes that would have
- conflicted with it.
- - git.el does not add duplicate sign-off lines.
- - git-commit shows the full stat of the resulting commit, not
- just about the files in the current directory, when run from
- a subdirectory.
- - "git-checkout -m '@{8 hours ago}'" had a funny failure from
- eval; fixed.
- - git-gui updates.
- * Documentation updates
- * User manual updates
- GIT v1.5.0.3 Release Notes
- ==========================
- Fixes since v1.5.0.2
- --------------------
- * Bugfixes
- - 'git.el' honors the commit coding system from the configuration.
- - 'blameview' in contrib/ correctly digs deeper when a line is
- clicked.
- - 'http-push' correctly makes sure the remote side has leading
- path. Earlier it started in the middle of the path, and
- incorrectly.
- - 'git-merge' did not exit with non-zero status when the
- working tree was dirty and cannot fast forward. It does
- now.
- - 'cvsexportcommit' does not lose yet-to-be-used message file.
- - int-vs-size_t typefix when running combined diff on files
- over 2GB long.
- - 'git apply --whitespace=strip' should not touch unmodified
- lines.
- - 'git-mailinfo' choke when a logical header line was too long.
- - 'git show A..B' did not error out. Negative ref ("not A" in
- this example) does not make sense for the purpose of the
- command, so now it errors out.
- - 'git fmt-merge-msg --file' without file parameter did not
- correctly error out.
- - 'git archimport' barfed upon encountering a commit without
- summary.
- - 'git index-pack' did not protect itself from getting a short
- read out of pread(2).
- - 'git http-push' had a few buffer overruns.
- - Build dependency fixes to rebuild fetch.o when other headers
- change.
- * Documentation updates
- - user-manual updates.
- - Options to 'git remote add' were described insufficiently.
- - Configuration format.suffix was not documented.
- - Other formatting and spelling fixes.
- GIT v1.5.0.2 Release Notes
- ==========================
- Fixes since v1.5.0.1
- --------------------
- * Bugfixes
- - Automated merge conflict handling when changes to symbolic
- links conflicted were completely broken. The merge-resolve
- strategy created a regular file with conflict markers in it
- in place of the symbolic link. The default strategy,
- merge-recursive was even more broken. It removed the path
- that was pointed at by the symbolic link. Both of these
- problems have been fixed.
- - 'git diff maint master next' did not correctly give combined
- diff across three trees.
- - 'git fast-import' portability fix for Solaris.
- - 'git show-ref --verify' without arguments did not error out
- but segfaulted.
- - 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra
- slashes after a/ and b/.
- - 'git format-patch' produced too long filenames if the commit
- message had too long line at the beginning.
- - Running 'make all' and then without changing anything
- running 'make install' still rebuilt some files. This
- was inconvenient when building as yourself and then
- installing as root (especially problematic when the source
- directory is on NFS and root is mapped to nobody).
- - 'git-rerere' failed to deal with two unconflicted paths that
- sorted next to each other.
- - 'git-rerere' attempted to open(2) a symlink and failed if
- there was a conflict. Since a conflicting change to a
- symlink would not benefit from rerere anyway, the command
- now ignores conflicting changes to symlinks.
- - 'git-repack' did not like to pass more than 64 arguments
- internally to underlying 'rev-list' logic, which made it
- impossible to repack after accumulating many (small) packs
- in the repository.
- - 'git-diff' to review the combined diff during a conflicted
- merge were not reading the working tree version correctly
- when changes to a symbolic link conflicted. It should have
- read the data using readlink(2) but read from the regular
- file the symbolic link pointed at.
- - 'git-remote' did not like period in a remote's name.
- * Documentation updates
- - added and clarified core.bare, core.legacyheaders configurations.
- - updated "git-clone --depth" documentation.
- * Assorted git-gui fixes.
- GIT v1.5.0.1 Release Notes
- ==========================
- Fixes since v1.5.0
- ------------------
- * Documentation updates
- - Clarifications and corrections to 1.5.0 release notes.
- - The main documentation did not link to git-remote documentation.
- - Clarified introductory text of git-rebase documentation.
- - Converted remaining mentions of update-index on Porcelain
- documents to git-add/git-rm.
- - Some i18n.* configuration variables were incorrectly
- described as core.*; fixed.
- * Bugfixes
- - git-add and git-update-index on a filesystem on which
- executable bits are unreliable incorrectly reused st_mode
- bits even when the path changed between symlink and regular
- file.
- - git-daemon marks the listening sockets with FD_CLOEXEC so
- that it won't be leaked into the children.
- - segfault from git-blame when the mandatory pathname
- parameter was missing was fixed; usage() message is given
- instead.
- - git-rev-list did not read $GIT_DIR/config file, which means
- that did not honor i18n.logoutputencoding correctly.
- * Tweaks
- - sliding mmap() inefficiently mmaped the same region of a
- packfile with an access pattern that used objects in the
- reverse order. This has been made more efficient.
- GIT v1.5.0 Release Notes
- ========================
- Old news
- --------
- This section is for people who are upgrading from ancient
- versions of git. Although all of the changes in this section
- happened before the current v1.4.4 release, they are summarized
- here in the v1.5.0 release notes for people who skipped earlier
- versions.
- As of git v1.5.0 there are some optional features that changes
- the repository to allow data to be stored and transferred more
- efficiently. These features are not enabled by default, as they
- will make the repository unusable with older versions of git.
- Specifically, the available options are:
- - There is a configuration variable core.legacyheaders that
- changes the format of loose objects so that they are more
- efficient to pack and to send out of the repository over git
- native protocol, since v1.4.2. However, loose objects
- written in the new format cannot be read by git older than
- that version; people fetching from your repository using
- older clients over dumb transports (e.g. http) using older
- versions of git will also be affected.
- To let git use the new loose object format, you have to
- set core.legacyheaders to false.
- - Since v1.4.3, configuration repack.usedeltabaseoffset allows
- packfile to be created in more space efficient format, which
- cannot be read by git older than that version.
- To let git use the new format for packfiles, you have to
- set repack.usedeltabaseoffset to true.
- The above two new features are not enabled by default and you
- have to explicitly ask for them, because they make repositories
- unreadable by older versions of git, and in v1.5.0 we still do
- not enable them by default for the same reason. We will change
- this default probably 1 year after 1.4.2's release, when it is
- reasonable to expect everybody to have new enough version of
- git.
- - 'git pack-refs' appeared in v1.4.4; this command allows tags
- to be accessed much more efficiently than the traditional
- 'one-file-per-tag' format. Older git-native clients can
- still fetch from a repository that packed and pruned refs
- (the server side needs to run the up-to-date version of git),
- but older dumb transports cannot. Packing of refs is done by
- an explicit user action, either by use of "git pack-refs
- --prune" command or by use of "git gc" command.
- - 'git -p' to paginate anything -- many commands do pagination
- by default on a tty. Introduced between v1.4.1 and v1.4.2;
- this may surprise old timers.
- - 'git archive' superseded 'git tar-tree' in v1.4.3;
- - 'git cvsserver' was new invention in v1.3.0;
- - 'git repo-config', 'git grep', 'git rebase' and 'gitk' were
- seriously enhanced during v1.4.0 timeperiod.
- - 'gitweb' became part of git.git during v1.4.0 timeperiod and
- seriously modified since then.
- - reflog is an v1.4.0 invention. This allows you to name a
- revision that a branch used to be at (e.g. "git diff
- master@{yesterday} master" allows you to see changes since
- yesterday's tip of the branch).
- Updates in v1.5.0 since v1.4.4 series
- -------------------------------------
- * Index manipulation
- - git-add is to add contents to the index (aka "staging area"
- for the next commit), whether the file the contents happen to
- be is an existing one or a newly created one.
- - git-add without any argument does not add everything
- anymore. Use 'git-add .' instead. Also you can add
- otherwise ignored files with an -f option.
- - git-add tries to be more friendly to users by offering an
- interactive mode ("git-add -i").
- - git-commit <path> used to refuse to commit if <path> was
- different between HEAD and the index (i.e. update-index was
- used on it earlier). This check was removed.
- - git-rm is much saner and safer. It is used to remove paths
- from both the index file and the working tree, and makes sure
- you are not losing any local modification before doing so.
- - git-reset <tree> <paths>... can be used to revert index
- entries for selected paths.
- - git-update-index is much less visible. Many suggestions to
- use the command in git output and documentation have now been
- replaced by simpler commands such as "git add" or "git rm".
- * Repository layout and objects transfer
- - The data for origin repository is stored in the configuration
- file $GIT_DIR/config, not in $GIT_DIR/remotes/, for newly
- created clones. The latter is still supported and there is
- no need to convert your existing repository if you are
- already comfortable with your workflow with the layout.
- - git-clone always uses what is known as "separate remote"
- layout for a newly created repository with a working tree.
- A repository with the separate remote layout starts with only
- one default branch, 'master', to be used for your own
- development. Unlike the traditional layout that copied all
- the upstream branches into your branch namespace (while
- renaming their 'master' to your 'origin'), the new layout
- puts upstream branches into local "remote-tracking branches"
- with their own namespace. These can be referenced with names
- such as "origin/$upstream_branch_name" and are stored in
- .git/refs/remotes rather than .git/refs/heads where normal
- branches are stored.
- This layout keeps your own branch namespace less cluttered,
- avoids name collision with your upstream, makes it possible
- to automatically track new branches created at the remote
- after you clone from it, and makes it easier to interact with
- more than one remote repository (you can use "git remote" to
- add other repositories to track). There might be some
- surprises:
- * 'git branch' does not show the remote tracking branches.
- It only lists your own branches. Use '-r' option to view
- the tracking branches.
- * If you are forking off of a branch obtained from the
- upstream, you would have done something like 'git branch
- my-next next', because traditional layout dropped the
- tracking branch 'next' into your own branch namespace.
- With the separate remote layout, you say 'git branch next
- origin/next', which allows you to use the matching name
- 'next' for your own branch. It also allows you to track a
- remote other than 'origin' (i.e. where you initially cloned
- from) and fork off of a branch from there the same way
- (e.g. "git branch mingw j6t/master").
- Repositories initialized with the traditional layout continue
- to work.
- - New branches that appear on the origin side after a clone is
- made are also tracked automatically. This is done with an
- wildcard refspec "refs/heads/*:refs/remotes/origin/*", which
- older git does not understand, so if you clone with 1.5.0,
- you would need to downgrade remote.*.fetch in the
- configuration file to specify each branch you are interested
- in individually if you plan to fetch into the repository with
- older versions of git (but why would you?).
- - Similarly, wildcard refspec "refs/heads/*:refs/remotes/me/*"
- can be given to "git-push" command to update the tracking
- branches that is used to track the repository you are pushing
- from on the remote side.
- - git-branch and git-show-branch know remote tracking branches
- (use the command line switch "-r" to list only tracked branches).
- - git-push can now be used to delete a remote branch or a tag.
- This requires the updated git on the remote side (use "git
- push <remote> :refs/heads/<branch>" to delete "branch").
- - git-push more aggressively keeps the transferred objects
- packed. Earlier we recommended to monitor amount of loose
- objects and repack regularly, but you should repack when you
- accumulated too many small packs this way as well. Updated
- git-count-objects helps you with this.
- - git-fetch also more aggressively keeps the transferred objects
- packed. This behavior of git-push and git-fetch can be
- tweaked with a single configuration transfer.unpacklimit (but
- usually there should not be any need for a user to tweak it).
- - A new command, git-remote, can help you manage your remote
- tracking branch definitions.
- - You may need to specify explicit paths for upload-pack and/or
- receive-pack due to your ssh daemon configuration on the
- other end. This can now be done via remote.*.uploadpack and
- remote.*.receivepack configuration.
- * Bare repositories
- - Certain commands change their behavior in a bare repository
- (i.e. a repository without associated working tree). We use
- a fairly conservative heuristic (if $GIT_DIR is ".git", or
- ends with "/.git", the repository is not bare) to decide if a
- repository is bare, but "core.bare" configuration variable
- can be used to override the heuristic when it misidentifies
- your repository.
- - git-fetch used to complain updating the current branch but
- this is now allowed for a bare repository. So is the use of
- 'git-branch -f' to update the current branch.
- - Porcelain-ish commands that require a working tree refuses to
- work in a bare repository.
- * Reflog
- - Reflog records the history from the view point of the local
- repository. In other words, regardless of the real history,
- the reflog shows the history as seen by one particular
- repository (this enables you to ask "what was the current
- revision in _this_ repository, yesterday at 1pm?"). This
- facility is enabled by default for repositories with working
- trees, and can be accessed with the "branch@{time}" and
- "branch@{Nth}" notation.
- - "git show-branch" learned showing the reflog data with the
- new -g option. "git log" has -g option to view reflog
- entries in a more verbose manner.
- - git-branch knows how to rename branches and moves existing
- reflog data from the old branch to the new one.
- - In addition to the reflog support in v1.4.4 series, HEAD
- reference maintains its own log. "HEAD@{5.minutes.ago}"
- means the commit you were at 5 minutes ago, which takes
- branch switching into account. If you want to know where the
- tip of your current branch was at 5 minutes ago, you need to
- explicitly say its name (e.g. "master@{5.minutes.ago}") or
- omit the refname altogether i.e. "@{5.minutes.ago}".
- - The commits referred to by reflog entries are now protected
- against pruning. The new command "git reflog expire" can be
- used to truncate older reflog entries and entries that refer
- to commits that have been pruned away previously with older
- versions of git.
- Existing repositories that have been using reflog may get
- complaints from fsck-objects and may not be able to run
- git-repack, if you had run git-prune from older git; please
- run "git reflog expire --stale-fix --all" first to remove
- reflog entries that refer to commits that are no longer in
- the repository when that happens.
- * Crufts removal
- - We used to say "old commits are retrievable using reflog and
- 'master@{yesterday}' syntax as long as you haven't run
- git-prune". We no longer have to say the latter half of the
- above sentence, as git-prune does not remove things reachable
- from reflog entries.
- - There is a toplevel garbage collector script, 'git-gc', that
- runs periodic cleanup functions, including 'git-repack -a -d',
- 'git-reflog expire', 'git-pack-refs --prune', and 'git-rerere
- gc'.
- - The output from fsck ("fsck-objects" is called just "fsck"
- now, but the old name continues to work) was needlessly
- alarming in that it warned missing objects that are reachable
- only from dangling objects. This has been corrected and the
- output is much more useful.
- * Detached HEAD
- - You can use 'git-checkout' to check out an arbitrary revision
- or a tag as well, instead of named branches. This will
- dissociate your HEAD from the branch you are currently on.
- A typical use of this feature is to "look around". E.g.
- $ git checkout v2.6.16
- ... compile, test, etc.
- $ git checkout v2.6.17
- ... compile, test, etc.
- - After detaching your HEAD, you can go back to an existing
- branch with usual "git checkout $branch". Also you can
- start a new branch using "git checkout -b $newbranch" to
- start a new branch at that commit.
- - You can even pull from other repositories, make merges and
- commits while your HEAD is detached. Also you can use "git
- reset" to jump to arbitrary commit, while still keeping your
- HEAD detached.
- Remember that a detached state is volatile, i.e. it will be forgotten
- as soon as you move away from it with the checkout or reset command,
- unless a branch is created from it as mentioned above. It is also
- possible to rescue a lost detached state from the HEAD reflog.
- * Packed refs
- - Repositories with hundreds of tags have been paying large
- overhead, both in storage and in runtime, due to the
- traditional one-ref-per-file format. A new command,
- git-pack-refs, can be used to "pack" them in more efficient
- representation (you can let git-gc do this for you).
- - Clones and fetches over dumb transports are now aware of
- packed refs and can download from repositories that use
- them.
- * Configuration
- - configuration related to color setting are consolidated under
- color.* namespace (older diff.color.*, status.color.* are
- still supported).
- - 'git-repo-config' command is accessible as 'git-config' now.
- * Updated features
- - git-describe uses better criteria to pick a base ref. It
- used to pick the one with the newest timestamp, but now it
- picks the one that is topologically the closest (that is,
- among ancestors of commit C, the ref T that has the shortest
- output from "git-rev-list T..C" is chosen).
- - git-describe gives the number of commits since the base ref
- between the refname and the hash suffix. E.g. the commit one
- before v2.6.20-rc6 in the kernel repository is:
- v2.6.20-rc5-306-ga21b069
- which tells you that its object name begins with a21b069,
- v2.6.20-rc5 is an ancestor of it (meaning, the commit
- contains everything -rc5 has), and there are 306 commits
- since v2.6.20-rc5.
- - git-describe with --abbrev=0 can be used to show only the
- name of the base ref.
- - git-blame learned a new option, --incremental, that tells it
- to output the blames as they are assigned. A sample script
- to use it is also included as contrib/blameview.
- - git-blame starts annotating from the working tree by default.
- * Less external dependency
- - We no longer require the "merge" program from the RCS suite.
- All 3-way file-level merges are now done internally.
- - The original implementation of git-merge-recursive which was
- in Python has been removed; we have a C implementation of it
- now.
- - git-shortlog is no longer a Perl script. It no longer
- requires output piped from git-log; it can accept revision
- parameters directly on the command line.
- * I18n
- - We have always encouraged the commit message to be encoded in
- UTF-8, but the users are allowed to use legacy encoding as
- appropriate for their projects. This will continue to be the
- case. However, a non UTF-8 commit encoding _must_ be
- explicitly set with i18n.commitencoding in the repository
- where a commit is made; otherwise git-commit-tree will
- complain if the log message does not look like a valid UTF-8
- string.
- - The value of i18n.commitencoding in the originating
- repository is recorded in the commit object on the "encoding"
- header, if it is not UTF-8. git-log and friends notice this,
- and reencodes the message to the log output encoding when
- displaying, if they are different. The log output encoding
- is determined by "git log --encoding=<encoding>",
- i18n.logoutputencoding configuration, or i18n.commitencoding
- configuration, in the decreasing order of preference, and
- defaults to UTF-8.
- - Tools for e-mailed patch application now default to -u
- behavior; i.e. it always re-codes from the e-mailed encoding
- to the encoding specified with i18n.commitencoding. This
- unfortunately forces projects that have happily been using a
- legacy encoding without setting i18n.commitencoding to set
- the configuration, but taken with other improvement, please
- excuse us for this very minor one-time inconvenience.
- * e-mailed patches
- - See the above I18n section.
- - git-format-patch now enables --binary without being asked.
- git-am does _not_ default to it, as sending binary patch via
- e-mail is unusual and is harder to review than textual
- patches and it is prudent to require the person who is
- applying the patch to explicitly ask for it.
- - The default suffix for git-format-patch output is now ".patch",
- not ".txt". This can be changed with --suffix=.txt option,
- or setting the config variable "format.suffix" to ".txt".
- * Foreign SCM interfaces
- - git-svn now requires the Perl SVN:: libraries, the
- command-line backend was too slow and limited.
- - the 'commit' subcommand of git-svn has been renamed to
- 'set-tree', and 'dcommit' is the recommended replacement for
- day-to-day work.
- - git fast-import backend.
- * User support
- - Quite a lot of documentation updates.
- - Bash completion scripts have been updated heavily.
- - Better error messages for often used Porcelainish commands.
- - Git GUI. This is a simple Tk based graphical interface for
- common Git operations.
- * Sliding mmap
- - We used to assume that we can mmap the whole packfile while
- in use, but with a large project this consumes huge virtual
- memory space and truly huge ones would not fit in the
- userland address space on 32-bit platforms. We now mmap huge
- packfile in pieces to avoid this problem.
- * Shallow clones
- - There is a partial support for 'shallow' repositories that
- keeps only recent history. A 'shallow clone' is created by
- specifying how deep that truncated history should be
- (e.g. "git clone --depth 5 git://some.where/repo.git").
- Currently a shallow repository has number of limitations:
- - Cloning and fetching _from_ a shallow clone are not
- supported (nor tested -- so they might work by accident but
- they are not expected to).
- - Pushing from nor into a shallow clone are not expected to
- work.
- - Merging inside a shallow repository would work as long as a
- merge base is found in the recent history, but otherwise it
- will be like merging unrelated histories and may result in
- huge conflicts.
- but this would be more than adequate for people who want to
- look at near the tip of a big project with a deep history and
- send patches in e-mail format.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement