Below is the file 'ChangeLog' from this revision. You can also download the file.

2005-09-20  Matt Johnston  <matt@ucc.asn.au>

	* database.cc (space_usage): workaround the issue that in sqlite
	3.2.6, SUM({empty set}) returns NULL. (this is part of the sql spec,
	see http://www.sqlite.org/cvstrac/tktview?tn=1413 and the comment for
	SUM() in sqlite docs).

2005-09-20  Matt Johnston  <matt@ucc.asn.au>

	* ui.cc, ui.hh, sanity.hh: replace ui.user_locale with
	get_user_locale(), so that we can guarantee that it will be
	initialised when the global_sanity object (and probably other things)
	are instantiated.

2005-09-20  Matthew Gregan  <kinetik@orcon.net.nz>

	* tests/t_restriction_with_exclude_iprint.at: New test, variant of
	t_restriction_exclude.at, but with inodeprints enabled.  Mark as
	XFAILed.
	* testsuite.at: Add new test.
	* sqlite/*: Update in-tree SQLite from 3.2.2 to 3.2.6.
	* Makefile.am: Add sqlite/{analyze,vbdefifo,complete}.c to
	SQLITE_SOURCES
	* schema_migration.cc (calculate_schema_id): Explicitly exclude
	sqlite_stat1 table from schema ID calculation.  This is a new
	magic table created by the 'analyze' command in SQLite >= 3.2.3.

2005-09-18  Nathaniel Smith  <njs@pobox.com>

	* po/ja.po: New translation from Satoru SATOH <ss@gnome.gr.jp>.
	* AUTHORS: Add Satoru SATOH.

2005-09-18  Matthew Gregan  <kinetik@orcon.net.nz>

	* testsuite.at: Tweak default 'eveything' netsync glob to
	something that works around the MinGW/Win32 globbing issues for
	now.
	* tests/t_log_brief.at: Canonicalise output on Win32.

2005-09-17  Timothy Brownawell  <tbrownaw@gmail.com>

	* contrib/usher.cc: Remove stray "new int[2];' statements from
	debugging. Remove connections from list when finished.

2005-09-16  Timothy Brownawell  <tbrownaw@gmail.com>

	* Makefile.am (EXTRA_DIST): add contrib/monotone-cvs-ignore.lua,
	contrib/ciabot_monotone_hookversion.py, and contrib/usher.cc .
	also remove duplicate of contrib/monoprof.sh

2005-09-16  Timothy Brownawell  <tbrownaw@gmail.com>

	* netsync.cc: finish renaming things, so it compiles again...

2005-09-16  Timothy Brownawell  <tbrownaw@gmail.com>

	* contrib/usher.cc: A simple usher/proxy server. It asks connecting
	clients for their include pattern, and then forwards the connection
	to an appropriate (as given in a config file) monotone server. Note
	that all servers operating behind one usher need to have the same
	server key.

2005-09-16  Timothy Brownawell  <tbrownaw@gmail.com>

	* netcmd.{cc,hh}, netsync.cc: new netcmd types: usher_cmd and
	usher_reply_cmd. They are not included in the HMAC, and do not
	occur during normal communication. Purpose: running multiple servers
	from the same port. This allows a special server to ask for the
	client's include pattern, and then forward the connection to a real
	monotone server.

2005-09-16  Matt Johnston  <matt@ucc.asn.au>

	* botan/pkcs8.cpp: re-add the monotone-specific code for guessing if
	a key is DER encoded or not.

2005-09-16  Matt Johnston  <matt@ucc.asn.au>

	* botan/*: update to Botan 1.4.6
	* Makefile.am: ditto

2005-09-15  Timothy Brownawell  <tbrownaw@gmail.com>

	* app_state.{cc,hh}: restrictions now understand --exclude
	* commands.cc: commit and revert now take OPT_EXCLUDE
	* monotone.cc: update description of --exclude
	* tests/t_restriction_with_exclude.at: new test
	* testsuite.at: add it

2005-09-14  Timothy Brownawell  <tbrownaw@gmail.com>

	* contrib/ciabot_monotone_hookversion.py: CIA bot client script
	meant to be called from the note_netsync_revision_received hook.
	* lua.{cc,hh}: hook_note_commit and hook_note_netsync_revision_received
	now take the text of the revision as an argument.
	* netsync.cc, commands.cc: Give hooks new argument.
	* monotone.texi: Update documentation for those hooks.

2005-09-11  Benoît Dejean  <benoit@placenet.org>

	* database.cc
	* database_check.cc
	* netsync.cc
	* po/POTFILES.in
	* po/POTFILES.skip
	* rcs_import.cc: More i18n strings.

2005-09-07  Jim Meyering  <jim@meyering.net>

	* tests/t_rename_dir_cross_level.at: When invoking mv to rename
	a directory, do not include a trailing slash on the target -- that
	is not portable.

	* Makefile.am (TESTS_ENVIRONMENT): Ensure that PATH starts with
	the current directory, so we test the just-built monotone binary,
	not some older version.

2005-09-07  Benoît Dejean  <benoit@placenet.org>

	* std_hooks.lua: Don't spawn emacs with '-no-init-file'.

2005-09-09  Matthew Gregan  <kinetik@orcon.net.nz>

	* paths.cc (save_initial_path): Default Boost's fs::path to
	fs::native grammar.
	* tests/t_unreadable_{db,MT}.at: Disable on Win32 for now.
	* paths.cc: Consistency--use WIN32 rather than _WIN32.
	* file_io.cc (walk_tree): Correct test for file existence.

2005-09-08  Matthew Gregan  <kinetik@orcon.net.nz>

	* Makefile.am: Add '-f' argument to 'mv'; avoids build waiting on
	 user confirmation in some cases.

2005-09-08  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (Certificates): Remove mention of fcerts and
	mcerts.

2005-09-07  Benoît Dejean  <benoit@placenet.org>

	* ui.{cc,hh}: Added user_inferface::user_locale.
	* sanity.hh: Made F() and FP() locale aware.

2005-09-06  Benoît Dejean  <benoit@placenet.org>

	* monotone.cc: One more i18n string.

2005-09-06  Benoît Dejean  <benoit@placenet.org>

	* po/fr.po: Updated French translation.

2005-09-06  Benoît Dejean  <benoit@placenet.org>

	* commands.cc: No i18n for cert_revision_changelog.

2005-09-06  Matthew Gregan  <kinetik@orcon.net.nz>

	* tests/t_netsync_read_permissions.at: Tweak tests so we aren't
	trying to serve a bare '*'; works around test hangs due to glob
	expansion sillyness on MinGW.
	* tests/t_netsync_globs.at: Ditto.
	* tests/t_netsync_exclude.at: Ditto.
	* std_hooks.lua (ignore_file): Add Mac OS X (.DS_Store) and
	Windows (desktop.ini) per-directory browser configuration files.


2005-09-05  Benoît Dejean  <benoit@placenet.org>

	* commands.cc: Fixed some strings (added ' around revisions).
	Removed some whitespaces.
	No i18n in diff output.

2005-09-05  Benoît Dejean  <benoit@placenet.org>

	* sanity.{cc,hh}: boost::format vs. F(). Merged boost::format
	and moved non-template code to sanity.cc.

2005-09-05  Matthew Gregan  <kinetik@orcon.net.nz>

	* win32/terminal.cc (have_smart_terminal): We were returning false
	in almost all circumstances; changed logic so that we at least
	work when running in a cmd.exe window.

2005-09-05  Matt Johnston  <matt@ucc.asn.au>

	* commands.cc (dump_diffs): don't use the terminal width to
	print ===== seperators.

2005-09-05  Matthew Gregan  <kinetik@orcon.net.nz>

	* paths.cc (find_and_go_to_working_copy): Create root and bookdir
	paths as fs::native.
	* main.cc: Tweak #ifdef to avoid exposing some unused SEH handling
	on MinGW.
	* configure.ac: Minor cleanup to Win32 configure test.

2005-09-04  Nathaniel Smith  <njs@pobox.com>

	* monotone.cc (options): Remove default from the help string for
	--count, since none of the options listed are actually the
	default.

2005-09-04  Nathaniel Smith  <njs@pobox.com>

	* tests/t_unreadable_db.at, testsuite.at: New test.

2005-09-03  Nathaniel Smith  <njs@pobox.com>

	* po/Makevars (XGETTEXT_OPTIONS): N_ != ngettext.
	Add c-format flags on F() and FP() calls (only partially
	successful on latter, because of bug in xgettext).

2005-09-04  Grahame Bowland  <grahame@angrygoats.net>

	* commands.cc: siplify the monotone cat command
	to "monotone cat [-r] FIELNAME" (as in bug #12597)
	* monotone.texi: update documentation of "monotone cat"
	* tests/t_add_edge.at, tests/t_cat_file_by_name.at,
	tests/t_change_empty_file.at, tests/t_cvsimport.at,
	tests/t_cvsimport_deleted_invar.at, tests/t_cvsimport_drepper.at,
	tests/t_cvsimport_drepper2.at, tests/t_cvsimport_manifest_cycle.at,
	tests/t_cvsimport_samelog.at, tests/t_database_check.at,
	tests/t_db_kill_rev_locally.at, tests/t_empty_id_completion.at,
	tests/t_epoch.at, tests/t_epoch_server.at, tests/t_erename.at,
	tests/t_i18n_file.at, tests/t_import.at, tests/t_merge_add_del.at,
	tests/t_movedel.at, tests/t_movepatch.at, tests/t_netsync.at,
	tests/t_netsync_exclude.at, tests/t_netsync_exclude_default.at,
	tests/t_netsync_globs.at, tests/t_netsync_nocerts.at,
	tests/t_netsync_permissions.at, tests/t_netsync_read_permissions.at,
	tests/t_netsync_single.at, tests/t_normalized_filenames.at,
	tests/t_persistent_server_revision.at, tests/t_remerge.at,
	tests/t_rename.at, tests/t_renamed.at, tests/t_scan.at,
	tests/t_set_default.at, tests/t_singlecvs.at,
	tests/t_update_with_pending_add.at, tests/t_update_with_pending_drop.at,
	tests/t_update_with_pending_rename.at, tests/t_versions.at:
	use automation interface rather than "monotone cat"

2005-09-04  Grahame Bowland  <grahame@angrygoats.net>

	* ChangeLog: fix up screwed up three-way merge

2005-09-04  Grahame Bowland  <grahame@angrygoats.net>

	* automate.cc, commands.cc: add "automate get_file",
	"automate get_revision" and "automate get_manifest" to
	automation interface.
	* monotone.texi: document new automation commands
	* tests/t_automate_get_file.at, tests/t_automate_get_revision_at,
	tests/t_automate_get_manifest.at: trivial testing of new
	automation commands for output as specified, make sure they
	do not complete IDs, make sure invalid IDs are caught.
	* testsuite.at: add new tests

2005-09-03  Matthew Gregan  <kinetik@orcon.net.nz>

	* tests/t_persistent_server_keys_2.at: 'commit' needs a commit
	message.  Un-XFAIL.
	* tests/t_netsync_unrelated.at: Fix 'setup' syntax.
	* tests/t_add_vs_commit.at: BASE_REVISION needs to be in the root
	of a working copy to work.  Un-XFAIL.
	* tests/t_add_stomp_file.at: 'add' does not take a --branch
	argument.  BASE_REVISION needs to be in the root of a working copy
	to work.
	* annotate.cc (build_parent_lineage): Don't access uninitialized
	memory--use resize() rather than reserve().

2005-09-02  Matthew Gregan  <kinetik@orcon.net.nz>

	* monotone.cc: Use consistent case in option descriptions.

2005-09-02  Nathaniel Smith  <njs@pobox.com>

	* paths.{hh,cc}: Add split_path typedef.  Use it.

2005-09-02  Matt Johnston  <matt@ucc.asn.au>

	* lua.cc (monotone_guess_binary_file_contents_for_lua): use a
	temporary char* buffer rather than &string[], extra copying seems
	to have negligible performance impact.
	* tests/perf-test.sh: change path from tests/ to contrib/, make
	executable.
	* tests/parse-accounting.pl: make executable.

2005-09-01  Timothy Brownawell  <tbrownaw@gmail.com>

	* lua.cc, std_hooks.lua: use proper regexes for .mt-ignore
	taken from a patch from Martin Dvorak
	* contrib/monotone-cvs-ignore.lua: New file, from the same patch.
	supports .cvsignore files
	* tests/t_mt_ignore.at: check that a missing .mt-ignore
	doesn't cause problems

2005-09-01  Timothy Brownawell  <tbrownaw@gmail.com>

	* tests/t_mt_ignore.at: use RAW_MONOTONE instead of ugly --rcfile
	Also actually do "mtn add" this time.

2005-09-01  Timothy Brownawell  <tbrownaw@gmail.com>

	* tests/t_mt_ignore.at: new test, checks that .mt-ignore works
	* testsuite.at: add it

2005-09-01  Timothy Brownawell  <tbrownaw@gmail.com>

	* std_hooks.lua: support .mt-ignore
	* monotone.texi: mention .mt-ignore and MT/wanted-testresults under
	"Existing control files"
	* .mt-ignore: ignore testsuite.dir

2005-09-03  Benoît Dejean  <benoit@placenet.org>

	* commands.cc (ls_certs):
	* netsync.cc (load_data): Merged strings.

2005-09-01  Benoît Dejean  <benoit@placenet.org>

	* commands.cc: Merged one more "no such revision '%s'" string.

2005-09-01  Benoît Dejean  <benoit@placenet.org>

	* commands.cc: Merged all "no such revision '%s'" strings.
	(string_to_datetime): Merged catch blocks in order to merge error
	messages.

2005-09-01  Benoît Dejean  <benoit@placenet.org>

	* ChangeLog: Fixed.

2005-09-01  Matthew Gregan  <kinetik@orcon.net.nz>

	* ui.cc (user_interface): Avoid calling sync_with_stdio(false) on
	Win32 for now to work around a bug in MinGW where unsynchronized
	std::cin returns EOF earlier when reading a stream with DOS
	newlines.  Resolves 'db load' failure reported by Howard Spindel.
	* database.cc (load): Don't bother executing an empty string.
	* commands.cc (ALIAS(import, setup)): Remove alias.

2005-09-01  Matt Johnston  <matt@ucc.asn.au>

	* schema.sql: add BEGIN, COMMIT to make it a single transaction,
	improves db init performance significantly on OS X (avoids many
	disk-cache flushes).

2005-09-01  Matthew Gregan  <kinetik@orcon.net.nz>

	* testsuite.at: Increase entropy used to generate port numbers
	where we can and increase range of port numbers generated.
	* monotone.texi: Fix a couple of minor typos.

2005-09-01  Matthew Gregan  <kinetik@orcon.net.nz>

	* monotone.texi: Update 'setup' documentation and tutorial to
	reflect new usage.  Also update much of the monotone output in the
	tutorials to reflect the output of more modern versions of
	monotone.  Correct some minor errors and typos while here.
	* commands.cc (CMD(setup)): Require database and branch arguments.
	(ALIAS(import,setup)): Add setup alias.
	* testsuite.at, tests/*.at: Update 'setup' usage.

2005-08-31  Richard Levitte  <richard@levitte.org>

	* lua.cc, std_hooks.lua: Rename
	monotone_guess_binary_filename_for_lua and guess_binary_filename
	to monotone_guess_binary_file_contents_for_lua and
	guess_binary_file_contents.

2005-08-31  Benoît Dejean  <benoit@placenet.org>

	* basic_io.cc (basic_io::input_source::err): Merged strings.

2005-08-31  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (set_char_is_binary, guess_binary): static_cast chars
	to uint8_t before using as array indices.  Also replace some ints
	with size_t's to quiet g++ warnings.

2005-08-30  Benoît Dejean  <benoit@placenet.org>

	In function void set_char_is_binary(char, bool)
	133: warning: array subscript has type char
	In function void init_char_is_binary()
	147: warning: comparison between signed and unsigned integer expressions
	In function bool guess_binary(const std::string&)
	160: warning: comparison between signed and unsigned integer expressions
	162: warning: array subscript has type char

2005-08-30  Benoît Dejean  <benoit@placenet.org>

	* file_io.cc (walk_tree): Fixed format.

2005-08-31  Marcel van der Boom  <marcel@hsdev.com>

	* std_hooks.lua (execute_confirm): New function.
	(merge2_opendiff_cmd, merge3_opendiff_cmd): Add.

2005-08-31  Matthew Gregan  <kinetik@orcon.net.nz>

	* paths.cc (test_bookkeeping_path, test_system_path): Second
	attempt at compile fixes; this time the unit tests actually pass
	too.

2005-08-30  Matthew Gregan  <kinetik@orcon.net.nz>

	* paths.cc (test_bookkeeping_path, test_system_path): Shift object
	instantiation around a little to work around what seems to be a
	bug in the gcc 3.3 parser.
	* win32/inodeprint.cc (inodeprint_file): Update to use new path
	handling code.
	* win32/fs.cc (tilde_expand): Compile fix.

2005-08-30  Petr Baudis  <pasky@suse.cz>

	* std_hooks.lua: Simple support for merging using merge(1) and vim.

2005-08-30  Benoît Dejean  <benoit@placenet.org>

	* po/fr.po: Updated French translation.

2005-08-30  Benoît Dejean  <benoit@placenet.org>

	* commands.cc: Merged some error messages.

2005-08-30  Benoît Dejean  <benoit@placenet.org>

	* commands.cc: Merged complete(..., file_id) and
	complete(..., manifest_id) into template complete(..., ID).

2005-08-30  Benoît Dejean  <benoit@placenet.org>

	* commands.cc (ls_certs): Reworked for i18n.
	(CMD(commit)): Merged 2 strings.

2005-08-30  Matthew Gregan  <kinetik@orcon.net.nz>

	* revision.cc (ensure_parents_loaded): Don't reuse an iterator
	after we've invalidated it.  Fixes 'diff' crash reported by Howard
	Spindel.

2005-08-30  Matt Johnston  <matt@ucc.asn.au>

	* botan/allocate.cpp: avoid string comparison when looking up the
	default allocator
	* monotone.cc (cpp_main): set a default allocator

2005-08-28  Nathaniel Smith  <njs@pobox.com>

	* tests/t_attributes.at: Delete checkout dir in between
	checkouts.

2005-08-28  Matt Johnston  <matt@ucc.asn.au>

	* keys.cc (keys_match): new function to compare whether two keys
	match (ignoring whitespace as the database does, etc).
	* packet.cc, keys.cc: use it for existing-key-comparison.

2005-08-27  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (checkout): Special-case "checkout ."
	* tests/t_checkout_dir.at: Test it.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* file_io.hh: Remove comment describing old path types.
	* paths.hh: Add comment describing new path types.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* app_state.cc (create_working_copy): Remove
	fs::filesystem_exception catching.
	* file_io.hh (mkdir_p): Remove comment noting app_state.cc's
	dependence on a boost-based implementation.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* paths.cc: Include <string>.  Helps build on g++ 3.3?

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (get_log_message): Make the log message commentary a
	little more descriptive for people who may not know what a log
	message is...
	(commit): When canceling a commit due to empty log message, say
	so.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* std_hooks.lua: Check for both "vi" and "notepad.exe" as fallback
	editors.  If no editor was found, print a helpful message instead
	of just running "vi" anyway.  Print a message if the editor exited
	with error.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (mkdir_p, make_dir_for): Increase error checking.
	* commands.cc (checkout): Make sure that checkout target directory
	does not already exist.  Also use system_path more uniformly.
	* tests/t_checkout_dir.at: Test.
	* tests/t_setup_existing_path.at: New test.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (read): Optionally take files on command line.
	* tests/t_read_from_file.at, testsuite.at: New test.
	* monotone.texi (Network Service): Show Jim using this.
	(Packet I/O, Commands): Document.
	* monotone.1: Likewise.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* change_set.cc (move_files_from_tmp_top_down): Typo again.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* database.cc (open): Convert stray line to paths.cc.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* change_set.cc (move_files_from_tmp_top_down): Typo.

	* file_io.cc (move_path): New function.
	(move_file, move_dir): Minor cleanup -- use
	require_path_is_nonexistent.

	* work.cc (build_deletions): Use delete_file, rather than unlink.
	If file is already non-existent, do nothing.
	(build_rename): Use move_path, rather than rename.  If file
	already appears to have been renamed, do nothing.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* app_state.cc (allow_working_copy): Make logging more sensible.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* transforms.cc (length):
	* database.cc (sql, load, open):
	* commands.cc (rename, attr):
	* change_set.cc (move_files_to_tmp_bottom_up)
	(move_files_from_tmp_top_down): Merge fixups.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* database_check.cc: Track and report on manifest and revision
	parseability.
	* tests/t_database_check_normalized.at: Update to expect "not
	parseable" messages rather than "not normalized" messages.
	All tests pass.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* tests/t_unreadable_MT.at: This test was called "do not fail on
	unreadable MT/options".  I do not know why we wanted such
	behavior.  I am making it "fail cleanly on unreadable
	MT/options".

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (check_fp_normalizes_to, test_file_path_internal):
	Oops, there were more places testing for non-brokenness; break
	them too.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (test_split_join): Test that you cannot create a path
	in MT by joining.
	(file_path): Implement it.
	(split): Break, to match broken behavior of old splitter (easier
	than fixing change_set.cc...)
	(file_path_internal): Test for brokenness accordingly.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (cat): Hack so that 'cat file REV PATH' works
	correctly both inside and outside of working copy, interpreting
	path slightly differently in each case.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* tests/t_normalized_filenames.at: Internal unnormalized pathnames
	are no longer silently normalized, but rather a hard error.
	Adjust test accordingly.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* paths.hh (file_path_internal_from_user): New constructor.
	* paths.cc (test_file_path_internal): Test it.
	(file_path::file_path): Implement it.
	* commands.cc (cat): Use it to create/validate passed in
	filenames.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (test_system_path): Require that system_path normalize
	out ..'s.
	(system_path): Do so.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* work.cc (build_additions): Remove redundant (and now wrong)
	code.
	Test 53 now passes.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (make_dir_for): Oops, this doesn't need a
	fs::native.
	Test 37 now passes.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (mkdir): New function.  Now with extra brain-eating
	power.
	(mkdir_p, make_dir_for, delete_file, delete_dir_recursive)
	(move_file, move_dir, write_data_impl): Use it, to make all
	fs::path's native and disable boost's random rejection of paths.

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (test_file_path_external_prefix_a_b)
	(test_file_path_external_no_prefix, test_file_path_internal): Test
	for validity of more strange characters (,+@*%#$=).

2005-08-26  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (ident_existing_file): Remove accidentally-left-in
	code.  Test 26 now passes.
	* lua.cc (monotone_includedir_for_lua, load_rcfile): Add
	fs::native's.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.hh (system_path::system_path): Add new boolean argument
	controlling some access_tracker behavior.
	* app_state.cc (allow_working_copy): Use it.
	* paths.cc (system_path): Implement it.
	(test_system_path): Test it.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (walk_tree): Return properly.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (test_file_path_internal): Add tests for
	file_path.empty().
	* file_io.cc (walk_tree_recursive): Add explicit fs::native.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc: Many small changes.  Unit tests now pass.  72
	unexpected autotest failures.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (file_path): Fix up error reporting in external path
	normalization.
	(test_file_path_external_no_prefix): "" is always an invalid
	path.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* database.cc (sql): Only check schema version when db actually
	exists.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (read_data_for_command_line): We are given a
	system_path.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc: Fix all unit test failures, except for two mysterious
	boost::too_few_args exceptions.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc, unix/fs.cc: Many, many fixes and some new tests too.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (struct access_tracker): Doh, initializer should set
	'initialized'...
	(test_file_path_internal): It's valid for a split file
	to have a null component if the file is "".

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (in_bookkeeping_dir): Last change didn't work out so
	well; let's remove some negatives and see if I can understand what
	the code does this way...

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (not_in_bookkeeping_dir): Handle "MT" case.
	Update tests to make sure it sticks...

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* unit_tests.{cc,hh} (init_unit_test_suite): Remove
	path_component_tests.
	* unix/fs.cc (tilde_expand): Another compile fix.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* {unix,win32}/fs.cc: Misc. compile fixes.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* Makefile.am (UNIX_PLATFORM_SOURCES): Add unix/fs.cc
	(WIN32_PLATFORM_SOURCES): Add win32/fs.cc
	* paths.hh (bookkeeping_path): Implement default constructor.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* rcs_import.cc (import_cvs_repo):
	* lua.cc (default_rcfilename):
	* diff_patch.cc (get_version): Small compile fixes.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.{cc,hh} (is_bookkeeping_path): New static method.
	* file_io.cc (walk_tree_recursive): Use it.  Now compiles.
	paths.cc and file_io.cc now compile.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (delete_dir_recursive): Implement.
	Misc. compile fixes.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (test_book_keeping_file): Remove.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (walk_tree_recursive, walk_tree): Implement.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (const_system_path): Do tilde expansion.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (read_localized_data, read_data_for_command_line)
	(write_localized_data, write_data, write_data_impl): Implement.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (read_data): Implement.  Remove the base64<gzip<>>
	versions.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (move_file, move_dir): Implement.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (assert_path_is_nonexistent, assert_path_is_file)
	(assert_path_is_directory, require_path_is_nonexistent)
	(require_path_is_file, require_path_is_directory)
	(ident_existing_file, mkdir_p, make_dir_for, delete_file)
	(delete_dir_recursive): Implement.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* Audit uses of 'file_exists', because its semantics have changed;
	it now checks to see if a path exists and is a regular file,
	rather than that it simply exists.  A fair amount of code already
	thought it meant that... other places now use 'path_exists'.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (path_exists, directory_exists, file_exists):
	Implement.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* platform.hh (get_path_status): New function.
	* unix/fs.cc (get_path_status): Implement.
	* win32/fs.cc (get_path_status): Implement inefficiently (does
	win32 have stat?)

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* file_io.cc (get_homedir, tilde_expand, book_keeping_file)
	(book_keeping_dir): Remove.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* platform.hh (get_homedir): New function.
	* {win32,unix}/fs.cc (get_homedir): Expose.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* Minor compile fixes.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* platform.hh (tilde_expand): New function.
	* win32/fs.cc, unix/fs.cc: Implement it.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc: Many more fixes.  Now compiles with and without unit
	tests.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc: Lots of compile fixes for unit tests.
	Add a test for access_tracker.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc: Many fixes.  Now compiles.

2005-08-25  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (system_path): Implement.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (fully_normalized_path): Use find_first_of.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (find_and_go_to_working_copy, save_initial_path)
	(go_to_working_copy): Use new checked structure.
	(operator <<): Make sure we can log our access_tracked values
	without marking them as used.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (struct access_tracker): Add invariant checking on
	lifetime usage of path roots.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.hh (any_path::operator =): return *this.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.{cc,hh}: More fixes.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.{cc,hh}: Reorganize a bit.  Implement file_path and
	bookkeeping_path.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (file_path): Implement basic constructor.
	Misc compile fixes.
	Add single-character names to tests.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (go_to_working_copy): New function.  Implement.
	* app_state.cc (create_working_copy): Adjust accordingly.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (find_and_go_to_working_copy): Implement.
	* app_state.cc (allow_working_copy): Adjust accordingly.
	(relative_directory): Remove.
	* file_io.cc (find_working_copy): Remove.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (save_initial_path): Update for previous changes.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (test_system_path): Add tests for the
	from-any_path constructor.  Add test for "~foo" handling.
	Start cleaning up path roots.
	* platform.hh: Note that get_current_working_dir() is
	charset-broken (i.e., operations started inside non-utf8
	directories are probably broken).

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* app_state.cc (allow_working_copy):
	* change_set.cc (print_insane_change_set): Two more small compile
	fixes.
	All remaining compile errors are localized to unimplemented
	paths.cc/file_io.cc functionality.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* database.cc (initialize): Missing ;.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* monotone.cc (cpp_main): Handle message_file right.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* change_set.cc (print_insane_path_rearrangement):
	* database.cc (initialize):
	* monotone.cc (cpp_main): More small compile fixes.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* file_io.hh
	({assert,require}_path_is_{nonexistent,file,directory}): New
	functions.
	Use them everywhere.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* basic_io.hh: #include "paths.hh".
	* monotone.cc (add_rcfile): Remove obsolete absolutification, etc.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.hh (system_path): Add a from-any_path constructor.
	* Makefile.am (MOST_SOURCES): Remove path_component.{cc,hh}.
	* basic_io.hh (push_file_pair): New method.
	* change_set.cc (print_insane_change_set)
	(print_insane_path_rearrangement): Use it.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.hh (any_path::as_internal): On second thought, return a
	std::string, not a utf8 -- utf8 would be better, but should wait
	for some more general charset handling cleanup.
	* Adjust other files accordingly.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* More compile fixes.  All remaing compile errors are real
	problems, yay.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* Lots and lots more compile fixes.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.hh, monotone.cc, app_state.hh, app_state.cc:
	* unix/inodeprint.cc: More compile fixes.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* manifest.hh: Include paths.hh.
	* file_io.hh: Fix syntax errors, and fixup interface.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.hh, sanity.hh: Compilation fixes.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.cc: Update tests to use path_state_* and pass utf8
	objects.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.hh (file_path_external): Take a utf8() object, always.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.hh (class file_path): Make "convenience functions"
	required.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* Switch rest of instances to using convenience functions.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* Switch many instances to using convenience functions.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* paths.hh (file_path_internal, file_path_external): Define
	convenience functions.
	(file_path, bookkeeping_path, system_path): Add default
	constructors.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* app_state.cc, change_set.cc, change_set.hh, commands.cc:
	* inodeprint.cc, manifest.cc, rcs_import.cc, restrictions.cc:
	* work.cc: Audit all calls to file_path() to add internal/external
	notation.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* app_state.cc: More paths.hh conversion.
	(app_state::prefix): Remove.
	* commands.cc: Remove uses of app.prefix.
	* automate.cc (automate_attributes): Likewise.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* paths.hh (any_path::as_internal): On second thought, return a
	utf8 object.
	* app_state.cc (set_database): Take a system_path.
	(set_pidfile): Likewise.
	* monotone.cc (cpp_main): Pass one.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* file_io.hh (get_homedir): Return a system_path.
	* app_state.hh (app_state): Make pidfile a system_path.
	* sanity.hh (sanity::filename): Make a system_path.
	* monotone.cc (cpp_main): Adjust accordingly.
	* paths.hh (any_path): Add as_internal() to interface.
	* paths.cc: Add roundtripping tests.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* platform.hh, unix/fs.cc, win32/fs.cc
	(change_current_working_dir): Take an any_path, not a string.
	* rcs_import.{cc,hh}: Convert to paths.hh.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (pid_file): Remove fs::path.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* mkstemp.cc (monotone_mkstemp): Remove references to fs::path.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* change_set.cc (apply_rearrangement_to_filesystem): Oops, missed
	some local_path's.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* path_component.{cc,hh}: Delete.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* change_set.cc (move_files_to_tmp_bottom_up)
	(move_files_from_tmp_top_down): Convert to paths.hh.
	Whole file: stop using path_component.hh.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (test_bookkeeping_path): Oops, "" is an invalid
	bookkeeping_path.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* lua.cc, paths.cc: Few more tweaks for previous change.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* paths.{cc,hh}: Add / operators.  Make that the usual way to use
	bookkeeping_path's.
	* work.cc: Adjust accordingly.
	* lua.cc (working_copy_rcfilename): Likewise.
	* commands.cc (update): Likewise.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* paths.{cc,hh} (operator <<): Implement for any_paths.
	* paths.hh (class bookkeeping_path): Note that current design is
	bogus to remind myself to fix it tomorrow...

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* work.{hh,cc}: Convert to paths.hh.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* lua.{cc,hh}: Mostly convert to paths.hh.  (Still uses boost::fs
	internally for some directory iteration.)
	* app_state.cc (load_rcfiles): Update accordingly.
	* file_io.hh (path_state): De-templatify; take any_path instead of
	a T.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (any_path): New base class.
	(file_path, bookkeeping_path, system_path): Inherit from it.
	* transforms.{hh,cc} (utf8_to_system): Actually, always take a
	utf8 after all (but still have two return types).

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* transforms.cc: Convert to paths.hh.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* transforms.{cc,hh} (localized, localized_as_string): Remove.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* transforms.cc (utf8_to_system): Make fast.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* transforms.hh (utf8_to_system): Add a string->string version.
	* transforms.cc (utf8_to_system): Implement it.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (localized_path_str): New function.
	Fix some tests.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* commands.cc: Convert to paths.hh.
	* mkstemp.cc (monotone_mkstemp): Likewise.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* vocab_terms.hh, vocab.cc: Remove file_path, local_path.
	* database.{hh,cc}, monotone.cc: Convert to paths.hh.
	* file_io.{hh,cc}: Start to convert to paths.hh.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* paths.{cc,hh} (fully_normalized_path): Implement.
	(external_path): Rename to system_path.
	Misc. other updates.

2005-08-21  Eric Anderson  <anderse-monotone@cello.hpl.hp.com>
	* file_io.cc, file_io.hh, lua.cc, std_hooks.lua: determine if a
	file is binary by looking at it incrementally, rather than reading
	it in entirely.  Prepare for making it possible to control what
	characters are considered "binary"

2005-08-20  Nathaniel Smith  <njs@codesourcery.com>

	* paths.cc (is_absolute): New function.
	(file_path::file_path(vector<path_component>))
	(file_path::split): Implement.

2005-08-20  Nathaniel Smith  <njs@pobox.com>

	* interner.hh (interner): Add a scary constructor that lets us
	insert an initial value and assert that we already knew that the
	value assigned to it would be.  (This lets us make it an inlined
	constant.)

2005-08-20  Nathaniel Smith  <njs@pobox.com>

	* paths.cc: Yet more tests.

2005-08-20  Nathaniel Smith  <njs@pobox.com>

	* paths.cc (save_initial_path): Implement.
	Add more tests.

2005-08-20  Nathaniel Smith  <njs@codesourcery.com>

	* paths.{cc,hh}: New files.
	* Makefile.am (MOST_SOURCES): Add them.
	* unit_tests.hh (add_paths_tests): Declare.
	* unit_tests.cc (init_unit_test_suite): Add them.
	* platform.hh (get_current_working_dir)
	(change_current_working_dir):  New functions.
	* {unix,win32}/fs.cc: New files.

2005-08-19  Nathaniel Smith  <njs@codesourcery.com>

	* monotone.texi (Tutorial): Tweak wording, use --db at more
	appropriate places.

2005-08-26  Richard Levitte  <richard@levitte.org>

	* database.cc (version): Revert the change done earlier, as it
	aborted if the schema isn't the current one, rendering this method
	useless.

2005-08-26  Matt Johnston  <matt@ucc.asn.au>

	* change_set.cc (check_depth, confirm_proper_tree):
	more efficient algorithm to check for no loops
	* constants.hh: new constant max_path_depth to limit
	recursion in check_depth.

2005-08-26  Benoît Dejean  <benoit@placenet.org>

	* po/fr.po: Updated French translation.

2005-08-26  Richard Levitte  <richard@levitte.org>

	* options.hh, monotone.cc: Add the '--execute' command-specific
	option.
	* monotone.cc (cpp_main): ... and process it.
	* app_state.hh (class app_state): Add the 'execute' boolean.
	* app_state.cc (app_state): Initialise it.
	* commands.cc (CMD(drop)): Add '--execute' capability.
	* commands.cc (CMD(rename)): Add '--execute' capability.  Pass
	'app' to build_rename.
	* work.hh, work.cc (build_deletions, build_rename): Do the actual
	work.  This required the addition of an app_state parameter to
	build_rename.

	* tests/t_drop_execute.at, tests/t_rename_execute.at: New tests.
	* testsuite.at: Add them.

2005-08-26  Benoît Dejean  <benoit@placenet.org>

	* mt_version.cc (print_full_version): Merged strings.
	* change_set.cc: No i18n for unittests. Wow, this saves
	21 strings (total 781).

2005-08-25  Benoît Dejean  <benoit@placenet.org>

	* commands.cc (safe_gettext): New function.
	(explain_usage): Used there to avoid _("").

2005-08-25  Benoît Dejean  <benoit@placenet.org>

	* sanity.{cc,hh} (sanity::do_format): Merged code from
	sanity::{log, warning, progress} in order to merge
	strings. Fixed exception rethrowing.

2005-08-25  Benoît Dejean  <benoit@placenet.org>

	* commands.cc (CMD(lca)): One more string for i18n.
	(CMD(trusted)): Merged all strings.

2005-08-25  Benoît Dejean  <benoit@placenet.org>

	* po/fr.po: Updated French translation.

2005-08-25  Benoît Dejean  <benoit@placenet.org>

	* database.cc (database::version): Marked string for i18n
	and simplifed.
	(database::info): Reworked to merge all strings for i18n.

2005-08-25  Benoît Dejean  <benoit@placenet.org>

	* database.{cc,hh} (database::open, database::check_filename):
	New functions to avoid error handling code and string duplicates.

2005-08-25  Matt Johnston  <matt@ucc.asn.au>

	* transform.cc ({int,ext}ernalize_rsa_keypair_id): don't
	convert the username portion of key ids to/from ACE.
	* tests/t_genkey.at: check that foo+bar@example.com works
	and foobar@exam+ple.com doesn't.

2005-08-24  Benoît Dejean  <benoit@placenet.org>

	* database.cc (assert_sqlite3_ok): Somehow merged error messages.

2005-08-24  Benoît Dejean  <benoit@placenet.org>

	* change_set.cc (move_files_to_tmp_bottom_up): Better strings.
	* keys.cc (generate_key_pair): Merged 2 strings.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* database.cc (assert_sqlite3_ok): Remove accidentally-left-in
	format string argument.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* revision.cc (check_sane_history): Add MM's for calculated
	changesets.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* database.cc (assert_sqlite3_ok): Don't print the raw sqlite
	error code.  Do add some auxiliary information when sqlite errors
	are confusing.

2005-08-24  Nathaniel Smith  <njs@pobox.com>

	* Back out most changes since
	b580c6ac5bf8eea1f442b8bddc60283b047ade1e.  Handling charsets
	properly by working in utf8 and then converting sucks.  Problems
	include
	  - gettext hates you (wants to return stuff in local charset)
	  - strerror hates you (same reason, but you can't turn it off)
	  - can't report charset conversion errors
	We thus return to our "sorta-correct, by accident" status quo.
	Only change left in is signedness fix in
	5548868ab56d939c1fd8713aa2ac8caacd1184a1.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* ui.cc (sanitize): Fix signedness bug in comparison.
	* unix/unix.{cc,hh}: New files.
	* Makefile.am (UNIX_PLATFORM_SOURCES): Add them.
	* unix/process.cc (is_executable, make_executable): Use new
	function last_error.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* transforms.{cc,hh} (system_charset): Expose.
	* monotone.cc (cpp_main): Use it to fiddle with gettext's charset
	conversion and make --help output actually correct.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* transforms.cc (outprep): Don't sanitize all output; removes too
	many valid characters (\r, \t, etc.).
	* ui.cc: Call outprep on ticker output.
	(inform): Do still sanitize ui.inform() output.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* transforms.cc (outprep): New function.
	* ui.cc (inform): Use it.
	* monotone.cc (cpp_main): Use it.
	Everything that writes user-intended output directly (i.e., via
	cout) must call outprep() on that data before printing it.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* monotone.cc (cpp_main): Trick popt into converting its generated
	help messages into the current locale's charset.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* ui.cc (inform, sanitize): Convert all output from utf8 to
	current locale's charset.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* monotone.cc (cpp_main): Use bind_textdomain_codeset to request
	that all gettext'ed strings be returned in UTF-8.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* idna/nfkc.c (g_utf8_strlen): Expose.
	* transforms.{cc,hh} (length): New function.
	* ui.cc (write_ticks): Use length() instead of .size() to
	calculate string widths; should support multibyte characters
	better.  (Still some problems relating to truncating strings to
	avoid overflow -- calculate truncation by length, but perform
	truncation by bytes...)

2005-08-24  Benoît Dejean  <benoit@placenet.org>

	* po/fr.po: Updated French translation.

2005-08-24  Benoît Dejean  <benoit@placenet.org>

	* monotone.cc:
	* commands.cc: Two more i18n strings.

2005-08-23  Benoît Dejean  <benoit@placenet.org>

	* lua.cc: boost::format vs. F.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* AUTHORS: Add Benoît Dejean <benoit@placenet.org>.  Create new
	section for translators.  Add Benoît there too.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* commands.cc: N_("") -> "".

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* commands.cc: Make all CMD() calls use N_() instead of _().
	(commands): Insert _() everywhere usage strings are used.  This is
	icky.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* keys.cc (get_passphrase): Put back trailing ": " removed in
	recent i18n changes.

2005-08-23  Benoît Dejean  <benoit@placenet.org>

	* change_set.cc (dump_change_set): boost::format instead of F.
	* commands.cc (get_log_message, notify_if_multiple_heads,
	complete, CMD(attr)): Marked some strings for i18n. Replaced a
	multiline string by prefix_lines_with(). Merged strings.
	* diff_patch.cc (merge_provider::try_to_merge_files): Merged
	strings.
	* i18n.h: N_() stands for gettext_noop(), not plural.
	* keys.cc (get_passphrase): Fixed string surgery.
	* netsync.cc: i18nized tickers' labels. Added xgettext comment
	as tickers do not play well with multibytes characters (like é).
	(session::analyze_attachment): Fixed string surgery.
	(session::process_hello_cmd): Merged many strings.
	(session::process_data_cmd): Removed some leading/trailing
	whitespaces.
	* sanity.cc: Marked error prefixes for i18n.
	* ui.cc (tick_write_count::write_ticks): Reworked and fixed
	surgery. Merged some strings.

2005-08-23  Benoît Dejean  <benoit@placenet.org>

	* commands.cc (CMD*): _("") -> "" as _("") returns the PO
	header.

2005-08-23  Benoît Dejean  <benoit@placenet.org>

	* transforms.cc (check_idna_encoding): No i18n for unittests.

2005-08-23  Benoît Dejean  <benoit@placenet.org>

	* change_set.cc (dump_change_set): boost::format instead of F.
	* commands.cc (get_log_message, notify_if_multiple_heads,
	complete, CMD(attr)): Marked some strings for i18n. Replaced a
	multiline string by prefix_lines_with(). Merged strings.
	* diff_patch.cc (merge_provider::try_to_merge_files): Merged
	strings.
	* i18n.h: N_() stands for gettext_noop(), not plural.
	* keys.cc (get_passphrase): Fixed string surgery.
	* netsync.cc: i18nized tickers' labels. Added xgettext comment
	as tickers do not play well with multibytes characters (like é).
	(session::analyze_attachment): Fixed string surgery.
	(session::process_hello_cmd): Merged many strings.
	(session::process_data_cmd): Removed some leading/trailing
	whitespaces.
	* sanity.cc: Marked error prefixes for i18n.
	* ui.cc (tick_write_count::write_ticks): Reworked and fixed
	surgery. Merged some strings.

2005-08-23  Benoît Dejean  <benoit@placenet.org>

	* netcmd.cc (test_netcmd_functions): Don't translate unittest
	strings.
	* rcs_import.cc (cvs_commit::cvs_commit):
	* database.cc (version_cache::put):
	* lua.cc (dump_stack): boost::format vs. F for strings that are
	not messages.

2005-08-23  Benoît Dejean  <benoit@placenet.org>

	* xdelta.cc: Don't translate unittest strings.

2005-08-23  Matthew Gregan  <kinetik@orcon.net.nz>

	* monotone.texi: Bring 'update' syntax up to date.

2005-08-23  Nathaniel Smith  <njs@pobox.com>

	* tests/t_diff_external.at: --diff-args without --external is an
	error.
	* commands.cc (diff): Likewise.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* contrib/ciabot_monotone.py (send_change_for): Handle author
	names with spaces in.

2005-08-22  Matt Johnston  <matt@ucc.asn.au>

	* HACKING: change the vim modeline to something that seems to work
	better.

2005-08-23  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* contrib/monotone.el: When running monotone commands, re-use
	*monotone* buffers. Make the "status" command use the prefix
	argument. Make the "tree"-restricted commands work in dired
	buffers. Add the "--no-merges" option in the log command. Various
	other innocuous changes.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* mt_version.cc (print_full_version): Typo.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* mt_version.cc: Include sanity.hh.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (process_error_cmd, run_netsync_protocol): Remove
	some newlines to avoid translation noise.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* po/LINGUAS, po/ja.po: Remove ja translation again, it seems to
	be corrupt.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (update): Don't use F() to indent things.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (dump_diffs): Don't use F() to create diff headers.
	(commands::process): Put '' in the log message to make Benoît
	Dejean happy ;-).

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* po/LINGUAS, po/ja.po: Add Japanese translation by Satoru SATOH.

2005-08-20  Benoît Dejean  <benoit@placenet.org>

	* po/monotone.pot: Remove from version control.
	* po/POTFILES.skip: New file.
	* po/fr.po: French translation (initial version).
	* po/LINGUAS: Add fr.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (read): Use FP (thanks to Benoît Dejean for
	catch).
	* mt_version.cc (print_version, print_full_version): Mark more
	strings for i18n (also thanks to Benoît Dejean).

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (commands): Revert previous changes, xgettext is
	buggy.
	Mark every CMD() string argument with _().
	* i18n.h, Makefile.am: New file.
	* sanity.hh: Include it.
	* po/Makevars (XGETTEXT_OPTIONS): Learn about _() and N_() as
	markers.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (commands): Oops, can't call gettext on a
	std::string...

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* monotone.cc (coptions, options): Use gettext_noop to mark usage
	strings for i18n.
	* commands.cc (commands): gettextify command descriptions
	* po/Makevars (XGETTEXT_OPTIONS): Include the 2nd, 3rd, and 4th
	arguments to CMD macro as translatedable strings.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* database.cc: Replace a bunch of F()'s by boost::format's,
	because F is only for strings displayed to user.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* po/Makevars (XGETTEXT_OPTIONS): Extract FP'ed strings.

2005-08-22  Nathaniel Smith  <njs@pobox.com>

	* sanity.hh (FP): New macro.  Usage:
	FP("frobbed %i bar", "frobbed %s bars", num_bars) % num_bars

2005-08-22  Richard Levitte  <richard@levitte.org>

	* contrib/monotone-import.pl: When temporarly touching files that
	have disappeared since last import, don't forget to create
	intermediary directories as well (and to remove them later on).
	Make sure all file arguments are quoted.  Finally, pick up the
	newly created revision by reading MT/revision instead of relying
	on backquotes working.
	Notofication and initial correction submitted by
	BigFish <bigfische@gmail.com>.

2005-08-20  Matthew Gregan  <kinetik@orcon.net.nz>

	* revision.hh: Delete doubled line of text in comment.

2005-08-20  Benoît Dejean  <benoit@placenet.org>

	* monotone.cc (cpp_main): setlocale(LC_ALL).
	* commands.cc (dropkey): Unify warning into a single string.

2005-08-20  Nathaniel Smith  <njs@codesourcery.com>

	* contrib/monoprof.sh (test_commit): Kernel tarball unpacks to
	linux-$KVER/, not $KVER/.

2005-08-19  Nathaniel Smith  <njs@codesourcery.com>

	* contrib/monoprof.sh (SETUP): Put netsync hooks in the default
	hook file.

2005-08-19  Nathaniel Smith  <njs@codesourcery.com>

	* contrib/monoprof.sh: Give a sensible error message if $DATADIR
	doesn't exist.

2005-08-20  Matt Johnston  <matt@ucc.asn.au>

	* database.cc (put_revision): uncomment check_sane_history call
	(was accidentally committed commented out)

2005-08-19  Nathaniel Smith  <njs@codesourcery.com>

	* monotone.texi (Tutorial): Tweak wording, use --db at more
	appropriate places.

2005-08-19  Matthew Gregan  <kinetik@orcon.net.nz>

	* tests/t_crlf.at: Adjust expected line count to accomodate diff
	output change.
	* commands.cc (CMD(diff)): Include base revision ID in diff output
	header when diffing against working copy.  Useful to identify what
	revision a patch was created against.
	* std_hooks.lua (ignore_file): Ignore Visual SourceSafe junk.

2005-08-18  Timothy Brownawell  <tbrownaw@gmail.com>

	* std_hooks.lua: accept_testresult_change now only cares about
	testresults listed in MT/wanted-testresults

2005-08-18  Matthew Gregan  <kinetik@orcon.net.nz>

	* INSTALL: Remove outdated references to configure options and
	Solaris build workarounds.
	* configure.ac: Lower gettext requirement from 0.12.1 to 0.11.5.

2005-08-17  Timothy Brownawell  <tbrownaw@gmail.com>

	* sanity.cc (gasp()): When catching an error from dumping a MM'd
	variable, do not discard output generated prior to the error. This
	way, at least the header line (function name, file, line no.) is
	printed.
	* change_set.cc: write_insane_change_set: new function to write a
	change set without sanity checking it, now used by dump().

2005-08-17  Patrick Mauritz  <oxygene@studentenbude.ath.cx>

	* unix/process.cc: missing include
	* m4/fexceptions.m4, configure.ac, Makefile.am: remove hardcoded
	-fexceptions in CFLAGS and add it only if compiler doesn't freak
	out.

2005-08-17  Nathaniel Smith  <njs@pobox.com>

	* work.cc (build_additions): Tweak wording.

2005-08-17  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc: Add IANA port assignment to the todo list.

2005-08-17  Nathaniel Smith  <njs@pobox.com>

	* unix/process.cc (make_executable): Open the fd read-only, avoids
	problems with read-only files, and a writeable fd doesn't seem to
	be necessary to change permission bits.

2005-08-17  Nathaniel Smith  <njs@pobox.com>

	* unix/process.cc (is_executable, make_executable): When reporting
	an error in a syscall, include the actual error message.

2005-08-17  Nathaniel Smith  <njs@pobox.com>

	* lua.cc (dump_stack): New function.
	(Lua::fail): New method; use above.
	(get, get_fn, get_tab, get_str, get_num, get_bool, extract_str)
	(extract_int, extract_double, extract_bool, begin, next, pop): Use
	it, to give better logging.

2005-08-17  Nathaniel Smith  <njs@pobox.com>

	* Makefile.am (lib3rdparty_a_CFLAGS): Build 3rd party C code with
	-fexceptions.

2005-08-17  Matthew Gregan  <kinetik@orcon.net.nz>

	* win32/process.cc: Slightly smarter argv->cmdline munging.
	* std_hooks.lua: Merge hooks for TortoiseMerge (part of
	TortoiseSVN).

2005-08-17  Nathaniel Smith  <njs@pobox.com>

	* lua.cc (lua_hooks): Re-enable panic thrower, we no longer
	support Lua 4.

2005-08-16  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc: Add more netsync todos.

2005-08-15  Nathaniel Smith  <njs@pobox.com>

	* tests/t_explicit_merge_with_anc.at: New test.
	* testsuite.at: Add it.

2005-08-15  Nathaniel Smith  <njs@pobox.com>

	* tests/t_log_brief.at: New test.
	* testsuite.at: Add it.

2005-08-15  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (fcommit): Remove.  This command has never been
	documented, tested, or maintained; it also doesn't avoid the use
	of temporary files (which was supposed to be its purpose).  Has it
	ever actually been used...?

2005-08-15  Nathaniel Smith  <njs@pobox.com>

	* lua.cc (hook_init_attributes): Do more logging; use begin()
	instead of starting iteration by hand.

2005-08-15  Patrick Mauritz  <oxygene@studentenbude.ath.cx>

	* testsuite.at, tests/*.at: make testsuite less demanding:
	- QGREP() and QEGREP() provide a portable [e]grep -q
	- export FOO=bar -> FOO=bar; export FOO
	- tail -n $x -> TAIL($x) with appropriate macro

2005-08-15  Patrick Mauritz  <oxygene@studentenbude.ath.cx>

	* m4/typeof.m4: new test, looks if compiler knows the typeof()
	extension
	* configure.ac: use it
	* sanity.hh: use the test, and boost's abstraction over
	__PRETTY_FUNCTION__ and similar pseudo-macros

2005-08-15  Patrick Mauritz  <oxygene@studentenbude.ath.cx>

	* configure.ac (BOOST_FIX_VERSION): only apply that fix on gcc.

2005-08-14  Nathaniel Smith  <njs@pobox.com>

	* configure.ac (BOOST_VERSION_CHECK, BOOST_FIX_VERSION): Fix for
	cross-compilation.  (Thanks to John Bowler <jbowler@acm.org>.)

2005-08-14  Matthew Gregan  <kinetik@orcon.net.nz>

	* testsuite.at: Don't use agraph.
	* Makefile.am: Minor cleanups.

2005-08-13  Patrick Mauritz  <oxygene@studentenbude.ath.cx>

	* botan/gzip.cpp, botan/mutex.cpp: c functions via c* headers need
	std:: prefix

2005-08-13  Patrick Mauritz  <oxygene@studentenbude.ath.cx>

	* schema_migration.cc (lowercase): it's only used for processing sha1
	values whos size we know: make array size constant
	* transforms.cc (encode_hexenc, decode_hexenc): they have to work with
	all kinds of string sizes, so at least make them nicer by using
	boost::scoped_array

2005-08-13  Patrick Mauritz  <oxygene@studentenbude.ath.cx>

	* revision.cc: make copy constructor of revision_set behave like
	normal constructor in case it's copying a freshly created object

2005-08-13  Nathaniel Smith  <njs@pobox.com>

	* testsuite.at: Use SEGV to kill netsync servers, in hopes it will
	give better coverage information.

2005-08-13  Julio M. Merino Vidal  <jmmv@menta.net>

	* configure.ac: Remove an obsolete check to see if SQLite was
	bundled or not, because the bundled version has been used
	exclusively for quite some time.

2005-08-13  Julio M. Merino Vidal  <jmmv@menta.net>

	* database_check.cc: Remove trailing newline from error messages
	when embedding them inside other strings, so that the trailing
	closing parenthesis is printed correctly.

2005-08-13  Julio M. Merino Vidal  <jmmv@menta.net>

	* configure.ac: Add '-mt' as another possible suffix to detect the
	Boost libraries.  It's very common when these libraries are built
	with the "native naming layout".

2005-08-13  Nathaniel Smith  <njs@pobox.com>

	* monotone.1, monotone.texi: Don't mention agraph.
	* tests/t_netsync_repeated.at: Don't use agraph.
	* tests/t_netsync_unrelated.at: Likewise.

2005-08-13  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (agraph): Remove.

2005-08-13  Nathaniel Smith  <njs@pobox.com>

	* tests/t_commit_log_writeback.at: New test.
	* testsuite.at: Add it.

2005-08-12  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (commit): When user uses --message or
	--message-file, don't require non-empty logs, and don't write out
	message to MT/log.  (This makes re-running a 'commit -m foo'
	command line until it works possible; otherwise the second try
	will get a 'MT/log non-empty and -m supplied' error.)

2005-08-11  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc: Add a list of ideas for improvement that will break
	network compatibility and thus perhaps should go together.

2005-08-11  Nathaniel Smith  <njs@pobox.com>

	* tests/t_commit_message_file.at: Un-double file contents.

2005-08-11  Nathaniel Smith  <njs@pobox.com>

	* lua.cc (ok, extract_str, extract_int, extract_double)
	(extract_bool): Add more logging.

2005-08-11  Patrick Mauritz <oxygene@studentenbude.ath.cx>

	* INSTALL: remove section about crypto++ on solaris
	* config.rpath, mkinstalldirs, po/Makefile.in.in,
	  various files in m4, ABOUT-NLS:
	  remove as they're autogenerated
	* hash_map.hh, m4/gnucxxhashmap.m4, m4/stlporthashmap.m4:
	  new files, abstraction over hash_map differences in STL impls.
	* m4/externtemplate.m4: new file, check if compiler is happy
	  with "extern template"
	* configure.ac: hook up the new autoconf tests
	* Makefile.am: remove -Wall
	* botan/gzip.cpp, botan/mutex.cpp: add includes
	* constants.*: move values to .hh if used for array sizes
	* interner.hh, xdelta.cc: use hash_map.hh
	* merkle_tree.cc, unix/inodeprint.cc: make array size truly
	  constant
	* sanity.hh: work-around for missing typeof() and
	  __PRETTY_FUNCTIONS on non-gcc compilers
	* schema_migration.cc, transforms.cc: moved dynamically
	  initialized array to heap
	* transforms.hh, vocab.hh: use externtemplate autoconf test

2005-08-10  Matthew Gregan  <kinetik@orcon.net.nz>

	* monotone.spec: include zlib-devel and texinfo as build
	requirements, zlib as a runtime requirement.

2005-08-09  Eric Anderson  <anderse-monotone@cello.hpl.hp.com>

	* tests/perf-test.sh: A repeatable performance test harness
	* tests/parse-accounting.pl: A script that parses the accounting
	output into a nice tabular format

2005-08-09  Eric Anderson  <anderse-monotone@cello.hpl.hp.com>

	* Changes to significantly improve network pull performance
	* string_queue.hh: created to store pending data and allow for
	efficient removal from the front.  The string queue automatically
	reduces its buffer size if it is very empty.
	* hmac.{cc,hh}: Add in a version of chained_hmac::process that can
	operate on a string_queue for use during read.
	* netcmd.{cc,hh}: update netcmd::read to use a string_queue rather
	than a string, update all the regression tests also.  This required
	the somewhat ugly creation of a read_string function because the
	netcmd read and write functions are no longer using the same type.
	* netio.hh: introduce functions for operating on a string_queue. They
	are identical to the equivalent string functions except for the type
	of the argument.
	* netsync.cc: Use a string_queue rather than a string for storing the
	input and output buffers.

	* string_queue.cc: unit tests (Matt Johnston)

2005-08-09  Richard Li  <richardl@redhat.com>

	* std_hooks.lua (merge2, merge3): explain a little better why
	monotone can't find a merge command.

2005-08-09  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (update): Fix helpful error message to suggest
	_current_ commandline syntax.

2005-08-09  Olivier Andrieu  <oliv__a@users.sourceforge.net>

	* contrib/monotone.el: a couple of fixes spotted by the compiler
	* Changelog, contrib/colorize: utf8ize

2005-08-09  Nathaniel Smith  <njs@pobox.com>

	* NEWS: Put a time in.
	* po/monotone.pot: Regenerate.

2005-08-08  Nathaniel Smith  <njs@pobox.com>

	* configure.ac, monotone.spec, debian/changelog:
	* win32/monotone.iss: Bump version number.

2005-08-08  Nathaniel Smith  <njs@pobox.com>

	* UPGRADE: Fix title.
	* NEWS: Add --lca.

2005-08-08  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (merge, propagate): Take --lca.
	* options.hh: Add OPT_LCA.
	* monotone.cc (coptions, cpp_main): Support it it.
	* app_state.{hh,cc} (app_state::usa_lca): New variable.
	* revision.cc (find_common_ancestor_for_merge): Use LCA if user
	passed --lca.
	* tests/t_merge_lca.at: New test.
	* testsuite.at: Add it.
	* monotone.texi (Tree): Document --lca.

2005-08-08  Nathaniel Smith  <njs@pobox.com>

	* NEWS: First-pass for 0.22 release.
	* UPGRADE: Likewise.

2005-08-08  Nathaniel Smith  <njs@pobox.com>

	* Makefile.am (BOTAN_SOURCES): Add botan headers.
	* po/monotone.pot: Regenerate.

2005-08-07  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (rebuild_merkle_trees, insert_with_parents): Make a
	ticker for added revisions, since traversing the tree to pull in
	ancestors causes a noticeable pause before the cert/key tickers
	start up.
	(insert_with_parents): Also simplify logic.

2005-08-07  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (pull): Clarify what the "doing anonymous pull"
	message means and what you might do about it.

2005-08-07  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (Network Service, Hooks): Document
	get_netsync_read_permitted as getting a nil value on anonymous
	connects.
	* lua.{cc.hh} (hook_get_netsync_anonymous_read_permitted):
	Remove. Replace with 1-argument version of
	hook_get_netsync_write_permitted.
	* netsync.cc (process_anonymous_cmd): Update.
	* tests/t_netsync_permissions.at: Likewise.

2005-08-07  Matthew Gregan  <kinetik@orcon.net.nz>

	* botan/{data_snk,es_file}.cpp: Open fstreams in binary mode.
	These changes, plus the same change for data_src.cpp and
	es_ftw.cpp, have been sent upstream.

2005-08-05  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (commit): Write out the log message to MT/log
	_after_ making sure it's non-empty.
	* tests/t_commit_cancelled.at: New test.
	* testsuite.at: Add it.

2005-08-04  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (rebuild_merkle_trees): Typo.

2005-08-04  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (rebuild_merkle_trees): Tweak message ("rebuilding
	merkle trees" does not mean anything to J. Random User...)

2005-08-04  Nathaniel Smith  <njs@pobox.com>

	* manifest.cc (build_restricted_manifest_map): In 'missing files'
	error message, explain how to recover.

2005-08-03  Nathaniel Smith  <njs@pobox.com>

	* testsuite.at (NETSYNC_ADDRESS): New macro.
	(NETSYNC_SERVE_N_START, NETSYNC_SERVE_START)
	(NETSYNC_CLIENT_N_RUN): Use it.

	* tests/t_netsync_checks_server_key.at: Make sure can unset the
	known-servers entry.

2005-08-03  Matthew A. Nicholson  <matt@matt-land.com>

	* std_hooks.lua (get_preferred_merge2_command)
	(get_preferred_merge3_command): Provide more information on how to
	use vim as merge tool.

2005-08-03  graydon hoare  <graydon@pobox.com>

	* unix/process.cc (make_executable): Fix race, set user/group/other.

2005-08-03  Matthew Gregan  <kinetik@orcon.net.nz>

	* botan/data_src.cpp (DataSource_Stream::DataSourceStream): Open
	fstream as binary file.

2005-08-03  Matthew Gregan  <kinetik@orcon.net.nz>

	* win32/inodeprint.cc: Botan changes.  Also, hash individual
	FileTime structure members rather than the entire structure.
	* keys.cc: Add explicit 'using' for Botan::byte.
	* botan/es_win32.{cpp,h}: Add missing files.
	* Makefile.am: Enable entropy collection via CryptoAPI and Win32
	API.

2005-08-02  Matt Johnston  <matt@ucc.asn.au>

	* botan/gzip.cpp: forgot to commit some semicolons

2005-08-02  Matt Johnston  <matt@ucc.asn.au>

	* botan/gzip.{cpp,h}: rearranged the code to be clearer.

2005-08-01  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (get_branches): Remove warning when there are no
	branches.

2005-07-29  Nathaniel Smith  <njs@pobox.com>

	* globish.cc (matcher::operator()): Log what's happening.
	(checked_globish_to_regex_test): Fix previously added test.

2005-07-29  Nathaniel Smith  <njs@pobox.com>

	* globish.cc (checked_globish_to_regex_test): Add another test for
	quoted characters.

2005-07-28  Nathaniel Smith  <njs@pobox.com>

	* update.cc (calculate_update_set): Only include current rev in
	update set if it is an acceptable candidate.
	* commands.cc (update): Clarify error message in this case.
	* tests/t_update_branch.at: Update accordingly.

2005-07-28  Matthew Gregan  <kinetik@orcon.net.nz>

	* monotone.spec: Require boost >= 1.32.

2005-07-27  Matthew Gregan  <kinetik@orcon.net.nz>

	* tests/t_merge_add_del.at: 'drop' does not take a branch (test
	now fails in expected place).
	* tests/t_merge_add_rename_add.at: New test.
	* testsuite.at: Add it.

2005-07-27  Nathaniel Smith  <njs@pobox.com>

	* tests/t_update_branch.at: New test.
	* testsuite.at: Add it.
	(REVERT_TO): Do not preserve MT/options file (can setup invalid
	branch).
	* app_state.cc (make_branch_sticky): Call write_options when
	already have a working copy.
	* commands.cc (update): Call make_branch_sticky at appropriate
	time.

2005-07-27  Nathaniel Smith  <njs@pobox.com>

	* commands.cc: ALIAS(mv, rename).  ALIAS(rm, drop).

2005-07-26  Nathaniel Smith  <njs@pobox.com>

	* change_set.cc (dump): Add state_renumbering dumper.
	(merge_disjoint_analyses): Add MM().

2005-07-26  Nathaniel Smith  <njs@pobox.com>

	* change_set.cc (dump): Add path_analysis dumper.
	(merge_change_sets): Add more MM()s.

2005-07-26  Nathaniel Smith  <njs@pobox.com>

	* change_set.cc (dump): Add path_state dumper.
	(sanity_check_path_state): Add MM().

2005-07-26  Richard Levitte  <richard@levitte.org>

	* revision.cc (check_sane_history): Convert tabs to the
	appropriate amount of spaces.

2005-07-26  Richard Levitte  <richard@levitte.org>

	* sanity.hh, revision.cc (check_sane_history),
	change_set.cc (concatenate_change_sets, merge_change_sets,
	invert_change_set): Because boost currently uses the symbol M, we
	have a clash.  Therefore, let's rename M to MM, for now.

2005-07-26  Richard Levitte  <richard@levitte.org>

	* commands.cc (CMD(privkey)): Change so both the public and
	private key are printed.

	* tests/t_dropkey_2.at, tests/t_lua_privkey.at: Adapt to the new
	private key format.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* sanity.cc (MusingI, ~MusingI): No-op when already in the middle
	of dumping.

2005-07-25  Matthew Gregan  <kinetik@orcon.net.nz>

	* Makefile.am, configure.ac: Remove BUNDLED_{LUA,SQLITE} tests and
	clarify the comment for popt.  Using external versions of these
	tools didn't work anyway, so there's no point giving the
	impression that it might.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* sanity.cc (gasp): Handle the possibility of multiple valid calls
	to gasp(), 'db check' can trigger multiple invariants without
	dying.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* sanity.{hh,cc} (sanity::already_dumping, gasp): Don't let gasp
	be called recursively, in case a dump triggers an invariant.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* sanity.cc (gasp): Make more robust against new errors triggered
	during error unwind.  (write_change_set in particular likes to
	blow up when handling in invalid change_set.)

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* change_set.cc (merge_change_sets, check_sane)
	(concatenate_change_sets, invert_change_set): Add M()s.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* sanity.{hh,cc} (dump): Remove templated version, add std::string
	version.
	* vocab.{hh,cc} (dump): Add ATOMIC/DECORATE/ENCODING dumpers.
	* change_set.{hh,cc} (dump): Add change_set dumper.
	* manifest.{hh,cc} (dump): Add manifest_map dumper.
	* revision.cc (check_sane_history): Add some M()s.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* sanity.hh (class Musing, gasp, dump): Actually, take a
	std::string instead of a std::ostream; fits our idioms better.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* sanity.cc (log, progress, warning): Append '\n' to strings when
	necessary.
	(gasp): Save string properly.
	(M): Apply black magic.  Now works correctly.
	(dump): Write newline.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* sanity.hh (dump): Add a default 'dump' implementation for all
	<<able objects.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* constants.{cc,hh} (default_terminal_width): New constant.
	* ui.cc (guess_terminal_width): Use it.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* diff_patch.cc (unidiff_append_test): Fix typo.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* tests/t_annotate_no_rev.at: New test.
	* testsuite.at: Add it.

2005-07-24  Nathaniel Smith  <njs@pobox.com>

	* sanity.{hh,cc} (sanity, dump_buffer, invariant_failure)
	(index_failure,	MusingI, Musing, M): Implement macro M(), for
	'musing', which marks data that monotone was musing over when an
	invariant tripped.
	* Makefile.am (MOST_SOURCES): Fix spacing.

2005-07-23  Nathaniel Smith  <njs@pobox.com>

	* ui.{hh,cc} (guess_terminal_width): New function.
	(tick_write_dot::chars_on_line): Make unsigned to quiet gcc warning.
	(tick_write_dot::write_ticks): Use guess_terminal_width.
	* commands.cc (dump_diffs): Take full responsibility for printing
	=== lines, and use guess_terminal_width.
	* diff_patch.cc (make_diff): Don't print === lines.
	(unidiff_append_test): Adjust accordingly.

2005-07-23  Matthew Gregan  <kinetik@orcon.net.nz>

	* commands.cc (CMD(annotate)): Check for a valid revision before
	trying to fetch it from the database.
	* lua/lundump.[ch], lua/ldump.c: Rename VERSION and VERSION0 to
	LUA_DUMP_VERSION and LUA_DUMP_VERSION0 to avoid clashes with
	VERSION from config.h.

2005-07-22  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (Committing Work): Remove discussion of manifests.

2005-07-20  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (rebuild_merkle_trees): Make 'including branch'
	message L() instead of P(); it's nice information, but too much to
	be useful with large databases.

2005-07-22  Matt Johnston  <matt@ucc.asn.au>

	* database_check.cc: check that revisions and manifests
	are normalised to the same for that they would be written as.
	* tests/t_database_check_normalized.at: a test for it.
	* testsuite.at: add it.

2005-07-21  Richard Levitte  <richard@levitte.org>

	* contrib/monotone-import.pl: Now uses the given tag.

2005-07-20  Marcel van der Boom  <marcel@hsdev.com>

	* database.{cc,hh} (get_branches): New method.
	* commands.cc (ls_branches): Use it.
	* netsync.cc (get_branches): Likewise.
	* tests/t_ls_branches.at: New test.
	* testsuite.at: Add it.

2005-07-20  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (db): Rename kill_branch_locally to
	kill_branch_certs_locally.
	* tests/t_db_kill_branch_locally.at: Rename to...
	* tests/t_db_kill_branch_certs_locally.at: ...this.  Update.
	* testsuite.at: Update.
	* monotone.texi (Database): Update.

2005-07-19  Nathaniel Smith  <njs@pobox.com>

	* schema_migration.cc (migrator::migrate): Add a check for schemas
	that are just... wrong.
	* tests/t_migrate_broken_schema.at: New test.

2005-07-19  Nathaniel Smith  <njs@pobox.com>

	* netcmd.cc (read): Make the bad HMAC error message clearer.

2005-07-19  Matthew Gregan  <kinetik@orcon.net.nz>

	* tests/t_diff_external.at: Canonicalise output for Win32.

2005-07-18  Nathaniel Smith  <njs@pobox.com>

	* keys.cc (get_passphrase): Do still error out if they keep typing
	empty passphrases.

2005-07-18  Richard Levitte  <richard@levitte.org>

	* database.cc: Move the inclusion of stdarg.h...
	* database.hh: ... here.

2005-07-18  Matt Johnston  <matt@ucc.asn.au>

	* keys.cc (get_passphrase): don't bomb out if they type an empty passphrase.

2005-07-18  Patrick Mauritz  <oxygene@studentenbude.ath.cx>

	* work.cc, manifest.cc: Remove 'using namespace boost'.

2005-07-18  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (received_items): New instance variable.
	(session::session): Initialize it.
	(note_item_arrived): Maintain it.
	(item_request_outstanding): Rename it to...
	(item_already_received): ...this, and have it check both
	outstanding and fulfilled requests.
	(queue_send_data_cmd, queue_send_delta_cmd): Call it via new
	name.

	Hopefully this will eliminate cases where "revs in" is larger than
	"revs written".

2005-07-17  Nathaniel Smith  <njs@pobox.com>

	* constants.cc (legal_key_name_bytes): Allow + and _ to appear in
	key names.

2005-07-17  Nathaniel Smith  <njs@pobox.com>

	* ui.{cc,hh} (tick_write_dot::write_ticks): Start a new line when
	too many dots have been written.
	* netsync.cc (process_refine_cmd): Add comment noting a possible
	optimization regarding subtree refinement.

2005-07-17  Nathaniel Smith  <njs@pobox.com>

	* configure.ac, win32/monotone.iss, monotone.spec:
	* debian/changelog: Bump version numbers to 0.21.
	* NEWS: Commit to a timestamp.

2005-07-17  Nathaniel Smith  <njs@pobox.com>

	* NEWS: Add diff changes, more tweaking.
	* UPGRADE: Update for 0.21.
	* AUTHORS: Add Vladimir Vukicevic.

2005-07-18  Matt Johnston  <matt@ucc.asn.au>

	* netsync.cc: merge fixup
	* botan/pipe_rw.cpp (read_all_as_string): make it smarter and faster

2005-07-18  Matt Johnston  <matt@ucc.asn.au>

	* botan/sha160.{cpp,h}: new faster sha160 implementation from Jack Lloyd
	and Kaushik Veeraraghavan.

2005-07-17  Nathaniel Smith  <njs@pobox.com>

	* tests/t_diff_external.at: New test.
	* testsuite.at: Add it.

2005-07-17  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (Restrictions): diff -r -r does accept
	restrictions now.
	(CVS Phrasebook): Clarify diff section.
	(Informative): Document diff [--unified|--context|--external],
	--diff-args.

2005-07-17  Nathaniel Smith  <njs@pobox.com>

	* app_state.{cc,hh}: Record whether --diff-args was passed, not
	just a string value.
	* lua.{cc,hh} (hook_external_diff): Take a diff_args_provided
	variable.
	* commands.cc (do_external_diff): Pass it.

2005-07-17  Nathaniel Smith  <njs@pobox.com>

	* std_hooks.lua (external_diff_default_args): New variable.
	(external_diff): Use it as a default, and use user-provided
	diff_args otherwise.
	* monotone.texi (Hooks): Document this.

2005-07-16  Vladimir Vukicevic  <vladimirv@gmail.com>

	* lua.{cc,hh} (hook_external_diff): New hook.
	* std_hooks.lua (external_diff): Add default definition.
	* monotone.texi (Hooks): Document external_diff hook.
	* app_state.{cc,hh}, options.hh, monotone.cc: Add --context,
	--external, --unified, --diff-args options.
	* commands.cc (do_external_diff): New function.
	(dump_diffs): Put a == line between each file's diffs.
	Pass file_ids of pre- and post-states to make_diff.
	(diff): Take new options.
	(cdiff): Remove.
	* diff_patch.{cc,hh} (make_diff): Print file ids in diff file
	headers.
	(unidiff_append_test): Update.
	(enum diff_type): Move to...
	* vocab.hh: ...here.
	* tests/t_restrictions.at, tests/t_crlf.at: Update.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* manifest.cc (build_restricted_manifest_map): Remove doubled
	comment.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* NEWS: Mention need for 'db migrate'.

2005-07-17  Matthew Gregan  <kinetik@orcon.net.nz>

	* lua/*: Import Lua 5.0.2 from upstream.
	* lua/*: Fix up CVS $Id$ tags, which appear to have been trashed
	since monotone existed in CVS.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* NEWS: Update for 0.21.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* database.cc (assert_sqlite3_ok): Remove dead function.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* app_state.cc (require_working_copy): Oops, make it compile.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* app_state.{cc,hh} (require_working_copy): Take an optional
	argument to give more details about why a working copy was
	required.
	* commands.cc (log): Give said details.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (CVS Phrasebook): Include 'log'.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (Selectors): Document use of globs.
	* tests/t_selector_globbing.at: New test.
	* testsuite.at: Add it.

2005-07-16  Jordan Breeding  <jordan.breeding@mac.com>

	* database.cc (selector_to_certname): Make 't:' selector match
	exactly by default as well.

2005-06-25  Brian Downing <bdowning@lavos.net>

	* database.cc (selector_to_certname, complete): Makes 'b:'
	selector be interpreted as a glob instead of as a partial string
	match.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc: Revert accidentally committed changes.

2005-07-16  Nathaniel Smith  <njs@pobox.com>

	* ChangeLog: Fix formatting.

2005-07-15  Matt Johnston  <matt@ucc.asn.au>

	* netsync.cc (rebuild_merkle_trees): bad_branch_certs is a set of cert
	hashes, not of revision idents.

2005-07-14  Nathaniel Smith  <njs@pobox.com>

	* database.cc (get_revision_cert_index): "reserve" and "resize"
	are different.

2005-07-14  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (process_delta_cmd): Remove meaningless comment.

2005-07-14  Nathaniel Smith  <njs@pobox.com>

	* database.hh: Pre-declare sqlite3_stmt, instead of including
	sqlite3.h.

2005-07-14  Derek Scherger  <derek@echologic.com>

	* commands.cc (lca,lcad,try_one_merge): call describe_revision for
	logging common ancestors
	(propagate): log final merged line after propagate completes
	to indicate that it actually worked and to be consistent with merge

2005-07-13  Derek Scherger  <derek@echologic.com>

	* ChangeLog: merge fixup

2005-07-13  Derek Scherger  <derek@echologic.com>

	* database.cc (debug): delete stale comment
	(delete_branch_named):
	(delete_tag_named):
	(clear): replace vprintf stuff with query parameters

2005-07-13  Nathaniel Smith  <njs@pobox.com>

	* contrib/ciabot_monotone.py (main): Optimistically run 'db
	migrate' before using database.

2005-07-13  Nathaniel Smith  <njs@pobox.com>

	* schema_migration.cc (migrate_monotone_schema)
	(migrator::migrate): Move the "nothing happened" check, and don't
	vacuum unless a migration occurred.

2005-07-13  Nathaniel Smith  <njs@pobox.com>

	* tests/t_restricted_diff_unchanged.at: New test.
	* testsuite.at: Add it.

2005-07-13  graydon hoare  <graydon@pobox.com>

	* rcs_import.cc (cvs_branch::cvs_branch): Initialize bools to false.

2005-07-13  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (Database): Document kill_tag_locally.

2005-07-13  Nathaniel Smith  <njs@pobox.com>

	* tests/t_kill_tag_locally.at, tests/t_ambiguous_tags.at: New
	tests.
	* testsuite.at: Add them.

2005-07-11  graydon hoare  <graydon@pobox.com>

	* AUTHORS: Add Jordan.
	* commands.cc (ls_tags): Do not uniquify tags.
	* constants.{cc,hh} (cvs_window): Change to time_t, tighten to 5 minutes.
	* rcs_import.cc (window): Remove.
	(note_type): Remove dead code.
	(is_sbr): Add test for synthetic branch roots.
	(cvs_commit::is_synthetic_branch_root): New test.
	(process_branch): Skip synthetic branch roots, push new branch
	before picking branch to mark, rather than after.
	(cvs_history::index_branchpoint_symbols): Handle vendor branches.
	(cvs_history::push_branch): Do not duplicate root on private branches.
	(import_branch): Fix up cluster inference.
	(cluster_consumer::consume_cluster): New invariant.
	* tests/t_cvsimport_drepper2.at: Modify to reflect fixes.

2005-07-11  Jordan Breeding  <jordan.breeding@mac.com>

	* commands.cc (db): New subcommand "kill_tag_locally"
	* database.{cc,hh} (delete_tag_named): New function.

2005-07-12  Nathaniel Smith  <njs@pobox.com>

	* schema_migration.cc (migrator::migrate): When there is nothing
	to be done, do nothing.

2005-07-12  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (rebuild_merkle_trees): Reduce memory usage a bit,
	and don't insert branch certs that the other side will just end up
	throwing away (reduces network traffic).

2005-07-12  Nathaniel Smith  <njs@pobox.com>

	* testsuite.at (NETSYNC_SERVE_START, NETSYNC_SERVE_N_START):
	Really, really really fix up quoting.  Really.
	I hope.

2005-07-12  Nathaniel Smith  <njs@pobox.com>

	* contrib/ciabot_monotone.py (config.project_for_branch): Clarify
	comment text for non-Python programmers.

2005-07-12  Nathaniel Smith  <njs@pobox.com>

	* testsuite.at (NETSYNC_SERVE_START, NETSYNC_SERVE_N_START): Fixup
	quoting.

2005-07-11  Nathaniel Smith  <njs@pobox.com>

	* crypto_tests.cc: New SHA1 correctness tests from Kaushik Veeraraghavan.
	* unit_tests.cc (init_unit_test_suite):
	* unit_tests.hh (add_crypto_tests):
	* Makefile.am (unit_tests_SOURCES): Call them.
	* AUTHORS: Add Kaushik Veeraraghavan.

2005-07-11  Nathaniel Smith  <njs@pobox.com>

	* tests/t_netsync_exclude_default.at: New test.
	* testsuite.at: Add it.
	(NETSYNC_SERVE_N_START, NETSYNC_SERVE_START): Use '*' as pattern
	when none is passed.

2005-07-11  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (Network): Tweak documentation for netsync
	commands.

2005-07-11  Nathaniel Smith  <njs@pobox.com>

	* app_state.{hh,cc} (exclude_patterns, add_exclude):
	* options.hh (OPT_EXCLUDE):
	* monotone.cc (coptions, cpp_main): New option --exclude.
	* commands.cc (pull, push, sync, serve): Accept it.
	(process_netsync_args): Implement it.
	* tests/t_netsync_exclude.at: New test.
	* testsuite.at: Add it.

2005-07-11  Timothy Brownawell  <tbrownaw@gmail.com>

	* options.hh, app_state.{hh,cc}, monotone.cc: New command specific
	option, "--exclude=x", puts arg into a vector app.excludes .
	Used by the netsync commands.
	* commands.cc (netsync commands): accept said option
		(process_netsync_args): Handle excludes.
	* monotone.texi: document it

2005-07-11  Timothy Brownawell  <tbrownaw@gmail.com>

	* interner.hh: make slightly faster

2005-07-11  Matt Johnston  <matt@ucc.asn.au>

	* hmac.cc: <string> not <string.h>

2005-07-11  Matt Johnston  <matt@ucc.asn.au>

	* keys.cc (encrypt_rsa): fix typo
	* hmac.{cc,hh}: store key as SymmetricKey, pass correctly to
	MAC_Filter

2005-07-10  Nathaniel Smith  <njs@pobox.com>

	* ChangeLog, configure.ac: Re-remove mysteriously revived
	jibberish.

2005-07-10  Nathaniel Smith  <njs@pobox.com>

	* tests/t_netsync_read_permissions.at: New test.
	* testsuite.at: Run it.
	* netsync.cc (set_session_key, dispatch_payload)
	(respond_to_auth_cmd): Refactor to key HMAC earlier, so error
	packets will get the right HMAC.

2005-07-10  Richard Levitte  <richard@levitte.org>

	* Makefile.am (monotone_CPPFLAGS, unit_tests_CPPFLAGS): Re-remove
	previously removed stuff.

	* ChangeLog, configure.ac: Revert accidentally-recommitted changes.

2005-07-10  Richard Levitte  <richard@levitte.org>

	* monotone.texi (Network), monotone.1: Mention the default port
	number.

2005-07-10  Matthew Gregan  <kinetik@orcon.net.nz>

	* configure.ac: Check for boost >= 1.32.

2005-07-09  Nathaniel Smith  <njs@pobox.com>

	* schema.sql (revision_ancestry__child, revision_certs__id,
	revision_certs__name_value): New indexes.
	* database.cc (dump, dump_table_cb, dump_index_cb): Include
	indexes in dumps.
	(database::database):
	* schema_migration.cc (migrate_monotone_schema)
	(migrate_client_to_add_indexes):
	* tests/t_migrate_schema.at: Corresponding migration gunk.

2005-07-09  Jordan Breeding  <jordan.breeding@mac.com>

	* Makefile.am (monotone_CPPFLAGS, unit_tests_CPPFLAGS):
	* configure.ac (BOOST_FIX_VERSION): Restrict boost compile kluges
	to boost 1.32.

2005-07-09  Nathaniel Smith  <njs@pobox.com>

	* schema_migration.cc (calculate_schema_id): Include indexes in
	the schema id.

2005-07-09  Nathaniel Smith  <njs@pobox.com>

	* ChangeLog, configure.ac: Revert accidentally-committed changes.

2005-07-09  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (Generating Keys): Make it a little clearer that
	we aren't necessarily recommending people store their passphrase
	in plaintext.

2005-07-08  Matt Johnston  <matt@ucc.asn.au>

	* propagate mainline to botan branch

	* constants.{cc,hh}: add sha1_digest_length as botan
	doesn't provide a convenient definition.
	* hmac.{cc,hh}: convert to use botan
	* keys.cc (encrypt_rsa, decrypt_rsa): use botan
	* transforms.{cc,hh}: use botan

2005-07-08  Matt Johnston  <matt@ucc.asn.au>

	* tests/t_normalized_filenames.at: expect exit code of 1 not 3 for
	"cat manifest" with a directory in MT/work
	* file_io.cc, netcmd.cc, transforms.cc, vocab.hh: revert changes which
	used swap() for strings and atomic types since strings are
	copy-on-write.

2005-07-08  Matt Johnston  <matt@ucc.asn.au>

	* file_io.cc (ident_existing_file): new function to calculate
	the ident of a file failing gracefully if it doesn't exist
	or is a directory.
	* file_io.hh (classify_manifest_paths,
	build_restricted_manifest_map): use ident_existing_file
	* ui.cc: cast to avoid compiler warnings

2005-07-07  Nathaniel Smith  <njs@pobox.com>

	* contrib/ciabot_monotone.py (Monotone.log): Fix to work with
	0.20.

2005-07-07  Nathaniel Smith  <njs@pobox.com>

	* Makefile.am (monotone_CPPFLAGS, unit_tests_CPPFLAGS): Add
	-DBOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP to work around g++
	4.0/boost 1.32.0 lossage.

2005-07-07  Vaclav Haisman  <V.Haisman@sh.cvut.cz>

	* Makefile.am: Compile fix for FreeBSD.

2005-07-07  Nathaniel Smith  <njs@pobox.com>

	* netsync.cc (process_hello_cmd, process_anonymous_cmd)
	(process_auth_cmd): Change permission checking -- always build
	merkle tree (even when a pure sink), send permission denied and
	abort whenever client tries to read/write a branch they don't have
	access to.

2005-07-07  Nathaniel Smith  <njs@pobox.com>

	* ChangeLog: fixup formatting.

2005-07-06  Matt Johnston  <matt@ucc.asn.au>

	* database.cc (assert_sqlite3_ok): database corruption and similar
	problems are errors, not invariants.

2005-07-06  Nathaniel Smith  <njs@pobox.com>

	* commands.cc (push, pull, sync): Fix --help description.

2005-07-06  Nathaniel Smith  <njs@pobox.com>

	* options.hh (OPT_SET_DEFAULT):
	* app_state.{hh,cc} (app_state::set_default):
	* monotone.cc (coptions, cpp_main): New option.
	* commands.cc (pull, push, sync): Accept it.
	(process_netsync_args): Use it.
	* tests/t_set_default.at, testsuite.at: New test.

2005-07-07  Matthew Gregan  <kinetik@orcon.net.nz>

	* win32/monotone.iss: Bump version number.

2005-07-05  Nathaniel Smith  <njs@pobox.com>

	* debian/rules (config.status): Use bundled sqlite.
	* debian/control (Build-Depends): Remove popt and sqlite.

2005-07-05  Nathaniel Smith  <njs@pobox.com>

	* NEWS: Add timestamp.  Barring unforeseen issues, this is 0.20.

2005-07-05  Nathaniel Smith  <njs@pobox.com>

	* Makefile.am (EXTRA_DIST): Include some missed contrib/ stuff.

2005-07-05  Nathaniel Smith  <njs@pobox.com>

	* po/monotone.pot: Regenerate for release.

2005-07-05  Nathaniel Smith  <njs@pobox.com>

	* configure.ac, debian/changelog, monotone.spec: Bump version
	number.
	* UPGRADE: Update for 0.20 release.

2005-07-05  Nathaniel Smith  <njs@pobox.com>

	* ChangeLog, NEWS, AUTHORS: Fixup Eric Anderson's email address.

2005-07-05  Nathaniel Smith  <njs@pobox.com>

	* monotone.texi (Database): Note that db kill_rev_locally also
	will trigger "unreferenced manifest" warnings from db check.

2005-07-05  Nathaniel Smith  <njs@pobox.com>

	* NEWS: Oops, 'automate select' was in 0.19 after all.

2005-07-05  Nathaniel Smith  <njs@pobox.com>

	* contrib/ciabot_monotone.py: Fix multiple collection support.

2005-07-05  Richard Levitte  <richard@levitte.org>

	* monotone.texi (Hooks): Add space after periods where there's
	a lack of space.

	* NEWS: Correct the blurb about
	get_netsync_{read,anonymous_read,write}_permitted

2005-07-05  Nathaniel Smith  <njs@codesourcery.com>

	* NEWS: Add more explicit note on how to upgrade.

2005-07-05  Nathaniel Smith  <njs@codesourcery.com>

	* NEWS: First cut at 0.20 release notes.

2005-07-03  Matthew Gregan  <kinetik@orcon.net.nz>

	* sqlite/*, Makefile.am: Import SQLite 3.2.2 from upstream.
	* sqlite/main.c: Compile fix.
	* sqlite/{callback.c,prepare.c}: Add new files.

2005-07-03  Matthew Gregan  <kinetik@orcon.net.nz>

	* sqlite/{sqlite3.h,tokenize.c} (sqlite3_complete_last): New
	function to find the last valid SQL statement in a string; based
	on sqlite3_complete.  This change should be offered upstream, but
	probably not before sqlite3_complete_last16 is implemented.
	* database.cc (database::load): Load and execute dump in chunks,
	fixes bug 13570.

2005-07-01  Eric Anderson  <anderse-monotone@cello.hpl.hp.com>

	* file_io.cc: Pre-allocate space for the file read so that the
	string doesn't have to be incrementally expanded during the read.

2005-07-01  Matthew Gregan  <kinetik@orcon.net.nz>

	* tests/t_cvsimport_drepper2.at: Canonicalise monotone output so
	that the test passes on Win32.

2005-06-30  Eric Kidd  <eric.kidd@dartmouth.edu>

	* contrib/monotone-import.pl: Changed $branch to
	$user_branch.  This script may need more work, but at least Perl
	compiles it now.

2005-06-30  Patrick Mauritz  <oxygene@studentenbude.ath.cx>

	* automate.cc, basic_io.hh, cert.cc, change_set.cc,
	cryptopp/config.h, cryptopp/integer.cpp, main.cc, merkle_tree.cc,
	merkle_tree.hh, monotone.cc, netcmd.cc, netsync.cc,
	netxx/osutil.h, packet.cc: Namespace and include file cleanup.

2005-06-29  graydon hoare  <graydon@pobox.com>

	* tests/t_cvsimport_drepper2.at: New test.
	* testsuite.at: Call it.

2005-06-23  graydon hoare  <graydon@pobox.com>

	* rcs_import.cc (import_cvs_repo): Put branch imports inside
	transaction blocks, add a couple tickers.

2005-06-22  graydon hoare  <graydon@pobox.com>

	* rcs_file.cc: Track file:line numbers, accept files which violate
	some lies in rcs file format.
	* rcs_import.cc (cvs_tree_walker):
	Warn rather than crash on parse errors.
	(cvs_history)
	(cvs_commit)
	(cvs_cluster)
	(prepared_revision)
	(import_branch)
	(import_cvs_repo): Support non-branch tags.

2005-06-21  graydon hoare  <graydon@pobox.com>

	* rcs_import.{cc,hh} (import_rcs_file): Rename to test_parse_rcs_file.
	* commands.cc (rcs_import): rename call.

2005-06-19  graydon hoare  <graydon@pobox.com>

	* rcs_import.cc: Rewrite change set inference logic.

2005-06-28  Roland Illig  <roland.illig@gmx.de>

	* app_state.cc: #include <unistd.h>, needed on NetBSD.

2005-06-28  Nathaniel Smith  <njs@codesourcery.com>

	* std_hooks.lua (ignore_file): Ignore vim swap files and emacs
	temp files.

2005-06-27  Nathaniel Smith  <njs@codesourcery.com>

	* INSTALL: Bump required version of Boost to 1.32.

2005-06-26  Matthew Gregan  <kinetik@orcon.net.nz>

	* app_state.cc (app_state::app_state()): Initialise no_merges to
	false so that 'log' will show merges by default (the recently
	added --no-merges option provides a means to disable the merge
	entries).

2005-06-26  Matthew Gregan  <kinetik@orcon.net>

	* tests/t_automate_stdio.at, tests/t_cvsimport_drepper.at,
	tests/t_selector_later_earlier.at: Further canonicalisation of
	monotone output to resolve test failures on Win32.

2005-06-25  Brian Campbell  <brian.p.campbell@dartmouth.edu>

	* commands.cc (CMD(db)): Added db kill_branch_locally command.
	* database.cc, database.hh (delete_branch_named): New function to
	delete all branch certs with a given branch name.
	* monotone.texi (Database): Added documentation for db
	kill_branch_locally.
	* tests/t_db_kill_branch_locally.at: New test for db
	kill_branch_locally.
	* testsuite.at: Add the test.
	* AUTHORS: Add myself.
	* ChangeLog: Change my email address on an old contribution to
	match my pubkey.

2005-06-24  Nathaniel Smith  <njs@codesourcery.com>

	* tests/t_db_kill_rev_locally.at: Clean up style.

2005-06-24  Nathaniel Smith  <njs@codesourcery.com>

	* unix/process.cc (process_spawn): Format log output correctly.

2005-06-24  Nathaniel Smith  <njs@codesourcery.com>

	* unix/process.cc (existsonpath): Reindent.  Add logging, and use
	'command -v' instead of 'which' (as per Matt Johnston's discovery
	that it is more portable).
	(process_spawn): Handle exec failure more properly.
	* tests/t_existsonpath.at: New test.
	* testsuite.at: Add it.

2005-06-25  Matthew Gregan  <kinetik@orcon.net.nz>

	* monotone.cc: Log correct locale set for LC_MESSAGES.

2005-06-24  Nathaniel Smith  <njs@codesourcery.com>

	* unix/process.cc: Remove tabs.

2005-06-24  Nathaniel Smith  <njs@codesourcery.com>

	* std_hooks.lua (get_preferred_merge2_command)
	(get_preferred_merge3_command): Move meld to the bottom of the
	default merge tool search order.  Also, use xemacs if it appears
	in $EDITOR, otherwise use emacs.
	* revision.cc (check_sane_history): Remove stale comment.

2005-07-05  Nathaniel Smith  <njs@codesourcery.com>

	* globish.cc (combine_and_check_globish): Don't add unnecessary
	{}'s.
	* tests/t_netsync_globs.at, testsuite.at: New test.

2005-07-04  Nathaniel Smith  <njs@codesourcery.com>

	* netcmd.cc (do_netcmd_roundtrip, test_netcmd_mac): Update for new
	chained_hmac object.
	* constants.hh (netsync_key_initializer): Update comment.
	* hmac.hh (hmac_length): Expose length of MACs.
	* hmac.cc: I() that it matches what CryptoPP wants to give.
	* netcmd.cc: I() that it matches the length hard-coded into the
	netsync protocol.
	* vocab.cc (verify(netsync_hmac_value)): Fix error message.

2005-07-04  Nathaniel Smith  <njs@codesourcery.com>

	* tests/t_netsync_defaults.at: Update for new var names.  All
	tests now pass.

2005-07-04  Nathaniel Smith  <njs@codesourcery.com>

	* lua.cc (hook_get_netsync_write_permitted): Fix typo.

2005-07-04  Nathaniel Smith  <njs@codesourcery.com>

	* globish.cc (globish_matcher_test): Add check for {foo} (no
	commas).

2005-07-04  Nathaniel Smith  <njs@codesourcery.com>

	* globish.cc (checked_globish_to_regex): Make the special case for
	the empty pattern, actually work.  Unit tests now pass.

2005-07-04  Nathaniel Smith  <njs@codesourcery.com>

	* netcmd.cc (test_netcmd_functions): Update for new anonymous/auth
	packet formats.

2005-07-04  Nathaniel Smith  <njs@codesourcery.com>

	* monotone.texi, monotone.1: Update for new glob stuff.
	* commands.cc (process_netsync_args, push, pull, sync, serve):
	'serve' always requires arguments, rather than falling back on db
	defaults.

2005-07-04  Nathaniel Smith  <njs@codesourcery.com>

	* commands.cc (process_netsync_args, push, pull, sync, serve):
	Adapt for patterns instead of regexen; slight refactoring too.

2005-07-03  Nathaniel Smith  <njs@codesourcery.com>

	* netsync.cc: Finally self-consistent.

2005-07-03  Nathaniel Smith  <njs@codesourcery.com>

	* netsync.hh (run_netsync_protocol): Fix prototype.

2005-07-03  Nathaniel Smith  <njs@codesourcery.com>

	* globish.hh: Document the empty pattern as never matching.
	* globish.cc (checked_globish_to_regex): Implement it.
	(globish_matcher_test): Check it.

2005-07-03  Nathaniel Smith  <njs@codesourcery.com>

	* monotone.texi (Network Service, Hooks):
	* testsuite.at:
	* tests/t_netsync_permissions.at:
	* tests/t_netsync_single.at: Update to match new
	get_netsync_write_permitted definition.

2005-07-03  Nathaniel Smith  <njs@codesourcery.com>

	* lua.{cc,hh} (hook_get_netsync_write_permitted): Don't take a
	branch argument; write permission is now all or none.  (It really
	was before anyway...)
	* netsync.cc: Update accordingly.

2005-07-03  Nathaniel Smith  <njs@codesourcery.com>

	* netsync.cc: More updating for pattern stuff; getting there...

2005-06-28  Nathaniel Smith  <njs@codesourcery.com>

	* netsync.cc: Update low-level functions to use include_pattern
	and exclude_pattern.

2005-06-28  Nathaniel Smith  <njs@codesourcery.com>

	* netcmd.{cc,hh} (read_anonymous_cmd, write_anonymous_cmd)
	(read_auth_cmd, write_auth_cmd): Take include_pattern and
	exclude_pattern arguments.

2005-06-28  Nathaniel Smith  <njs@codesourcery.com>

	* globish.{cc,hh}: New files.
	* Makefile.am (MOST_SOURCES): Add them.
	* transforms.{cc,hh}: Remove glob-related stuff.
	* unit_tests.{cc,hh}: Call globish unit tests.

2005-06-27  Nathaniel Smith  <njs@codesourcery.com>

	* transforms.cc (glob_to_regex, globs_to_regex, regexes_to_regex):
	Choose "regex" as standard spelling.  Clean up code, add code for
	handling sets, start improving tests (don't currently pass).
	* transforms.hh (glob_to_regex, globs_to_regex, regexes_to_regex):
	Prototype.

2005-06-28  Matt Johnston  <matt@ucc.asn.au>

	* constants.cc: increase db_version_cache_sz to 7 MB
	* netsync.cc: use a deque<string> rather than a single
	string buffer for outbuf.
	* netsync.cc (arm): only queue data when there is
	available space
	* AUTHORS: added Eric Anderson

2005-06-26  Matt Johnston  <matt@ucc.asn.au>

	* transforms.hh: remove extraneous #ifdef
	* hmac.cc, hmac.hh: actually add them

2005-06-26  Matt Johnston  <matt@ucc.asn.au>

	* netcmd.cc (netcmd::read, netcmd::write): change to using a HMACs
	chained by including the previous HMAC in the input data, rather
	than altering the key each time.
	* netcmd.cc ({read,write}_{data,delta}_cmd): use encode_gzip/decode_gzip
	  rather than raw xform.
	* hmac.{cc,hh}: new chained_hmac abstraction
	* Makefile.in: add them
	* netsync.cc: each session keeps a chained_hmac for read/write
	* transforms.hh: add a string variant for encode_gzip

2005-06-25  Nathaniel Smith  <njs@codesourcery.com>

	* netsync.cc: Tweak comment.

2005-06-25  Nathaniel Smith  <njs@codesourcery.com>

	* AUTHORS: Add Ethan Blanton <elb@elitists.net>.

2005-06-22  Nathaniel Smith  <njs@codesourcery.com>

	* netcmd.hh (netcmd::read, netcmd::write): Don't have defaults for
	key/hmac arguments.
	* netcmd.cc (do_netcmd_roundtrip): New function.
	(test_netcmd_functions): Use it.  Also, make work with hmac
	changes.
	(test_netcmd_mac): New test.
	(add_netcmd_tests): Call it.

2005-06-22  Nathaniel Smith  <njs@codesourcery.com>

	* netcmd.cc (read): Remove unused variable.
	* netsync.cc (call_server, process)
	(arm_sessions_and_calculate_probe, handle_read_available): Give
	better error message on bad_decode exceptions.

2005-06-22  Nathaniel Smith  <njs@codesourcery.com>

	* netcmd.cc, netsync.cc: Revert backwards compatibility code; 0.19
	and 0.20 can't be usefully compatible, and the code as it existed
	would cause real version mismatch error reporting to not work
	right.  (Old client with new server would give a generic "server
	disconnected" error message instead of something useful.)

2005-06-21  Nathaniel Smith  <njs@codesourcery.com>

	* netsync.cc (rebuild_merkle_trees): Fix FIXME comments to match
	reality.
	* tests/t_netsync_diffbranch.at: No longer a bug, remove
	priority.

2005-06-20  Nathaniel Smith  <njs@codesourcery.com>

	* monotone.texi (Hook Reference): Oops, missed a @ref.

2005-06-20  Nathaniel Smith  <njs@codesourcery.com>

	* monotone.texi (Default monotonerc): Rename section to...
	(Default hooks): ...this, to emphasize is still read even when a
	monotonerc exists.

2005-06-19  Richard Levitte  <richard@levitte.org>

	* Makefile.am: There's no reason for monotone.pdf or .dvi to
	depend on monotone.info, since they are built from the .texi
	files.  Also, make the monotone.html and html targets depend
	on version.texi and std_hooks.lua as well.

2005-06-18  Matt Johnston  <matt@ucc.asn.au>

	* INSTALL: fix typo, should be -Iboost_1_31_0 not -Iboost_1_31_2

2005-06-18  Riccardo Ghetta  <birrachiara@tin.it>
	* monotone.texi: include std_hooks.lua as an appendix and remove long
	lua excerpts from hook reference.
	* Makefile.am : make monotone.pdf/eps depend on monotone.info

2005-06-24  Matt Johnston  <matt@ucc.asn.au>

	* transforms.{cc,hh}: combine gzip and base64 in one
	pipe for pack()/unpack() to save memory
	* vocab.hh: add swap() to encodings/atomics
	* file_io.cc: use swap() to avoid copying

2005-06-21  Nathaniel Smith  <njs@codesourcery.com>

	* commands.cc (do_diff): Use calculate_arbitrary_change_set,
	instead of reimplementing it.

2005-06-21  Nathaniel Smith  <njs@codesourcery.com>

	* revision.cc (find_least_common_ancestor): Handle left == right
	case.
	* tests/t_diff_currev.at: Un-XFAIL.

2005-06-21  Nathaniel Smith  <njs@codesourcery.com>

	* netsync.cc (rebuild_merkle_trees): Fix FIXME comments to match
	reality.
	* tests/t_netsync_diffbranch.at: No longer a bug, remove
	priority.

2005-06-20  Nathaniel Smith  <njs@codesourcery.com>

	* monotone.texi (Hook Reference): Oops, missed a @ref.

2005-06-20  Nathaniel Smith  <njs@codesourcery.com>

	* monotone.texi (Default monotonerc): Rename section to...
	(Default hooks): ...this, to emphasize is still read even when a
	monotonerc exists.

2005-06-19  Richard Levitte  <richard@levitte.org>

	* Makefile.am: There's no reason for monotone.pdf or .dvi to
	depend on monotone.info, since they are built from the .texi
	files.  Also, make the monotone.html and html targets depend
	on version.texi and std_hooks.lua as well.

2005-06-18  Matt Johnston  <matt@ucc.asn.au>

	* INSTALL: fix typo, should be -Iboost_1_31_0 not -Iboost_1_31_2

2005-06-18  Riccardo Ghetta  <birrachiara@tin.it>
	* monotone.texi: include std_hooks.lua as an appendix and remove long
	lua excerpts from hook reference.
	* Makefile.am : make monotone.pdf/eps depend on monotone.info

2005-06-17  Matt Johnston  <matt@ucc.asn.au>

	* database.cc (database::execute()): truncate long query log messages
	before copying, saving memory.
	Patch from Eric Anderson <anderse-monotone@cello.hpl.hp.com>

2005-06-17  Riccardo Ghetta  <birrachiara@tin.it>
	Adds include()/includedir() to lua hooks and extend --rcfile
	* lua.cc: handle --rcfile with directories, implement
	include() and includedir()
	* testsuite.at, t_lua_includedir.at, t_rcfile_dir.at:
	test new functionality
	* monotone.texi: document all functions available to hook
	writers, including the new include() and includedir()

2005-06-16  Nathaniel Smith  <njs@codesourcery.com>

	* diff_patch.cc (merge_extents): Typo caught by anonymous reader.

2005-06-16  Nathaniel Smith  <njs@codesourcery.com>

	* commands.cc (cat): Account for being in a subdir in 'cat file
	REV PATH'.
	* tests/t_cat_file_by_name.at: Test.

2005-06-17  Richard Levitte  <richard@levitte.org>

	* app_state.cc (app_state::app_state()): Avoid a gcc warning by
	having the class members initialised in the same order they are
	defined in the class.

2005-06-16  Nathaniel Smith  <njs@pobox.com>

	* std_hooks.lua (ignore_file): Add Cons/SCons cache files to
	default ignore list.

2005-06-16  Matt Johnston  <matt@ucc.asn.au>

	* ui.cc: increase the divisor as required so that we don't get spurious
	screen updates when we're using the kilobyte/megabyte tickers

2005-06-15  Matt Johnston  <matt@ucc.asn.au>

	* monotone.texi: clarify some netsync parts of the tutorial

2005-06-15  Richard Levitte  <richard@levitte.org>

	* netsync.cc (struct session): Add a pattern regex cache.
	(analyze_ancestry_graph): Use the regex cache instead of the
	pattern string itself.  This is especially important when the
	pattern is used as an old-style collection.
	(process_hello_cmd): Recreate the pattern regex cache with the
	conversion of the pattern to a regex when it's used as an
	old-style collection.
	(process_auth_cmd): When the pattern changes, change the regex
	cache as well.

2005-06-14  Richard Levitte  <richard@levitte.org>

	* std_hooks.lua (get_preferred_merge2_command,
	get_preferred_merge3_command): EDITOR may be undefined.  In that
	case, os.getenv() returns nil, on which string.lower() chokes.
	It's much better to check for that and default to an empty
	string.

2005-06-11  Derek Scherger  <derek@echologic.com>

	* commands.cc (complete_command): log command expansion messages
	with L instead of P to reduce chatter
	(status): add --brief option and corresponding output
	(identify): add trailing space to comment gcc complains about
	* monotone.cc: fix comment typo and add additional details for
	command specific options
	* monotone.texi (Automation): list inventory status code
	combinations and descriptions
	* tests/t_status.at: new test of status command and --brief option
	* testsuite.at: add it

2005-06-11  Matt Johnston  <matt@ucc.asn.au>

	* commands.cc: revert should ignore the ignore hooks, otherwise bad
	things happen (revert a single ignored file, resultant empty ignore list
	reverts the whole working copy).
	* app_state.cc, app_state.hh: give set_restriction a flag to disregard
	file-ignore hooks.
	* tests/t_revert_restrict.at, testsuite.at: a test

2005-06-09  Riccardo Ghetta  <birrachiara@tin.it>

	* std_hooks.lua: make binary_file return nil on unreadable/empty files

2005-06-10  Joel Reed  <joelwreed@comcast.com>

	* commands.cc (CMD(cdiff)): Add OPT_DEPTH to command options.
	* t_restrictions.at: Add to testcase.

2005-06-09  Joel Reed  <joelwreed@comcast.com>

	* commands.cc (CMD(diff)): Add OPT_DEPTH back in, as it is used.
	* t_restrictions.at: Add to testcase to increase likelihood of
	keeping it around :)

2005-06-10  Richard Levitte  <richard@levitte.org>

	* commands.cc (CMD(diff)): Remove OPT_DEPTH, as it was never
	used.

2005-06-09  Richard Levitte  <richard@levitte.org>

	* monotone.texi (Merging): I assume that "apposite" was supposed
	to be "appropriate".

2005-06-09  Riccardo Ghetta  <birrachiara@tin.it>

	* diff_patch.cc/hh: honor the new manual_merge attribute
	* file_io.cc/hh: move here the guess_binary function
	* lua.cc: let guess_binary available to lua
	* std_hooks.lua: handle manual_merge as an add-time attribute and
	initialize by default make it true if the file appears to be binary.
	Make read_contents_of_file able to read "binary" files.
	* tests/t_merge_manual.at: tests new behaviour, superceding the
	old XFAIL t_merge_binary.at test.
	* monotone.texi: document changes, adding a small section on merging.

2005-06-07  Nathaniel Smith  <njs@codesourcery.com>

	* ChangeLog: Fixup.

2005-06-07  Nathaniel Smith  <njs@codesourcery.com>

	* monotone.texi (Storage and workflow): Attempt to thwart some
	common misconceptions.

2005-06-07  Nathaniel Smith  <njs@codesourcery.com>

	* netsync.cc (rebuild_merkle_trees): Add a comment describing how
	this code should work (and why it currently doesn't quite).

2005-06-05  Nathaniel Smith  <njs@codesourcery.com>

	* tests/t_bad_packets.at: Expect certs on a non-existent rev to
	fail.  Run db check instead.
	* commands.cc (complete): Let callers specify they're okay with
	non-existent revisions.
	(CMD(trusted)): So specify.

2005-06-05  Nathaniel Smith  <njs@codesourcery.com>

	* tests/t_tags.at: 'tag' on a non-existent revid should fail.
	* commands.cc (complete): Fail on non-existent revids.

2005-05-29  Nathaniel Smith  <njs@codesourcery.com>

	* tests/t_epoch.at: Typo.
	* tests/t_automate_certs.at, tests/t_selector_later_earlier.at:
	Throw in some calls to CANONICALISE, maybe this will help on
	Win32...

2005-06-04  Timothy Brownawell  <tbrownaw@gmail.com>

	* netsync.cc, netcmd.cc: Style cleanups (mostly whitespace).

2005-06-04  Timothy Brownawell  <tbrownaw@gmail.com>

	* netsync.cc (process_hello_cmd): Warn about collection/regex
	usage when talking to an old server.

2005-06-04  Derek Scherger  <derek@echologic.com>

	* commands.cc (update): update MT/work based on the changes
	between the chosen revision and the new merge revision
	* tests/t_update_with_pending_drop.at:
	* tests/t_update_with_pending_add.at:
	* tests/t_update_with_pending_rename.at: un-XFAIL and clean up now
	that things work

2005-06-04  Timothy Brownawell  <tbrownaw@gmail.com>

	* netcmd.{cc,hh}, netsync.cc: Move {read,write}_*_cmd_payload
	to netcmd::{read,write}_*_cmd .
	* netcmd.cc, netsync.cc: Compatibility infrastructure.
	* netsync.cc: Interoperate with v4 servers.

2005-06-03  Timothy Brownawell  <tbrownaw@gmail.com>

	* automate.cc (print_some_output): Fix compiler warning.

2005-06-04  Derek Scherger  <derek@echologic.com>

	* app_state.cc (app_state): initialize diffs to false; it seemed
	to be defaulting to true for me

2005-06-04  Derek Scherger  <derek@echologic.com>

	* tests/t_update_with_pending_drop.at:
	* tests/t_update_with_pending_add.at:
	* tests/t_update_with_pending_rename.at:
	* tests/t_restricted_commit_with_inodeprints.at: new bug reports
	* testsuite.at: call them

2005-06-04  graydon hoare  <graydon@pobox.com>

	* rcs_import.cc
	(note_state_at_branch_beginning): Move time back when
	there are known commits on a branch.

2005-06-03  Joel Reed  <joelwreed@comcast.com>

	* commands.cc, monotone.texi: provide --verbose option for
	monotone complete revision which adds date and author
	completion output
	* contrib/monotone.zsh_completion: use verbose output when
	completing revisions

2005-06-02  graydon hoare  <graydon@pobox.com>

	* rcs_import.cc
	(cvs_key::is_synthetic_branch_founding_commit): New field.
	(cvs_key::operator==): Handle synthetic case specially.
	(cvs_key::operator<): Likewise.
	(note_state_at_branch_beginning): Likewise.
	* tests/t_cvsimport_drepper.at: Converted bug testcase.
	* testsuite.at: Call it.

	* monotone.cc, commands.cc, options.hh
	(OPT_NO_MERGES, OPT_DIFFS): New options.
	* app_state.cc (app_state::no_merges, app_state::diffs): Likewise.
	* commands.cc (log): Honor no_merges, diffs.
	* contrib/color_logs.{sh,conf}: Helpers for reviewing work in a
	nice colorized, easy-to-read fashion.
	* contrib/colorize: A colorization script found on the net.

	* HACKING, ROADMAP: Expand a bit.
	* commands.cc (changes_summary::print): Change macro to helper fn.
	* contrib/monotone.el (monotone-cmd): Handle nil exit code.

2005-06-02  Joel Reed  <joelwreed@comcast.com>

	* commands.cc, database.cc, database.hh, vocab.hh, vocab_terms.hh:
	add complete key subcommand and provide --brief option of zsh/bash
	completion. See http://lists.gnu.org/archive/html/monotone-devel/2005-05/msg00461.html
	* tests/t_rebuild.at: add tests for complete key subcommand
	* monotone.texi: document new subcommand
	* contrib/monotone.zsh_completion: update for new complete key
	command, improve _monotone_existing_entries using new --depth=0
	option,	add revision completion for cert command, and a	bugfix
	for cat command

2005-06-01  Matt Johnston  <matt@ucc.asn.au>

	* tests/t_i18n_changelog.at: capitalise UTF-8 CHARSET to keep
	solaris happy.

2005-06-01  Timothy Brownawell  <tbrownaw@gmail.com>

	* netsync.cc (analyze_ancestry_graph): Try to fix segfault.
	Always accept tags.

2005-06-01  Timothy Brownawell  <tbrownaw@gmail.com>

	* netsync.cc (process_auth_cmd, analyze_ancestry_graph): Move
	write-permission checking to where it belongs, *after* we know
	exactly what we're checking permissions about. Drop things we
	don't want.

2005-06-01  Matt Johnston  <matt@ucc.asn.au>

	* tests/t_cvsimport_deleted_invar.at: don't use -C with tar
	* tests/t_i18n_file.at: capitalise CHARSET=UTF-8, seems more standard.
	* tests/t_merge_normalization_edge_case.at: use known-good output
	rather than using diff3 --merge

2005-05-31  Timothy Brownawell  <tbrownaw@gmail.com>

	* tests/t_epoch_server.at: fix typo
	* netsync.cc (session::process_auth_cmd): If no branches are allowed
	for writing, also check for write permissions to branch "" (needed
	for serving empty dbs). For sync, don't refuse connection if there
	are no readable branches (only do this for pull).

2005-05-31  Timothy Brownawell  <tbrownaw@gmail.com>

	* monotone.texi: Update documentation for get_netsync_*_permitted
	hooks to reflect that they now get individual branch names.

2005-05-31  Timothy Brownawell  <tbrownaw@gmail.com>

	* netsync.cc: session::rebuild_merkle_trees now takes a set of
	branches to include as an argument. On the server, calculate
	this set at the same time the get_netsync_*_permitted hooks are
	called; call said hooks on each branch individually.

2005-05-31  Timothy Brownawell  <tbrownaw@gmail.com>

	Remove old collection support in favor of using regexes exclusively.
	* netsync.cc (convert_pattern): Remove function.
	* (14 files): collections are unexist; do not mention (potential
	for confusion)
	* constants.cc: Increase netsync protocol version.
	* monotone.texi: Update documentation.
	* tests/t_epoch_unidirectional.at: Fix to sync subbranches.
	* commands.cc (CMD update): Fix usage check.
	* tests/t_select_cert.at: Fix to use --revision.

2005-05-30  Timothy Brownawell  <tbrownaw@gmail.com>

	* netsync.cc: Call note_netsync_*_received hooks in the order they're
	written to the db (for revisions, gives topological order).

2005-05-30  Timothy Brownawell  <tbrownaw@gmail.com>

	* lua.{cc,hh}: Replace note_netsync_commit with
	note_netsync_{revision,cert,pubkey}_received
	* packet.{cc,hh}: Callbacks for cert or key written to the database.
	* netsync.cc: Use said callbacks, call note_netsync_*_received hooks.
	* monotone.texi: Update documentation.

2005-05-30  Timothy Brownawell  <tbrownaw@gmail.com>

	* packet.{cc,hh}, netsync.cc: on_revision_written callback now takes
	the revision_id as an argument.
	* lua.{cc,hh}: New Lua hook, note_netsync_commit.
	* netsync.cc: At end of netsync session, call new hook for each
	revision received.
	monotone.texi: Document new hook.

2005-05-30  Richard Levitte  <richard@levitte.org>

	* commands.cc (CMD(checkout), CMD(cdiff), CMD(diff), CMD(log)):
	Remove '[--revision=REVISION]' from command argument synopsis,
	and add more text to the help to explain what happens when
	--revision options are used.
	(CMD(update)): Instead of the optional revision argument, use
	the --revision option.  Add information on what happens when the
	--revision option is used, and when it's not.

	* tests/t_add_stomp_file.at, tests/t_add_vs_commit.at,
	tests/t_annotate.at, tests/t_lf_crlf.at,
	tests/t_update_nonexistent.at, tests/t_update_off_branch.at,
	tests/t_update_to_revision.at: Update to use --revision with
	'monotone update'.

2005-05-30  Matt Johnston  <matt@ucc.asn.au>

	* netsync.cc: cosmetic linebreak tidying for "double-check the
	fingerprint" message.
	* main.cc: make it clearer that "unknown type" refers to an exception
	* monotone.cc: catch early informative_failures (due to charset
	problems etc)

2005-05-30  Matt Johnston  <matt@ucc.asn.au>

	* tests/t_fmerge.at: scrap all the diff3/ed, just compare it with
	known-good output.

2005-05-30  Timothy Brownawell  <tbrownaw@gmail.com>

	* revision.cc (toposort): Better algorithm.

2005-05-30  Matt Johnston  <matt@ucc.asn.au>

	* tests/t_fmerge.at: make sure we write the file with the ed script.

2005-05-30  Matt Johnston  <matt@ucc.asn.au>

	* testsuite.at: use "command -v" rather than "which", since
	Solaris doesn't give useful exit codes for "which".
	* tests/t_fmerge.at: don't use --merge with diff3, pipe to ed instead
	so we don't rely on gnu diff3.

2005-05-29  Timothy Brownawell  <tbrownaw@gmail.com>

	* contrib/monoprof.sh: Add support for using valgrind for
	heap profiling.

2005-05-28  Joel Reed  <joelwreed@comcast.com>

	* app_state.cc, app_state.hh, commands.cc, monotone.cc, options.h:
	add new --depth command, and rename log's --depth to --last
	* monotone.texi: update documentation
	* tests/t_log_depth.at, tests/t_log_depth_single.at: update
	log tests to use --last instead of --depth
	* tests/t_options.at, tests/t_restrictions.at: test usage of
	--depth for commands using restrictions
	* contrib/ciabot_monotone.py, contrib/monotone-notify.pl,
	contrib/monotone.el, contrib/monotone.zsh_completion,
	contrib/mtbrowse.sh: change all occurences of "depth" to "last"

2005-05-28  Timothy Brownawell  <tbrownaw@gmail.com>

	* netcmd.cc (read_netcmd): Reserve space in the buffer if needed,
		swap buffers instead of copying (memory savings for sync
		large files)
	* netsync.cc (session::arm): Don't clear the buffer (now done
		by read_netcmd).

2005-05-27  Timothy Brownawell  <tbrownaw@gmail.com>

	* netsync.cc: Allow REGEXes as well as collections.
		Fix out-of-branch ancestor handling.
	* tests/t_netsync_diffbranch.at: Remove bug report and XFAIL (fixed).
	* commands.cc: Update description fields for netsync commands.
	* monotone.texi: Update documentation.

2005-05-25  Timothy Brownawell  <tbrownaw@gmail.com>

	* tests/t_automate_stdio.at: Make it self-contained.

2005-05-25  Timothy Brownawell  <tbrownaw@gmail.com>

	* contrib/get_stdio.pl (new file): Perl script to parse the output from
	"mtn automate stdio". Used by...
	* tests/t_automate_stdio.at (new file): Test for "mtn automate stdio".
	* testsuite.at: Add it.

2005-05-25  Timothy Brownawell  <tbrownaw@gmail.com>

	* automate.cc ("automate stdio"): Fix block size limiting.
		Honor "output.flush()" in commands.

2005-05-24  Timothy Brownawell  <tbrownaw@gmail.com>

	* automate.cc: Fix buffering for "automate stdio"

2005-05-24  Timothy Brownawell  <tbrownaw@gmail.com>

	* automate.cc: Put back lost "automate certs".

2005-05-24  Matt Johnston  <matt@ucc.asn.au>

	* commands.cc (try_one_merge, CMD(merge), CMD(explicit_merge),
	CMD(propagate): allow --author flag.

2005-05-24  Timothy Brownawell  <tbrownaw@gmail.com>

	* automate.cc: Fix comment for automate stdio to match the code.
	* monotone.texi: Document ignored locations in automate stdio
	input as reserved.

2005-05-24  Riccardo Ghetta  <birrachiara@tin.it>

	* tests/t_merge_binary.at: new XFAIL test to cover monotone
	inclination to algorithmically merge binary files.

2005-05-24  Richard Levitte  <richard@levitte.org>

	* commands.cc (try_one_merge): Change 'rid' to 'merged_id'.

2005-05-23  Timothy Brownawell  <tbrownaw@gmail.com>

	Fix "automate stdio" input/output format according to ML discussion
	* automate.cc: changed: automate_stdio
		added: print_some_output, class my_stringbuf
	* constants.{cc,hh}: add constant for automate stdio block size
	* monotone.texi: update documentation

2005-05-23  Nathaniel Smith  <njs@codesourcery.com>

	* win32/terminal.cc (have_smart_terminal): Call _isatty on stderr,
	not stdout.

2005-05-23  Richard Levitte  <richard@levitte.org>

	* commands.cc (try_one_merge): Use the value of --date and
	--author if there are any.
	(CMD(merge), CMD(propagate), CMD(explicit_merge)): Change to
	accept --date and --author.

2005-05-23  Riccardo Ghetta  <birrachiara@tin.it>

	* selectors.cc/.hh, database.cc: add two new selectors:
	"earlier or equal than" and "later than".
	* lua.cc/.hh, std-hooks.lua: create a new "expand_date" hook
	* monotone.texi: document the changes
	* testsuite.at, tests/t_selector_later_earlier.at: add specific tests
	for the new selectors

2005-05-21  Richard Levitte  <richard@levitte.org>

	* Makefile.am: Make monotone.pdf and monotone.dvi depend on
	version.texi.

2005-05-21  Richard Levitte  <richard@levitte.org>

	* monotone.texi: Add a note about the --brief option with
	'monotone log', and restructure the synopsis since it was getting
	a bit silly with all possible variants.

2005-05-21  Richard Levitte  <richard@levitte.org>

	* commands.cc (log_certs): Add two arguments; a separator string
	to be used in front of the second to last cert for multi-valued
	cert types, a bool to say if each cert should be ended with a
	newline.  Overload with shortcuts.
	(CMD(log)): Use the --brief option and implement it using the
	shortcut variants of log_certs.
	* monotone.cc, options.hh: Add the --brief option (OPT_BRIEF
	internally).
	* sanity.cc, sanity.hh (struct sanity): Add the member variable
	and function to hold and set the brief flag.

2005-05-21  Matt Johnston  <matt@ucc.asn.au>

	* tests/t_short_opts.at: remove the saved MT/log message
	from the failed commit.
	* Makefile.am: MAKEINFOFALGS to MAKEINFOFLAGS

2005-05-21  Matt Johnston  <matt@ucc.asn.au>

	* commands.cc (commit): write the log message to MT/log
	during the commit, so it will be available later if the commit
	fails.
	* work.{cc,hh} (write_user_log): new function

2005-05-20  Nathaniel Smith  <njs@codesourcery.com>

	* contrib/mtbrowse.sh: New file.
	* contrib/README: Document it.  Also, document some missed files,
	and re-order listing.
	* Makefile.am (EXTRA_DIST): Add several missing contrib/ files.

2005-05-21  Grahame Bowland  <grahame@angrygoats.net>

	* automate.cc: (automate_certs) change "status" field
	to "signature". Check whether each cert is trusted, and
	output in the "trusted" field.
	* testsuite.at: add t_automate_certs.at
	* tests/t_automate_certs.at: Test that the output of
	"automate certs" is consistent, and that we exit with
	error when rev is incomplete or missing.
	* monotone.texi: update output documentation for
	"automate certs"

2005-05-20  Emile Snyder  <emile@alumni.reed.edu>

	* annotate.{hh,cc}: Rework to handle lineage dependent line
	mappings and lines which split from a single line in a parent
	revision into multiple lines in some descendent.  Fixes bug where
	some lines remained unannotated.  Fixes wrong assignment of lines
	bug.
	* tests/t_annotate.at: Check no-changes since addition of fil