The unified diff between revisions [850c20aa..] and [a80e1661..] is displayed below. It can also be downloaded as a raw diff.

#
#
# add_file "debian/README.Debian"
#  content [e8b2663eb6e97f64381b647dba9f151d25724f33]
#
# add_file "debian/TODO.Debian"
#  content [df3606d141c3033f9a1e244c0d78f0489d0bcd6c]
#
# add_file "tests/t_diff_outside_working_dir.at"
#  content [68e1ab2a3186b905dc91af7814cb0dc10594bb3f]
#
# add_file "tests/t_log_outside_working_dir.at"
#  content [1e6f8f708369425dfb8bf1f06f4b9f283e24de01]
#
# add_file "tests/t_rename_diff_names.at"
#  content [a21a0b7910b5acb036380dd2fab966f0aed1dc0b]
#
# patch "AUTHORS"
#  from [82c58d1acbc33679c1333196dd0b555c2550cfdc]
#    to [439b592907209a2735f17fbb8e700f8a712dcad2]
#
# patch "ChangeLog"
#  from [866f377f68993b88a0a668e26f85e5aa51259b98]
#    to [697656aa85ec213e93ffc360131160e721788cc0]
#
# patch "Makefile.am"
#  from [f64733542ba308ba4047d2e7cfc8a18f95d0eb4c]
#    to [5f3e4aae1a4f7f3de4b7336190009b720b04432c]
#
# patch "NEWS"
#  from [494d8b2496f3b78e6225d572f92e2643ea7ef223]
#    to [d037fd23da91e058e84e8b493dbb9744dc28e6e0]
#
# patch "UPGRADE"
#  from [d6fb0d1273131b999c0051dadd9a5e7010d72041]
#    to [e39fe0a44ab0769d00a9b4aa9d0bcfaeb7d5955e]
#
# patch "commands.cc"
#  from [d04179187700889eee2af3e4e6ada1ffad5e7317]
#    to [889b85e8285c01cbd3cfecfecc5b2d687f9cdcd3]
#
# patch "configure.ac"
#  from [0a8fcd82b46313fe334dc86907bde61e73c8ab4e]
#    to [70ff43eb9c0b6009d469504e8b41cd8a9fde1900]
#
# patch "debian/changelog"
#  from [55dab413b30f046f933930d054c3da844b818366]
#    to [01af0bb1549903ab091c33c6f29f0d79fa7be543]
#
# patch "monotone.spec"
#  from [65f1d01fe0fae953ee377a30e6a9f07056a8fbc2]
#    to [33404c56eb0d468a42d9a5565560879512ae815e]
#
# patch "monotone.texi"
#  from [6d5a231b85631453f85095ac4ce027c3fdc15e38]
#    to [5cc1a931d274bc7d3f0cc95fc932162506011cb6]
#
# patch "netsync.cc"
#  from [b3cddb10629e909ba4bbb0a4a254cf80419a942e]
#    to [b253cccce899ebf482d4b14f0ce08139079018c2]
#
# patch "paths.cc"
#  from [3ea54d2be240cc811a52130f6711f3c3ae410763]
#    to [b77289a76e8d3c43a1dc2467c7b679c1aa6f9ca9]
#
# patch "paths.hh"
#  from [62c42e07a3d83608626a02cf57f7148c5c66b5a2]
#    to [b019e9708f84baea6625e9554f0d79969dd18051]
#
# patch "po/fr.po"
#  from [2385bcc193a5aa321863cda06106737be42a1bee]
#    to [9d62b550595ead5ad9df1c6e57ef85b13d178252]
#
# patch "po/ja.po"
#  from [493e2f3062a07374112f0e7ed64d84a6ae8dc0d2]
#    to [029a04ebdd9ccfdc9af27f26fec92513895b98ec]
#
# patch "std_hooks.lua"
#  from [f7edfb3f0063bd68d3a141693ec1141e9ff8266f]
#    to [a2a27daced7769d54850f059f39554cb1e0fc78d]
#
# patch "testsuite.at"
#  from [4405c8c3584fd8462446135258c4bb1f1c7d41fd]
#    to [6645f9e24d4beff510bf4dc9c2c154d553b62415]
#
# patch "win32/fs.cc"
#  from [dc98eb08c96cda5ca2e73e8a29dea19cb40b00bf]
#    to [bfc8bc3aaa07a3ec97a5d555ee4af563a118546d]
#
# patch "win32/monotone.iss"
#  from [dd8e5ac9506cfdf0c76dfb06814c25f3075fba41]
#    to [4dec648d917bbaf562b0397ca210ba4790e44295]
#
============================================================
--- debian/README.Debian	e8b2663eb6e97f64381b647dba9f151d25724f33
+++ debian/README.Debian	e8b2663eb6e97f64381b647dba9f151d25724f33
@@ -0,0 +1,17 @@
+README for Debian
+=================
+
+By recommendation from upstream authors, monotone is currently linked
+statically with versions of sqlite3, lua and popt libraries compiled
+from patched source code shipped together with monotone.
+
+This has implications on the security support in Debian.
+
+Work has been initiated to make monotone work with an unpatched sqlite3
+library. If this work is sucessful, monotone in Debian can start to link
+dynamically with sqlite3 as provided in the Debian archive.
+
+From Debian's point of view, lua and popt should also be used as shared
+libraries in Debian, but that is less likely according to upstream.
+
+ -- Tomas Fasth <tomfa@debian.org>  Fri, 29 Jul 2005 13:44:35 +0000
============================================================
--- debian/TODO.Debian	df3606d141c3033f9a1e244c0d78f0489d0bcd6c
+++ debian/TODO.Debian	df3606d141c3033f9a1e244c0d78f0489d0bcd6c
@@ -0,0 +1,6 @@
+TODO for Debian
+===============
+
+* Link monotone dynamically with the sqlite3 shared library.
+
+ -- Tomas Fasth <tomfa@debian.org>  Fri, 29 Jul 2005 13:44:35 +0000
============================================================
--- tests/t_diff_outside_working_dir.at	68e1ab2a3186b905dc91af7814cb0dc10594bb3f
+++ tests/t_diff_outside_working_dir.at	68e1ab2a3186b905dc91af7814cb0dc10594bb3f
@@ -0,0 +1,24 @@
+#  -*- Autoconf -*-
+
+AT_SETUP([diffing a file within revision outside a working dir])
+
+MONOTONE_SETUP
+
+AT_DATA(foo1, [foo file 1
+])
+AT_DATA(foo2, [foo file 2
+])
+
+AT_CHECK(MONOTONE add foo1, [], [ignore], [ignore])
+AT_CHECK(MONOTONE --branch=testbranch commit --message blah, [], [ignore], [ignore])
+parent=`BASE_REVISION`
+AT_CHECK(MONOTONE add foo2, [], [ignore], [ignore])
+AT_CHECK(MONOTONE --branch=testbranch commit --message bleh, [], [ignore], [ignore])
+
+second=`BASE_REVISION`
+AT_CHECK(rm -rf MT)
+AT_CHECK(MONOTONE diff --revision=$parent --revision=$second, [], [ignore], [ignore])
+# check it works when specifying files
+AT_CHECK(MONOTONE diff --revision=$parent --revision=$second foo2, [], [ignore], [ignore])
+
+AT_CLEANUP
============================================================
--- tests/t_log_outside_working_dir.at	1e6f8f708369425dfb8bf1f06f4b9f283e24de01
+++ tests/t_log_outside_working_dir.at	1e6f8f708369425dfb8bf1f06f4b9f283e24de01
@@ -0,0 +1,19 @@
+#  -*- Autoconf -*-
+
+AT_SETUP([logging a file within revision outside a working dir])
+
+MONOTONE_SETUP
+
+AT_DATA(foo1, [foo file 1
+])
+AT_DATA(foo2, [foo file 2
+])
+
+AT_CHECK(MONOTONE add foo1, [], [ignore], [ignore])
+AT_CHECK(MONOTONE --branch=testbranch commit --message blah, [], [ignore], [ignore])
+parent=`BASE_REVISION`
+
+AT_CHECK(rm -rf MT)
+AT_CHECK(MONOTONE log --revision=$parent foo1, [], [ignore], [ignore])
+
+AT_CLEANUP
============================================================
--- tests/t_rename_diff_names.at	a21a0b7910b5acb036380dd2fab966f0aed1dc0b
+++ tests/t_rename_diff_names.at	a21a0b7910b5acb036380dd2fab966f0aed1dc0b
@@ -0,0 +1,34 @@
+AT_SETUP([filenames in diff after rename])
+MONOTONE_SETUP
+
+# This test is a bug report.
+
+# If a file is renamed from "testfile" to "otherfile" and has changes,
+# then 'monotone diff' should display:
+#   --- testfile
+#   +++ otherfile
+# But what it does display is
+#   --- otherfile
+#   +++ otherfile
+# This is because the diffs are built based on changeset deltas, and
+# changeset deltas are applied after renames have already taken
+# effect.
+
+AT_XFAIL_IF(true)
+
+ADD_FILE(testfile, [blah blah
+])
+COMMIT(testbranch)
+
+SET_FILE(testfile, [stuff stuff
+])
+AT_CHECK(MONOTONE rename --execute testfile otherfile, [], [ignore], [ignore])
+
+AT_CHECK(test -f otherfile)
+
+AT_CHECK(MONOTONE diff, [], [stdout], [ignore])
+
+AT_CHECK(QGREP(-- "--- testfile" stdout))
+AT_CHECK(QGREP(-- "+++ otherfile" stdout), [1])
+
+AT_CLEANUP
============================================================
--- AUTHORS	82c58d1acbc33679c1333196dd0b555c2550cfdc
+++ AUTHORS	439b592907209a2735f17fbb8e700f8a712dcad2
@@ -67,6 +67,8 @@ contributing authors, including:
   Vladimir Vukicevic <vladimirv@gmail.com>
   Benoît Dejean <benoit@placenet.org>
   Patrick Mauritz <oxygene@studentenbude.ath.cx>
+  Grahame Bowland <grahame@angrygoats.net>
+  Marcel van der Boom <marcel@hsdev.com>

 Several people have also contributed to the translation of monotone
 into non-English languages; their work is available in the po/
============================================================
--- ChangeLog	866f377f68993b88a0a668e26f85e5aa51259b98
+++ ChangeLog	697656aa85ec213e93ffc360131160e721788cc0
@@ -1,11 +1,114 @@
-2005-09-27  Matt Johnston  <matt@ucc.asn.au>
+2005-09-30  Nathaniel Smith  <njs@pobox.com>

-	* netsync.cc (ancestry_fetcher): new approach to requesting file
-	and manifest deltas and full data. Tries to be more efficient
-	for the vcache of recontstructed data, and conceptually simpler
+	* Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add
+	-DBOOST_SP_DISABLE_THREADS (disables thread-safe shared_ptr
+	reference counting).

-	* tests/t_netsync_unrelated.at: passes, remove XFAIL
+2005-09-30  Nathaniel Smith  <njs@pobox.com>

+	* debian/README.Debian, debian/TODO.Debian: Add debian files
+	left out of repository.
+
+2005-09-30  Nathaniel Smith  <njs@pobox.com>
+
+	* NEWS: Set date for 0.23.
+
+2005-09-30  Nathaniel Smith  <njs@pobox.com>
+
+	* testsuite.at: Whoops, forgot to hit save.  Remove
+	t_diff_changeset_bug.at.
+
+2005-09-30  Grahame Bowland  <grahame@angrygoats.net>
+
+	* paths.cc: remove unit tests for
+	file_path_internal_from_user
+
+2005-09-30  Patrick Mauritz  <oxygene@studentenbude.ath.cx>
+
+	* configure.ac: only add gnu specific CFLAGS and CXXFLAGS for
+	gnu compilers
+
+2005-09-30  Nathaniel Smith  <njs@pobox.com>
+
+	* tests/t_log_outside_working_dir.at: Fix summary line.
+	* tests/t_diff_changeset_bug.at: Remove redundant test
+	(cf. t_restricted_diff_unchanged.at).
+
+2005-09-30  Nathaniel Smith  <njs@pobox.com>
+
+	* Makefile.am (BOTAN_SOURCES): Add botan/hash_id.h.
+
+2005-09-30  Nathaniel Smith  <njs@pobox.com>
+
+	* NEWS: More additions (mention MM and the problems paths.cc will
+	cause for colinux folks).
+
+2005-09-30  Nathaniel Smith  <njs@pobox.com>
+
+	* Makefile.am (MOST_SOURCES): Add hash_map.hh.
+	(BOTAN_SOURCES): Add botan/charset.h.
+
+2005-09-29  Nathaniel Smith  <njs@pobox.com>
+
+	* NEWS: Fix typos pointed out by Matthew Gregan.
+
+2005-09-29  Nathaniel Smith  <njs@pobox.com>
+
+	* UPGRADE, configure.ac, monotone.spec, win32/monotone.iss:
+	* debian/changelog: Bump version number.
+
+2005-09-30  Grahame Bowland  <grahame@angrygoats.net>
+
+	* paths.hh: update file_path documentation,
+	remove file_path_internal_from_user
+	* paths.cc: remove file_path_internal_from_user
+	* commands.cc CMD(cat): change file_path_internal_from_user
+	to file_path_external
+	* tests/t_diff_outside_working_dir.at: check diff works outside
+	  of a working dir (with a file specified)
+	* tests/t_log_outside_working_dir.at: check log works outside
+	  of a working dir (with a file specified)
+	* tests/t_diff_changeset_bug.at: mysterious changeset bug
+	* testsuite.at: add new tests
+
+2005-09-29  Nathaniel Smith  <njs@pobox.com>
+
+	* AUTHORS: Add Grahame and Marcel.
+	* NEWS: Write 0.23 entry.
+	* monotone.texi (Reserved Files): Mention in .mt-ignore docs that
+	the patterns are regexes.
+
+2005-09-30  Grahame Bowland  <grahame@angrygoats.net>
+
+	* paths.cc (file_path::file_path): Allow external paths outside of
+	a working directory, so long as we don't enter a working directory
+	later.
+	(access_tracker) add new very_uninitialized state which
+	prevents subsequent initialization
+	(test_access_tracker) check the very_uninitialized state works
+	* paths.hh: correct mention of monotone cat file to new syntax
+
+2005-09-29  Matthew Gregan  <kinetik@orcon.net.nz>
+
+	* paths.cc: Restore two unit tests on Win32.
+
+2005-09-29  Richard Levitte  <richard@levitte.org>
+
+	* testsuite.at: Removed a spurious G...
+
+2005-09-29  Matthew Gregan  <kinetik@orcon.net.nz>
+
+	* paths.cc, win32/fs.cc: Fixes to allow unit tests to pass on Win32.
+
+2005-09-29  Marcel van der Boom  <marcel@hsdev.com>
+
+	* netsync.cc (rebuild_merkle_trees): only get matched branch
+	certs, not all of them
+
+2005-09-28  Nathaniel Smith  <njs@pobox.com>
+
+	* tests/t_rename_diff_names.at, testsuite.at: New test.
+
 2005-09-27  Richard Levitte  <richard@levitte.org>

 	* monotone.texi (Tutorial): It seems like texi2pdf gets quite
@@ -192,6 +295,14 @@ 2005-09-16  Matt Johnston  <matt@ucc.asn
 	* botan/*: update to Botan 1.4.6
 	* Makefile.am: ditto

+2005-09-27  Matt Johnston  <matt@ucc.asn.au>
+
+	* netsync.cc (ancestry_fetcher): new approach to requesting file
+	and manifest deltas and full data. Tries to be more efficient
+	for the vcache of recontstructed data, and conceptually simpler
+
+	* tests/t_netsync_unrelated.at: passes, remove XFAIL
+
 2005-09-15  Timothy Brownawell  <tbrownaw@gmail.com>

 	* app_state.{cc,hh}: restrictions now understand --exclude
============================================================
--- Makefile.am	f64733542ba308ba4047d2e7cfc8a18f95d0eb4c
+++ Makefile.am	5f3e4aae1a4f7f3de4b7336190009b720b04432c
@@ -49,7 +49,7 @@ MOST_SOURCES =								\
 	 netio.hh smap.hh gettext.h					\
          package_revision.c package_revision.h				\
          package_full_revision.c package_full_revision.h options.hh     \
-         i18n.h
+         i18n.h hash_map.hh

 NETXX_SOURCES =									\
 	netxx/accept.cxx netxx/accept.h netxx/address.cxx			\
@@ -145,7 +145,7 @@ BOTAN_SOURCES =
         botan/data_src.h botan/es_egd.h botan/look_add.h botan/ofb.h	\
         botan/pk_util.h botan/ui.h botan/blinding.h botan/defalloc.h	\
         botan/es_file.h botan/look_pk.h botan/oids.h botan/pubkey.h	\
-        botan/util.h
+        botan/util.h botan/charset.h botan/hash_id.h


 BOOST_SANDBOX_SOURCES = \
@@ -231,8 +231,8 @@ AM_CPPFLAGS =
 # flags

 AM_CPPFLAGS =
-AM_CFLAGS = $(AM_CPPFLAGS) -DTEMP_STORE=1 -DNDEBUG -DBOOST_DISABLE_THREADS -DSQLITE_OMIT_CURSOR $(SQLITE_CPPFLAGS)
-AM_CXXFLAGS = $(AM_CPPFLAGS) -DNDEBUG -DBOOST_DISABLE_THREADS
+AM_CFLAGS = $(AM_CPPFLAGS) -DTEMP_STORE=1 -DNDEBUG -DBOOST_DISABLE_THREADS -DBOOST_SP_DISABLE_THREADS -DSQLITE_OMIT_CURSOR $(SQLITE_CPPFLAGS)
+AM_CXXFLAGS = $(AM_CPPFLAGS) -DNDEBUG -DBOOST_DISABLE_THREADS -DBOOST_SP_DISABLE_THREADS
 AM_LDFLAGS =

 lib3rdparty_a_CPPFLAGS =
============================================================
--- NEWS	494d8b2496f3b78e6225d572f92e2643ea7ef223
+++ NEWS	d037fd23da91e058e84e8b493dbb9744dc28e6e0
@@ -1,3 +1,87 @@
+Fri Sep 30 02:50:05 PDT 2005
+
+        0.23 release.
+
+        Possibly incompatible changes:
+        - hook_note_commit and hook_note_netsync_revision_received
+          take a new argument containing the text of the revision that
+          was received.  (Timothy Brownawell <tbrownaw@gmail.com>)
+        - 'cat FILENAME' now acts like the old 'cat file REV
+          FILENAME'; use new commands 'automate get_revision',
+          'automate get_manifest', 'automate get_file' to fetch
+          objects by hash.  (Grahame Bowland <grahame@angrygoats.net>)
+
+        General improvements:
+        - .mt-ignore support (Martin Dvorak
+          <jezek2@advel.cz>, Timothy Brownawell <tbrownaw@gmail.com>)
+        - much work on making monotone more i18n friendly (Benoît
+          Dejean <benoit@placenet.org>, Matt Johnston
+          <matt@ucc.asn.au>)
+        - support for more interactive merge tools:
+          - FileMerge.app (comes with OS X) (Marcel van der Boom
+            <marcel@hsdev.com>)
+          - TortoiseMerge (Win32; comes with TortoiseSVN) (Matthew
+            Gregan <kinetik@orcon.net.nz>)
+        - rename and drop now actually perform the specified rename or
+          deletion when the argument --execute is passed.  (Richard
+          Levitte <richard@levitte.org>)
+        - 'help' command, same as --help (Matt Johnston
+          <matt@ucc.asn.au>).
+        - 'usher' support: experimental method for proxying multiple
+          netsync servers through a single port (similar concept to
+          vhosts) (Timothy Brownawell <tbrownaw@gmail.com>)
+        - support long passphrases (Matt Johnston <matt@ucc.asn.au>)
+        - Faster binary file detection (Eric Anderson
+          <anderse-monotone@cello.hpl.hp.com>)
+        - netsync speedups:
+          - when handling large files (Eric Anderson
+            <anderse-monotone@cello.hpl.hp.com>)
+          - when handling many branches (Marcel van der Boom
+            <marcel@hsdev.com>)
+        - new system to allow crash logs to contain not just execution
+          traces, but also dumps of data being handled when the error
+          was detected -- greatly improves debuggability of user
+          crashes.
+        - complete rework of path handling code, for clarity,
+          robustness, and speed.  No user visible changes, except for
+          the many bugs fixed.  (Special thanks to Matthew Gregan
+          <kinetik@orcon.net.nz> and Grahame Bowland
+          <grahame@angrygoats.net>.)
+          - however, if you have non-normalized paths in your history
+            (symptom: fresh pulls with 0.18 work, but fresh pulls with
+            0.19 do not), then 0.23 will report an error and refuse to
+            handle the affected revisions.  Since it is believed this
+            only affects one project, and to conserve core developer
+            time, implementing a migration was put off for now.  If
+            this causes problems or for more details, please send an
+            email to monotone-devel@nongnu.org.
+        - as always, many small bug fixes, speedups, and improved
+          messages.
+
+        New translations:
+        - fr (Benoît Dejean <benoit@placenet.org>)
+        - ja (Satoru SATOH <ss@gnome.gr.jp>)
+
+        Other new monotone-related projects since 0.22:
+        - mtsh by Timothy Brownawell:
+            https://netfiles.uiuc.edu/brownawe/www/mtsh/
+          GTK+ wrapper for monotone focusing on working copy
+          operations -- add/drop/revert/rename/commit/update/diff and
+          browsing.  Has a mechanism for per-file commit comments.
+
+        - "dumb server" support by Nathaniel Smith (share your
+          monotone repositories via HTTP/FTP, no netsync daemon
+          needed):
+            http://viewmtn.angrygoats.net//branch.psp?branch=net.venge.monotone.dumb
+          Still needs a command-line frontend to be usable, among
+          other things.  Help wanted.  In python.
+
+        - m7 by Larry Hastings <larry@hastings.org>
+            http://www.midwinter.com/~lch/programming/m7/
+          Experimental drop-in command-line wrapper for monotone.
+          Uses certs to add local incrementing version numbers, and an
+          enhanced annotate front-end.
+
 Mon Aug  8 23:23:53 PDT 2005

         0.22 release.  new crypto library, bug fixes, ui improvements
============================================================
--- UPGRADE	d6fb0d1273131b999c0051dadd9a5e7010d72041
+++ UPGRADE	e39fe0a44ab0769d00a9b4aa9d0bcfaeb7d5955e
@@ -1,4 +1,4 @@
-upgrading monotone to 0.22
+upgrading monotone to 0.23
 ==========================

 if you are upgrading from:
============================================================
--- commands.cc	d04179187700889eee2af3e4e6ada1ffad5e7317
+++ commands.cc	889b85e8285c01cbd3cfecfecc5b2d687f9cdcd3
@@ -1319,10 +1319,7 @@ CMD(cat, N_("informative"),
   // paths are interpreted as standard external ones when we're in a
   // working copy, but as project-rooted external ones otherwise
   file_path fp;
-  if (app.found_working_copy)
-    fp = file_path_external(idx(args, 0));
-  else
-    fp = file_path_internal_from_user(idx(args, 0));
+  fp = file_path_external(idx(args, 0));
   manifest_id mid;
   app.db.get_revision_manifest(rid, mid);
   manifest_map m;
============================================================
--- configure.ac	0a8fcd82b46313fe334dc86907bde61e73c8ab4e
+++ configure.ac	70ff43eb9c0b6009d469504e8b41cd8a9fde1900
@@ -2,7 +2,7 @@ AC_PREREQ(2.58)
 # Process this file with autoconf to produce a configure script.

 AC_PREREQ(2.58)
-AC_INIT(monotone, 0.22, monotone-devel@nongnu.org)
+AC_INIT(monotone, 0.23, monotone-devel@nongnu.org)
 AM_INIT_AUTOMAKE(1.7.1)
 AC_CONFIG_SRCDIR([app_state.cc])
 AC_CONFIG_TESTDIR([tests])
@@ -18,12 +18,13 @@ AM_CONFIG_HEADER([config.h])
 # spirit-based programs. we turn it off here unless the user turned it
 # on themselves.

-test "z$CXXFLAGS" = "z" && CXXFLAGS="-O2 -fno-strict-aliasing"
-test "z$CFLAGS" = "z" && CFLAGS="-O2 -fno-strict-aliasing"
-
 # Checks for programs.
 AC_PROG_CXX
 AC_PROG_CC
+
+test "z$GXX" = "zyes" && CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
+test "z$GCC" = "zyes" && CFLAGS="$CFLAGS -fno-strict-aliasing"
+
 AC_PROG_RANLIB
 AC_CC_FEXCEPTIONS
 AC_LANG(C++)
============================================================
--- debian/changelog	55dab413b30f046f933930d054c3da844b818366
+++ debian/changelog	01af0bb1549903ab091c33c6f29f0d79fa7be543
@@ -1,3 +1,9 @@
+monotone (0.23-0.1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Nathaniel Smith <njs@pobox.com>  Thu, 29 Sep 2005 23:50:22 -0700
+
 monotone (0.22-1) unstable; urgency=low

   * Rebuild in clean environment (pdebuild) for upload to debian
============================================================
--- monotone.spec	65f1d01fe0fae953ee377a30e6a9f07056a8fbc2
+++ monotone.spec	33404c56eb0d468a42d9a5565560879512ae815e
@@ -1,6 +1,6 @@ Name: monotone
 Summary: monotone is a distributed version control tool
 Name: monotone
-Version: 0.22
+Version: 0.23
 Release: 1
 License: GPL
 Group: Development/Tools
@@ -24,11 +24,10 @@ CXXFLAGS="$RPM_OPT_FLAGS" \
 %build
 CFLAGS="$RPM_OPT_FLAGS" \
 CXXFLAGS="$RPM_OPT_FLAGS" \
-./configure --prefix=$RPM_BUILD_ROOT/usr \
+./configure --prefix=$RPM_BUILD_ROOT%{_prefix} \
+            --datadir=$RPM_BUILD_ROOT%{_datadir} \
             --infodir=$RPM_BUILD_ROOT%{_infodir} \
-            --mandir=$RPM_BUILD_ROOT%{_mandir} \
-            --with-bundled-sqlite \
-            --with-bundled-lua
+            --mandir=$RPM_BUILD_ROOT%{_mandir}
 make

 %install
@@ -60,9 +59,13 @@ fi
 %{_bindir}/monotone
 %{_mandir}/man1/monotone.1.gz
 %{_infodir}/*.info*.gz
+%{_datadir}/locale/*/LC_MESSAGES/monotone.mo


 %changelog
+* Thu Sep 29 2005 nathaniel smith <njs@pobox.com>
+- 0.23 release
+
 * Mon Aug  8 2005 nathaniel smith <njs@pobox.com>
 - 0.22 release

@@ -124,5 +127,3 @@ fi

 * Wed Sep 24 2003 graydon hoare <graydon@pobox.com>
 - Initial build.
-
-
============================================================
--- monotone.texi	6d5a231b85631453f85095ac4ce027c3fdc15e38
+++ monotone.texi	5cc1a931d274bc7d3f0cc95fc932162506011cb6
@@ -2714,8 +2714,8 @@ @heading Existing control files
 Contains versioned attributes of files, associated with the files'
 pathnames.
 @item .mt-ignore
-Contains a list of patterns, one per line. If it exists, any file with a name
-matching one of these patterns is ignored.
+Contains a list of regular expression patterns, one per line. If it exists,
+any file with a name matching one of these patterns is ignored.
 @item MT/wanted-testresults
 Contains a list of testresult key names, one per line. If it exists, update
 will only select revisions that do not have regressions according to the given
============================================================
--- netsync.cc	b3cddb10629e909ba4bbb0a4a254cf80419a942e
+++ netsync.cc	b253cccce899ebf482d4b14f0ce08139079018c2
@@ -3486,27 +3486,25 @@ session::rebuild_merkle_trees(app_state
   set<revision_id> revision_ids;
   set<rsa_keypair_id> inserted_keys;

-  // bad_branch_certs is a set of cert hashes.
-  set< hexenc<id> > bad_branch_certs;
   {
-    // get all matching branch names
-    vector< revision<cert> > certs;
-    app.db.get_revision_certs(branch_cert_name, certs);
-    for (size_t i = 0; i < certs.size(); ++i)
+    // Get our branches
+    vector<string> names;
+    get_branches(app, names);
+    for (size_t i = 0; i < names.size(); ++i)
       {
-        cert_value name;
-        decode_base64(idx(certs, i).inner().value, name);
-        if (branchnames.find(name()) != branchnames.end())
+        if(branchnames.find(names[i]) != branchnames.end())
           {
-            insert_with_parents(revision_id(idx(certs, i).inner().ident),
-                                revision_ids, app, revisions_ticker);
+            // branch matches, get its certs
+            vector< revision<cert> > certs;
+            base64<cert_value> encoded_name;
+            encode_base64(cert_value(names[i]),encoded_name);
+            app.db.get_revision_certs(branch_cert_name, encoded_name, certs);
+            for (size_t j = 0; j < certs.size(); ++j)
+              {
+                insert_with_parents(revision_id(idx(certs,j).inner().ident),
+                                    revision_ids, app, revisions_ticker);
+              }
           }
-        else
-          {
-            hexenc<id> hash;
-            cert_hash_code(idx(certs, i).inner(), hash);
-            bad_branch_certs.insert(hash);
-          }
       }
   }

@@ -3543,6 +3541,7 @@ session::rebuild_merkle_trees(app_state
     std::pair<revision_id, rsa_keypair_id> > > cert_idx;

   cert_idx idx;
+  // <mrb> this also gets *all* certs, needed?
   app.db.get_revision_cert_index(idx);

   // insert all certs and keys reachable via these revisions,
@@ -3556,8 +3555,6 @@ session::rebuild_merkle_trees(app_state

       if (revision_ids.find(ident) == revision_ids.end())
         continue;
-      if (bad_branch_certs.find(hash) != bad_branch_certs.end())
-        continue;

       id raw_hash;
       decode_hexenc(hash, raw_hash);
============================================================
--- paths.cc	3ea54d2be240cc811a52130f6711f3c3ae410763
+++ paths.cc	b77289a76e8d3c43a1dc2467c7b679c1aa6f9ca9
@@ -27,6 +27,7 @@ struct access_tracker
   void set(T const & val, bool may_be_initialized)
   {
     I(may_be_initialized || !initialized);
+    I(!very_uninitialized);
     I(!used);
     initialized = true;
     value = val;
@@ -42,14 +43,19 @@ struct access_tracker
     I(initialized);
     return value;
   }
+  void may_not_initialize()
+  {
+    I(!initialized);
+    very_uninitialized = true;
+  }
   // for unit tests
   void unset()
   {
-    used = initialized = false;
+    used = initialized = very_uninitialized = false;
   }
   T value;
-  bool initialized, used;
-  access_tracker() : initialized(false), used(false) {};
+  bool initialized, used, very_uninitialized;
+  access_tracker() : initialized(false), used(false), very_uninitialized(false) {};
 };

 // paths to use in interpreting paths from various sources,
@@ -165,12 +171,19 @@ file_path::file_path(file_path::source_t
     case internal:
       data = path;
       break;
-    case internal_from_user:
-      data = path;
-      N(is_valid_internal(path),
-        F("path '%s' is invalid") % path);
-      break;
     case external:
+      if (!initial_rel_path.initialized)
+	{
+	  // we are not in a working directory; treat this as an internal
+	  // path, and set the access_tracker() into a very uninitialised
+	  // state so that we will hit an exception if we do eventually
+	  // enter a working directory
+	  initial_rel_path.may_not_initialize();
+	  data = path;
+	  N(is_valid_internal(path),
+	    F("path '%s' is invalid") % path);
+	  break;
+	}
       N(!path.empty(), F("empty path '%s' is invalid") % path);
       fs::path out, base, relative;
       try
@@ -392,7 +405,11 @@ normalize_out_dots(std::string const & p
 static std::string
 normalize_out_dots(std::string const & path)
 {
+#ifdef WIN32
+  return fs::path(path, fs::native).normalize().string();
+#else
   return fs::path(path, fs::native).normalize().native_file_string();
+#endif
 }

 system_path::system_path(any_path const & other, bool in_true_working_copy)
@@ -530,16 +547,12 @@ static void test_file_path_internal()
   for (char const ** c = baddies; *c; ++c)
     {
       BOOST_CHECK_THROW(file_path_internal(*c), std::logic_error);
-      BOOST_CHECK_THROW(file_path_internal_from_user(std::string(*c)),
-                        informative_failure);
     }
   initial_rel_path.unset();
   initial_rel_path.set(file_path_internal("blah/blah/blah"), true);
   for (char const ** c = baddies; *c; ++c)
     {
       BOOST_CHECK_THROW(file_path_internal(*c), std::logic_error);
-      BOOST_CHECK_THROW(file_path_internal_from_user(std::string(*c)),
-                        informative_failure);
     }

   BOOST_CHECK(file_path().empty());
@@ -583,8 +596,6 @@ static void test_file_path_internal()
           for (std::vector<path_component>::const_iterator i = split_test.begin();
                i != split_test.end(); ++i)
             BOOST_CHECK(!null_name(*i));
-          file_path fp_user = file_path_internal_from_user(std::string(*c));
-          BOOST_CHECK(fp == fp_user);
         }
     }

@@ -649,7 +660,9 @@ static void test_file_path_external_no_p
   check_fp_normalizes_to(".foo/bar", ".foo/bar");
   check_fp_normalizes_to("..foo/bar", "..foo/bar");
   check_fp_normalizes_to(".", "");
+#ifndef WIN32
   check_fp_normalizes_to("foo:bar", "foo:bar");
+#endif
   check_fp_normalizes_to("foo/with,other+@weird*%#$=stuff/bar",
                          "foo/with,other+@weird*%#$=stuff/bar");

@@ -698,7 +711,9 @@ static void test_file_path_external_pref
   check_fp_normalizes_to(".foo/bar", "a/b/.foo/bar");
   check_fp_normalizes_to("..foo/bar", "a/b/..foo/bar");
   check_fp_normalizes_to(".", "a/b");
+#ifndef WIN32
   check_fp_normalizes_to("foo:bar", "a/b/foo:bar");
+#endif
   check_fp_normalizes_to("foo/with,other+@weird*%#$=stuff/bar",
                          "a/b/foo/with,other+@weird*%#$=stuff/bar");
   // why are the tests with // in them commented out?  because boost::fs sucks
@@ -845,13 +860,13 @@ static void test_system_path()
 #ifdef WIN32
   check_system_normalizes_to("c:foo", "c:foo");
   check_system_normalizes_to("c:/foo", "c:/foo");
-  check_system_normalizes_to("c:\\foo", "c:\\foo");
+  check_system_normalizes_to("c:\\foo", "c:/foo");
 #else
   check_system_normalizes_to("c:foo", "/a/b/c:foo");
   check_system_normalizes_to("c:/foo", "/a/b/c:/foo");
   check_system_normalizes_to("c:\\foo", "/a/b/c:\\foo");
+  check_system_normalizes_to("foo:bar", "/a/b/foo:bar");
 #endif
-  check_system_normalizes_to("foo:bar", "/a/b/foo:bar");
   // we require that system_path normalize out ..'s, because of the following
   // case:
   //   /work mkdir newdir
@@ -870,13 +885,17 @@ static void test_system_path()
   // can't do particularly interesting checking of tilde expansion, but at
   // least we can check that it's doing _something_...
   std::string tilde_expanded = system_path("~/foo").as_external();
+#ifdef WIN32
+  BOOST_CHECK(tilde_expanded[1] == ':');
+#else
   BOOST_CHECK(tilde_expanded[0] == '/');
+#endif
   BOOST_CHECK(tilde_expanded.find('~') == std::string::npos);
   // and check for the weird WIN32 version
 #ifdef WIN32
   std::string tilde_expanded2 = system_path("~this_user_does_not_exist_anywhere").as_external();
   BOOST_CHECK(tilde_expanded2[0] = '/');
-  BOOST_CHECK(tilde_expanded.find('~') == std::string::npos);
+  BOOST_CHECK(tilde_expanded2.find('~') == std::string::npos);
 #else
   BOOST_CHECK_THROW(system_path("~this_user_does_not_exist_anywhere"), informative_failure);
 #endif
@@ -923,6 +942,13 @@ static void test_access_tracker()
   BOOST_CHECK_THROW(a.set(3, false), std::logic_error);
   BOOST_CHECK(a.get() == 2);
   BOOST_CHECK_THROW(a.set(3, true), std::logic_error);
+  a.unset();
+  a.may_not_initialize();
+  BOOST_CHECK_THROW(a.set(1, false), std::logic_error);
+  BOOST_CHECK_THROW(a.set(2, true), std::logic_error);
+  a.unset();
+  a.set(1, false);
+  BOOST_CHECK_THROW(a.may_not_initialize(), std::logic_error);
 }

 void add_paths_tests(test_suite * suite)
============================================================
--- paths.hh	62c42e07a3d83608626a02cf57f7148c5c66b5a2
+++ paths.hh	b019e9708f84baea6625e9554f0d79969dd18051
@@ -45,16 +45,11 @@
 //          to the project root.
 //        file_path_external: use this for strings that come from the user.
 //          these strings are normalized before being checked, and if there is
-//          a problem trigger N() invariants rather than I() invariants.  such
-//          strings are interpreted as being _relative to the user's original
-//          directory_.  this function can only be called from within a
-//          working copy.
-//        file_path_internal_from_user: use this for strings that come from
-//          the user, _but_ are not referring to paths in the working copy,
-//          but rather in some database object directly.  for instance, 'cat
-//          file REV PATH' uses this function.  this function is exactly like
-//          file_path_internal, except that it raises N() errors rather than
-//          I() errors.
+//          a problem trigger N() invariants rather than I() invariants.  if in
+//          a working directory, such strings are interpreted as being
+//          _relative to the user's original directory_.
+//          if not in a working copy, strings are treated as referring to some
+//          database object directly.
 //      file_path's also provide optimized splitting and joining
 //      functionality.
 //
@@ -167,7 +162,7 @@ private:
   { return data < other.data; }

 private:
-  typedef enum { internal, external, internal_from_user } source_type;
+  typedef enum { internal, external } source_type;
   // input is always in utf8, because everything in our world is always in
   // utf8 (except interface code itself).
   // external paths:
@@ -181,7 +176,6 @@ private:
   file_path(source_type type, std::string const & path);
   friend file_path file_path_internal(std::string const & path);
   friend file_path file_path_external(utf8 const & path);
-  friend file_path file_path_internal_from_user(utf8 const & path);
 };

 // these are the public file_path constructors
@@ -193,17 +187,7 @@ inline file_path file_path_external(utf8
 {
   return file_path(file_path::external, path());
 }
-// this is rarely used; it is for when the user provides not a path relative
-// to their position in the working directory, but instead a project-root
-// relative path (e.g., in 'cat REV PATH').  It is exactly like
-// file_path_internal, but counts invalid paths as naughtiness rather than
-// bugs.
-inline file_path file_path_internal_from_user(utf8 const & path)
-{
-  return file_path(file_path::internal_from_user, path());
-}

-
 class bookkeeping_path : public any_path
 {
 public:
============================================================
--- po/fr.po	2385bcc193a5aa321863cda06106737be42a1bee
+++ po/fr.po	9d62b550595ead5ad9df1c6e57ef85b13d178252
@@ -6,7 +6,7 @@ msgstr ""
 msgstr ""
 "Project-Id-Version: monotone 0.22\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-09-06 03:04+0200\n"
+"POT-Creation-Date: 2005-09-30 03:00-0700\n"
 "PO-Revision-Date: 2005-09-06 03:22+0200\n"
 "Last-Translator: Benoît Dejean <benoit@placenet.org>\n"
 "Language-Team: Benoît Dejean <benoit@placenet.org>\n"
@@ -15,459 +15,471 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n>1;\n"

-#: ../app_state.cc:51
+#: app_state.cc:51
 #, c-format
 msgid "initializing from directory %s\n"
 msgstr ""

-#: ../app_state.cc:62
+#: app_state.cc:62
 #, c-format
 msgid "branch name is '%s'\n"
 msgstr "le nom de la branche est « %s »\n"

-#: ../app_state.cc:69
+#: app_state.cc:69
 #, c-format
 msgid "setting dump path to %s\n"
 msgstr ""

-#: ../app_state.cc:83
+#: app_state.cc:83
 #, c-format
 msgid "working copy directory required but not found%s%s"
 msgstr ""

-#: ../app_state.cc:91
+#: app_state.cc:91
 #, c-format
 msgid "invalid directory ''"
 msgstr ""

-#: ../app_state.cc:93
+#: app_state.cc:93
 #, c-format
 msgid "creating working copy in %s\n"
 msgstr "création d'une copie de travail dans %s\n"

-#: ../app_state.cc:99
+#: app_state.cc:99
 #, c-format
 msgid "monotone bookkeeping directory '%s' already exists in '%s'\n"
 msgstr ""

-#: ../app_state.cc:102
+#: app_state.cc:102
 #, c-format
 msgid "creating bookkeeping directory '%s' for working copy in '%s'\n"
 msgstr ""

-#: ../app_state.cc:132
+#: app_state.cc:133
 #, c-format
 msgid "'%s' ignored by restricted path set\n"
 msgstr ""

-#: ../app_state.cc:137
+#: app_state.cc:138 app_state.cc:156
 #, c-format
 msgid "unknown path '%s'\n"
 msgstr "chemin inconnu « %s »\n"

-#: ../app_state.cc:139
+#: app_state.cc:140
 #, c-format
 msgid "'%s' added to restricted path set\n"
 msgstr ""

-#: ../app_state.cc:178
+#: app_state.cc:151
 #, c-format
-msgid "checking restricted path set for '%s'\n"
+msgid "'%s' ignored by excluded path set\n"
 msgstr ""

-#: ../app_state.cc:185
+#: app_state.cc:158
 #, c-format
-msgid "path '%s' found in restricted path set; '%s' included\n"
+msgid "'%s' added to excluded path set\n"
 msgstr ""

-#: ../app_state.cc:191
+#: app_state.cc:185
 #, c-format
-msgid "path '%s' not found in restricted path set; '%s' excluded\n"
+msgid "checking excluded path set for '%s'\n"
 msgstr ""

-#: ../app_state.cc:248
+#: app_state.cc:192 app_state.cc:225
+#, c-format
+msgid "path '%s' found in excluded path set; '%s' excluded\n"
+msgstr ""
+
+#: app_state.cc:211
+#, c-format
+msgid "checking restricted path set for '%s'\n"
+msgstr ""
+
+#: app_state.cc:219
+#, c-format
+msgid "path '%s' found in restricted path set; '%s' included\n"
+msgstr ""
+
+#: app_state.cc:287
 #, fuzzy, c-format
 msgid "search root '%s' does not exist"
 msgstr "le fichier rc « %s » n'existe pas"

-#: ../app_state.cc:249
+#: app_state.cc:288
 #, c-format
 msgid "search root '%s' is not a directory\n"
 msgstr ""

-#: ../app_state.cc:251
+#: app_state.cc:290
 #, c-format
 msgid "set search root to %s\n"
 msgstr ""

-#: ../app_state.cc:282
+#: app_state.cc:321
 #, c-format
 msgid "negative depth not allowed\n"
 msgstr "profondeur négative interdite\n"

-#: ../app_state.cc:290
+#: app_state.cc:329
 #, c-format
 msgid "negative or zero last not allowed\n"
 msgstr ""

-#: ../app_state.cc:399
+#: app_state.cc:438
 #, c-format
 msgid "Failed to read options file %s"
 msgstr ""

-#: ../app_state.cc:416
+#: app_state.cc:455
 #, c-format
 msgid "Failed to write options file %s"
 msgstr ""

-#: ../basic_io.cc:26 ../basic_io.cc:27
+#: basic_io.cc:26 basic_io.cc:27
 #, c-format
 msgid "error in %s:%d:%d:E: %s"
 msgstr ""

-#: ../cert.cc:49
+#: cert.cc:49
 #, c-format
 msgid "cert ok\n"
 msgstr "certificat OK\n"

-#: ../cert.cc:56
+#: cert.cc:56
 #, c-format
 msgid "ignoring bad signature by '%s' on '%s'\n"
 msgstr ""

-#: ../cert.cc:64
+#: cert.cc:64
 #, c-format
 msgid "ignoring unknown signature by '%s' on '%s'\n"
 msgstr ""

-#: ../cert.cc:121
+#: cert.cc:121
 #, c-format
 msgid "trust function liked %d signers of %s cert on manifest %s\n"
 msgstr ""

-#: ../cert.cc:127
+#: cert.cc:127
 #, c-format
 msgid "trust function disliked %d signers of %s cert on manifest %s\n"
 msgstr ""

-#: ../cert.cc:174
+#: cert.cc:174
 #, c-format
 msgid "trust function liked %d signers of %s cert on revision %s\n"
 msgstr ""

-#: ../cert.cc:180
+#: cert.cc:180
 #, c-format
 msgid "trust function disliked %d signers of %s cert on revision %s\n"
 msgstr ""

-#: ../cert.cc:269
+#: cert.cc:269
 #, c-format
 msgid "calculated cert hash '%s' does not match '%s'"
 msgstr ""

-#: ../cert.cc:302
+#: cert.cc:303
 #, c-format
-msgid "[%s@%s:%s]"
-msgstr ""
-
-#: ../cert.cc:303
-#, c-format
 msgid "cert: signable text %s\n"
 msgstr ""

-#: ../cert.cc:364 ../keys.cc:508
+#: cert.cc:364 keys.cc:508
 #, c-format
 msgid "no private key '%s' found in database or get_priv_key hook"
 msgstr ""

-#: ../cert.cc:373
+#: cert.cc:373
 #, c-format
 msgid "mismatch between private key '%s' in database and get_priv_key hook"
 msgstr ""

-#: ../cert.cc:477
+#: cert.cc:477
 #, c-format
 msgid "no branch found for empty revision, please provide a branch name"
 msgstr ""

-#: ../cert.cc:486
+#: cert.cc:486
 #, c-format
 msgid "no branch certs found for revision %s, please provide a branch name"
 msgstr ""

-#: ../cert.cc:490
+#: cert.cc:490
 #, c-format
 msgid ""
 "multiple branch certs found for revision %s, please provide a branch name"
 msgstr ""

-#: ../cert.cc:507 ../rcs_import.cc:1231 ../revision.cc:1594
-#: ../revision.cc:1626
+#: cert.cc:507 rcs_import.cc:1231 revision.cc:1594 revision.cc:1626
 #, c-format
 msgid "no unique private key for cert construction"
 msgstr ""

-#: ../cert.cc:622
+#: cert.cc:622
 #, c-format
 msgid "no default author name for branch '%s'"
 msgstr ""

-#: ../change_set.cc:289
+#: change_set.cc:289
 #, c-format
 msgid "tid %d: parent %d, type %s, name %s\n"
 msgstr ""

-#: ../change_set.cc:315
+#: change_set.cc:315
 #, c-format
 msgid "%d -> %d\n"
 msgstr ""

-#: ../change_set.cc:1540
+#: change_set.cc:1540
 #, c-format
 msgid "concatenating change sets\n"
 msgstr ""

-#: ../change_set.cc:1563
+#: change_set.cc:1563
 #, c-format
 msgid "concatenating %d and %d deltas\n"
 msgstr ""

-#: ../change_set.cc:1573
+#: change_set.cc:1573
 #, c-format
 msgid "processing delta on %s\n"
 msgstr ""

-#: ../change_set.cc:1577
+#: change_set.cc:1577
 #, c-format
 msgid "delta on %s in first changeset renamed to %s\n"
 msgstr ""

-#. the delta should be removed if the file is going to be deleted
-#: ../change_set.cc:1582
+#: change_set.cc:1582
 #, c-format
 msgid "discarding delta [%s]->[%s] for deleted file '%s'\n"
 msgstr ""

-#: ../change_set.cc:1600
+#: change_set.cc:1600
 #, c-format
 msgid "fusing deltas on %s : %s -> %s and %s -> %s\n"
 msgstr ""

-#: ../change_set.cc:1614
+#: change_set.cc:1614
 #, c-format
 msgid "delta on %s in second changeset copied forward\n"
 msgstr ""

-#: ../change_set.cc:1628
+#: change_set.cc:1628
 #, c-format
 msgid "finished concatenation\n"
 msgstr ""

-#: ../change_set.cc:1734 ../change_set.cc:1741
+#: change_set.cc:1734 change_set.cc:1741
 #, c-format
 msgid "delete of %s dominates rename to %s\n"
 msgstr ""

-#: ../change_set.cc:1751
+#: change_set.cc:1751
 #, c-format
 msgid "unable to resolve file conflict '%s' -> '%s' vs. '%s'"
 msgstr ""

-#: ../change_set.cc:1755
+#: change_set.cc:1755
 #, c-format
 msgid "unable to resolve dir conflict '%s' -> '%s' vs. '%s'"
 msgstr ""

-#: ../change_set.cc:1760
+#: change_set.cc:1760
 #, c-format
 msgid "illegal conflict resolution '%s', wanted '%s' or '%s'\n"
 msgstr ""

-#: ../change_set.cc:1816
+#: change_set.cc:1816
 #, c-format
 msgid "tid %d (%s) clobbered tid %d (%s)\n"
 msgstr ""

-#: ../change_set.cc:1852
+#: change_set.cc:1852
 #, c-format
 msgid "skipping common change on %s (tid %d)\n"
 msgstr ""

-#: ../change_set.cc:1857
+#: change_set.cc:1857
 #, c-format
 msgid "skipping neutral change of %s -> %s (tid %d)\n"
 msgstr ""

-#: ../change_set.cc:1864
+#: change_set.cc:1864
 #, c-format
 msgid "propagating change on %s -> %s (tid %d)\n"
 msgstr ""

-#: ../change_set.cc:1880
+#: change_set.cc:1880
 #, c-format
 msgid "conflict detected, resolved in A's favour\n"
 msgstr "conflit détecté, résolu en faveur de A\n"

-#: ../change_set.cc:1886
+#: change_set.cc:1886
 #, c-format
 msgid "conflict detected, resolved in B's favour\n"
 msgstr "conflit détecté, résolu en faveur de B\n"

-#: ../change_set.cc:2053
+#: change_set.cc:2053
 #, c-format
 msgid "reusing merge resolution '%s' : '%s' -> '%s'\n"
 msgstr ""

-#: ../change_set.cc:2062
+#: change_set.cc:2062
 #, c-format
 msgid "merge of '%s' : '%s' vs. '%s' (no common ancestor) failed"
 msgstr ""

-#: ../change_set.cc:2069
+#: change_set.cc:2069
 #, c-format
 msgid "merge of '%s' : '%s' -> '%s' vs '%s' failed"
 msgstr ""

-#: ../change_set.cc:2073
+#: change_set.cc:2073
 #, c-format
 msgid "merge of '%s' : '%s' -> '%s' vs '%s' resolved to '%s'\n"
 msgstr ""

-#: ../change_set.cc:2131
+#: change_set.cc:2131
 #, c-format
 msgid "skipping delta '%s'->'%s' on deleted file '%s'\n"
 msgstr ""

-#. if no deltas in b, copy ours over using the merged name
-#: ../change_set.cc:2139
+#: change_set.cc:2139
 #, c-format
 msgid "merge is copying delta '%s' : '%s' -> '%s'\n"
 msgstr ""

-#. ... use the delta from 'a'
-#. 'a' change_set included a delta []->[...], ie file added. We want to
-#. follow this fork so it gets added to the b_merged changeset
-#: ../change_set.cc:2163
+#: change_set.cc:2163
 #, c-format
 msgid "propagating new file addition delta on '%s' : '%s' -> '%s'\n"
 msgstr ""

-#. ... ignore the delta
-#. 'b' change_set included a delta []->[...], ie file added. We don't need
-#. to add it to the b_merged changeset, since any delta in 'a' will be
-#. ignored (as 'b' includes deletions).
-#: ../change_set.cc:2175
+#: change_set.cc:2175
 #, c-format
 msgid "skipping new file addition delta on '%s' : '' -> '%s'\n"
 msgstr ""

-#. ... absorb identical deltas
-#: ../change_set.cc:2183
+#: change_set.cc:2183
 #, c-format
 msgid "skipping common delta '%s' : '%s' -> '%s'\n"
 msgstr ""

-#: ../change_set.cc:2189
+#: change_set.cc:2189
 #, c-format
 msgid "skipping neutral delta on '%s' : %s -> %s\n"
 msgstr ""

-#: ../change_set.cc:2197
+#: change_set.cc:2197
 #, c-format
 msgid "propagating unperturbed delta on '%s' : '%s' -> '%s'\n"
 msgstr ""

-#. ... or resolve conflict
-#: ../change_set.cc:2207
+#: change_set.cc:2207
 #, c-format
 msgid "merging delta '%s' : '%s' -> '%s' vs. '%s'\n"
 msgstr ""

-#: ../change_set.cc:2220
+#: change_set.cc:2220
 #, c-format
 msgid "resolved merge to '%s' : '%s' -> '%s'\n"
 msgstr ""

-#: ../change_set.cc:2249
+#: change_set.cc:2249
 #, c-format
 msgid "merging change sets\n"
 msgstr ""

-#: ../change_set.cc:2311
+#: change_set.cc:2311
 #, c-format
 msgid "finished merge\n"
 msgstr ""

-#: ../change_set.cc:2330
+#: change_set.cc:2330
 #, c-format
 msgid "inverting change set\n"
 msgstr ""

-#: ../change_set.cc:2360
+#: change_set.cc:2360
 #, c-format
 msgid "converted 'delete %s' to 'add as %s' in inverse\n"
 msgstr ""

-#: ../change_set.cc:2369
+#: change_set.cc:2369
 #, c-format
 msgid "converted add %s to delete in inverse\n"
 msgstr ""

-#: ../change_set.cc:2379
+#: change_set.cc:2379
 #, c-format
 msgid "converting delta %s -> %s on %s\n"
 msgstr ""

-#: ../change_set.cc:2381
+#: change_set.cc:2381
 #, c-format
 msgid "inverse is delta %s -> %s on %s\n"
 msgstr ""

-#: ../change_set.cc:2447 ../change_set.cc:2495
+#: change_set.cc:2447 change_set.cc:2495
 #, c-format
 msgid "moving file %s -> %s\n"
 msgstr "déplacement du fichier %s -> %s\n"

-#: ../change_set.cc:2454 ../change_set.cc:2503
+#: change_set.cc:2454 change_set.cc:2503
 #, c-format
 msgid "moving dir %s -> %s\n"
 msgstr "déplacement du dossier %s -> %s\n"

-#: ../commands.cc:136
+#: commands.cc:136
 #, c-format
 msgid "expanding command '%s'\n"
 msgstr ""

-#: ../commands.cc:153
+#: commands.cc:153
 #, c-format
 msgid "expanded command to '%s'\n"
 msgstr ""

-#: ../commands.cc:158
+#: commands.cc:158
 #, c-format
 msgid "command '%s' has multiple ambiguous expansions:\n"
 msgstr ""

-#: ../commands.cc:201
+#: commands.cc:201
 msgid "commands:"
 msgstr "commandes :"

-#: ../commands.cc:245
+#: commands.cc:245
 #, c-format
 msgid "executing command '%s'\n"
 msgstr "exécution de la commande « %s »\n"

-#: ../commands.cc:251
+#: commands.cc:251
 #, c-format
 msgid "unknown command '%s'\n"
 msgstr "commande inconnue « %s »\n"

-#: ../commands.cc:298
+#: commands.cc:298
 #, c-format
 msgid "pid file '%s' already exists"
 msgstr "le fichier pid « %s » existe déjà"

-#: ../commands.cc:368
+#: commands.cc:322 commands.cc:1218 commands.cc:1298 commands.cc:1641
+#: commands.cc:2571 commands.cc:3259 commands.cc:3456 commands.cc:3493
+msgid "informative"
+msgstr "information"
+
+#: commands.cc:322
+msgid "command [ARGS...]"
+msgstr ""
+
+#: commands.cc:322
+#, fuzzy
+msgid "display command help"
+msgstr "afficher le message d'aide"
+
+#: commands.cc:381
 msgid ""
 "Enter a description of this change.\n"
 "Lines beginning with `MT:' are removed automatically.\n"
@@ -475,16 +487,16 @@ msgstr ""
 "Saisissez une description pour cette modification.\n"
 "Les lignes débutant par « MT: » sont supprimées automatiquement.\n"

-#: ../commands.cc:375
+#: commands.cc:388
 #, c-format
 msgid "edit of log message failed"
 msgstr "l'édition du message du journal a échouée"

-#: ../commands.cc:384
+#: commands.cc:397
 msgid "note: "
 msgstr ""

-#: ../commands.cc:385
+#: commands.cc:398
 #, c-format
 msgid ""
 "branch '%s' has multiple heads\n"
@@ -493,60 +505,59 @@ msgstr ""
 "la branche « %s » a plusieurs heads\n"
 "vous devriez peut-être lancer « monotone merge »"

-#: ../commands.cc:445 ../commands.cc:666 ../commands.cc:1304
-#: ../commands.cc:1374 ../commands.cc:1742 ../commands.cc:2605
-#: ../commands.cc:2620 ../commands.cc:2623 ../commands.cc:2821
-#: ../commands.cc:3462
+#: commands.cc:458 commands.cc:679 commands.cc:1317 commands.cc:1384
+#: commands.cc:1752 commands.cc:2618 commands.cc:2633 commands.cc:2636
+#: commands.cc:2834 commands.cc:3475
 #, c-format
 msgid "no such revision '%s'"
 msgstr "aucune révision « %s »"

-#: ../commands.cc:452
+#: commands.cc:465
 #, c-format
 msgid "expanding selection '%s'\n"
 msgstr ""

-#: ../commands.cc:460
+#: commands.cc:473
 #, c-format
 msgid "no match for selection '%s'"
 msgstr ""

-#: ../commands.cc:463
+#: commands.cc:476
 #, c-format
 msgid "selection '%s' has multiple ambiguous expansions: \n"
 msgstr ""

-#: ../commands.cc:470
+#: commands.cc:483
 #, c-format
 msgid "expanded to '%s'\n"
 msgstr ""

-#: ../commands.cc:481
+#: commands.cc:494
 #, c-format
 msgid "non-hex digits in id"
 msgstr ""

-#: ../commands.cc:490
+#: commands.cc:503
 #, fuzzy, c-format
 msgid "partial id '%s' does not have an expansion"
 msgstr "le fichier rc « %s » n'existe pas"

-#: ../commands.cc:493
+#: commands.cc:506
 #, fuzzy, c-format
 msgid "partial id '%s' has multiple ambiguous expansions:\n"
 msgstr "le fichier rc « %s » n'existe pas"

-#: ../commands.cc:500
+#: commands.cc:513
 #, c-format
 msgid "expanded partial id '%s' to '%s'\n"
 msgstr ""

-#: ../commands.cc:527 ../keys.cc:510 ../netsync.cc:2194
+#: commands.cc:540 keys.cc:510 netsync.cc:2197
 #, c-format
 msgid "no public key '%s' found in database"
 msgstr "aucune clef publique « %s » dans la base de données"

-#: ../commands.cc:537
+#: commands.cc:550
 #, c-format
 msgid ""
 "Key   : %s\n"
@@ -559,71 +570,71 @@ msgstr ""
 "Nom       : %s\n"
 "Valeur    : %s\n"

-#: ../commands.cc:571
+#: commands.cc:584
 msgid "ok"
 msgstr "0K"

-#: ../commands.cc:574
+#: commands.cc:587
 msgid "bad"
 msgstr "mauvais"

-#: ../commands.cc:577
+#: commands.cc:590
 msgid "unknown"
 msgstr "inconnu"

-#: ../commands.cc:652
+#: commands.cc:665
 #, c-format
 msgid "no keys found\n"
 msgstr "aucune clef trouvée\n"

-#: ../commands.cc:654
+#: commands.cc:667
 #, c-format
 msgid "no keys found matching '%s'\n"
 msgstr "aucune clef correspondant à « %s »\n"

-#: ../commands.cc:672
+#: commands.cc:685
 #, c-format
 msgid "revision %s already has children. We cannot kill it."
 msgstr "la révision %s a déjà des descendants. Impossible de la tuer."

-#: ../commands.cc:802 ../commands.cc:824 ../commands.cc:856 ../commands.cc:880
-#: ../commands.cc:920
+#: commands.cc:815 commands.cc:837 commands.cc:869 commands.cc:893
+#: commands.cc:933
 msgid "key and cert"
 msgstr "clef et certificat"

-#: ../commands.cc:802 ../commands.cc:824 ../commands.cc:856
+#: commands.cc:815 commands.cc:837 commands.cc:869
 msgid "KEYID"
 msgstr "IDCLEF"

-#: ../commands.cc:802
+#: commands.cc:815
 msgid "generate an RSA key-pair"
 msgstr "générer une paire de clefs RSA"

-#: ../commands.cc:812
+#: commands.cc:825
 #, c-format
 msgid "key '%s' already exists in database"
 msgstr "la clef « %s » est déjà dans la base de données"

-#: ../commands.cc:816
+#: commands.cc:829
 #, c-format
 msgid "generating key-pair '%s'\n"
 msgstr ""

-#: ../commands.cc:818
+#: commands.cc:831
 #, c-format
 msgid "storing key-pair '%s' in database\n"
 msgstr ""

-#: ../commands.cc:824
+#: commands.cc:837
 msgid "drop a public and private key"
 msgstr "supprimer une clef publique et privée"

-#: ../commands.cc:835
+#: commands.cc:848
 #, c-format
 msgid "dropping public key '%s' from database\n"
 msgstr ""

-#: ../commands.cc:842
+#: commands.cc:855
 #, c-format
 msgid ""
 "dropping private key '%s' from database\n"
@@ -632,7 +643,7 @@ msgstr ""
 "suppression de la clef privée « %s » de la base de données\n"
 "\n"

-#: ../commands.cc:843
+#: commands.cc:856
 #, c-format
 msgid ""
 "the private key data may not have been erased from the\n"
@@ -640,49 +651,49 @@ msgstr ""
 "'db load' to be sure."
 msgstr ""

-#: ../commands.cc:851
+#: commands.cc:864
 #, c-format
 msgid "public or private key '%s' does not exist in database"
 msgstr "la clef publique ou privée « %s » n'existe pas dans la base de données"

-#: ../commands.cc:857
+#: commands.cc:870
 msgid "change passphrase of a private RSA key"
 msgstr "changer la phrase de passe pour une clef RSA privée"

-#: ../commands.cc:868
+#: commands.cc:881
 #, c-format
 msgid "key '%s' does not exist in database"
 msgstr "la clef « %s » n'existe pas dans la base de données"

-#: ../commands.cc:875
+#: commands.cc:888
 #, c-format
 msgid "passphrase changed\n"
 msgstr "la phrase de passe à changée\n"

-#: ../commands.cc:880
+#: commands.cc:893
 msgid "REVISION CERTNAME [CERTVAL]"
 msgstr ""

-#: ../commands.cc:881
+#: commands.cc:894
 msgid "create a cert for a revision"
 msgstr "créer un certificat pour une révision"

-#: ../commands.cc:901
+#: commands.cc:914
 #, c-format
 msgid "no unique private key found, and no key specified"
 msgstr ""

-#: ../commands.cc:920
+#: commands.cc:933
 msgid "REVISION NAME VALUE SIGNER1 [SIGNER2 [...]]"
 msgstr ""

-#: ../commands.cc:921
+#: commands.cc:934
 msgid ""
 "test whether a hypothetical cert would be trusted\n"
 "by current settings"
 msgstr ""

-#: ../commands.cc:954
+#: commands.cc:967
 #, c-format
 msgid ""
 "if a cert on: %s\n"
@@ -692,205 +703,187 @@ msgstr ""
 "it would be: %s\n"
 msgstr ""

-#: ../commands.cc:963
+#: commands.cc:976
 msgid "trusted"
 msgstr ""

-#: ../commands.cc:963
+#: commands.cc:976
 msgid "UNtrusted"
 msgstr ""

-#: ../commands.cc:966 ../commands.cc:979 ../commands.cc:991
-#: ../commands.cc:1008 ../commands.cc:1054
+#: commands.cc:979 commands.cc:992 commands.cc:1004 commands.cc:1021
+#: commands.cc:1067
 msgid "review"
 msgstr ""

-#: ../commands.cc:966
+#: commands.cc:979
 msgid "REVISION TAGNAME"
 msgstr ""

-#: ../commands.cc:967
+#: commands.cc:980
 #, fuzzy
 msgid "put a symbolic tag cert on a revision version"
 msgstr "mettre une certificat-étiquette symbolique"

-#: ../commands.cc:979
+#: commands.cc:992
 msgid "ID (pass|fail|true|false|yes|no|1|0)"
 msgstr ""

-#: ../commands.cc:980
+#: commands.cc:993
 msgid "note the results of running a test on a revision"
 msgstr ""

-#: ../commands.cc:991 ../commands.cc:1008
+#: commands.cc:1004 commands.cc:1021
 msgid "REVISION"
 msgstr ""

-#: ../commands.cc:992
+#: commands.cc:1005
 msgid "approve of a particular revision"
 msgstr "approuver une révision particulière"

-#: ../commands.cc:1003
+#: commands.cc:1016
 #, c-format
 msgid "need --branch argument for approval"
 msgstr ""

-#: ../commands.cc:1009
+#: commands.cc:1022
 msgid "disapprove of a particular revision"
 msgstr ""

-#: ../commands.cc:1022
+#: commands.cc:1035
 #, fuzzy, c-format
 msgid "revision '%s' has %d changesets, cannot invert\n"
 msgstr "la révision %s n'existe pas"

-#: ../commands.cc:1026
+#: commands.cc:1039
 #, c-format
 msgid "need --branch argument for disapproval"
 msgstr ""

-#: ../commands.cc:1054
+#: commands.cc:1067
 msgid "REVISION [COMMENT]"
 msgstr ""

-#: ../commands.cc:1055
+#: commands.cc:1068
 msgid "comment on a particular revision"
 msgstr ""

-#: ../commands.cc:1065
+#: commands.cc:1078
 #, c-format
 msgid "edit comment failed"
 msgstr "l'édition du commentaire a échouée"

-#: ../commands.cc:1068
+#: commands.cc:1081
 #, c-format
 msgid "empty comment"
 msgstr "commentaire vide"

-#. static void dump_change_set(string const & name,
-#. change_set & cs)
-#. {
-#. data dat;
-#. write_change_set(cs, dat);
-#. cout << "change set '" << name << "'\n" << dat << endl;
-#. }
-#: ../commands.cc:1078 ../commands.cc:1103 ../commands.cc:1130
-#: ../commands.cc:1262 ../commands.cc:2092 ../commands.cc:2215
-#: ../commands.cc:2770 ../commands.cc:3303
+#: commands.cc:1091 commands.cc:1116 commands.cc:1143 commands.cc:1275
+#: commands.cc:2102 commands.cc:2225 commands.cc:2783 commands.cc:3316
 msgid "working copy"
 msgstr "copie de travail"

-#: ../commands.cc:1078 ../commands.cc:1103
+#: commands.cc:1091 commands.cc:1116
 msgid "PATH..."
 msgstr "CHEMIN..."

-#: ../commands.cc:1079
+#: commands.cc:1092
 msgid "add files to working copy"
 msgstr "ajouter des fichiers à la copie de travail"

-#: ../commands.cc:1104
+#: commands.cc:1117
 msgid "drop files from working copy"
 msgstr "supprimer des fichiers de la copie de travail"

-#: ../commands.cc:1130
+#: commands.cc:1143
 msgid "SRC DST"
 msgstr "SRC DST"

-#: ../commands.cc:1131
+#: commands.cc:1144
 msgid "rename entries in the working copy"
 msgstr "renommer des entrées dans la copie de travail"

-#. fload and fmerge are simple commands for debugging the line
-#. merger.
-#: ../commands.cc:1159 ../commands.cc:1172 ../commands.cc:2691
-#: ../commands.cc:2708 ../commands.cc:3363
+#: commands.cc:1172 commands.cc:1185 commands.cc:2704 commands.cc:2721
+#: commands.cc:3376
 msgid "debug"
 msgstr ""

-#: ../commands.cc:1159
+#: commands.cc:1172
 msgid "load file contents into db"
 msgstr "charger le contenu du fichier dans la base de données"

-#: ../commands.cc:1172
+#: commands.cc:1185
 msgid "<parent> <left> <right>"
 msgstr "<parent> <gauche> <droite>"

-#: ../commands.cc:1173
+#: commands.cc:1186
 msgid "merge 3 files and output result"
 msgstr ""

-#: ../commands.cc:1183
+#: commands.cc:1196
 #, c-format
 msgid "ancestor file id does not exist"
 msgstr ""

-#: ../commands.cc:1186
+#: commands.cc:1199
 #, c-format
 msgid "left file id does not exist"
 msgstr ""

-#: ../commands.cc:1189
+#: commands.cc:1202
 #, c-format
 msgid "right file id does not exist"
 msgstr ""

-#: ../commands.cc:1200
+#: commands.cc:1213
 #, c-format
 msgid "merge failed"
 msgstr ""

-#: ../commands.cc:1205 ../commands.cc:1285 ../commands.cc:1631
-#: ../commands.cc:2558 ../commands.cc:3246 ../commands.cc:3443
-#: ../commands.cc:3480
-msgid "informative"
-msgstr "information"
-
-#: ../commands.cc:1205 ../commands.cc:2215 ../commands.cc:2558
-#: ../commands.cc:3303
+#: commands.cc:1218 commands.cc:2225 commands.cc:2571 commands.cc:3316
 msgid "[PATH]..."
 msgstr ""

-#: ../commands.cc:1205
+#: commands.cc:1218
 msgid "show status of working copy"
 msgstr "afficher l'état de la copie de travail"

-#: ../commands.cc:1262
+#: commands.cc:1275
 msgid "[PATH]"
 msgstr ""

-#: ../commands.cc:1263
+#: commands.cc:1276
 msgid "calculate identity of PATH or stdin"
 msgstr ""

-#: ../commands.cc:1286
+#: commands.cc:1299
 msgid "FILENAME"
 msgstr ""

-#: ../commands.cc:1287
+#: commands.cc:1300
 msgid "write file from database to stdout"
 msgstr ""

-#: ../commands.cc:1318
+#: commands.cc:1328
 #, c-format
 msgid "no file '%s' found in revision '%s'\n"
 msgstr ""

-#: ../commands.cc:1322
+#: commands.cc:1332
 #, fuzzy, c-format
 msgid "dumping file '%s'\n"
 msgstr "importation du fichier « %s »\n"

-#: ../commands.cc:1330 ../commands.cc:1437 ../commands.cc:3046
-#: ../commands.cc:3095 ../commands.cc:3180 ../commands.cc:3187
-#: ../commands.cc:3648
+#: commands.cc:1340 commands.cc:1447 commands.cc:3059 commands.cc:3108
+#: commands.cc:3193 commands.cc:3200 commands.cc:3661
 msgid "tree"
 msgstr "arborescence"

-#: ../commands.cc:1330
+#: commands.cc:1340
 msgid "[DIRECTORY]\n"
 msgstr ""

-#: ../commands.cc:1331
+#: commands.cc:1341
 msgid ""
 "check out a revision from database into directory.\n"
 "If a revision is given, that's the one that will be checked out.\n"
@@ -898,89 +891,86 @@ msgstr ""
 "If no directory is given, the branch name will be used as directory"
 msgstr ""

-#. no checkout dir specified, use branch name for dir
-#. use branch head revision
-#: ../commands.cc:1348 ../commands.cc:1362
+#: commands.cc:1358 commands.cc:1372
 #, c-format
 msgid "need --branch argument for branch-based checkout"
 msgstr ""

-#: ../commands.cc:1365
+#: commands.cc:1375
 #, c-format
 msgid "branch %s is empty"
 msgstr "la branche %s est vide"

-#: ../commands.cc:1366
+#: commands.cc:1376
 #, c-format
 msgid "branch %s has multiple heads"
 msgstr ""

-#: ../commands.cc:1387
+#: commands.cc:1397
 #, c-format
 msgid "found %d %s branch certs on revision %s\n"
 msgstr ""

-#: ../commands.cc:1392
+#: commands.cc:1402
 #, c-format
 msgid "revision %s is not a member of branch %s\n"
 msgstr "la révision %s n'est pas membre de la branche %s\n"

-#: ../commands.cc:1398
+#: commands.cc:1408
 #, fuzzy, c-format
 msgid "checkout directory '%s' already exists"
 msgstr "le fichier pid « %s » existe déjà"

-#: ../commands.cc:1412
+#: commands.cc:1422
 #, c-format
 msgid "no manifest %s found in database"
 msgstr ""

-#: ../commands.cc:1414
+#: commands.cc:1424
 #, c-format
 msgid "checking out revision %s to directory %s\n"
 msgstr ""

-#: ../commands.cc:1420
+#: commands.cc:1430
 #, c-format
 msgid "no file %s found in database for %s"
 msgstr ""

-#: ../commands.cc:1424 ../commands.cc:3350
+#: commands.cc:1434 commands.cc:3363
 #, c-format
 msgid "writing file %s to %s\n"
 msgstr ""

-#: ../commands.cc:1437
+#: commands.cc:1447
 msgid "show unmerged head revisions of branch"
 msgstr ""

-#: ../commands.cc:1445 ../commands.cc:3055
+#: commands.cc:1455 commands.cc:3068
 #, c-format
 msgid "please specify a branch, with --branch=BRANCH"
 msgstr "veuillez préciser une branche avec --branch=BRANCHE"

-#: ../commands.cc:1450 ../commands.cc:3059 ../commands.cc:3129
-#: ../commands.cc:3132
+#: commands.cc:1460 commands.cc:3072 commands.cc:3142 commands.cc:3145
 #, c-format
 msgid "branch '%s' is empty\n"
 msgstr "la branche « %s » est vide\n"

-#: ../commands.cc:1452
+#: commands.cc:1462
 #, c-format
 msgid "branch '%s' is currently merged:\n"
 msgstr "la branche « %s » est actuellement fusionnée :\n"

-#: ../commands.cc:1454
+#: commands.cc:1464
 #, c-format
 msgid "branch '%s' is currently unmerged:\n"
 msgstr "la branche « %s » n'est actuellement pas fusionnée :\n"

-#: ../commands.cc:1493
+#: commands.cc:1503
 #, c-format
 msgid "no epoch for branch %s\n"
 msgstr ""

-#: ../commands.cc:1632
+#: commands.cc:1642
 msgid ""
 "certs ID\n"
 "keys [PATTERN]\n"
@@ -994,212 +984,211 @@ msgstr ""
 "missing"
 msgstr ""

-#: ../commands.cc:1642
+#: commands.cc:1652
 msgid ""
 "show database objects, or the current working copy manifest,\n"
 "or unknown, intentionally ignored, or missing state files"
 msgstr ""

-#: ../commands.cc:1679 ../commands.cc:1705 ../commands.cc:1729
-#: ../commands.cc:1747 ../commands.cc:1766 ../commands.cc:1785
-#: ../commands.cc:1803 ../commands.cc:1819 ../commands.cc:1839
+#: commands.cc:1689 commands.cc:1715 commands.cc:1739 commands.cc:1757
+#: commands.cc:1776 commands.cc:1795 commands.cc:1813 commands.cc:1829
+#: commands.cc:1849
 msgid "packet i/o"
 msgstr ""

-#: ../commands.cc:1679 ../commands.cc:1705
+#: commands.cc:1689 commands.cc:1715
 msgid "OLDID NEWID"
 msgstr ""

-#: ../commands.cc:1680
+#: commands.cc:1690
 msgid "write manifest delta packet to stdout"
 msgstr ""

-#: ../commands.cc:1694 ../commands.cc:1696 ../commands.cc:1760
+#: commands.cc:1704 commands.cc:1706 commands.cc:1770
 #, c-format
 msgid "no such manifest '%s'"
 msgstr "aucun manifeste « %s »"

-#: ../commands.cc:1706
+#: commands.cc:1716
 msgid "write file delta packet to stdout"
 msgstr ""

-#: ../commands.cc:1720 ../commands.cc:1722 ../commands.cc:1779
-#: ../commands.cc:2113
+#: commands.cc:1730 commands.cc:1732 commands.cc:1789 commands.cc:2123
 #, c-format
 msgid "no such file '%s'"
 msgstr "aucun fichier « %s »"

-#: ../commands.cc:1729 ../commands.cc:1747 ../commands.cc:1766
-#: ../commands.cc:1785 ../commands.cc:1803 ../commands.cc:1819
+#: commands.cc:1739 commands.cc:1757 commands.cc:1776 commands.cc:1795
+#: commands.cc:1813 commands.cc:1829
 msgid "ID"
 msgstr ""

-#: ../commands.cc:1729
+#: commands.cc:1739
 msgid "write revision data packet to stdout"
 msgstr ""

-#: ../commands.cc:1747
+#: commands.cc:1757
 msgid "write manifest data packet to stdout"
 msgstr ""

-#: ../commands.cc:1766
+#: commands.cc:1776
 msgid "write file data packet to stdout"
 msgstr ""

-#: ../commands.cc:1785
+#: commands.cc:1795
 msgid "write cert packets to stdout"
 msgstr ""

-#: ../commands.cc:1803
+#: commands.cc:1813
 msgid "write public key packet to stdout"
 msgstr ""

-#: ../commands.cc:1811
+#: commands.cc:1821
 #, c-format
 msgid "public key '%s' does not exist in database"
 msgstr ""

-#: ../commands.cc:1819
+#: commands.cc:1829
 msgid "write private key packet to stdout"
 msgstr ""

-#: ../commands.cc:1827
+#: commands.cc:1837
 #, c-format
 msgid "public and private key '%s' do not exist in database"
 msgstr ""

-#: ../commands.cc:1840
+#: commands.cc:1850
 msgid "read packets from files or stdin"
 msgstr "lecture des paquets depuis des fichiers ou l'entrée standard"

-#: ../commands.cc:1848
+#: commands.cc:1858
 #, c-format
 msgid "no packets found on stdin"
 msgstr "aucun paquet trouvé sur l'entrée standard"

-#: ../commands.cc:1859
+#: commands.cc:1869
 #, c-format
 msgid "no packets found in given file"
 msgid_plural "no packets found in given files"
 msgstr[0] "aucun paquet trouvé dans le fichier spécifié"
 msgstr[1] "aucun paquet trouvé dans les fichiers spécifiés"

-#: ../commands.cc:1863
+#: commands.cc:1873
 #, c-format
 msgid "read %d packet"
 msgid_plural "read %d packets"
 msgstr[0] "lu %d paquet"
 msgstr[1] "lu %d paquets"

-#: ../commands.cc:1867 ../commands.cc:1956 ../commands.cc:1971
-#: ../commands.cc:1985 ../commands.cc:2000
+#: commands.cc:1877 commands.cc:1966 commands.cc:1981 commands.cc:1995
+#: commands.cc:2010
 msgid "network"
 msgstr "réseau"

-#: ../commands.cc:1868
+#: commands.cc:1878
 msgid "rebuild the indices used to sync over the network"
 msgstr ""
 "reconstruction des index utilisés pour la synchronisation par le réseau"

-#: ../commands.cc:1902
+#: commands.cc:1912
 #, c-format
 msgid "setting default server to %s\n"
 msgstr ""

-#: ../commands.cc:1908
+#: commands.cc:1918
 #, c-format
 msgid "no hostname given"
 msgstr ""

-#: ../commands.cc:1910
+#: commands.cc:1920
 #, c-format
 msgid "no server given and no default server set"
 msgstr ""

-#: ../commands.cc:1914
+#: commands.cc:1924
 #, c-format
 msgid "using default server address: %s\n"
 msgstr "utilisation de l'adresse par défaut du serveur : %s\n"

-#: ../commands.cc:1926
+#: commands.cc:1936
 #, c-format
 msgid "setting default branch include pattern to '%s'\n"
 msgstr ""

-#: ../commands.cc:1932
+#: commands.cc:1942
 #, c-format
 msgid "setting default branch exclude pattern to '%s'\n"
 msgstr ""

-#: ../commands.cc:1938
+#: commands.cc:1948
 #, c-format
 msgid "no branch pattern given"
 msgstr ""

-#: ../commands.cc:1940
+#: commands.cc:1950
 #, c-format
 msgid "no branch pattern given and no default pattern set"
 msgstr ""

-#: ../commands.cc:1944
+#: commands.cc:1954
 #, c-format
 msgid "using default branch include pattern: '%s'\n"
 msgstr ""

-#: ../commands.cc:1952
+#: commands.cc:1962
 #, c-format
 msgid "excluding: %s\n"
 msgstr ""

-#: ../commands.cc:1956 ../commands.cc:1971 ../commands.cc:1985
+#: commands.cc:1966 commands.cc:1981 commands.cc:1995
 msgid "[ADDRESS[:PORTNUMBER] [PATTERN]]"
 msgstr "[ADRESSE[:PORT] [MOTIF]]"

-#: ../commands.cc:1957
+#: commands.cc:1967
 msgid "push branches matching PATTERN to netsync server at ADDRESS"
 msgstr ""
 "envoie les branches correspondant au MOTIF au serveur netsync à l'ADRESSE"

-#: ../commands.cc:1964 ../commands.cc:1993 ../commands.cc:2010
+#: commands.cc:1974 commands.cc:2003 commands.cc:2020
 #, c-format
 msgid "could not guess default signing key"
 msgstr ""

-#: ../commands.cc:1972
+#: commands.cc:1982
 msgid "pull branches matching PATTERN from netsync server at ADDRESS"
 msgstr ""

-#: ../commands.cc:1979
+#: commands.cc:1989
 #, c-format
 msgid "doing anonymous pull; use -kKEYNAME if you need authentication\n"
 msgstr ""
 "récupération anonyme; utilisez -kNOMCLEF si vous avez besoin d'une "
 "authentification\n"

-#: ../commands.cc:1986
+#: commands.cc:1996
 msgid "sync branches matching PATTERN with netsync server at ADDRESS"
 msgstr ""

-#: ../commands.cc:2000
+#: commands.cc:2010
 msgid "ADDRESS[:PORTNUMBER] PATTERN ..."
 msgstr "ADRESSE[:PORT] MOTIF ..."

-#: ../commands.cc:2001
+#: commands.cc:2011
 msgid ""
 "listen on ADDRESS and serve the specified branches to connecting clients"
 msgstr ""

-#: ../commands.cc:2014
+#: commands.cc:2024
 #, c-format
 msgid ""
 "need permission to store persistent passphrase (see hook persist_phrase_ok())"
 msgstr ""

-#: ../commands.cc:2024
+#: commands.cc:2034
 msgid "database"
 msgstr "base de données"

-#: ../commands.cc:2025
+#: commands.cc:2035
 msgid ""
 "init\n"
 "info\n"
@@ -1217,46 +1206,46 @@ msgstr ""
 "set_epoch BRANCH EPOCH\n"
 msgstr ""

-#: ../commands.cc:2039
+#: commands.cc:2049
 msgid "manipulate database state"
 msgstr "manipule l'état de la base de données"

-#: ../commands.cc:2092
+#: commands.cc:2102
 msgid ""
 "set FILE ATTR VALUE\n"
 "get FILE [ATTR]\n"
 "drop FILE"
 msgstr ""

-#: ../commands.cc:2093
+#: commands.cc:2103
 msgid "set, get or drop file attributes"
 msgstr ""

-#: ../commands.cc:2181 ../work.cc:113
+#: commands.cc:2191 work.cc:113
 #, c-format
 msgid "registering %s file in working copy\n"
 msgstr ""

-#: ../commands.cc:2210
+#: commands.cc:2220
 #, c-format
 msgid "failed to parse date string '%s': %s"
 msgstr ""

-#: ../commands.cc:2216
+#: commands.cc:2226
 msgid "commit working copy to database"
 msgstr ""

-#: ../commands.cc:2234
+#: commands.cc:2244
 #, c-format
 msgid "no changes to commit\n"
 msgstr "aucun changement à valider\n"

-#: ../commands.cc:2245
+#: commands.cc:2255
 #, c-format
 msgid "beginning commit on branch '%s'\n"
 msgstr ""

-#: ../commands.cc:2246
+#: commands.cc:2256
 #, c-format
 msgid ""
 "new manifest '%s'\n"
@@ -1265,12 +1254,12 @@ msgstr ""
 "nouveau manifeste « %s »\n"
 "nouvelle révision « %s »\n"

-#: ../commands.cc:2253
+#: commands.cc:2263
 #, c-format
 msgid "--message and --message-file are mutually exclusive"
 msgstr "--message et --message-file sont mutuellement exclusifs"

-#: ../commands.cc:2256
+#: commands.cc:2266
 #, fuzzy, c-format
 msgid ""
 "MT/log is non-empty and --message supplied\n"
@@ -1278,7 +1267,7 @@ msgstr "MT/log n'est pas vide et --messa
 "or remove --message from the command line?"
 msgstr "MT/log n'est pas vide et --message-file a été passé\n"

-#: ../commands.cc:2261
+#: commands.cc:2271
 #, c-format
 msgid ""
 "MT/log is non-empty and --message-file supplied\n"
@@ -1286,70 +1275,69 @@ msgstr ""
 "or remove --message-file from the command line?"
 msgstr ""

-#: ../commands.cc:2279
+#: commands.cc:2289
 #, fuzzy, c-format
 msgid "empty log message; commit canceled"
 msgstr "message du journal vide"

-#: ../commands.cc:2291
+#: commands.cc:2301
 #, c-format
 msgid "revision %s already in database\n"
 msgstr "la révision %s est déjà dans la base de données\n"

-#. new revision
-#: ../commands.cc:2296
+#: commands.cc:2306
 #, c-format
 msgid "inserting new revision %s\n"
 msgstr "insertion de la nouvelle révision %s\n"

-#: ../commands.cc:2305
+#: commands.cc:2315
 #, c-format
 msgid "skipping manifest %s, already in database\n"
 msgstr ""

-#: ../commands.cc:2309
+#: commands.cc:2319
 #, c-format
 msgid "inserting manifest delta %s -> %s\n"
 msgstr ""

-#: ../commands.cc:2320
+#: commands.cc:2330
 #, c-format
 msgid "inserting full manifest %s\n"
 msgstr ""

-#: ../commands.cc:2333
+#: commands.cc:2343
 #, c-format
 msgid "skipping file delta %s, already in database\n"
 msgstr ""

-#: ../commands.cc:2339
+#: commands.cc:2349
 #, c-format
 msgid "inserting delta %s -> %s\n"
 msgstr ""

-#: ../commands.cc:2349 ../commands.cc:2366
+#: commands.cc:2359 commands.cc:2376
 #, c-format
 msgid "file '%s' modified during commit, aborting"
 msgstr "le fichier « %s » a été modifié pendant le commit, interruption"

-#: ../commands.cc:2359
+#: commands.cc:2369
 #, c-format
 msgid "inserting full version %s\n"
 msgstr ""

-#: ../commands.cc:2393
+#: commands.cc:2403
 #, c-format
 msgid "committed revision %s\n"
 msgstr ""

-#: ../commands.cc:2399
+#: commands.cc:2409
 #, c-format
 msgid ""
 "note: this revision creates divergence\n"
 "note: you may (or may not) wish to run 'monotone merge'"
 msgstr ""

-#: ../commands.cc:2559
+#: commands.cc:2572
 msgid ""
 "show current diffs on stdout.\n"
 "If one revision is given, the diff between the working directory and\n"
@@ -1357,7 +1345,7 @@ msgstr ""
 "them is given.  If no format is specified, unified is used by default."
 msgstr ""

-#: ../commands.cc:2575
+#: commands.cc:2588
 #, c-format
 msgid ""
 "--diff-args requires --external\n"
@@ -1366,62 +1354,62 @@ msgstr ""
 "--diff-args requiet --external\n"
 "essayez d'ajouter --external ou de retirer --diff-args ?"

-#: ../commands.cc:2609
+#: commands.cc:2622
 #, c-format
 msgid "current revision has no ancestor"
 msgstr "la révision actuelle n'existe pas"

-#: ../commands.cc:2648
+#: commands.cc:2661
 #, c-format
 msgid "no common ancestor for %s and %s"
 msgstr "pas d'ancêtre commun pour %s et %s"

-#: ../commands.cc:2654
+#: commands.cc:2667
 #, c-format
 msgid "concatenating un-committed changeset to composite\n"
 msgstr ""

-#: ../commands.cc:2691 ../commands.cc:2708
+#: commands.cc:2704 commands.cc:2721
 msgid "LEFT RIGHT"
 msgstr "GAUCHE DROITE"

-#: ../commands.cc:2691
+#: commands.cc:2704
 #, fuzzy
 msgid "print least common ancestor"
 msgstr "l'ancêtre commun est %s\n"

-#: ../commands.cc:2704
+#: commands.cc:2717
 msgid "no common ancestor found"
 msgstr "aucun ancêtre commun n'a été trouvé"

-#: ../commands.cc:2708
+#: commands.cc:2721
 msgid "print least common ancestor / dominator"
 msgstr ""

-#: ../commands.cc:2722
+#: commands.cc:2735
 #, fuzzy
 msgid "no common ancestor/dominator found"
 msgstr "l'ancêtre commun est %s\n"

-#: ../commands.cc:2747
+#: commands.cc:2760
 #, c-format
 msgid "updating %s to %s\n"
 msgstr "mise à jour de %s en %s\n"

-#: ../commands.cc:2771
+#: commands.cc:2784
 msgid ""
 "update working copy.\n"
 "If a revision is given, base the update on that revision.  If not,\n"
 "base the update on the head of the branch (given or implicit)."
 msgstr ""

-#: ../commands.cc:2796
+#: commands.cc:2809
 #, c-format
 msgid "this working directory is a new project; cannot update"
 msgstr ""
 "ce dossier de travail est un nouveau projet, impossible de mettre à jour"

-#: ../commands.cc:2803
+#: commands.cc:2816
 #, c-format
 msgid ""
 "your request matches no descendents of the current revision\n"
@@ -1429,286 +1417,284 @@ msgstr ""
 "maybe you want --revision=<rev on other branch>"
 msgstr ""

-#: ../commands.cc:2808
+#: commands.cc:2821
 #, c-format
 msgid "multiple update candidates:\n"
 msgstr "plusieurs candidats pour la mise à jour :\n"

-#: ../commands.cc:2812
+#: commands.cc:2825
 #, c-format
 msgid "choose one with 'monotone update -r<id>'\n"
 msgstr "choisissez en un avec « monotone update -r<id> »\n"

-#: ../commands.cc:2813
+#: commands.cc:2826
 #, c-format
 msgid "multiple candidates remain after selection"
 msgstr ""

-#: ../commands.cc:2828
+#: commands.cc:2841
 #, c-format
 msgid "already up to date at %s\n"
 msgstr "déjà à jour en %s\n"

-#: ../commands.cc:2832
+#: commands.cc:2845
 #, c-format
 msgid "selected update target %s\n"
 msgstr "sélection de la cible %s pour la mise à jour\n"

-#: ../commands.cc:2844
+#: commands.cc:2857
 #, c-format
 msgid ""
 "revision %s is not a member of branch %s\n"
 "try again with explicit --branch\n"
 msgstr ""

-#. working copy has no changes
-#: ../commands.cc:2859
+#: commands.cc:2872
 #, c-format
 msgid "updating along chosen edge %s -> %s\n"
 msgstr ""

-#: ../commands.cc:2870
+#: commands.cc:2883
 #, c-format
 msgid "merging working copy with chosen edge %s -> %s\n"
 msgstr ""

-#: ../commands.cc:2919
+#: commands.cc:2932
 #, c-format
 msgid "updated to base revision %s\n"
 msgstr "mise à jour vers la révision de base %s\n"

-#: ../commands.cc:2985
+#: commands.cc:2998
 #, fuzzy, c-format
 msgid ""
 "common ancestor %s found\n"
 "trying 3-way merge\n"
 msgstr "aucun ancêtre commun n'a été trouvé"

-#: ../commands.cc:2996
+#: commands.cc:3009
 #, c-format
 msgid "no common ancestor found, synthesizing edges\n"
 msgstr ""

-#: ../commands.cc:3046
+#: commands.cc:3059
 #, fuzzy
 msgid "merge unmerged heads of branch"
 msgstr "fusionne les"

-#: ../commands.cc:3060
+#: commands.cc:3073
 #, c-format
 msgid "branch '%s' is merged\n"
 msgstr "la branche « %s » est fusionnée\n"

-#: ../commands.cc:3066
+#: commands.cc:3079
 #, c-format
 msgid "starting with revision 1 / %d\n"
 msgstr ""

-#: ../commands.cc:3070
+#: commands.cc:3083
 #, c-format
 msgid "merging with revision %d / %d\n"
 msgstr ""

-#. Somewhat redundant, but consistent with output of plain "merge" command.
-#: ../commands.cc:3071 ../commands.cc:3072 ../commands.cc:3139
-#: ../commands.cc:3223 ../commands.cc:3224
+#: commands.cc:3084 commands.cc:3085 commands.cc:3152 commands.cc:3236
+#: commands.cc:3237
 #, c-format
 msgid "[source] %s\n"
 msgstr ""

-#: ../commands.cc:3089 ../commands.cc:3176 ../commands.cc:3243
+#: commands.cc:3102 commands.cc:3189 commands.cc:3256
 #, c-format
 msgid "[merged] %s\n"
 msgstr ""

-#: ../commands.cc:3092
+#: commands.cc:3105
 #, c-format
 msgid "note: your working copies have not been updated\n"
 msgstr ""

-#: ../commands.cc:3095
+#: commands.cc:3108
 msgid "SOURCE-BRANCH DEST-BRANCH"
 msgstr ""

-#: ../commands.cc:3096
+#: commands.cc:3109
 msgid "merge from one branch to another asymmetrically"
 msgstr ""

-#: ../commands.cc:3130 ../commands.cc:3133
+#: commands.cc:3143 commands.cc:3146
 #, c-format
 msgid "branch '%s' is not merged\n"
 msgstr "la branche « %s » n'est pas fusionnée\n"

-#: ../commands.cc:3138
+#: commands.cc:3151
 #, c-format
 msgid "propagating %s -> %s\n"
 msgstr ""

-#: ../commands.cc:3140
+#: commands.cc:3153
 #, c-format
 msgid "[target] %s\n"
 msgstr ""

-#: ../commands.cc:3145
+#: commands.cc:3158
 #, c-format
 msgid "branch '%s' is up-to-date with respect to branch '%s'\n"
 msgstr ""

-#: ../commands.cc:3147
+#: commands.cc:3160
 #, c-format
 msgid "no action taken\n"
 msgstr ""

-#: ../commands.cc:3151
+#: commands.cc:3164
 #, c-format
 msgid "no merge necessary; putting %s in branch '%s'\n"
 msgstr ""

-#: ../commands.cc:3180
+#: commands.cc:3193
 msgid "refresh the inodeprint cache"
 msgstr ""

-#: ../commands.cc:3188
+#: commands.cc:3201
 msgid ""
 "LEFT-REVISION RIGHT-REVISION DEST-BRANCH\n"
 "LEFT-REVISION RIGHT-REVISION COMMON-ANCESTOR DEST-BRANCH"
 msgstr ""

-#: ../commands.cc:3190
+#: commands.cc:3203
 msgid "merge two explicitly given revisions, placing result in given branch"
 msgstr ""

-#: ../commands.cc:3205 ../commands.cc:3207
+#: commands.cc:3218 commands.cc:3220
 #, c-format
 msgid "%s is not an ancestor of %s"
 msgstr "%s n'est pas un ancêtre de %s"

-#: ../commands.cc:3216
+#: commands.cc:3229
 #, c-format
 msgid "%s and %s are the same revision, aborting"
 msgstr ""

-#: ../commands.cc:3218 ../commands.cc:3220
+#: commands.cc:3231 commands.cc:3233
 #, c-format
 msgid "%s is already an ancestor of %s"
 msgstr ""

-#: ../commands.cc:3246
+#: commands.cc:3259
 msgid "(revision|manifest|file|key) PARTIAL-ID"
 msgstr ""

-#: ../commands.cc:3247
+#: commands.cc:3260
 msgid "complete partial id"
 msgstr ""

-#: ../commands.cc:3256
+#: commands.cc:3269
 #, c-format
 msgid "non-hex digits in partial id"
 msgstr ""

-#: ../commands.cc:3304
+#: commands.cc:3317
 msgid "revert file(s), dir(s) or entire working copy"
 msgstr ""

-#: ../commands.cc:3342
+#: commands.cc:3355
 #, c-format
 msgid "reverting %s from %s to %s\n"
 msgstr ""

-#: ../commands.cc:3346
+#: commands.cc:3359
 #, c-format
 msgid "no file version %s found in database for %s"
 msgstr ""

-#: ../commands.cc:3363
+#: commands.cc:3376
 msgid "RCSFILE..."
 msgstr ""

-#: ../commands.cc:3364
+#: commands.cc:3377
 msgid ""
 "parse versions in RCS files\n"
 "this command doesn't reconstruct or import revisions.you probably want "
 "cvs_import"
 msgstr ""

-#: ../commands.cc:3380
+#: commands.cc:3393
 msgid "rcs"
 msgstr ""

-#: ../commands.cc:3380
+#: commands.cc:3393
 msgid "CVSROOT"
 msgstr ""

-#: ../commands.cc:3380
+#: commands.cc:3393
 msgid "import all versions in CVS repository"
 msgstr ""

-#: ../commands.cc:3443
+#: commands.cc:3456
 msgid "PATH"
 msgstr ""

-#: ../commands.cc:3444
+#: commands.cc:3457
 msgid "print annotated copy of the file from REVISION"
 msgstr ""

-#: ../commands.cc:3461
+#: commands.cc:3474
 #, c-format
 msgid "no revision for file '%s' in database"
 msgstr ""

-#: ../commands.cc:3464
+#: commands.cc:3477
 #, c-format
 msgid "annotate file file_path '%s'\n"
 msgstr ""

-#: ../commands.cc:3473
+#: commands.cc:3486
 #, c-format
 msgid "no such file '%s' in revision '%s'\n"
 msgstr "aucun fichier « %s » dans la révision « %s »\n"

-#: ../commands.cc:3475
+#: commands.cc:3488
 #, c-format
 msgid "annotate for file_id %s\n"
 msgstr ""

-#: ../commands.cc:3480
+#: commands.cc:3493
 msgid "[FILE]"
 msgstr ""

-#: ../commands.cc:3481
+#: commands.cc:3494
 msgid ""
 "print history in reverse order (filtering by 'FILE'). If one or more\n"
 "revisions are given, use them as a starting point."
 msgstr ""

-#: ../commands.cc:3541
+#: commands.cc:3554
 #, c-format
 msgid "revision %s does not exist in db, skipping\n"
 msgstr ""

-#: ../commands.cc:3574
+#: commands.cc:3587
 #, c-format
 msgid "revision '%s' in '%s' maps to '%s' in %s\n"
 msgstr ""

-#: ../commands.cc:3648
+#: commands.cc:3661
 msgid "DIRECTORY"
 msgstr ""

-#: ../commands.cc:3648
+#: commands.cc:3661
 msgid "setup a new working copy directory"
 msgstr ""

-#: ../commands.cc:3654
+#: commands.cc:3667
 #, c-format
 msgid "need --branch argument for setup"
 msgstr ""

-#: ../commands.cc:3663
+#: commands.cc:3676
 msgid "automation"
 msgstr "automatisation"

-#: ../commands.cc:3664
+#: commands.cc:3677
 msgid ""
 "interface_version\n"
 "heads [BRANCH]\n"
@@ -1731,84 +1717,399 @@ msgstr ""
 "get_revision [ID]\n"
 msgstr ""

-#: ../commands.cc:3683
+#: commands.cc:3696
 msgid "automation interface"
 msgstr ""

-#: ../commands.cc:3697 ../commands.cc:3713
+#: commands.cc:3710 commands.cc:3726
 msgid "vars"
 msgstr "variables"

-#: ../commands.cc:3697
+#: commands.cc:3710
 msgid "DOMAIN NAME VALUE"
 msgstr ""

-#: ../commands.cc:3698
+#: commands.cc:3711
 msgid "set the database variable NAME to VALUE, in domain DOMAIN"
 msgstr ""

-#: ../commands.cc:3713
+#: commands.cc:3726
 msgid "DOMAIN NAME"
 msgstr ""

-#: ../commands.cc:3714
+#: commands.cc:3727
 msgid "remove the database variable NAME in domain DOMAIN"
 msgstr ""

-#: ../commands.cc:3725
+#: commands.cc:3738
 #, c-format
 msgid "no var with name %s in domain %s"
 msgstr ""

-#: ../database.cc:80
+#: database_check.cc:109
+#, fuzzy, c-format
+msgid "checking %d files\n"
+msgstr "la vérification de « %s » a échouée"
+
+#: database_check.cc:111
+msgid "files"
+msgstr ""
+
+#: database_check.cc:116
+#, fuzzy, c-format
+msgid "checking file %s\n"
+msgstr "importation du fichier « %s »\n"
+
+#: database_check.cc:134
 #, c-format
+msgid "checking %d manifests\n"
+msgstr ""
+
+#: database_check.cc:136 rcs_import.cc:1259
+#, fuzzy
+msgid "manifests"
+msgstr "aucun manifeste « %s »"
+
+#: database_check.cc:141
+#, fuzzy, c-format
+msgid "checking manifest %s\n"
+msgstr "aucun manifeste « %s »"
+
+#: database_check.cc:153
+#, fuzzy, c-format
+msgid "error parsing manifest %s: %s"
+msgstr "erreur lors de la lecture du fichier RCS %s : %s\n"
+
+#: database_check.cc:190
+#, fuzzy, c-format
+msgid "checking %d revisions\n"
+msgstr "erreur réseau : %s"
+
+#: database_check.cc:192 database_check.cc:380 netsync.cc:3718
+#: rcs_import.cc:1258
+msgid "revisions"
+msgstr "révisions"
+
+#: database_check.cc:197
+#, fuzzy, c-format
+msgid "checking revision %s\n"
+msgstr "nouvelle révisions %s\n"
+
+#: database_check.cc:209
+#, fuzzy, c-format
+msgid "error parsing revision %s: %s"
+msgstr "erreur lors de la lecture du fichier RCS %s : %s\n"
+
+#: database_check.cc:277
+#, c-format
+msgid "checked %d revisions after starting with %d\n"
+msgstr ""
+
+#: database_check.cc:289
+#, c-format
+msgid "checking %d ancestry edges\n"
+msgstr ""
+
+#: database_check.cc:291
+msgid "ancestry"
+msgstr ""
+
+#: database_check.cc:322
+#, c-format
+msgid "checking %d public keys\n"
+msgstr ""
+
+#: database_check.cc:324 netsync.cc:3722
+msgid "keys"
+msgstr "clefs"
+
+#: database_check.cc:348
+#, fuzzy, c-format
+msgid "checking %d revision certs\n"
+msgstr "insertion de la nouvelle révision %s\n"
+
+#: database_check.cc:350 netsync.cc:3720
+msgid "certs"
+msgstr "certs"
+
+#: database_check.cc:378
+#, c-format
+msgid "checking local history of %d revisions\n"
+msgstr ""
+
+#: database_check.cc:413
+#, c-format
+msgid "file %s missing (%d manifest references)\n"
+msgstr ""
+
+#: database_check.cc:420
+#, c-format
+msgid "file %s unreferenced\n"
+msgstr ""
+
+#: database_check.cc:442
+#, c-format
+msgid "manifest %s missing (%d revision references)\n"
+msgstr ""
+
+#: database_check.cc:449
+#, c-format
+msgid "manifest %s unreferenced\n"
+msgstr ""
+
+#: database_check.cc:455
+#, c-format
+msgid "manifest %s incomplete (%d missing files)\n"
+msgstr ""
+
+#: database_check.cc:462
+#, c-format
+msgid "manifest %s is not parseable (perhaps with unnormalized paths?)\n"
+msgstr ""
+
+#: database_check.cc:469
+#, c-format
+msgid "manifest %s is not in normalized form\n"
+msgstr ""
+
+#: database_check.cc:493
+#, c-format
+msgid "revision %s missing (%d revision references; %d cert references)\n"
+msgstr ""
+
+#: database_check.cc:500
+#, c-format
+msgid "revision %s incomplete (%d missing manifests)\n"
+msgstr ""
+
+#: database_check.cc:507
+#, c-format
+msgid "revision %s incomplete (%d missing revisions)\n"
+msgstr ""
+
+#: database_check.cc:514
+#, c-format
+msgid "revision %s incomplete (%d incomplete manifests)\n"
+msgstr ""
+
+#: database_check.cc:521
+#, c-format
 msgid ""
+"revision %s mismatched parents (%d ancestry parents; %d revision refs)\n"
+msgstr ""
+
+#: database_check.cc:530
+#, c-format
+msgid "revision %s mismatched children (%d ancestry children; %d parents)\n"
+msgstr ""
+
+#: database_check.cc:542
+#, fuzzy, c-format
+msgid "revision %s has bad history (%s)\n"
+msgstr "la révision %s est déjà dans la base de données\n"
+
+#: database_check.cc:549
+#, c-format
+msgid "revision %s is not parseable (perhaps with unnormalized paths?)\n"
+msgstr ""
+
+#: database_check.cc:556
+#, fuzzy, c-format
+msgid "revision %s is not in normalized form\n"
+msgstr "la révision %s n'est pas membre de la branche %s\n"
+
+#: database_check.cc:573
+#, fuzzy, c-format
+msgid "key %s signed %d certs\n"
+msgstr "clef et certificat"
+
+#: database_check.cc:580
+#, c-format
+msgid "key %s missing (signed %d certs)\n"
+msgstr ""
+
+#: database_check.cc:613
+#, c-format
+msgid "revision %s unchecked signature in %s cert from missing key %s\n"
+msgstr ""
+
+#: database_check.cc:621
+#, c-format
+msgid "revision %s bad signature in %s cert from key %s\n"
+msgstr ""
+
+#: database_check.cc:636
+#, fuzzy, c-format
+msgid "revision %s missing %s cert\n"
+msgstr "la révision %s est déjà dans la base de données\n"
+
+#: database_check.cc:645
+#, c-format
+msgid "revision %s mismatched certs (%d authors %d dates %d changelogs)\n"
+msgstr ""
+
+#: database_check.cc:717
+#, fuzzy, c-format
+msgid "%d missing files\n"
+msgstr "importation du fichier « %s »\n"
+
+#: database_check.cc:719
+#, c-format
+msgid "%d unreferenced files\n"
+msgstr ""
+
+#: database_check.cc:722
+#, fuzzy, c-format
+msgid "%d missing manifests\n"
+msgstr "noeud %d = révision %s = manifeste %s\n"
+
+#: database_check.cc:724
+#, c-format
+msgid "%d unreferenced manifests\n"
+msgstr ""
+
+#: database_check.cc:726
+#, c-format
+msgid "%d incomplete manifests\n"
+msgstr ""
+
+#: database_check.cc:728
+#, c-format
+msgid "%d manifests not parseable (perhaps with invalid paths)\n"
+msgstr ""
+
+#: database_check.cc:731
+#, c-format
+msgid "%d manifests not in normalized form\n"
+msgstr ""
+
+#: database_check.cc:734
+#, fuzzy, c-format
+msgid "%d missing revisions\n"
+msgstr "insertion de la nouvelle révision %s\n"
+
+#: database_check.cc:736
+#, fuzzy, c-format
+msgid "%d incomplete revisions\n"
+msgstr "nouvelle révisions %s\n"
+
+#: database_check.cc:738
+#, c-format
+msgid "%d mismatched parents\n"
+msgstr ""
+
+#: database_check.cc:740
+#, c-format
+msgid "%d mismatched children\n"
+msgstr ""
+
+#: database_check.cc:742
+#, c-format
+msgid "%d revisions with bad history\n"
+msgstr ""
+
+#: database_check.cc:744
+#, c-format
+msgid "%d revisions not parseable (perhaps with invalid paths)\n"
+msgstr ""
+
+#: database_check.cc:747
+#, c-format
+msgid "%d revisions not in normalized form\n"
+msgstr ""
+
+#: database_check.cc:750
+#, c-format
+msgid "%d missing keys\n"
+msgstr ""
+
+#: database_check.cc:753
+#, c-format
+msgid "%d missing certs\n"
+msgstr ""
+
+#: database_check.cc:755
+#, c-format
+msgid "%d mismatched certs\n"
+msgstr ""
+
+#: database_check.cc:757
+#, c-format
+msgid "%d unchecked signatures due to missing keys\n"
+msgstr ""
+
+#: database_check.cc:759
+#, c-format
+msgid "%d bad signatures\n"
+msgstr ""
+
+#: database_check.cc:784
+#, c-format
+msgid ""
+"check complete: %d files; %d manifests; %d revisions; %d keys; %d certs\n"
+msgstr ""
+
+#: database_check.cc:790
+#, c-format
+msgid "total problems detected: %d (%d serious)\n"
+msgstr ""
+
+#: database_check.cc:792
+#, c-format
+msgid "serious problems detected"
+msgstr ""
+
+#: database_check.cc:794
+#, c-format
+msgid "minor problems detected\n"
+msgstr ""
+
+#: database_check.cc:796
+#, fuzzy, c-format
+msgid "database is good\n"
+msgstr "base de données"
+
+#: database.cc:80
+#, c-format
+msgid ""
 "database schemas do not match: wanted %s, got %s. try migrating database"
 msgstr ""

-#: ../database.cc:135 ../database.cc:197
+#: database.cc:135 database.cc:197
 #, c-format
 msgid "database %s does not exist"
 msgstr "la base de données %s n'existe pas"

-#: ../database.cc:136
+#: database.cc:136 database.cc:198
 #, c-format
 msgid "%s is a directory, not a database"
 msgstr "%s est un dossier, pas une base de données"

-#: ../database.cc:143
+#: database.cc:143
 #, c-format
 msgid "unable to probe database version in file %s"
 msgstr ""

-#: ../database.cc:150
+#: database.cc:150
 #, c-format
 msgid "database %s is not an sqlite version 3 file, try dump and reload"
 msgstr ""

-#. first log the code so we can find _out_ what the confusing code
-#. was... note that code does not uniquely identify the errmsg, unlike
-#. errno's.
-#: ../database.cc:172 ../database.cc:183
+#: database.cc:172 database.cc:183
 #, c-format
 msgid "sqlite error: %d: %s"
 msgstr "erreur sqlite : %d : %s"

-#: ../database.cc:177
+#: database.cc:177
 msgid "make sure database and containing directory are writeable"
 msgstr ""

-#: ../database.cc:198
+#: database.cc:224
 #, c-format
-msgid "database %s is a directory"
-msgstr ""
-
-#: ../database.cc:224
-#, c-format
 msgid "could not initialize database: %s: already exists"
 msgstr ""

-#: ../database.cc:229
+#: database.cc:229
 #, c-format
 msgid ""
 "existing (possibly stale) journal file '%s' has same stem as new database '%"
@@ -1816,12 +2117,12 @@ msgstr ""
 "cancelling database creation"
 msgstr ""

-#: ../database.cc:348
+#: database.cc:348
 #, c-format
 msgid "cannot create %s; it already exists"
 msgstr "impossible de créer %s car ceci existe déjà"

-#: ../database.cc:412
+#: database.cc:412
 #, c-format
 msgid ""
 "schema version    : %s\n"
@@ -1862,258 +2163,227 @@ msgstr ""
 "  certificats          : %u\n"
 "  total                : %u\n"

-#: ../database.cc:465
+#: database.cc:465
 #, c-format
 msgid "database schema version: %s"
 msgstr "version du schéma de la base de données : %s"

-#: ../database.cc:545
+#: database.cc:483
+#, fuzzy
+msgid "mcerts"
+msgstr "certs"
+
+#: database.cc:484
+#, fuzzy
+msgid "pubkeys"
+msgstr "clefs"
+
+#: database.cc:485
+#, fuzzy
+msgid "privkeys"
+msgstr "clefs"
+
+#: database.cc:545
 #, c-format
 msgid "statement cache statistics\n"
 msgstr "statistiques relatives au cache des expressions\n"

-#: ../database.cc:546
+#: database.cc:546
 #, c-format
 msgid "prepared %d statements\n"
 msgstr "%d expressions préparées\n"

-#: ../database.cc:551
+#: database.cc:551
 #, c-format
 msgid "%d executions of %s\n"
 msgstr "%d exécutions de %s\n"

-#: ../database.cc:608
+#: database.cc:608
 #, c-format
 msgid "prepared statement %s\n"
 msgstr ""

-#: ../database.cc:612
+#: database.cc:612
 #, c-format
 msgid "multiple statements in query: %s\n"
 msgstr ""

-#: ../database.cc:618
+#: database.cc:618
 #, c-format
 msgid "wanted %d columns got %d in query: %s\n"
 msgstr ""

-#: ../database.cc:624
+#: database.cc:624
 #, c-format
 msgid "binding %d parameters for %s\n"
 msgstr ""

-#: ../database.cc:638
+#: database.cc:638
 #, c-format
 msgid "binding %d with value '%s'\n"
 msgstr ""

-#: ../database.cc:654
+#: database.cc:654
 #, c-format
 msgid "null result in query: %s\n"
 msgstr ""

-#: ../database.cc:672
+#: database.cc:672
 #, c-format
 msgid "wanted %d rows got %s in query: %s\n"
 msgstr ""

-#: ../database.cc:682
+#: database.cc:682
 #, c-format
 msgid "cannot change filename to %s while db is open"
 msgstr ""

-#: ../database.cc:880
+#: database.cc:882
 #, c-format
 msgid "version cache expiring %s\n"
 msgstr ""

-#. ++cache_hits;
-#: ../database.cc:902
+#: database.cc:904
 #, c-format
 msgid "version cache hit on %s\n"
 msgstr ""

-#. tricky path
-#. we start from the file we want to reconstruct and work *forwards*
-#. through the database, until we get to a full data object. we then
-#. trace back through the list of edges we followed to get to the data
-#. object, applying reverse deltas.
-#.
-#. the effect of this algorithm is breadth-first search, backwards
-#. through the storage graph, to discover a forwards shortest path, and
-#. then following that shortest path with delta application.
-#.
-#. we used to do this with the boost graph library, but it invovled
-#. loading too much of the storage graph into memory at any moment. this
-#. imperative version only loads the descendents of the reconstruction
-#. node, so it much cheaper in terms of memory.
-#.
-#. we also maintain a cycle-detecting set, just to be safe
-#: ../database.cc:947
+#: database.cc:949
 #, c-format
 msgid "reconstructing %s in %s\n"
 msgstr ""

-#: ../database.cc:1001
+#: database.cc:1003
 #, c-format
 msgid "inserting edge: %s <- %s\n"
 msgstr ""

-#: ../database.cc:1005
+#: database.cc:1007
 #, c-format
 msgid "skipping merge edge %s <- %s\n"
 msgstr ""

-#: ../database.cc:1051
+#: database.cc:1053
 #, c-format
 msgid "following delta %s -> %s\n"
 msgstr ""

-#. perform the actual SQL transactions to kill rev rid here
-#: ../database.cc:1415
+#: database.cc:1417
 #, c-format
 msgid "Killing revision %s locally\n"
 msgstr ""

-#: ../database.cc:1427
+#: database.cc:1429
 #, c-format
 msgid "Deleting all references to branch %s\n"
 msgstr ""

-#: ../database.cc:1440
+#: database.cc:1442
 #, c-format
 msgid "Deleting all references to tag %s\n"
 msgstr ""

-#: ../database.cc:1590 ../database.cc:1602
+#: database.cc:1592 database.cc:1604
 #, c-format
 msgid "another key with name '%s' already exists"
 msgstr ""

-#: ../database.cc:2451
+#: database.cc:2453
 #, c-format
 msgid "no database specified"
 msgstr "aucune base de données n'a été spécifiée"

-#: ../database.cc:2462
+#: database.cc:2464
 #, c-format
 msgid "could not open database '%s': %s"
 msgstr "impossible d'ouvrir la base de données « %s » : %s"

-#. Coming into loop we have:
-#. i
-#. z   --pres-->  z   0
-#. o   --pres-->  o   1
-#. a   --chng-->  a   2   The important thing here is that 'a' in
-#. t       the LHS matches with ...
-#. u
-#. v
-#. a       ... the a on the RHS here. Hence we can
-#. q  --pres-->   q   3   'shift' the entire 'changed' block
-#. e  --chng-->   d   4   upwards, leaving a 'preserved' line
-#. g  --pres-->   g   5   'a'->'a'
-#.
-#. Want to end up with:
-#. i
-#. z   --pres-->  z   0
-#. o   --chng-->  o   1
-#. a
-#. t
-#. u
-#. v
-#. a  --pres-->   a   2
-#. q  --pres-->   q   3
-#. e  --chng-->   d   4
-#. g  --pres-->   g   5
-#.
-#. Now all the 'changed' extents are normalised to the
-#. earliest possible position.
-#: ../diff_patch.cc:209
+#: diff_patch.cc:209
 #, c-format
 msgid "exchanging preserved extent [%d+%d] with changed extent [%d+%d]\n"
 msgstr ""

-#: ../diff_patch.cc:300
+#: diff_patch.cc:300
 #, c-format
 msgid "conflicting edits: %s %d[%d] '%s' vs. %s %d[%d] '%s'\n"
 msgstr ""

-#: ../diff_patch.cc:328
+#: diff_patch.cc:328
 #, c-format
 msgid "conflicting edits: [%s %d %d] vs. [%s %d %d]\n"
 msgstr ""

-#: ../diff_patch.cc:376
+#: diff_patch.cc:376
 #, c-format
 msgid "calculating left edit script on %d -> %d lines\n"
 msgstr ""

-#: ../diff_patch.cc:384
+#: diff_patch.cc:384
 #, c-format
 msgid "calculating right edit script on %d -> %d lines\n"
 msgstr ""

-#: ../diff_patch.cc:392
+#: diff_patch.cc:392
 #, c-format
 msgid "calculating left extents on %d edits\n"
 msgstr ""

-#: ../diff_patch.cc:397
+#: diff_patch.cc:397
 #, c-format
 msgid "calculating right extents on %d edits\n"
 msgstr ""

-#: ../diff_patch.cc:402
+#: diff_patch.cc:402
 #, c-format
 msgid "normalizing %d right extents\n"
 msgstr ""

-#: ../diff_patch.cc:405
+#: diff_patch.cc:405
 #, c-format
 msgid "normalizing %d left extents\n"
 msgstr ""

-#: ../diff_patch.cc:411
+#: diff_patch.cc:411
 #, c-format
 msgid "conflicting prefixes\n"
 msgstr ""

-#: ../diff_patch.cc:417
+#: diff_patch.cc:417
 #, c-format
 msgid "conflicting suffixes\n"
 msgstr ""

-#: ../diff_patch.cc:421
+#: diff_patch.cc:421
 #, c-format
 msgid "merging %d left, %d right extents\n"
 msgstr ""

-#: ../diff_patch.cc:452
+#: diff_patch.cc:452
 #, c-format
 msgid "conflict detected. no merge.\n"
 msgstr ""

-#: ../diff_patch.cc:472
+#: diff_patch.cc:472
 #, c-format
 msgid "recording successful merge of %s <-> %s into %s\n"
 msgstr ""

-#: ../diff_patch.cc:528
+#: diff_patch.cc:528
 #, c-format
 msgid "trying to merge %s <-> %s (ancestor: %s)\n"
 msgstr ""

-#: ../diff_patch.cc:533 ../diff_patch.cc:638
+#: diff_patch.cc:533 diff_patch.cc:638
 #, c-format
 msgid "files are identical\n"
 msgstr "les fichiers sont identiques\n"

-#: ../diff_patch.cc:575
+#: diff_patch.cc:575
 #, c-format
 msgid "internal 3-way merged ok\n"
 msgstr ""

-#: ../diff_patch.cc:589
+#: diff_patch.cc:589
 #, c-format
 msgid ""
 "help required for 3-way merge\n"
@@ -2128,17 +2398,17 @@ msgstr ""
 "[  droite] %s\n"
 "[fusionné] %s\n"

-#: ../diff_patch.cc:606
+#: diff_patch.cc:606
 #, c-format
 msgid "lua merge3 hook merged ok\n"
 msgstr ""

-#: ../diff_patch.cc:633
+#: diff_patch.cc:633
 #, c-format
 msgid "trying to merge %s <-> %s\n"
 msgstr ""

-#: ../diff_patch.cc:649
+#: diff_patch.cc:649
 #, c-format
 msgid ""
 "help required for 2-way merge\n"
@@ -2151,37 +2421,37 @@ msgstr ""
 "[  droite] %s\n"
 "[fusionné] %s\n"

-#: ../diff_patch.cc:663
+#: diff_patch.cc:663
 #, c-format
 msgid "lua merge2 hook merged ok\n"
 msgstr ""

-#: ../diff_patch.cc:694
+#: diff_patch.cc:694
 #, c-format
 msgid "temporarily recording merge of %s <-> %s into %s\n"
 msgstr ""

-#: ../diff_patch.cc:711
+#: diff_patch.cc:711
 #, c-format
 msgid "file '%s' does not exist in working copy"
 msgstr "le fichier « %s » n'existe pas dans la copie de travail"

-#: ../diff_patch.cc:712
+#: diff_patch.cc:712
 #, c-format
 msgid "'%s' in working copy is a directory, not a file"
 msgstr ""

-#: ../diff_patch.cc:716
+#: diff_patch.cc:716
 #, c-format
 msgid "file %s in working copy has id %s, wanted %s"
 msgstr ""

-#: ../file_io.cc:116
+#: file_io.cc:116
 #, c-format
 msgid "expected file '%s', but it is a directory."
 msgstr ""

-#: ../file_io.cc:186 ../file_io.cc:193
+#: file_io.cc:186 file_io.cc:193
 #, c-format
 msgid ""
 "could not create directory '%s'\n"
@@ -2190,7 +2460,7 @@ msgstr ""
 "impossible de créer le dossier « %s »\n"
 "car c'est un fichier"

-#: ../file_io.cc:188
+#: file_io.cc:188
 #, c-format
 msgid ""
 "could not create directory '%s'\n"
@@ -2199,157 +2469,157 @@ msgstr ""
 "impossible de créer le dossier « %s »\n"
 "%s"

-#: ../file_io.cc:192
+#: file_io.cc:192
 #, c-format
 msgid "could not create directory '%s'"
 msgstr "impossible de créer le dossier « %s »"

-#: ../file_io.cc:205
+#: file_io.cc:205
 #, fuzzy, c-format
 msgid "failed to create directory '%s' for '%s'"
 msgstr "impossible de créer le dossier : %s : %s\n"

-#: ../file_io.cc:213
+#: file_io.cc:213
 #, c-format
 msgid "file to delete '%s' does not exist"
 msgstr "le fichier à supprimer « %s » n'existe pas"

-#: ../file_io.cc:214
+#: file_io.cc:214
 #, fuzzy, c-format
 msgid "file to delete, '%s', is not a file but a directory"
 msgstr "le fichier à supprimer « %s » n'existe pas"

-#: ../file_io.cc:222
+#: file_io.cc:222
 #, fuzzy, c-format
 msgid "directory to delete, '%s', does not exist"
 msgstr "le dossier à supprimer « %s » n'existe pas"

-#: ../file_io.cc:223
+#: file_io.cc:223
 #, fuzzy, c-format
 msgid "directory to delete, '%s', is a file"
 msgstr "le dossier à supprimer « %s » n'existe pas"

-#: ../file_io.cc:232
+#: file_io.cc:232
 #, c-format
 msgid "rename source file '%s' does not exist"
 msgstr ""

-#: ../file_io.cc:233
+#: file_io.cc:233
 #, c-format
 msgid "rename source file '%s' is a directory -- bug in monotone?"
 msgstr ""

-#: ../file_io.cc:236 ../file_io.cc:249
+#: file_io.cc:236 file_io.cc:249
 #, fuzzy, c-format
 msgid "rename target '%s' already exists"
 msgstr "le fichier pid « %s » existe déjà"

-#: ../file_io.cc:245
+#: file_io.cc:245
 #, c-format
 msgid "rename source dir '%s' does not exist"
 msgstr ""

-#: ../file_io.cc:246
+#: file_io.cc:246
 #, c-format
 msgid "rename source dir '%s' is a file -- bug in monotone?"
 msgstr ""

-#: ../file_io.cc:260
+#: file_io.cc:260
 #, fuzzy, c-format
 msgid "rename source path '%s' does not exist"
 msgstr "le chemin %s n'existe pas"

-#: ../file_io.cc:275
+#: file_io.cc:275
 #, c-format
 msgid "file %s does not exist"
 msgstr "le fichier %s n'existe pas"

-#: ../file_io.cc:276
+#: file_io.cc:276
 #, c-format
 msgid "file %s cannot be read as data; it is a directory"
 msgstr ""

-#: ../file_io.cc:280
+#: file_io.cc:280
 #, c-format
 msgid "cannot open file %s for reading"
 msgstr ""

-#: ../file_io.cc:324
+#: file_io.cc:324
 #, c-format
 msgid "Cannot read standard input multiple times"
 msgstr "Impossible de lire l'entrée standard plusieurs fois"

-#: ../file_io.cc:354
+#: file_io.cc:354
 #, c-format
 msgid "file '%s' cannot be overwritten as data; it is a directory"
 msgstr ""

-#: ../file_io.cc:368
+#: file_io.cc:368
 #, c-format
 msgid "cannot open file %s for writing"
 msgstr ""

-#: ../file_io.cc:375
+#: file_io.cc:375
 #, c-format
 msgid "removing %s failed"
 msgstr "la suppression de %s a échouée"

-#: ../file_io.cc:437
+#: file_io.cc:437
 #, c-format
 msgid "ignoring book keeping entry %s\n"
 msgstr ""

-#: ../file_io.cc:457
+#: file_io.cc:457
 #, c-format
 msgid "caught runtime error %s constructing file path for %s\n"
 msgstr ""

-#: ../file_io.cc:481
+#: file_io.cc:481
 #, c-format
 msgid "no such file or directory: '%s'"
 msgstr "Aucun fichier ou répertoire de ce type : « %s »"

-#: ../keys.cc:42
+#: keys.cc:42
 #, c-format
 msgid "running arc4 process on %d bytes of data\n"
 msgstr ""

-#: ../keys.cc:80
+#: keys.cc:80
 #, c-format
 msgid "got empty passphrase from get_passphrase() hook"
 msgstr "la phrase de passe obtenue depuis get_passphrase() est vide"

-#: ../keys.cc:96
+#: keys.cc:96
 #, c-format
 msgid "empty passphrase not allowed"
 msgstr "la phrase de passe ne doit pas être vide"

-#: ../keys.cc:103
+#: keys.cc:103
 #, c-format
 msgid "confirm passphrase for key ID [%s]: "
 msgstr ""

-#: ../keys.cc:108
+#: keys.cc:108
 #, c-format
 msgid "empty passphrases not allowed, try again\n"
 msgstr ""

-#: ../keys.cc:109 ../keys.cc:116
+#: keys.cc:109 keys.cc:116
 #, c-format
 msgid "too many failed passphrases\n"
 msgstr ""

-#: ../keys.cc:115
+#: keys.cc:115
 #, c-format
 msgid "passphrases do not match, try again\n"
 msgstr ""

-#: ../keys.cc:122
+#: keys.cc:122
 #, c-format
 msgid "no passphrase given"
 msgstr ""

-#: ../keys.cc:184
+#: keys.cc:184
 #, c-format
 msgid ""
 "generated %d-byte public key\n"
@@ -2358,163 +2628,152 @@ msgstr ""
 "clef publique de %d octets générée\n"
 "clef privée (chiffrée) de %d octets générée\n"

-#: ../keys.cc:207 ../keys.cc:263
+#: keys.cc:207 keys.cc:263
 #, c-format
 msgid "building signer from %d-byte decrypted private key\n"
 msgstr ""

-#: ../keys.cc:256
+#: keys.cc:256
 #, c-format
 msgid "base64-decoding %d-byte private key\n"
 msgstr ""

-#: ../keys.cc:300
+#: keys.cc:300
 #, c-format
 msgid "produced %d-byte signature\n"
 msgstr ""

-#: ../keys.cc:328
+#: keys.cc:328
 #, c-format
 msgid "building verifier for %d-byte pub key\n"
 msgstr ""

-#. check the text+sig against the key
-#: ../keys.cc:350
+#: keys.cc:350
 #, c-format
 msgid "checking %d-byte (%d decoded) signature\n"
 msgstr ""

-#: ../keys.cc:521
+#: keys.cc:521
 #, c-format
 msgid "passphrase for '%s' is incorrect"
 msgstr ""

-#: ../lua.cc:109
+#: lua.cc:109
 #, c-format
 msgid "lua failure: %s; stack = %s\n"
 msgstr ""

-#: ../lua.cc:115
+#: lua.cc:115
 #, c-format
 msgid "Lua::ok(): failed = %i"
 msgstr ""

-#: ../lua.cc:124
+#: lua.cc:124
 #, c-format
 msgid "lua stack: %s"
 msgstr ""

-#: ../lua.cc:204
+#: lua.cc:204
 #, c-format
 msgid "lua: extracted string = %s"
 msgstr ""

-#: ../lua.cc:217
+#: lua.cc:217
 #, c-format
 msgid "lua: extracted int = %i"
 msgstr ""

-#: ../lua.cc:230
+#: lua.cc:230
 #, c-format
 msgid "lua: extracted double = %i"
 msgstr ""

-#: ../lua.cc:244
+#: lua.cc:244
 #, c-format
 msgid "lua: extracted bool = %i"
 msgstr ""

-#: ../lua.cc:364
+#: lua.cc:364
 #, c-format
 msgid "loading lua hook %s"
 msgstr ""

-#: ../lua.cc:527
+#: lua.cc:527 lua.cc:556 lua.cc:571
 #, c-format
-msgid "guess_binary called with an invalid parameter"
+msgid "%s called with an invalid parameter"
 msgstr ""

-#: ../lua.cc:557
+#: lua.cc:574
 #, c-format
-msgid "Include called with an invalid parameter"
-msgstr ""
-
-#: ../lua.cc:572
-#, c-format
-msgid "IncludeDir called with an invalid parameter"
-msgstr ""
-
-#: ../lua.cc:575
-#, c-format
 msgid "Directory '%s' does not exists"
 msgstr "le dossier « %s » n'existe pas"

-#: ../lua.cc:576
+#: lua.cc:575 rcs_import.cc:1249
 #, c-format
 msgid "'%s' is not a directory"
 msgstr "« %s » n'est pas un dossier"

-#: ../lua.cc:595 ../lua.cc:744
+#: lua.cc:594 lua.cc:752
 #, c-format
 msgid "lua error while loading rcfile '%s'"
 msgstr ""

-#: ../lua.cc:741 ../lua.cc:754
+#: lua.cc:749 lua.cc:762
 #, c-format
 msgid "opening rcfile '%s' ...\n"
 msgstr "ouverture du fichier rc « %s » ...\n"

-#: ../lua.cc:745 ../lua.cc:757
+#: lua.cc:753 lua.cc:765
 #, c-format
 msgid "'%s' is ok\n"
 msgstr ""

-#: ../lua.cc:756
+#: lua.cc:764
 #, c-format
 msgid "lua error while loading '%s'"
 msgstr ""

-#: ../lua.cc:761
+#: lua.cc:769
 #, c-format
 msgid "rcfile '%s' does not exist"
 msgstr "le fichier rc « %s » n'existe pas"

-#: ../lua.cc:762
+#: lua.cc:770
 #, c-format
 msgid "skipping nonexistent rcfile '%s'\n"
 msgstr ""

-#: ../lua.cc:1203
+#: lua.cc:1211
 #, c-format
 msgid "calling attr_init_function for %s"
 msgstr ""

-#: ../lua.cc:1207
+#: lua.cc:1215
 #, c-format
 msgid "  calling an attr_init_function for %s"
 msgstr ""

-#: ../lua.cc:1220
+#: lua.cc:1228
 #, c-format
 msgid "  added attr %s = %s"
 msgstr ""

-#: ../lua.cc:1224
+#: lua.cc:1232
 #, c-format
 msgid "  no attr added"
 msgstr ""

-#: ../manifest.cc:55
+#: manifest.cc:55
 #, c-format
 msgid "scanning file %s\n"
 msgstr ""

-#: ../manifest.cc:188
+#: manifest.cc:188
 #, c-format
 msgid "missing %s"
 msgstr ""

-#: ../manifest.cc:201
+#: manifest.cc:201
 #, c-format
 msgid ""
 "%d missing files\n"
@@ -2527,209 +2786,213 @@ msgstr ""
 "lancer soit « monotone drop FICHIER » pour le supprimer définitivement,\n"
 "soit « monotone revert FICHIER » pour le restaurer\n"

-#: ../merkle_tree.cc:281
+#: merkle_tree.cc:281
 #, c-format
 msgid "node level is %d, exceeds maximum %d"
 msgstr ""

-#: ../merkle_tree.cc:317
+#: merkle_tree.cc:317
 #, c-format
 msgid "mismatched node hash value %s, expected %s"
 msgstr ""

-#: ../monotone.cc:51
+#: monotone.cc:51
 msgid "select branch cert for operation"
 msgstr ""

-#: ../monotone.cc:52
+#: monotone.cc:52
 msgid "select revision id for operation"
 msgstr ""

-#: ../monotone.cc:53
+#: monotone.cc:53
 #, fuzzy
 msgid "set commit changelog message"
 msgstr "message du journal vide"

-#: ../monotone.cc:54
+#: monotone.cc:54
 msgid "set filename containing commit changelog message"
 msgstr ""

-#: ../monotone.cc:55
+#: monotone.cc:55
 msgid "override date/time for commit"
 msgstr ""

-#: ../monotone.cc:56
+#: monotone.cc:56
 msgid "override author for commit"
 msgstr ""

-#: ../monotone.cc:57
+#: monotone.cc:57
 msgid "limit the number of levels of directories to descend"
 msgstr ""

-#: ../monotone.cc:58
+#: monotone.cc:58
 msgid "limit the log output to the given number of entries"
 msgstr ""

-#: ../monotone.cc:59
+#: monotone.cc:59
 msgid "record process id of server"
 msgstr ""

-#: ../monotone.cc:60
+#: monotone.cc:60
 msgid "print a brief version of the normal output"
 msgstr ""

-#: ../monotone.cc:61
+#: monotone.cc:61
 msgid "print diffs along with logs"
 msgstr ""

-#: ../monotone.cc:62
+#: monotone.cc:62
 msgid "skip merges when printing logs"
 msgstr ""

-#: ../monotone.cc:63
+#: monotone.cc:63
 msgid "use the current arguments as the future default"
 msgstr ""

-#: ../monotone.cc:64
-msgid "leave out branches matching a pattern"
+#: monotone.cc:64
+msgid "leave out anything described by its argument"
 msgstr ""

-#: ../monotone.cc:65
+#: monotone.cc:65
 msgid "use unified diff format"
 msgstr "utiliser le format diff unifié"

-#: ../monotone.cc:66
+#: monotone.cc:66
 msgid "use context diff format"
 msgstr "utiliser le format diff contextuel"

-#: ../monotone.cc:67
+#: monotone.cc:67
 msgid "use external diff hook for generating diffs"
 msgstr ""

-#: ../monotone.cc:68
+#: monotone.cc:68
 msgid "argument to pass external diff hook"
 msgstr ""

-#: ../monotone.cc:69
+#: monotone.cc:69
 msgid "use least common ancestor as ancestor for merge"
 msgstr ""

-#: ../monotone.cc:70
+#: monotone.cc:70
 msgid "perform the associated file operation"
 msgstr ""

-#: ../monotone.cc:79
+#: monotone.cc:79
 msgid "print debug log to stderr while running"
 msgstr ""

-#: ../monotone.cc:80
+#: monotone.cc:80
 msgid "file to dump debugging log to, on failure"
 msgstr ""

-#: ../monotone.cc:81
+#: monotone.cc:81
 msgid "suppress log and progress messages"
 msgstr ""

-#: ../monotone.cc:82
+#: monotone.cc:82
 msgid "display help message"
 msgstr "afficher le message d'aide"

-#: ../monotone.cc:83
+#: monotone.cc:83
 msgid "print version number, then exit"
 msgstr "afficher le numéro de version, puis quitte"

-#: ../monotone.cc:84
+#: monotone.cc:84
 msgid "print detailed version number, then exit"
 msgstr "afficher le numéro de version détaillée, puis quitte"

-#: ../monotone.cc:85
+#: monotone.cc:85
 msgid "insert command line arguments taken from the given file"
 msgstr ""

-#: ../monotone.cc:86
+#: monotone.cc:86
 msgid "set ticker style (count|dot|none)"
 msgstr ""

-#: ../monotone.cc:87
+#: monotone.cc:87
 msgid "do not load standard lua hooks"
 msgstr "ne pas charger les hooks standards lua"

-#: ../monotone.cc:88
+#: monotone.cc:88
 msgid "do not load ~/.monotone/monotonerc or MT/monotonerc lua files"
 msgstr ""
 "ne pas charger les fichiers lua ~/.monotone/monotonerc ou MT/monotonerc"

-#: ../monotone.cc:89
+#: monotone.cc:89
 msgid "load extra rc file"
 msgstr "charger un fichier rc supplémentaire"

-#: ../monotone.cc:90
+#: monotone.cc:90
 msgid "set key for signatures"
 msgstr ""

-#: ../monotone.cc:91
+#: monotone.cc:91
 msgid "set name of database"
 msgstr ""

-#: ../monotone.cc:92
+#: monotone.cc:92
 msgid "limit search for working copy to specified root"
 msgstr ""

-#: ../monotone.cc:93
+#: monotone.cc:93
 msgid "verbose completion output"
 msgstr ""

-#: ../monotone.cc:199
+#: monotone.cc:199
 #, c-format
 msgid "problem parsing arguments from file %s: %s"
 msgstr ""

-#: ../monotone.cc:208
+#: monotone.cc:208
 #, c-format
 msgid "weird error when stuffing arguments read from %s: %s\n"
 msgstr ""

-#: ../monotone.cc:258
+#: monotone.cc:258
 #, c-format
 msgid "command line: %s\n"
 msgstr "ligne de commande : %s\n"

-#: ../monotone.cc:261
+#: monotone.cc:261
 #, c-format
 msgid "set locale: LC_ALL=%s\n"
 msgstr "pa