git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFH] An early draft of v1.5.0 release notes

From
Junio C Hamano <junkio@cox.net>
Date
Dec 27, 2006, 07:39 UTC
Message-ID
<7vvejx948y.fsf@assigned-by-dhcp.cox.net>

This is still rough, but I think we have a pretty good idea what will and what won't be in v1.5.0 by now, and end-of-year is a good slow time to summarize what we have done.

One thing I am wondering is if delta from v1.4.4.3 is good enough for the intended audience of this release notes. I am reasonably sure that the name v1.5.0 will attract more people than usual and there will be many people upgrading directly from ancient versions such as v1.1.6 or v1.2.0, and there are a handful "one-way-street upgrades" and quite a few user visible changes that already have happened before v1.4.4. Namely:

 - Pack-compatible loose object headers, introduced between
   v1.4.1 and v1.4.2; repository cannot be read with ancient
   version of git anymore -- this is a one-way street but
   core.legacyheaders is still not enabled by default);
 - delta-base-offset pack encoding, introduced between v1.4.2
   and v1.4.3; this is also a one-way street.
 - '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 pack-refs' appeared in v1.4.4;
 - '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 v1.4.0 invention.

In the following, I am assuming that jc/utf8 and jc/fsck-reflog topics currently in 'next' will be part of v1.5.0.

-- >8 --

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.  Say "git add ." if you want to.
 - 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
 - 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-clone used to be buggy and copied refs outside refs/heads
   and refs/tags; it doesn't anymore.
 - git-branch and git-show-branch know remote tracking branches.
 - git-push can now be used to delete a remote branch or a tag.
* 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.
   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 have been depended on "merge" program from RCS suite for
   the file-level 3-way merge, but now we lost this dependency.
 - The original implementation of git-merge-recursive which was
   in Python has been removed; we have C implementation of it
   now.
 - git-shortlog is not in Perl anymore, and more importantly it
   does not have to be piped output from git-log.  It can
   traverse the commit ancestry itself.
* 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 (which will never change).
   A non UTF-8 commit encoding however _must_ be explicitly set
   with i18n.commitencoding in the repository configuration;
   otherwise git-commit-tree will complain if the log message does
   not look like a valid UTF-8 string.
 - A commit object recorded in non UTF-8 encoding records the
   encoding i18n.commitencoding specified in the originating
   repository in a new "encoding" header.  This information is
   used by git-log and friends to reencode the message to UTF-8
   when displaying.
* User support
 - Quite a lot of documentation updates.
 - Bash completion scripts have been updated heavily.
 - Better error messages for often used Porcelainish commands.

---------------------------------------------------------------- (shortlog since v1.4.4.3 here)

Next: Shawn Pearce
Message 1 of 20 in “[RFH] An early draft of v1.5.0 release notes”
  1. Junio C HamanoDec 27, 2006
  2. Shawn PearceDec 27, 2006
  3. Jakub NarebskiDec 27, 2006
  4. Junio C HamanoDec 27, 2006
  5. Johannes SchindelinDec 27, 2006
  6. Jakub NarebskiDec 27, 2006
  7. Jakub NarebskiDec 27, 2006
  8. Junio C HamanoDec 27, 2006
  9. Jakub NarebskiDec 28, 2006
  10. Junio C HamanoDec 27, 2006
  11. An early draft of v1.5.0 release notes (2nd ed)Junio C Hamano, Dec 28, 2006
  12. Shawn PearceDec 28, 2006
  13. Junio C HamanoDec 28, 2006
  14. Shawn PearceDec 28, 2006
  15. Junio C HamanoDec 28, 2006
  16. Shawn PearceDec 28, 2006
  17. Junio C HamanoDec 28, 2006
  18. Junio C HamanoJan 10, 2007
  19. Eric WongDec 28, 2006
  20. Junio C HamanoDec 28, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.