1.5.0 release notes.

Junio C Hamano committed Dec 27, 2006 at 21:33 UTC 0abfc34260b2245b3670808d148c607665114ab1
1 file changed +580
v1.5.0.txt
+580
new file mode 100644 index 0000000000..6fc1ff7b00 --- /dev/null +++ b/v1.5.0.txt @@ -0,0 +1,580 @@ +Major changes that are not news +------------------------------- + +There were a handful big changes that happened before this major +release. + +This section is for people who are upgrading from ancient +versions. Some of them are one-way street upgrades -- once you +use the feature your repository cannot be used with ancient git. + + - There is a new configuration variable core.legacyheaders that + changes the format of loose objects to more efficient to pack + and send out of the repository over git native protocol. + However, this format cannot be read by git older than v1.4.2; + people fetching from your repository using older clients over + dumb transports (e.g. http) will also be affected. This is + not enabled by default. + + - Another configuration repack.usedeltabaseoffset further + allows packfile to be created in more space efficient format, + which cannot be read by git older than v1.4.3. This is not + enabled by default. + + - '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 client can fetch + from a repository that packed its tags, but older dumb + transports cannot. This 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 timer users. + + - 'git archive' superseded 'git tar' 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. + + +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-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. + + +* 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). + + - git-clone always uses what is known as "separate remote" + layout for a newly created repository with a working tree; + i.e. tracking branches in $GIT_DIR/refs/remotes/origin/ are + used to track branches from the origin. New branches that + appear on the origin side after a clone is made are also + tracked automatically. + + - git-branch and git-show-branch know remote tracking branches. + + - git-push can now be used to delete a remote branch or a tag. + This requires the updated git on the remote side. + + - git-push more agressively 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. + + +* Reflog + + - Reflog records the history of where the tip of each branch + was at each moment. 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 --reflog option. + + - 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; please run "git reflog expire + --all" first to remove reflog entries that refer to commits + that are no longer in the repository before attempting to + repack it. + + - git-branch knows how to rename branches and moves existing + reflog data from the old branch to the new one. + + +* Packed refs + + - Repositories with hundreds of tags have been paying large + overhead, both in storage and in runtime. A new command, + git-pack-refs, can be used to "pack" them in more efficient + representation. + + - Clones and fetches over dumb transports are now aware of + packed refs and can download from repositories that use + them. + + +* Configuration + + - configuration related to colorize setting are consolidated + under color.* namespace (older diff.color.*, status.color.* + are still supported). + + +* 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 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. + + +* User support + + - Quite a lot of documentation updates. + + - Bash completion scripts have been updated heavily. + + - Better error messages for often used Porcelainish commands. + + +---------------------------------------------------------------- +Alex Riesen (1): + Make perl/ build procedure ActiveState friendly. + +Alexandre Julliard (1): + vc-git: Ignore errors caused by a non-existent directory in vc-git-registered. + +Andreas Ericsson (2): + ls-files: Give hints when errors happen. + git-diff: Introduce --index and deprecate --cached. + +Andy Parkins (8): + Improve git-prune -n output + Add support to git-branch to show local and remote branches + Use .git/config for storing "origin" shortcut repository + De-emphasise the symbolic link documentation. + Explicitly add the default "git pull" behaviour to .git/config on clone + Colourise git-branch output + Allow subcommand.color and color.subcommand color configuration + git-status always says what branch it's on + +Aneesh Kumar K.V (1): + Add config example with respect to branch + +Brian Gernhardt (6): + Add --add option to git-repo-config + Make git-diff documentation use [--] when it should. + Add documentation for show-branch --topics + Remove COLLISION_CHECK from Makefile since it's not used. + Keep "git --git-dir" from causing a bus error. + Make git-show-branch options similar to git-branch. + +David Miller (1): + Pass -M to diff in request-pull + +Eric Wong (29): + git-svn: handle authentication without relying on cached tokens on disk + git-svn: correctly access repos when only given partial read permissions + git-svn: exit with status 1 for test failures + git-svn: allow SVN:: lib users to track the root of the repository (again) + git-svn: use ~/.subversion config files when using SVN:: libraries + git-svn: enable delta transfers during fetches when using SVN:: libs + git-svn: update tests for recent changes + git-svn: error out when the SVN connection fails during a fetch + git-svn: fix output reporting from the delta fetcher + git-svn: color support for the log command + git-svn: documentation updates + git-svn: fix multi-init + git-svn: avoid network timeouts for long-running fetches + git-svn: extra error check to ensure we open a file correctly + git-svn: use do_switch for --follow-parent if the SVN library supports it + rerere: add clear, diff, and status commands + rerere: record (or avoid misrecording) resolved, skipped or aborted rebase/am + git-svn: enable logging of information not supported by git + git-svn: allow dcommit to take an alternate head + git-svn: correctly display fatal() error messages + git-svn: correctly handle packed-refs in refs/remotes/ + git-svn: correctly handle "(no author)" when using an authors file + git-svn: convert to using Git.pm + git-svn: remove support for the svn command-line client + git-svn: rename 'commit' command to 'set-tree' + git-cvsserver: fix breakage when calling git merge-file + Remove NO_ACCURATE_DIFF options from build systems + git-svn: enable common fetch/commit options for dcommit + Makefile: add quick-install-doc for installing pre-built manpages + +Han-Wen Nienhuys (2): + git-tag: allow empty tag message if -m is given explicitly. + ident.c: Trim hint printed when gecos is empty. + +Iñaki Arenaza (1): + git-cvsimport: add support for CVS pserver method HTTP/1.x proxying + +J. Bruce Fields (5): + Documentation: clarify tutorial pull/merge discussion + cvs-migration: improved section titles, better push/commit explanation + Documentation: reorganize cvs-migration.txt + Documentation: update git-clone man page with new behavior + Documentation: simpler shared repository creation + +Jakub Narebski (26): + gitweb: Protect against possible warning in git_commitdiff + gitweb: Buffer diff header to deal with split patches + git_patchset_body refactoring + gitweb: Default to $hash_base or HEAD for $hash in "commit" and "commitdiff" + gitweb: New improved formatting of chunk header in diff + gitweb: Add an option to href() to return full URL + gitweb: Refactor feed generation, make output prettier, add Atom feed + gitweb: Finish restoring "blob" links in git_difftree_body + gitweb: Replace SPC with &nbsp; also in tag comment + gitweb: Do not use esc_html in esc_path + gitweb: Use git-show-ref instead of git-peek-remote + gitweb: Add author and committer email extraction to parse_commit + gitweb: Add author and contributor email to Atom feed + gitweb: Use author_epoch for pubdate in gitweb feeds + gitweb: Make project description in projects list link to summary view + gitweb: Fix Atom feed <logo>: it is $logo, not $logo_url + git-clone: Rename --use-immingled-remote option to --no-separate-remote + Document git-diff whitespace flags -b and -w + gitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view + gitweb: Don't use Content-Encoding: header in git_snapshot + gitweb: Show target of symbolic link in "tree" view + gitweb: Add generic git_object subroutine to display object of any type + gitweb: Hyperlink target of symbolic link in "tree" view (if possible) + gitweb: SHA-1 in commit log message links to "object" view + gitweb: Do not show difftree for merges in "commit" view + gitweb: Add title attribute to ref marker with full ref name + gitweb: Add "next" link to commit view + +Jeff King (2): + shortlog: fix segfault on empty authorname + vim syntax: follow recent changes to commit template + +Jim Meyering (1): + Set permissions of each new file before "cvs add"ing it. + +Johannes Schindelin (30): + Build in shortlog + shortlog: do not crash on parsing "[PATCH" + shortlog: read mailmap from ./.mailmap again + shortlog: handle email addresses case-insensitively + shortlog: fix "-n" + shortlog: use pager + sha1_object_info(): be consistent with read_sha1_file() + xdiff: add xdl_merge() + xdl_merge(): fix an off-by-one bug + xdl_merge(): fix thinko + diff -b: ignore whitespace at end of line + xdl_merge(): fix and simplify conflict handling + cvs-migration document: make the need for "push" more obvious + Add builtin merge-file, a minimal replacement for RCS merge + merge-file: support -p and -q; fix compile warnings + Get rid of the dependency on RCS' merge program + merge-recursive: add/add really is modify/modify with an empty base + INSTALL: no need to have GNU diff installed + git-show: grok blobs, trees and tags, too + Document git-merge-file + add a function to rename sections in the config + git-branch: rename config vars branch.<branch>.*, too + Introduce GIT_TEMPLATE_DIR + Use git-merge-file in git-merge-one-file, too + git-tag: support -F <file> option + git-reset --hard: tell the user what the HEAD was reset to + move read_mmfile() into xdiff-interface + Add a test for git-rerere + Make git-rerere a builtin + commit-tree: encourage UTF-8 commit messages. + +Josef Weidendorfer (2): + Add branch.*.merge warning and documentation update + Move "no merge candidate" warning into git-pull + +Junio C Hamano (126): + upload-pack: stop the other side when they have more roots than we do. + apply --numstat: mark binary diffstat with - -, not 0 0 + pack-objects: tweak "do not even attempt delta" heuristics + Store peeled refs in packed-refs file. + remove merge-recursive-old + git-merge: make it usable as the first class UI + merge: allow merging into a yet-to-be-born branch. + Store peeled refs in packed-refs (take 2). + git-fetch: reuse ls-remote result. + git-fetch: fix dumb protocol transport to fetch from pack-pruned ref + git-fetch: allow glob pattern in refspec + refs outside refs/{heads,tags} match less strongly. + Typefix builtin-prune.c::prune_object() + Allow git push to delete remote ref. + gitweb: (style) use chomp without parentheses consistently. + git-clone: stop dumb protocol from copying refs outside heads/ and tags/. + git-branch -D: make it work even when on a yet-to-be-born branch + git-shortlog: fix common repository prefix abbreviation. + git-shortlog: make common repository prefix configurable with .mailmap + git-commit: show --summary after successful commit. + git-fetch: exit with non-zero status when fast-forward check fails + git-fetch: allow forcing glob pattern in refspec + fetch-pack: do not barf when duplicate re patterns are given + grep: do not skip unmerged entries when grepping in the working tree. + git-merge: tighten error checking. + git-merge: do not leak rev-parse output used for checking internally. + cvsimport: style fixup. + git-merge: fix confusion between tag and branch + xmerge: make return value from xdl_merge() more usable. + merge-recursive: use xdl_merge(). + read-tree: further loosen "working file will be lost" check. + Loosen "working file will be lost" check in Porcelain-ish + read-tree: document --exclude-per-directory + git-merge: squelch needless error message. + git-merge: fix "fix confusion between tag and branch" for real + Fix perl/ build. + git-rerere: add 'gc' command. + Documentation/git-commit: rewrite to make it more end-user friendly. + git-commit: allow --only to lose what was staged earlier. + shortlog: remove "[PATCH]" prefix from shortlog output + shortlog: fix segfault on empty authorname + diff --numstat: show binary with '-' to match "apply --numstat" + add test case for recursive merge + git-push: document removal of remote ref with :<dst> pathspec + Revert "git-diff: Introduce --index and deprecate --cached." + git merge: reword failure message. + spurious .sp in manpages + git-push: accept tag <tag> as advertised. + send-pack: tighten checks for remote names + branch --color: change default color selection. + git-blame: show lines attributed to boundary commits differently. + config documentation: group color items together. + git-svn: allow both diff.color and color.diff + Update git-diff documentation + git-fetch: make it work from within a subdirectory. + git-reset: make it work from within a subdirectory. + git-reset [--mixed] <tree> [--] <paths>... + merge: give a bit prettier merge message to "merge branch~$n" + git-clone: use wildcard specification for tracking branches + git-pull: refuse default merge without branch.*.merge + git-clone: lose the artificial "first" fetch refspec + git-clone: lose the traditional 'no-separate-remote' layout + update-index: make D/F conflict error a bit more verbose. + git-add: remove conflicting entry when adding. + Fix check_file_directory_conflict(). + Fix mis-mark-up in git-merge-file.txt documentation + markup fix in svnimport documentation. + rev-list --left-right + Teach all of log family --left-right output. + Make left-right automatic. + Teach show-branch how to show ref-log data. + git-fetch: Avoid reading packed refs over and over again + avoid accessing _all_ loose refs in git-show-ref --verify + show-ref: fix --quiet --verify + show-ref: fix --verify --hash=length + parse-remote::expand_refs_wildcard() + show-ref: fix --exclude-existing + racy-git: documentation updates. + rerere: fix breakage of resolving. + fix testsuite: make sure they use templates freshly built from the source + Teach git-branch to delete tracking branches with -r -d + blame: -b (blame.blankboundary) and --root (blame.showroot) + git-add --interactive + git-add --interactive: hunk splitting + Revert "fix testsuite: make sure they use templates freshly built from the source" + Do not create $GIT_DIR/remotes/ directory anymore. + Use preprocessor constants for environment variable names. + Revert "Make left-right automatic." + fix populate-filespec + config_rename_section: fix FILE* leak + simplify inclusion of system header files. + revision: --skip=<n> + git-add: error out when given no arguments. + compat/inet_ntop: do not use u_int + diff documentation: mostly talk about <commit> + add for_each_reflog_ent() iterator + Protect commits recorded in reflog from pruning. + Teach git-repack to preserve objects referred to by reflog entries. + reflog: fix warning message. + Move in_merge_bases() to commit.c + git reflog expire + Revert "git-pull: refuse default merge without branch.*.merge" + parse-remote: mark all refs not for merge only when fetching more than one + _XOPEN_SOURCE problem also exists on FreeBSD + commit-tree: do not overflow MAXPARENT + reflog expire: prune commits that are not incomplete + merge and reset: adjust for "reset --hard" messages + default pull: forget about "newbie protection" for now. + Do not support "partial URL shorthand" anymore. + Really fix headers for __FreeBSD__ + git-tag: lose exit after die + reflog expire: do not punt on tags that point at non commits. + Allow branch.*.merge to talk about remote tracking branches. + git-add --interactive: add documentation + match_pathspec() -- return how well the spec matched + git-rm: update to saner semantics + t3600: update the test for updated git rm + git-rm: Documentation + read_directory: show_both option. + git-add: add ignored files when asked explicitly. + git-add: warn when adding an ignored file with an explicit request. + git-add -f: allow adding otherwise ignored files. + GIT v1.5.0 preview + Move encoding conversion routine out of mailinfo to utf8.c + i18n.logToUTF8: convert commit log message to UTF-8 + Teach log family --encoding + +Lars Hjemli (4): + Add -v and --abbrev options to git-branch + git-branch: add options and tests for branch renaming + rename_ref: use lstat(2) when testing for symlink + git-branch: let caller specify logmsg + +Luben Tuikov (1): + Export PERL_PATH + +Michael Loeffler (1): + git-fetch: ignore dereferenced tags in expand_refs_wildcard + +Nicolas Pitre (12): + builtin git-shortlog is broken + pack-objects: remove redundent status information + make 'git add' a first class user friendly interface to the index + change the unpack limit treshold to a saner value + repacked packs should be read-only + make commit message a little more consistent and conforting + make patch_delta() error cases a bit more verbose + make git a bit less cryptic on fetch errors + index-pack usage of mmap() is unacceptably slower on many OSes other than Linux + clarify some error messages wrt unknown object types + checkout: make the message about the need for a new branch a bit clearer + add .mailmap for git-shortlog output with the git repository + +Paul Mackerras (1): + gitk: Fix enabling/disabling of menu items on Mac OS X + +Peter Baumann (1): + config option log.showroot to show the diff of root commits + +Petr Baudis (1): + Make git-clone --use-separate-remote the default + +Quy Tonthat (4): + git-clone documentation + Documentation: new option -P for git-svnimport + git-branch -d: do not stop at the first failure. + Documentation/git-branch: new -r to delete remote-tracking branches. + +René Scharfe (1): + shortlog: remove range check + +Robert Fitzsimons (17): + gitweb: Show '...' links in "summary" view only if there are more items + gitweb: Add missing show '...' links change. + gitweb: optimize git_get_last_activity. + gitweb: optimize git_shortlog_body. + gitweb: optimize git_summary. + gitweb: Use rev-list pattern search options. + gitweb: Require a minimum of two character for the search text. + gitweb: Allow search to be disabled from the config file. + gitweb: Paginate commit/author/committer search output + gitweb: Add parse_commits, used to bulk load commit objects. + gitweb: We do longer need the --parents flag in rev-list. + gitweb: Change summary, shortlog actions to use parse_commits. + gitweb: Change log action to use parse_commits. + gitweb: Change header search action to use parse_commits. + gitweb: Change atom, rss actions to use parse_commits. + gitweb: Change history action to use parse_commits. + gitweb: Use rev-list --skip option. + +Robin Rosenberg (1): + Make cvsexportcommit work with filenames with spaces and non-ascii characters. + +Sean Estabrooks (1): + Update documentation to remove incorrect GIT_DIFF_OPTS example. + +Shawn O. Pearce (31): + Teach git-completion.bash how to complete git-merge. + Hide plumbing/transport commands from bash completion. + Teach bash how to complete options for git-name-rev. + Add current branch in PS1 support to git-completion.bash. + Teach bash how to complete git-format-patch. + Teach bash how to complete git-cherry-pick. + Teach bash how to complete git-rebase. + Teach bash about git log/show/whatchanged options. + Support bash completion of refs/remote. + Teach bash about git-repo-config. + Support --strategy=x completion in addition to --strategy x. + Cache the list of merge strategies and available commands during load. + Teach bash about git-am/git-apply and their whitespace options. + Teach bash how to complete long options for git-commit. + Fix broken bash completion of local refs. + Remove uncontested renamed files during merge. + Avoid accessing a slow working copy during diffcore operations. + Provide more meaningful output from 'git init-db'. + Enable reflogs by default in any repository with a working directory. + Teach bash the new features of 'git show'. + Suggest use of "git add file1 file2" when there is nothing to commit. + Align section headers of 'git status' to new 'git add'. + Default GIT_COMMITTER_NAME to login name in recieve-pack. + Suggest 'add' in am/revert/cherry-pick. + Rename imap-send's internal info/warn functions. + Introduce a global level warn() function. + Don't crash during repack of a reflog with pruned commits. + Use extended SHA1 syntax in merge-recursive conflicts. + Display 'theirs' branch name when possible in merge. + Rename gitfakemmap to git_mmap. + Switch git_mmap to use pread. + +Terje Sten Bjerkseth (1): + Fix system header problems on Mac OS X + +Uwe Zeisberger (1): + Fix documentation copy&paste typo +