This is a relatively small bugfix release with two security fixes.
Security:
* ensure that git patches only touch files within the repository
(CVE-2008-2942)
* hgweb: fix "allowpull" permission being ignored when pulling from
hgweb
General:
* commit: handle copies of previously deleted files (issue 1175)
* bisect: allow for having multiple resulting changesets
* fix Python 2.3 compatibility
* make mq patches and .hgtags hardlink-safe again
* various documentation improvements and fixes
* fix a crash when addremove was called to replace a deleted directory
with a symlink
* make branches output easier to parse (issue 1230)
* fix inactive branches detection (issue 1104)
* hgweb: fix a crash in archive when the URL did not end in an
expected
archive type
* sshserver: fix a crash in error handling code
* fix the patchbomb extension on Windows by including email package in
binary installations
* handle symlinks when OS supports them but FS doesn't (issue 1149)
Extensions:
* mq:
* fix qrefresh losing metadata on the last refreshed file (issue
1134)
* fix a crash when renaming a patch just after a versioned queue
initialization
* fix the path of an explicitly specified queue when merging
patches
* strip now updates the working directory only if a parent was
stripped
* convert:
* CVS: fix a crash when converting an existing working copy
* monotone: fix quotes and backslashes parsing when reading
commit
messages
* Subversion: correctly normalize paths and slashes
* Subversion: fix compatibility with Subversion 1.5
* git: allow converter to work with recent git releases
* color:
* get coloring for qseries --verbose output
* improve mq extension detection
* reset coloring before and after outputting colorized lines
* highlight: fix a performance issue when detecting file types from
large files
* notify: take the diff options into account
- assume that Python 2.4 and 2.5 are compatible and allow checking for
fallout.
- remove PYTHON_VERSIONS_COMPATIBLE that are obsoleted by the 2.3+
default. Modify the others to deal with the removals.
General:
* greatly improved merge tool configuration, see "hgrc.5.txt" for details
* improved copy/rename handling in diffs, status, and merge
* files in .hg inherit permissions from .hg/store
* infer --repository when possible, so commands may be run from anywhere.
* easy-installable
* new "droplet" logo
Commands:
* archive: disable ".hg_archival.txt" file addition with "ui.archivemeta"
* bisect: now built-in with greatly improved performance and usability
* bundle: new --all option to bundle the whole repository more easily.
* cat: apply decode filters with --decode
* clone: can clone from a full-history bundle
* commit: warn when creating a new head
* debugancestor: index argument is now optional
* diff: set the number of context line to show with -U/--unified
* grep: display matched revisions commit date with --date
* import: new --no-commit and --user options
* incoming/outgoing: add --limit option
* log: use -b/--only-branch to show revisions of a single branch
* remove: improve handling for --after
* revert: major speedup
* serve: prefix the served path with --prefix (also in [web] section)
* status: unknown files are skipped by --quiet
* tag: allow multiple tags to be added or removed
* tags: --verbose flags local tags
* update: switch between named branches without -C
Extensions:
* churn: promoted to an official extension (previously in contrib)
* color: new extension coloring "status" and "qseries" command outputs
* convert:
* hgk: configuration file changed from .gitk to .hgk
* highlight: new extension enabling syntax highlighting in hgweb
file view (requires pygments)
* inotify: new extension using Linux 2.6 inotify API for instant
status checking
* keyword: new extension for filewise RCS-keyword expansion in working
directory
* mq: new --currentdate, --date, --currentuser, and --user options
* record: add "qrecord" command when used with mq
Web interface:
* improved WSGI integration and compatibility
* follow symlinks in hgwebdir collections
* show branches in most of gitweb templates
* add line anchors to annotate, changeset, diff and file views
* support web.baseurl in hgwebdir, overriding SCRIPT_NAME
Hooks:
* standard hook to reject text files with CRLF in win32text extension
* redirect stdout to stderr for ssh and http servers
New features:
* Handle symlinks on systems without symlink support
* hg archive supports symlinks
* Display executable/symlink bit with "hg manifest -v" (see UpgradeNotes)
* Improved hg verify diagostics
* Faster revlog handling
* Faster handling of large directories
* Greatly improved handling of large files
* Atom syndication support in hgweb
* Improved test suite with parallel execution
Fixes:
* Fixes for some file copy and rename corner cases
* Allow moving newly-added files before commit
* Improve hg diff whitespace handling
* Disallow fast-forward merge with an ancestor
* Fix adding untracked files on directory renames
* Fix hg archive %r format specifier
* Fix re: and glob: patterns in .hgignore
* Improve hg executable path resolution
* Many options and hgrc parsing improvements
* Better handling of VFAT filesystems on Linux
* Fix tgz archival on Windows
* Fix hg serve on Windows requiring pywin32 modules
* Fix --profile under Windows
New extensions:
* alias - allow user-defined command aliases
* children - show the children of the given or working dir revision
* imerge - incremental interactive merging
* interhg - modify changelog text as in InterWiki
* record - darcs-style interactive change selection during commit
New extension features:
* convert
* Now supports Subversion, Darcs and Mercurial as source SCMs
* Use clone's behaviour for the default destination name
* Force encoding to UTF-8 for converted repository
* Support new-style .cvspass file format
* Filter the files and directories to import
* Remap paths to new locations during import
* hgk
* Fix hgk stopping because of untrusted repository warnings
* Handle filenames with spaces
* Improved documentation
* mq
* Autodetect --git patches on qrefresh
New features:
* support for symlinks
* improved tag handling
* improved merge handling of file and directory renames
* improved named branch usability
* numerous improvements to commands
* generic pre- and post-command hooks
* improved Windows support
* basic BeOS and OpenVMS support
* numerous bug fixes
New extensions and contributions:
* extensions can now be specified in .hg/hgrc
* new convert extension with CVS support
* new graphlog extension
* improved patchbomb extension
* example FastCGI script
Bug fixes:
* fix a merge copy/rename corner case
* fix spurious new heads message with push -r
* fix hg export %n sequence numbers
* fix shell quoting on Windows
* fix charset encoding for hgwebdir and obfuscated addresses
* fix missing generated files for distribution tarball
* fix convert-repo tag updates and transcoding of committer
* add instructions for redoing failed merges
Documentation fixes:
* hg cat, manifest, and tag default to current parent revision.
* CGI stub comments clarified
* corrected synopses for many commands
* improve doc building and distribution
* convert-repo: update usage information
Extension fixes:
* mq: fix strip on Windows
* mq: fix some guards corner cases
* gpg: make 'hg sign' default to current parent
New features:
- merge now follows renames and copies
- new layout protects against case-insensitivity issues
- new branch and branches commands for managing named branches
- push command accepts -r for pushing specified heads or named branches
- proper storage of changelog and other metadata in UTF-8
- log, annotate and grep '--follow' follow renames and copies
- date parsing is improved and log, update, and revert accept --date ranges
- additional command options for log, status, addremove
- improved schema for hgweb URLs
- bundle can now use '-r' and '--base' removing the need of an base repository
- support for git-style extended patches with --git option
- new debuginstall command to check for common installation issues
New contributions and extensions:
- mq
- support for quilt-style guards
- can import existing changesets into mq ('qimport -r') or
commit mq patches as regular changesets ('qdel -f')
- edit the log message with 'qrefresh -e'
- rename patches with 'qrename'
- qheader to display the patch header of particular patches,
and '--summary' for qseries, qapplied, qunapplied and qtop
- combine patches with 'qfold'
- qrefresh supports pattern options to import only a subset
of the changes into a patch, to help split changes into multiple patches
- patch names for applied patches act like local tags, and can be
used in the revision arguments of any hg command
- hgk
- browse a subset of the history with '--limit' and revision range arguments
- shows revision numbers as well as node hashes
- churn: graph lines of code changed per user over a range of history
- patchbomb: generate inline attachments with '-a'
Behavior changes:
- hg cat defaults to the working directory revision rather than tip
- hg manifest no longer shows internal file revision hashes by default
- hg revert now requires the -a flag to revert all files
Developer notes:
- new high-level API functions in the 'hg' module
- new context API simplifies many operations
- The changelog can now include arbitrary metadata in key: value form
New features:
- You can now configure your 'hgweb' server to let remote users
'push' changes over http.
- You can now 'import' a patch in a mail message by saving the mail
message, and importing it. This works for patches sent either
inline or as attachments.
- The 'diff' command now accepts '-rA:B' syntax as a synonym for
'-r A -r B', and adds '-b' and '-B' options.
For a complete list of major changes, see the announcement at
http://www.selenic.com/pipermail/mercurial/2006-July/009510.html
Major changes between Mercurial 0.8.1 and 0.9:
- The repository file format has been improved.
- This has resulted in an average 40% reduction in disk space usage.
- The new format (called RevlogNG) is now the default.
- Mercurial works perfectly with both the old and new repository
file formats. It can transfer changes transparently between
repositories of either format.
- To use the new repository format, simply use `hg clone --pull` to
clone an existing repository.
- Note: Versions 0.8.1 and earlier of Mercurial cannot read
RevlogNG repositories directly, but they can `clone`, `pull`
from, and `push` to servers that are serving RevlogNG
repositories.
- Memory usage has been improved by over 50% for many common operations.
- Substantial performance improvements on large repositories.
- New commands:
- 'archive' - generate a directory tree snapshot, tarball, or zip
file of a revision
- Deprecated commands:
- 'addremove' - replaced by 'add' and 'remove --after'
- 'forget' - replaced by 'revert'
- 'undo' - replaced by 'rollback'
- New extensions:
- Bugzilla integration hook
- Email notification hook
- Nested repositories are now supported. Mercurial will not recurse
into a subdirectory that contains a '.hg' directory. It is treated
as a separate repository.
- The standalone web server, 'hg serve', is now threaded, so it can
talk to multiple clients at a time.
- The web server can now display a "message of the day".
- Support added for hooks written in Python.
- Many improvements and clarifications to built-in help.
Sort PLIST.
Changes:
- new extensions:
mq (manage a queue of patches, like quilt only better)
email (send changes as series of email patches)
- new command: merge (replaces "update -m")
- improved commands: log (--limit option added), pull/push ("-r" works
on specific revisions), revert (rewritten, much better)
- comprehensive hook support
- output templating added, supporting e.g. GNU changelog style
- Windows, Mac OS X: prebuilt binary packages, better support
- many reliability, performance, and memory usage improvements
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
changes:
faster status, diff, and commit
reduced memory usage for push and pull
improved extension API
new bisect, gpg, hgk, and win32text extensions
short URLs, binary file handling, and optional gitweb skin for hgweb
numerous new command options including log --keyword and pull --rev
improved hooks and file filtering
Mercurial is a fast, lightweight Source Control Management system
designed for efficient handling of very large distributed projects.
Fast
* Extremely high-performance delta-compressed storage scheme
* Optimized for disk layout and access efficiency
* Complete cross-indexing of files and changesets
* Bandwidth and CPU efficient HTTP and SSH sync protocols
Scalable
* Distributed development model supports unlimited numbers
of developers
* Allows arbitrary merging between developer branches
* Doesn't significantly degrade with large numbers of files
or changesets
* No waiting for locks!
Robust
* SHA1 integrity checking on repository data
* Append-only storage model with transaction journalling
* Fast full-repository verification
* Convenient backup
Easy to use
* Most commands are familiar to users of CVS and other systems
* Built-in command help
* Integrated stand-alone web interface
* Works with various GUI tools
Easy to adopt
* Runs on UNIX, MacOS X, and Windows
* Conversion tools available for many popular SCMs
* Allows a variety of usage models
* Supports user-defined hooks and extensions
Free
* Source code available under the GPL license
* Actively community supported and developed