The unified diff between revisions [5587f68e..] and [95cbeaa8..] is displayed below. It can also be downloaded as a raw diff.

#
#
# patch "AUTHORS"
#  from [f735fbbf50cbfa0258a4fc76d70b4781fd06c60a]
#    to [82c58d1acbc33679c1333196dd0b555c2550cfdc]
#
# patch "ChangeLog"
#  from [0f79b1bab4944e0d171410d02195b6e0aa344b39]
#    to [8406d3d44ebe3cdcbf3a85455d06e9d8256b0e18]
#
# patch "botan/arc4.cpp"
#  from [5d18a5e5578d84da92e194a2c878ff7da6503844]
#    to [475ce257a2f738c10bf6b5858c6590d0c6618cb9]
#
# patch "cert.cc"
#  from [43de7f5240b7caa27fc590630afe3ffeea0bfa0b]
#    to [42559a303b7e3a7896fc98035dfd13509cbb0b96]
#
# patch "commands.cc"
#  from [61185ae5cc7cd776c25ca1655199a314bdd40378]
#    to [d04179187700889eee2af3e4e6ada1ffad5e7317]
#
# patch "configure.ac"
#  from [289e0cb6ea26e1a8e515e7f81626a49e77381d69]
#    to [0a8fcd82b46313fe334dc86907bde61e73c8ab4e]
#
# patch "contrib/usher.cc"
#  from [8cb23c92752ea67f7858372494985d2d6204afaf]
#    to [d51be7aa0f1270b8a1dab605c33328095d82aab4]
#
# patch "database.cc"
#  from [4a6486b38a02fec9b281ae4a665f209bb9f3440e]
#    to [527f6668dd5cd105d42d05e3027ee783e2fdf624]
#
# patch "lua.cc"
#  from [fc053070a0c0a106e6f9a3e5678ef2a427ad1fcd]
#    to [7adcfab1864ac11bd60a241a3c607b9ddf031716]
#
# patch "monotone.cc"
#  from [21be582ccd322a35a5d1864ee1251e5773054619]
#    to [cab8b2b01a23a5e82a37761b90517703c57c241a]
#
# patch "monotone.texi"
#  from [9b7b9ab00d31aead6a87466ff1a2d843c54084a8]
#    to [6d5a231b85631453f85095ac4ce027c3fdc15e38]
#
# patch "netsync.cc"
#  from [5d53bf85b20e88af400ccea87f1233eefdfd5daa]
#    to [4bdd084e4dd25d0a85c5287e99850c30c4f6cc66]
#
# patch "po/POTFILES.in"
#  from [bd06ee5116d53df04a0065e56e3a6ef2b7837d8c]
#    to [4d5f0163f7f56dce90515e2ea15edaca8daf790e]
#
# patch "po/ja.po"
#  from [a3ec19a708293db5a8a1247f2c1dafaf367e6827]
#    to [493e2f3062a07374112f0e7ed64d84a6ae8dc0d2]
#
# patch "rcs_import.cc"
#  from [e01d4dc824657c684430fdf98d0132a1298f10d3]
#    to [1cae15157195ea7014977d5184a10d6472a959b2]
#
# patch "restrictions.cc"
#  from [a2c9b4ec291eb22ed849af535ffec2fc4de253d9]
#    to [08affd2e33496704cc881807f3dd408a9f2a4129]
#
# patch "sanity.cc"
#  from [d43cf000a18c156b97527e0724635b050159d16d]
#    to [7aef12692c6817c9405c6e34552c48a0b79335f8]
#
# patch "sanity.hh"
#  from [2c8cee0f678668a356de29a5c61fb3eed8c87b74]
#    to [5a3b4f9635067d92301924a42621085c15a33188]
#
# patch "sqlite/analyze.c"
#  from [43a2d91242bdd71b6c299378f6b11e896ee5e43d]
#    to [21a4cd125bedd3cb15857595c45c2a49c0556d26]
#
# patch "sqlite/build.c"
#  from [74653e045581bfbadb8b35a0cb38a62f4a2c850e]
#    to [aa9591839c00731370c1ba53a9c0045f70d764c4]
#
# patch "sqlite/delete.c"
#  from [16a0e19460b14d219f39ff5c7a9eef808aa1969c]
#    to [29dac493f4d83b05f91233b116827c133bcdab72]
#
# patch "sqlite/expr.c"
#  from [b8dbd5a30e80b83b0c1e137dcfcd687bd5d2b76c]
#    to [bb2cf5d5b065eaa23d5ae2620f6de0568768147d]
#
# patch "sqlite/insert.c"
#  from [484c73bc1309f283a31baa0e114f3ee980536397]
#    to [1f51566d7cf4b243a2792f5fda37343d6e9377fa]
#
# patch "sqlite/opcodes.c"
#  from [8b23c96979492cba740a2e3c67f6646e8b323b12]
#    to [9855bca95408a841cfbeb92135596bc18d7c034a]
#
# patch "sqlite/opcodes.h"
#  from [1848e78f249e09e0b773754679d6584412f8900f]
#    to [9918b6dfce41b2465940c5f6631afd418584dfb3]
#
# patch "sqlite/os_unix.c"
#  from [c86cf43b7ca9200e6fb7bc202ad2cc7da2f69367]
#    to [407dd07818d13807c396acf3f7570af81cbb666c]
#
# patch "sqlite/os_win.c"
#  from [ed03a35b2894f9b99840415f941a9f8594dea756]
#    to [fbccc85e7011174068c27d54256746321a1f0059]
#
# patch "sqlite/pager.h"
#  from [17b13225abd93c1e9f470060f40a21b9edb5a164]
#    to [e7b41ce8e7b5f629d456708b7ad9a8c8ede37140]
#
# patch "sqlite/parse.c"
#  from [9f03b15f12e12a7952705f50d01e3ac97bb81e34]
#    to [13d6d5853fcaddd632125185f51a4705558950fb]
#
# patch "sqlite/pragma.c"
#  from [6d773e25e8af13ef0820531ad2793417f8a8959d]
#    to [126149668aa7086e86cfa3e32c8523513c19dd63]
#
# patch "sqlite/select.c"
#  from [9ef1dddd436e1ea86a6bf64ae0ed71bf4a0b894f]
#    to [034c7f7447b8711f85bef578a437ea12ca7cac53]
#
# patch "sqlite/sqlite3.h"
#  from [d1ab08a3d92270801782adad0dad0f31d6df7761]
#    to [2c4119e974bd9182eb3597fbd6343c5e1c4bcb74]
#
# patch "sqlite/sqliteInt.h"
#  from [e78a7c53a97a2e5d8d6370b6836b2921124ac26f]
#    to [0606b9cc31efabadf5b3d40478c193fa89fa6662]
#
# patch "sqlite/update.c"
#  from [c2716c2115533ffae3d08bf8853aaba4f970f37e]
#    to [ac506fb7400158f826ec6c3a0dbe65e7ed3928d5]
#
# patch "sqlite/vdbe.c"
#  from [de007d59f036fcd1b89a7d4172aa0d028e8689eb]
#    to [3f1adcf4535dd35e4244d19d332fb6b515491c0d]
#
# patch "sqlite/vdbe.h"
#  from [c8e105979fc7aaf5b8004e9621904e3bd096dfa2]
#    to [8729a4ee16ff9aeab2af9667df3cf300ff978e13]
#
# patch "sqlite/vdbeInt.h"
#  from [3dd2a29c7b0a55404c35f93caae81fb42f4cb70a]
#    to [7bedbb9553a10e86b53f75d99e197f3f00a732bf]
#
# patch "sqlite/vdbeaux.c"
#  from [57a6ced8417bdc6f06c391d9c560ecbbed644ef3]
#    to [2b728d82cf2095386a90051b66e7faf1a143f27d]
#
# patch "sqlite/vdbemem.c"
#  from [fea0744936008831daa17cdc75056c3ca1469690]
#    to [ff426ff6e72aa3f0300a56ec8c7f18099be96b43]
#
# patch "sqlite/where.c"
#  from [1cc55c9aa142c7ef09b427f5fd0bf0488e365fc4]
#    to [3ed72ca029b3010a76e3a41b7b02ec1bdf849f00]
#
# patch "std_hooks.lua"
#  from [3aa6ea33c6bbb6e43c63dd4ff8ed353f3b9d4ce3]
#    to [f7edfb3f0063bd68d3a141693ec1141e9ff8266f]
#
# patch "tests/t_restriction_with_exclude_iprint.at"
#  from [4a5f81447a9aef3715473d174138a2ad610d7d00]
#    to [9eeb53c39d2dc0fe57457a538e4765ad15dfe1ee]
#
# patch "ui.cc"
#  from [2c9b65e320b66d6b104bee5885723c4f97f36e8b]
#    to [0fa61fa5c584e05a187d6c7e29c8336e4d7f3455]
#
# patch "ui.hh"
#  from [13817f413857ee072ca9ed1aa5dc90e51aaa0069]
#    to [2bedf507a3a2f5aa202e7cf38965822f5771c817]
#
============================================================
--- AUTHORS	f735fbbf50cbfa0258a4fc76d70b4781fd06c60a
+++ AUTHORS	82c58d1acbc33679c1333196dd0b555c2550cfdc
@@ -66,6 +66,7 @@ contributing authors, including:
   Jordan Breeding <jordan.breeding@mac.com>
   Vladimir Vukicevic <vladimirv@gmail.com>
   Benoît Dejean <benoit@placenet.org>
+  Patrick Mauritz <oxygene@studentenbude.ath.cx>

 Several people have also contributed to the translation of monotone
 into non-English languages; their work is available in the po/
============================================================
--- ChangeLog	0f79b1bab4944e0d171410d02195b6e0aa344b39
+++ ChangeLog	8406d3d44ebe3cdcbf3a85455d06e9d8256b0e18
@@ -1,3 +1,108 @@
+2005-09-27  Richard Levitte  <richard@levitte.org>
+
+	* monotone.texi (Tutorial): It seems like texi2pdf gets quite
+	confused when a @chapter has a @subsection with a @section in
+	between.  The resulting PDF had a Tutorial that was a indexed as a
+	subsection under Concepts/Branches instead of being indexed as the
+	chapter it is, and most confusingly, it's last subsection
+	(Branching and Merging) ended up as a a separate chapter of it's
+	own...
+
+2005-09-26  Benoît Dejean  <benoit@placenet.org>
+
+	* database.cc: Merged 3 strings.
+
+2005-09-26  Matt Johnston  <matt@ucc.asn.au>
+
+	* commands.cc: add 'help' command
+	* monotone.cc: add -h alias for --help
+
+2005-09-25  Matt Johnston  <matt@ucc.asn.au>
+
+	* netsync.cc: use lexical_cast on port numbers to avoid
+	strange-looking "port 5,253"
+
+2005-09-25  Matthew Gregan  <kinetik@orcon.net.nz>
+
+	* sqlite/*: Update in-tree SQLite from 3.2.6 to 3.2.7.
+
+2005-09-25  Benoît Dejean  <benoit@placenet.org>
+
+	* netsync.cc: 3 more i18n strings.
+
+2005-09-25  Benoît Dejean  <benoit@placenet.org>
+
+	* cert.cc (cert_signable_text): F() vs. boost::format.
+	* lua.cc (monotone_guess_binary_file_contents_for_lua),
+	(monotone_include_for_lua), (monotone_includedir_for_lua):
+	* rcs_import.cc (import_cvs_repo): Merged some strings.
+
+2005-09-25  Benoît Dejean  <benoit@placenet.org>
+
+	* lua.cc (monotone_guess_binary_file_contents_for_lua):
+	Fixed signednes warning and istream usage.
+
+2005-09-25  Matt Johnston  <matt@ucc.asn.au>
+
+	* ui.cc: fallback to the default locale if locale("") fails.
+
+2005-09-25  Matt Johnston  <matt@ucc.asn.au>
+
+	* botan/arc4.cpp: increase maximum keylength to 256 bytes.
+
+2005-09-24  Benoît Dejean  <benoit@placenet.org>
+
+	* ChangeLog: Fixed.
+	I don't understand how xxdiff works :/ Please help.
+
+2005-09-24  Satoru SATOH <ss@gnome.gr.jp>
+
+	* po/ja.po: Updated Japanese translation.
+
+2005-09-23  Benoît Dejean  <benoit@placenet.org>
+
+        * std_hooks.lua: More i18n strings.
+
+        I don't know how to handle lua
+        "multiline" ..
+        "strings" because gettext doesn't join them.
+
+2005-09-22  Benoît Dejean  <benoit@placenet.org>
+
+        * sanity.{cc,hh}: Uninlined F() and FP().
+        This happily saves ~100KB of .text on my ppc.
+
+2005-09-22  Benoît Dejean  <benoit@placenet.org>
+
+	* netsync.cc: Reverted changes
+	from f0a632bf14468b6e03a488d6f1a64ef18b61d04c
+	to   4f7f638954c79c54460d04c3be111acad8b26dd3
+
+2005-09-22  Benoît Dejean  <benoit@placenet.org>
+
+	* lua.cc (monotone_gettext_for_lua): New function.
+	* po/POTFILES.in: Added std_hooks.lua.
+	* std_hooks.lua: One more string for i18n.
+
+2005-09-22  Benoît Dejean  <benoit@placenet.org>
+
+	* ui.{cc,hh} (get_user_locale): Returns a const &.
+
+2005-09-21  Timothy Brownawell  <tbrownaw@gmail.com>
+
+	* contrib/usher.cc: better error checking
+
+2005-09-20  Timothy Brownawell  <tbrownaw@gmail.com>
+
+	* restrictions.cc: Make calculate_unrestricted_revision work
+	with --exclude
+	* tests/t_restriction_with_exclude_iprint.at: remove XFAIL
+
+2005-09-20  Patrick Mauritz <oxygene@studentenbude.ath.cx>
+
+	* configure.ac: solaris needs librt for fdatasync
+	* sqlite/parse.c: #line and #include interactions aren't defined
+
 2005-09-20  Matt Johnston  <matt@ucc.asn.au>

 	* database.cc (space_usage): workaround the issue that in sqlite
@@ -110,7 +215,7 @@ 2005-09-07  Jim Meyering  <jim@meyering.
 	* tests/t_rename_dir_cross_level.at: When invoking mv to rename
 	a directory, do not include a trailing slash on the target -- that
 	is not portable.
-
+
 	* Makefile.am (TESTS_ENVIRONMENT): Ensure that PATH starts with
 	the current directory, so we test the just-built monotone binary,
 	not some older version.
============================================================
--- botan/arc4.cpp	5d18a5e5578d84da92e194a2c878ff7da6503844
+++ botan/arc4.cpp	475ce257a2f738c10bf6b5858c6590d0c6618cb9
@@ -93,7 +93,8 @@ void ARC4::clear() throw()
 /*************************************************
 * ARC4 Constructor                               *
 *************************************************/
-ARC4::ARC4(u32bit s) : StreamCipher(1, 32), SKIP(s)
+// monotone-specific: max keysize is 256 bytes
+ARC4::ARC4(u32bit s) : StreamCipher(1, 256), SKIP(s)
    {
    clear();
    }
============================================================
--- cert.cc	43de7f5240b7caa27fc590630afe3ffeea0bfa0b
+++ cert.cc	42559a303b7e3a7896fc98035dfd13509cbb0b96
@@ -299,7 +299,7 @@ cert_signable_text(cert const & t,
 cert_signable_text(cert const & t,
                        string & out)
 {
-  out = (F("[%s@%s:%s]") % t.name % t.ident % remove_ws(t.value())).str();
+  out = (boost::format("[%s@%s:%s]") % t.name % t.ident % remove_ws(t.value())).str();
   L(F("cert: signable text %s\n") % out);
 }

============================================================
--- commands.cc	61185ae5cc7cd776c25ca1655199a314bdd40378
+++ commands.cc	d04179187700889eee2af3e4e6ada1ffad5e7317
@@ -318,6 +318,19 @@ private:
   system_path path;
 };

+
+CMD(help, N_("informative"), N_("command [ARGS...]"), N_("display command help"), OPT_NONE)
+{
+	if (args.size() < 1)
+		throw usage("");
+
+	string full_cmd = complete_command(idx(args, 0)());
+	if (cmds.find(full_cmd) == cmds.end())
+		throw usage("");
+
+	throw usage(full_cmd);
+}
+
 static void
 maybe_update_inodeprints(app_state & app)
 {
============================================================
--- configure.ac	289e0cb6ea26e1a8e515e7f81626a49e77381d69
+++ configure.ac	0a8fcd82b46313fe334dc86907bde61e73c8ab4e
@@ -307,6 +307,7 @@ AC_SEARCH_LIBS([inet_ntoa], [nsl])
 AC_SEARCH_LIBS([inet_aton], [resolv])
 AC_SEARCH_LIBS([accept], [socket])
 AC_SEARCH_LIBS([inet_ntoa], [nsl])
+AC_SEARCH_LIBS([fdatasync], [rt])
 AC_CHECK_LIB([z], [deflate], , AC_MSG_FAILURE([zlib is required]))

 # Now let the user specify whether he wants large file support or not in
============================================================
--- contrib/usher.cc	8cb23c92752ea67f7858372494985d2d6204afaf
+++ contrib/usher.cc	d51be7aa0f1270b8a1dab605c33328095d82aab4
@@ -180,7 +180,8 @@ struct buffer
   }
   void fixwrite(int n)
   {
-    if (n < 0) throw errstr("negative write\n", 0);
+    if (n < 0)
+      throw errstr("negative write\n", 0);
     writepos += n;
   }
 };
@@ -188,27 +189,60 @@ struct sock
 struct sock
 {
   int *s;
-  operator int(){return s[0];}
+  operator int()
+  {
+    if (!s)
+      return -1;
+    else
+      return s[0];
+  }
   sock(int ss)
   {
     s = new int[2];
     s[0] = ss;
     s[1] = 1;
   }
-  sock(sock const & ss){s = ss.s; s[1]++;}
-  ~sock(){if (s[1]--) return; ::close(s[0]); delete[] s;}
-  sock operator=(int ss){s[0]=ss;}
+  sock(sock const & ss)
+  {
+    s = ss.s;
+    if (s)
+      s[1]++;
+  }
   void close()
   {
-    if (s[0] == -1) return;
-    tosserr(shutdown(s[0], SHUT_RDWR), "shutdown()");
-    while (::close(s[0]) < 0) {
-      if (errno != EINTR) throw errstr("close()", 0);
+    if (!s || s[0] == -1)
+      return;
+    shutdown(s[0], SHUT_RDWR);
+      while (::close(s[0]) < 0) {
+        if (errno == EIO)
+          throw errstr("close failed", errno);
+        if (errno != EINTR)
+          break;
+      }
+    s[0]=-1;
+  }
+  ~sock()
+  {
+    if (!s || s[1]--)
+      return;
+    try {
+      close();
+    } catch(errstr & e) {
+      // if you want it to throw errors, call close manually
     }
-    s[0]=-1;
+    delete[] s;
+    s = 0;
   }
+  sock operator=(int ss)
+  {
+    if (!s)
+      s = new int[2];
+    s[0]=ss;
+  }
   bool read_to(buffer & buf)
   {
+    if (!s)
+      return false;
     char *p;
     int n;
     buf.getwrite(p, n);
@@ -222,6 +256,8 @@ struct sock
   }
   bool write_from(buffer & buf)
   {
+    if (!s)
+      return false;
     char *p;
     int n;
     buf.getread(p, n);
@@ -294,13 +330,16 @@ struct channel

 struct channel
 {
+  static int counter;
+  int num;
   sock client;
   sock server;
   bool have_routed;
   bool no_server;
   buffer cbuf;
   buffer sbuf;
-  channel(sock & c): client(c), server(-1),
+  channel(sock & c): num(++counter),
+   client(c), server(-1),
    have_routed(false), no_server(false)
   {
     char * dat;
@@ -417,6 +456,7 @@ struct channel
     }
   }
 };
+int channel::counter = 0;

 int main (int argc, char **argv)
 {
@@ -491,9 +531,14 @@ int main (int argc, char **argv)
     std::list<std::list<channel>::iterator> finished;
     for (std::list<channel>::iterator i = channels.begin();
          i != channels.end(); ++i) {
-      i->process_selected(rd, wr, er);
-      if (i->is_finished())
+      try {
+        i->process_selected(rd, wr, er);
+        if (i->is_finished())
+          finished.push_back(i);
+      } catch (errstr & e) {
         finished.push_back(i);
+        std::cerr<<"Error proccessing connection "<<i->num<<": "<<e.name<<"\n";
+      }
     }
     for (std::list<std::list<channel>::iterator>::iterator i = finished.begin();
          i != finished.end(); ++i)
============================================================
--- database.cc	4a6486b38a02fec9b281ae4a665f209bb9f3440e
+++ database.cc	527f6668dd5cd105d42d05e3027ee783e2fdf624
@@ -195,7 +195,7 @@ database::sql(bool init)
         {
           require_path_is_file(filename,
                                F("database %s does not exist") % filename,
-                               F("database %s is a directory") % filename);
+                               F("%s is a directory, not a database") % filename);
           check_sqlite_format_version(filename);
         }

============================================================
--- lua.cc	fc053070a0c0a106e6f9a3e5678ef2a427ad1fcd
+++ lua.cc	7adcfab1864ac11bd60a241a3c607b9ddf031716
@@ -524,7 +524,7 @@ extern "C"
   monotone_guess_binary_file_contents_for_lua(lua_State *L)
   {
     const char *path = lua_tostring(L, -1);
-    N(path, F("guess_binary called with an invalid parameter"));
+    N(path, F("%s called with an invalid parameter") % "guess_binary");

     std::ifstream file(path, ios_base::binary);
     if (!file)
@@ -535,10 +535,9 @@ extern "C"
     const int bufsize = 8192;
     char tmpbuf[bufsize];
     string buf;
-    while(file.good())
+    while (file.read(tmpbuf, sizeof tmpbuf))
       {
-        file.read(tmpbuf, sizeof(tmpbuf));
-        I(file.gcount() <= sizeof(tmpbuf));
+        I(file.gcount() <= static_cast<int>(sizeof tmpbuf));
         buf.assign(tmpbuf, file.gcount());
         if (guess_binary(buf))
           {
@@ -554,7 +553,7 @@ extern "C"
   monotone_include_for_lua(lua_State *L)
   {
     const char *path = lua_tostring(L, -1);
-    N(path, F("Include called with an invalid parameter"));
+    N(path, F("%s called with an invalid parameter") % "Include");

     bool res =Lua(L)
     .loadfile(std::string(path, lua_strlen(L, -1)))
@@ -569,7 +568,7 @@ extern "C"
   monotone_includedir_for_lua(lua_State *L)
   {
     const char *pathstr = lua_tostring(L, -1);
-    N(pathstr, F("IncludeDir called with an invalid parameter"));
+    N(pathstr, F("%s called with an invalid parameter") % "IncludeDir");

     fs::path locpath(pathstr, fs::native);
     N(fs::exists(locpath), F("Directory '%s' does not exists") % pathstr);
@@ -609,6 +608,14 @@ extern "C"
     lua_pushboolean(L, boost::regex_search(str, what, boost::regex(re)));
     return 1;
   }
+
+  static int
+  monotone_gettext_for_lua(lua_State *L)
+  {
+    const char *msgid = lua_tostring(L, -1);
+    lua_pushstring(L, gettext(msgid));
+    return 1;
+  }
 }


@@ -638,6 +645,7 @@ lua_hooks::lua_hooks()
   lua_register(st, "guess_binary_file_contents", monotone_guess_binary_file_contents_for_lua);
   lua_register(st, "include", monotone_include_for_lua);
   lua_register(st, "includedir", monotone_includedir_for_lua);
+  lua_register(st, "gettext", monotone_gettext_for_lua);

   // add regex functions:
   lua_newtable(st);
============================================================
--- monotone.cc	21be582ccd322a35a5d1864ee1251e5773054619
+++ monotone.cc	cab8b2b01a23a5e82a37761b90517703c57c241a
@@ -79,7 +79,7 @@ struct poptOption options[] =
     {"debug", 0, POPT_ARG_NONE, NULL, OPT_DEBUG, gettext_noop("print debug log to stderr while running"), NULL},
     {"dump", 0, POPT_ARG_STRING, &argstr, OPT_DUMP, gettext_noop("file to dump debugging log to, on failure"), NULL},
     {"quiet", 0, POPT_ARG_NONE, NULL, OPT_QUIET, gettext_noop("suppress log and progress messages"), NULL},
-    {"help", 0, POPT_ARG_NONE, NULL, OPT_HELP, gettext_noop("display help message"), NULL},
+    {"help", 'h', POPT_ARG_NONE, NULL, OPT_HELP, gettext_noop("display help message"), NULL},
     {"version", 0, POPT_ARG_NONE, NULL, OPT_VERSION, gettext_noop("print version number, then exit"), NULL},
     {"full-version", 0, POPT_ARG_NONE, NULL, OPT_FULL_VERSION, gettext_noop("print detailed version number, then exit"), NULL},
     {"xargs", '@', POPT_ARG_STRING, &argstr, OPT_ARGFILE, gettext_noop("insert command line arguments taken from the given file"), NULL},
============================================================
--- monotone.texi	9b7b9ab00d31aead6a87466ff1a2d843c54084a8
+++ monotone.texi	6d5a231b85631453f85095ac4ce027c3fdc15e38
@@ -998,14 +998,17 @@ @subsection Branch Names

 (For more information, see @ref{Naming Conventions}.)

+@page
 @node    Tutorial
 @chapter Tutorial

 This chapter illustrates the basic uses of monotone by means of an
-example, fictional software project. Before we walk through the
-tutorial, there are two minor issues to address: standard options and
-revision selectors.
+example, fictional software project.

+@section Issues
+Before we walk through the tutorial, there are two minor issues to
+address: standard options and revision selectors.
+
 @subsection Standard Options
 Before operating monotone, two important command-line options should
 be explained.
============================================================
--- netsync.cc	5d53bf85b20e88af400ccea87f1233eefdfd5daa
+++ netsync.cc	4bdd084e4dd25d0a85c5287e99850c30c4f6cc66
@@ -693,34 +693,34 @@ session::setup_client_tickers()
 session::setup_client_tickers()
 {
   // xgettext: please use short message and try to avoid multibytes chars
-  byte_in_ticker.reset(new ticker(N_("bytes in"), ">", 1024, true));
+  byte_in_ticker.reset(new ticker(_("bytes in"), ">", 1024, true));
   // xgettext: please use short message and try to avoid multibytes chars
-  byte_out_ticker.reset(new ticker(N_("bytes out"), "<", 1024, true));
+  byte_out_ticker.reset(new ticker(_("bytes out"), "<", 1024, true));
   if (role == sink_role)
     {
       // xgettext: please use short message and try to avoid multibytes chars
-      revision_checked_ticker.reset(new ticker(N_("revs written"), "w", 1));
+      revision_checked_ticker.reset(new ticker(_("revs written"), "w", 1));
       // xgettext: please use short message and try to avoid multibytes chars
-      cert_in_ticker.reset(new ticker(N_("certs in"), "c", 3));
+      cert_in_ticker.reset(new ticker(_("certs in"), "c", 3));
       // xgettext: please use short message and try to avoid multibytes chars
-      revision_in_ticker.reset(new ticker(N_("revs in"), "r", 1));
+      revision_in_ticker.reset(new ticker(_("revs in"), "r", 1));
     }
   else if (role == source_role)
     {
       // xgettext: please use short message and try to avoid multibytes chars
-      cert_out_ticker.reset(new ticker(N_("certs out"), "C", 3));
+      cert_out_ticker.reset(new ticker(_("certs out"), "C", 3));
       // xgettext: please use short message and try to avoid multibytes chars
-      revision_out_ticker.reset(new ticker(N_("revs out"), "R", 1));
+      revision_out_ticker.reset(new ticker(_("revs out"), "R", 1));
     }
   else
     {
       I(role == source_and_sink_role);
       // xgettext: please use short message and try to avoid multibytes chars
-      revision_checked_ticker.reset(new ticker(N_("revs written"), "w", 1));
+      revision_checked_ticker.reset(new ticker(_("revs written"), "w", 1));
       // xgettext: please use short message and try to avoid multibytes chars
-      revision_in_ticker.reset(new ticker(N_("revs in"), "r", 1));
+      revision_in_ticker.reset(new ticker(_("revs in"), "r", 1));
       // xgettext: please use short message and try to avoid multibytes chars
-      revision_out_ticker.reset(new ticker(N_("revs out"), "R", 1));
+      revision_out_ticker.reset(new ticker(_("revs out"), "R", 1));
     }
 }

@@ -1832,8 +1832,8 @@ session::process_confirm_cmd(string cons
   // nb. this->role is our role, the server is in the opposite role
   L(F("received 'confirm' netcmd from server '%s' for pattern '%s' exclude '%s' in %s mode\n")
     % their_key_hash % our_include_pattern % our_exclude_pattern
-    % (this->role == source_and_sink_role ? "source and sink" :
-       (this->role == source_role ? "sink" : "source")));
+    % (this->role == source_and_sink_role ? _("source and sink") :
+       (this->role == source_role ? _("sink") : _("source"))));

   // check their signature
   if (app.db.public_key_exists(their_key_hash))
@@ -2829,8 +2829,8 @@ session::dispatch_payload(netcmd const &
         L(F("received 'anonymous' netcmd from client for pattern '%s' excluding '%s' "
             "in %s mode\n")
           % their_include_pattern % their_exclude_pattern
-          % (role == source_and_sink_role ? "source and sink" :
-             (role == source_role ? "source " : "sink")));
+          % (role == source_and_sink_role ? _("source and sink") :
+             (role == source_role ? _("source") : _("sink"))));

         set_session_key(hmac_key_encrypted);
         if (!process_anonymous_cmd(role, their_include_pattern, their_exclude_pattern))
@@ -2860,8 +2860,8 @@ session::dispatch_payload(netcmd const &
         L(F("received 'auth(hmac)' netcmd from client '%s' for pattern '%s' "
             "exclude '%s' in %s mode with nonce1 '%s'\n")
           % their_key_hash % their_include_pattern % their_exclude_pattern
-          % (role == source_and_sink_role ? "source and sink" :
-             (role == source_role ? "source " : "sink"))
+          % (role == source_and_sink_role ? _("source and sink") :
+             (role == source_role ? _("source") : _("sink")))
           % hnonce1);

         set_session_key(hmac_key_encrypted);
@@ -3200,8 +3200,8 @@ handle_new_connection(Netxx::Address & a
                       map<Netxx::socket_type, shared_ptr<session> > & sessions,
                       app_state & app)
 {
-  L(F("accepting new connection on %s : %d\n")
-    % addr.get_name() % addr.get_port());
+  L(F("accepting new connection on %s : %s\n")
+    % addr.get_name() % lexical_cast<string>(addr.get_port()));
   Netxx::Peer client = server.accept_connection();

   if (!client)
@@ -3344,8 +3344,8 @@ serve_connections(protocol_role role,

   Netxx::Address addr(address().c_str(), default_port, true);

-  P(F("beginning service on %s : %d\n")
-    % addr.get_name() % addr.get_port());
+  P(F("beginning service on %s : %s\n")
+    % addr.get_name() % lexical_cast<string>(addr.get_port()));

   Netxx::StreamServer server(addr, timeout);

@@ -3374,8 +3374,8 @@ serve_connections(protocol_role role,
       if (fd == -1)
         {
           if (armed_sessions.empty())
-            L(F("timed out waiting for I/O (listening on %s : %d)\n")
-              % addr.get_name() % addr.get_port());
+            L(F("timed out waiting for I/O (listening on %s : %s)\n")
+              % addr.get_name() % lexical_cast<string>(addr.get_port()));
         }

       // we either got a new connection
============================================================
--- po/POTFILES.in	bd06ee5116d53df04a0065e56e3a6ef2b7837d8c
+++ po/POTFILES.in	4d5f0163f7f56dce90515e2ea15edaca8daf790e
@@ -58,6 +58,7 @@ schema_migration.hh
 sanity.hh
 schema_migration.cc
 schema_migration.hh
+std_hooks.lua
 transforms.cc
 transforms.hh
 txt2c.cc
============================================================
--- po/ja.po	a3ec19a708293db5a8a1247f2c1dafaf367e6827
+++ po/ja.po	493e2f3062a07374112f0e7ed64d84a6ae8dc0d2
@@ -5,164 +5,144 @@ msgstr ""
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: monotone 0.19\n"
-"Report-Msgid-Bugs-To: monotone-devel@nongnu.org\n"
-"POT-Creation-Date: 2005-08-08 20:24-0700\n"
-"PO-Revision-Date: 2005-09-18 14:55+0900\n"
+"Project-Id-Version: monotone HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-09-20 00:54+0900\n"
+"PO-Revision-Date: 2005-09-21 14:55+0900\n"
 "Last-Translator: Satoru SATOH <ss@gnome.gr.jp>\n"
 "Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"

-#: app_state.cc:58
+#: app_state.cc:51
 #, c-format
 msgid "initializing from directory %s\n"
 msgstr "ディレクトリ %s から初期化中\n"

-#: app_state.cc:59
+#: app_state.cc:62
 #, c-format
-msgid "found working copy directory %s\n"
-msgstr "作業コピーディレクトリ %s を発見\n"
-
-#: app_state.cc:61
-#, c-format
-msgid "cannot change to directory to %s\n"
-msgstr "ディレクトリ %s へ移動できません\n"
-
-#: app_state.cc:69
-#, c-format
 msgid "branch name is '%s'\n"
 msgstr "ブランチ名は '%s' です\n"

-#: app_state.cc:75
+#: app_state.cc:69
 #, c-format
-msgid "relative directory is '%s'\n"
-msgstr "相対ディレクトリは '%s' です\n"
-
-#: app_state.cc:82
-#, c-format
 msgid "setting dump path to %s\n"
-msgstr "ダンプパスを %s に設定しています\n"
+msgstr "ダンプパスを %s に設定\n"

-#: app_state.cc:93
+#: app_state.cc:83
 #, c-format
 msgid "working copy directory required but not found%s%s"
-msgstr "必要な作業コピーディレクトリがみつかりませんでした: %s%s"
+msgstr "作業コピーディレクトリが必要ですが、みつかりませんでした: %s%s"

-#: app_state.cc:101
+#: app_state.cc:91
+#, c-format
 msgid "invalid directory ''"
 msgstr "無効なディレクトリ ''"

-#: app_state.cc:105
+#: app_state.cc:93
 #, c-format
-msgid "cannot change to initial directory %s\n"
-msgstr "初期ディレクトリ %s へ移動できません\n"
+msgid "creating working copy in %s\n"
+msgstr "%s 内に作業コピーを作成\n"

-#: app_state.cc:109
+#: app_state.cc:99
 #, c-format
-msgid "create working copy in %s\n"
-msgstr "%s 内に作業コピーを作成\n"
+msgid "monotone bookkeeping directory '%s' already exists in '%s'\n"
+msgstr "monotone 記録簿用ディレクトリ '%s' は既に '%s' 内に存在しています\n"

-#: app_state.cc:120
+#: app_state.cc:102
 #, c-format
-msgid "could not create directory: %s: %s\n"
-msgstr "ディレクトリを作成できませんでした: %s: %s\n"
+msgid "creating bookkeeping directory '%s' for working copy in '%s'\n"
+msgstr "作業コピーの記録簿用ディレクトリ '%s' を '%s' 内に作成\n"

-#: app_state.cc:125
+#: app_state.cc:133
 #, c-format
-msgid "cannot change to new directory %s\n"
-msgstr "新しいディレクトリ %s へ移動できません\n"
+msgid "'%s' ignored by restricted path set\n"
+msgstr "'%s' は制限パスセットによって無視されました\n"

-#: app_state.cc:134
+#: app_state.cc:138 app_state.cc:156
 #, c-format
-msgid "monotone book-keeping directory '%s' already exists in '%s'\n"
-msgstr "monotone book-keeping ディレクトリ '%s' は既に '%s' 内にあります\n"
+msgid "unknown path '%s'\n"
+msgstr "不明なパス '%s'\n"

-#: app_state.cc:137
+#: app_state.cc:140
 #, c-format
-msgid "creating book-keeping directory '%s' for working copy in '%s'\n"
-msgstr "作業コピー用の book-keeping ディレクトリ '%s' を '%s' 内に作成しています\n"
+msgid "'%s' added to restricted path set\n"
+msgstr "'%s' を制限パスセットに追加しました\n"

-#: app_state.cc:159
+#: app_state.cc:151
 #, c-format
-msgid "'%s' prefixed to '%s'\n"
-msgstr "'%s' は '%s' の前に付きます\n"
+msgid "'%s' ignored by excluded path set\n"
+msgstr "'%s' は除外パスセットによって無視されました\n"

-#: app_state.cc:178
+#: app_state.cc:158
 #, c-format
-msgid "'%s' ignored by restricted path set\n"
-msgstr "'%s' は制限パスセットによって無視されました\n"
+msgid "'%s' added to excluded path set\n"
+msgstr "'%s' を除外パスセットに追加しました\n"

-#: app_state.cc:183
+#: app_state.cc:185
 #, c-format
-msgid "unknown path '%s'\n"
-msgstr "不明なパス '%s'\n"
+msgid "checking excluded path set for '%s'\n"
+msgstr "'%s' について除外パスセットを調べています\n"

-#: app_state.cc:185
+#: app_state.cc:192 app_state.cc:225
 #, c-format
-msgid "'%s' added to restricted path set\n"
-msgstr "'%s' を制限パスセットに追加しました\n"
+msgid "path '%s' found in excluded path set; '%s' excluded\n"
+msgstr "パス '%s' は除外パスセットに含まれています; '%s' は除外されます\n"

-#: app_state.cc:226
+#: app_state.cc:211
 #, c-format
 msgid "checking restricted path set for '%s'\n"
-msgstr "'%s' について制限パスセットをチェックしています\n"
+msgstr "'%s' について制限パスセットを調べています\n"

-#: app_state.cc:233
+#: app_state.cc:219
 #, c-format
 msgid "path '%s' found in restricted path set; '%s' included\n"
-msgstr "パス '%s' は制限パスセットに入っています; '%s' が含まれています\n"
+msgstr "パス '%s' は制限パスセットに含まれています; '%s' は含められます\n"

-#: app_state.cc:239
+#: app_state.cc:287
 #, c-format
-msgid "path '%s' not found in restricted path set; '%s' excluded\n"
-msgstr "パス '%s' は制限パスセットに入っていません; '%s' は除外されています\n"
+msgid "search root '%s' does not exist"
+msgstr "検索ルート '%s' は存在しません"

-#: app_state.cc:298
+#: app_state.cc:288
 #, c-format
-msgid "search root '%s' does not exist\n"
-msgstr "検索ルート '%s' は存在しません\n"
-
-#: app_state.cc:300
-#, c-format
 msgid "search root '%s' is not a directory\n"
 msgstr "検索ルート '%s' はディレクトリではありません\n"

-#: app_state.cc:301
+#: app_state.cc:290
 #, c-format
 msgid "set search root to %s\n"
 msgstr "検索ルートを %s に設定\n"

-#: app_state.cc:332
+#: app_state.cc:321
+#, c-format
 msgid "negative depth not allowed\n"
 msgstr "深さの値を負にすることはできません\n"

-#: app_state.cc:340
+#: app_state.cc:329
+#, c-format
 msgid "negative or zero last not allowed\n"
 msgstr "最終値を負または零にすることはできません\n"

-#: app_state.cc:449
+#: app_state.cc:438
 #, c-format
 msgid "Failed to read options file %s"
 msgstr "オプションファイル '%s' の解析に失敗"

-#: app_state.cc:466
+#: app_state.cc:455
 #, c-format
 msgid "Failed to write options file %s"
 msgstr "オプションファイル '%s' の書き込みに失敗"

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

-#: basic_io.cc:27
+#: cert.cc:49
 #, c-format
-msgid "%s:%d:%d:E: %s"
-msgstr "%s:%d:%d:E: %s"
-
-#: cert.cc:49
 msgid "cert ok\n"
 msgstr "証明 OK\n"

@@ -179,22 +159,22 @@ msgid "trust function liked %d signers o
 #: cert.cc:121
 #, c-format
 msgid "trust function liked %d signers of %s cert on manifest %s\n"
-msgstr "信頼関数 liked %d, %s 証明の署名, マニフェスト %s\n"
+msgstr "trust function liked %d signers of %s cert on manifest %s\n"

 #: cert.cc:127
 #, c-format
 msgid "trust function disliked %d signers of %s cert on manifest %s\n"
-msgstr "信頼関数 disliked %d, %s 証明の署名, マニフェスト %s\n"
+msgstr "trust function disliked %d signers of %s cert on manifest %s\n"

 #: cert.cc:174
 #, c-format
 msgid "trust function liked %d signers of %s cert on revision %s\n"
-msgstr "信頼関数 liked %d, %s 証明の署名, リビジョン %s\n"
+msgstr "trust function liked %d signers of %s cert on revision %s\n"

 #: cert.cc:180
 #, c-format
 msgid "trust function disliked %d signers of %s cert on revision %s\n"
-msgstr "信頼関数 disliked %d, %s 証明の署名, リビジョン %s\n"
+msgstr "trust function disliked %d signers of %s cert on revision %s\n"

 #: cert.cc:269
 #, c-format
@@ -211,7 +191,7 @@ msgstr "証明: 署名テキスト %s\n"
 msgid "cert: signable text %s\n"
 msgstr "証明: 署名テキスト %s\n"

-#: cert.cc:364 keys.cc:480
+#: cert.cc:364 keys.cc:508
 #, c-format
 msgid "no private key '%s' found in database or get_priv_key hook"
 msgstr "秘密鍵 '%s' はデータベース内にも get_priv_key フック内にもみつかりません"
@@ -219,18 +199,18 @@ msgid "mismatch between private key '%s'
 #: cert.cc:373
 #, c-format
 msgid "mismatch between private key '%s' in database and get_priv_key hook"
-msgstr "秘密鍵 '%s' はデータベース内のものとも get_priv_key フック内のもの"
-"とも一致しません"
+msgstr "秘密鍵 '%s' はデータベース内のものと get_priv_key フック内のものが"
+"一致していません"

 #: cert.cc:477
+#, c-format
 msgid "no branch found for empty revision, please provide a branch name"
 msgstr "リビジョンが空のブランチはありません. ブランチ名を指定して下さい"

 #: cert.cc:486
 #, c-format
 msgid "no branch certs found for revision %s, please provide a branch name"
-msgstr ""
-"リビジョン %s のブランチ証明がみつかりません. ブランチ名を指定して下さい"
+msgstr "リビジョン %s のブランチ証明がみつかりません. ブランチ名を指定して下さい"

 #: cert.cc:490
 #, c-format
@@ -238,38 +218,40 @@ msgstr "リビジョン %s のブラン
 "multiple branch certs found for revision %s, please provide a branch name"
 msgstr "リビジョン %s のブランチ証明は複数あります. ブランチ名を指定して下さい"

-#: cert.cc:507 rcs_import.cc:1234 revision.cc:1586 revision.cc:1618
+#: cert.cc:507 rcs_import.cc:1231 revision.cc:1594 revision.cc:1626
+#, c-format
 msgid "no unique private key for cert construction"
-msgstr "証明構築のための固有の秘密鍵がありません"
+msgstr "証明作成のための固有の秘密鍵がありません"

 #: cert.cc:622
 #, c-format
 msgid "no default author name for branch '%s'"
-msgstr "ブランチ '%s' についてデフォルトの作者 (author) 名がありません"
+msgstr "ブランチ '%s' についてデフォルトの作成者名がありません"

-#: change_set.cc:290
+#: change_set.cc:289
 #, c-format
 msgid "tid %d: parent %d, type %s, name %s\n"
 msgstr "tid %d: 親 %d、タイプ %s、名前 %s\n"

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

 #: change_set.cc:1540
+#, c-format
 msgid "concatenating change sets\n"
-msgstr "変更セットを結合しています\n"
+msgstr "変更セットを結合中\n"

 #: change_set.cc:1563
 #, c-format
 msgid "concatenating %d and %d deltas\n"
-msgstr "%d と %d の差分を結合しています\n"
+msgstr "%d と %d の差分を結合中\n"

 #: change_set.cc:1573
 #, c-format
 msgid "processing delta on %s\n"
-msgstr "%s の差分を処理しています\n"
+msgstr "%s の差分を処理中\n"

 #: change_set.cc:1577
 #, c-format
@@ -279,7 +261,7 @@ msgid "discarding delta [%s]->[%s] for d
 #: change_set.cc:1582
 #, c-format
 msgid "discarding delta [%s]->[%s] for deleted file '%s'\n"
-msgstr "差分 [%s]->[%s] (対象は削除されたファイル '%s') を破棄しています\n"
+msgstr "差分 [%s]->[%s] (対象は削除されたファイル '%s') を破棄\n"

 #: change_set.cc:1600
 #, c-format
@@ -292,6 +274,7 @@ msgstr "第二の変更セット内の %
 msgstr "第二の変更セット内の %s の差分のコピーを転送しました\n"

 #: change_set.cc:1628
+#, c-format
 msgid "finished concatenation\n"
 msgstr "結合終了\n"

@@ -323,23 +306,25 @@ msgid "skipping common change on %s (tid
 #: change_set.cc:1852
 #, c-format
 msgid "skipping common change on %s (tid %d)\n"
-msgstr "%s (tid %d) への共通の変更をスキップします\n"
+msgstr "%s (tid %d) への共通の変更をスキップ\n"

 #: change_set.cc:1857
 #, c-format
 msgid "skipping neutral change of %s -> %s (tid %d)\n"
-msgstr "中立の変更 %s -> %s (tid %d) をスキップします\n"
+msgstr "中立の変更 %s -> %s (tid %d) をスキップ\n"

 #: change_set.cc:1864
 #, c-format
 msgid "propagating change on %s -> %s (tid %d)\n"
-msgstr "変更を伝播しています: %s -> %s (tid %d)\n"
+msgstr "変更を伝播中: %s -> %s (tid %d)\n"

 #: change_set.cc:1880
+#, c-format
 msgid "conflict detected, resolved in A's favour\n"
 msgstr "競合を検出. A フレーバで解決\n"

 #: change_set.cc:1886
+#, c-format
 msgid "conflict detected, resolved in B's favour\n"
 msgstr "競合を検出. B フレーバで解決\n"

@@ -366,7 +351,7 @@ msgid "skipping delta '%s'->'%s' on dele
 #: change_set.cc:2131
 #, c-format
 msgid "skipping delta '%s'->'%s' on deleted file '%s'\n"
-msgstr "差分 '%s'->'%s' (対象=削除されたファイル '%s') をスキップしています\n"
+msgstr "差分 '%s'->'%s' (対象=削除されたファイル '%s') をスキップ\n"

 #: change_set.cc:2139
 #, c-format
@@ -376,32 +361,32 @@ msgid "propagating new file addition del
 #: change_set.cc:2163
 #, c-format
 msgid "propagating new file addition delta on '%s' : '%s' -> '%s'\n"
-msgstr "'%s' の新規ファイル追加差分を伝えています: '%s' -> '%s'\n"
+msgstr "'%s' の新規ファイル追加差分を伝播中: '%s' -> '%s'\n"

 #: change_set.cc:2175
 #, c-format
 msgid "skipping new file addition delta on '%s' : '' -> '%s'\n"
-msgstr "'%s' の新規ファイル追加差分をスキップしています: '' -> '%s'\n"
+msgstr "'%s' の新規ファイル追加差分をスキップ: '' -> '%s'\n"

 #: change_set.cc:2183
 #, c-format
 msgid "skipping common delta '%s' : '%s' -> '%s'\n"
-msgstr "共通の差分 '%s' をスキップしています: '%s' -> '%s'\n"
+msgstr "共通の差分 '%s' をスキップ: '%s' -> '%s'\n"

 #: change_set.cc:2189
 #, c-format
 msgid "skipping neutral delta on '%s' : %s -> %s\n"
-msgstr "中立の差分 '%s' をスキップしています: '%s' -> '%s'\n"
+msgstr "中立の差分 '%s' をスキップ: '%s' -> '%s'\n"

 #: change_set.cc:2197
 #, c-format
 msgid "propagating unperturbed delta on '%s' : '%s' -> '%s'\n"
-msgstr "'%s' の摂動を受けない差分を伝えています: '%s' -> '%s'\n"
+msgstr "'%s' の摂動を受けない差分を伝播中: '%s' -> '%s'\n"

 #: change_set.cc:2207
 #, c-format
 msgid "merging delta '%s' : '%s' -> '%s' vs. '%s'\n"
-msgstr "差分 '%s' を統合しています: '%s' -> '%s' 対 '%s'\n"
+msgstr "差分 '%s' を統合中: '%s' -> '%s' 対 '%s'\n"

 #: change_set.cc:2220
 #, c-format
@@ -409,596 +394,903 @@ msgstr "'%s' への統合を解決しま
 msgstr "'%s' への統合を解決しました: '%s' -> '%s'\n"

 #: change_set.cc:2249
+#, c-format
 msgid "merging change sets\n"
 msgstr "変更セットを統合中\n"

 #: change_set.cc:2311
+#, c-format
 msgid "finished merge\n"
 msgstr "統合終了\n"

 #: change_set.cc:2330
+#, c-format
 msgid "inverting change set\n"
-msgstr "変更セットを反転\n"
+msgstr "変更セットを反転中\n"

 #: change_set.cc:2360
 #, c-format
 msgid "converted 'delete %s' to 'add as %s' in inverse\n"
-msgstr "'%s の削除' を '%s の追加' (逆向き)に変換しました\n"
+msgstr "'%s の削除' を '%s の追加' (逆方向)に変換しました\n"

 #: change_set.cc:2369
 #, c-format
 msgid "converted add %s to delete in inverse\n"
-msgstr "%s の追加を削除(逆向き)に変換しました\n"
+msgstr "%s の追加を削除(逆方向)に変換しました\n"

 #: change_set.cc:2379
 #, c-format
 msgid "converting delta %s -> %s on %s\n"
-msgstr "差分 %s -> %s (対象=%s) を変換しています\n"
+msgstr "差分 %s -> %s (対象 %s) を変換\n"

 #: change_set.cc:2381
 #, c-format
 msgid "inverse is delta %s -> %s on %s\n"
-msgstr "逆向きの差分は %s -> %s (対象=%s) です\n"
+msgstr "逆方向の差分は %s -> %s (対象=%s) です\n"

-#: change_set.cc:2443
+#: change_set.cc:2447 change_set.cc:2495
 #, c-format
-msgid "moving %s -> %s\n"
-msgstr "移動中 %s -> %s\n"
-
-#: change_set.cc:2492
-#, c-format
 msgid "moving file %s -> %s\n"
-msgstr "ファイルを移動中 %s -> %s\n"
+msgstr "ファイルを移動 %s -> %s\n"

-#: change_set.cc:2500
+#: change_set.cc:2454 change_set.cc:2503
 #, c-format
 msgid "moving dir %s -> %s\n"
-msgstr "ディレクトリを移動中 %s -> %s\n"
+msgstr "ディレクトリを移動 %s -> %s\n"

-#: change_set.cc:2978
+#: commands.cc:136
 #, c-format
-msgid "[begin changeset %s]\n"
-msgstr "[変更セット %s 開始]\n"
-
-#: change_set.cc:2983
-#, c-format
-msgid "%s"
-msgstr "%s"
-
-#: change_set.cc:2984
-#, c-format
-msgid "[end changeset %s]\n"
-msgstr "[変更セット %s 終了]\n"
-
-#: change_set.cc:3016
-msgid "beginning disjoint_merge_test\n"
-msgstr "disjoint_merge_test 開始\n"
-
-#: change_set.cc:3034
-msgid "finished disjoint_merge_test\n"
-msgstr "disjoint_merge_test 終了\n"
-
-#: change_set.cc:3106 change_set.cc:3191 change_set.cc:3236
-#, c-format
-msgid "informative failure: %s\n"
-msgstr "情報の十分な失敗: %s\n"
-
-#: change_set.cc:3110 change_set.cc:3195 change_set.cc:3240
-#, c-format
-msgid "runtime error: %s\n"
-msgstr "実行時エラー: %s\n"
-
-#: change_set.cc:3117
-msgid "STARTING invert_change_test\n"
-msgstr "invert_change_test 開始\n"
-
-#: change_set.cc:3151
-msgid "ENDING invert_change_test\n"
-msgstr "invert_change_test 終了中\n"
-
-#: change_set.cc:3260
-#, c-format
-msgid "%s:%d"
-msgstr "%s:%d"
-
-#: change_set.cc:3262
-#, c-format
-msgid "BEGINNING concatenation test %s\n"
-msgstr "結合テスト %s 開始\n"
-
-#: change_set.cc:3267
-#, c-format
-msgid "FINISHING concatenation test %s\n"
-msgstr "結合テスト %s 終了中\n"
-
-#: change_set.cc:3322
-#, c-format
-msgid "RUNNING bad_concatenate_change_test %s\n"
-msgstr "bad_concatenate_change_test %s 実行中\n"
-
-#: change_set.cc:3330
-msgid "skipping change_set printing, one or both are not sane\n"
-msgstr "change_set 表示をスキップ. 妥当でないものが一つ以上あります\n"
-
-#: change_set.cc:3335
-msgid "concat change_set is insane\n"
-msgstr "change_set の結合は妥当ではありません\n"
-
-#: change_set.cc:3338
-msgid "Checking combined change set\n"
-msgstr "複合変更セットをチェックしています\n"
-
-#: change_set.cc:3345
-msgid "combined_concat is insane\n"
-msgstr "combined_concat は妥当ではありません\n"
-
-#: change_set.cc:3351
-#, c-format
-msgid "RUNNING bad_concatenate_change_test %s again backwards\n"
-msgstr "再度逆行して bad_concatenate_change_test %s を実行中\n"
-
-#: commands.cc:133
-#, c-format
 msgid "expanding command '%s'\n"
-msgstr "コマンド '%s' を展開中\n"
+msgstr "コマンド '%s' を展開\n"

-#: commands.cc:150
+#: commands.cc:153
 #, c-format
 msgid "expanded command to '%s'\n"
 msgstr "コマンドを '%s' に展開\n"

-#: commands.cc:155
+#: commands.cc:158
 #, c-format
-msgid "command '%s' has multiple ambiguous expansions: \n"
-msgstr "コマンド '%s' には曖昧な表現が複数含まれています: \n"
+msgid "command '%s' has multiple ambiguous expansions:\n"
+msgstr "'%s' だけでは曖昧で、展開できるコマンド候補は複数あります:\n"

-#: commands.cc:234
+#: commands.cc:201
+msgid "commands:"
+msgstr "コマンド:"
+
+#: commands.cc:245
 #, c-format
-msgid "executing %s command\n"
-msgstr "%s コマンドを実行中\n"
+msgid "executing command '%s'\n"
+msgstr "コマンド '%s' を実行中\n"

-#: commands.cc:240
+#: commands.cc:251
 #, c-format
 msgid "unknown command '%s'\n"
 msgstr "不明なコマンド '%s'\n"

-#: commands.cc:287
+#: commands.cc:298
 #, c-format
 msgid "pid file '%s' already exists"
 msgstr "PID ファイル '%s' は既に存在しています"

-#: commands.cc:362
+#: commands.cc:368
+msgid ""
+"Enter a description of this change.\n"
+"Lines beginning with `MT:' are removed automatically.\n"
+msgstr "この変更の説明を入力して下さい\n"
+"'MT:' で始まる行は自動的に削除されます\n"
+
+#: commands.cc:375
+#, c-format
 msgid "edit of log message failed"
 msgstr "ログメッセージの編集に失敗しました"

-#: commands.cc:370
+#: commands.cc:384
+msgid "note: "
+msgstr "ノート: "
+
+#: commands.cc:385
 #, c-format
 msgid ""
-"note: branch '%s' has multiple heads\n"
-"note: perhaps consider 'monotone merge'"
-msgstr ""
-"注意: ブランチ '%s' には複数のヘッドがあります\n"
-"注意: ’monotone merge' を実行した方がよいかもしれません"
+"branch '%s' has multiple heads\n"
+"perhaps consider 'monotone merge'"
+msgstr "ブランチ '%s' には複数の最新版があります\n"
+"’monotone merge' を実行した方がよいでしょう"

-#: commands.cc:428 commands.cc:3617
+#: commands.cc:445 commands.cc:666 commands.cc:1304 commands.cc:1374
+#: commands.cc:1742 commands.cc:2608 commands.cc:2623 commands.cc:2626
+#: commands.cc:2824 commands.cc:3465
 #, c-format
 msgid "no such revision '%s'"
 msgstr "リビジョン '%s' は存在しません"

-#: commands.cc:435
+#: commands.cc:452
 #, c-format
 msgid "expanding selection '%s'\n"
-msgstr "セレクション '%s' を展開中\n"
+msgstr "セレクション '%s' を展開\n"

-#: commands.cc:443
+#: commands.cc:460
 #, c-format
 msgid "no match for selection '%s'"
 msgstr "セレクション '%s' に一致するものがありません"

-#: commands.cc:446
+#: commands.cc:463
 #, c-format
 msgid "selection '%s' has multiple ambiguous expansions: \n"
-msgstr "セレクション '%s' には複数の曖昧な展開がありえます: \n"
+msgstr "'%s' だけでは曖昧で、展開できるセレクションの候補は複数あります: \n"

-#: commands.cc:453 commands.cc:482 commands.cc:511
+#: commands.cc:470
 #, c-format
 msgid "expanded to '%s'\n"
 msgstr "'%s' に展開\n"

-#: commands.cc:462 commands.cc:491
+#: commands.cc:481
+#, c-format
 msgid "non-hex digits in id"
-msgstr "ID 内に十六進数が含まれていません"
+msgstr "ID に十六進数が含まれていません"

-#: commands.cc:471 commands.cc:500
+#: commands.cc:490
 #, c-format
-msgid "partial id '%s' does not have a unique expansion"
-msgstr "'%s' を含む ID は複数あり、一つの ID に展開することはできません"
+msgid "partial id '%s' does not have an expansion"
+msgstr "部分 ID '%s' を一つの ID に展開することはできません"

-#: commands.cc:474 commands.cc:503
+#: commands.cc:493
 #, c-format
-msgid "partial id '%s' has multiple ambiguous expansions: \n"
-msgstr "'%s' だけでは曖昧であり、展開できる ID は複数あります: \n"
+msgid "partial id '%s' has multiple ambiguous expansions:\n"
+msgstr "'%s' だけでは曖昧で、展開できる ID の候補は複数あります:\n"

-#: commands.cc:481 commands.cc:510
+#: commands.cc:500
 #, c-format
-msgid "expanding partial id '%s'\n"
-msgstr "部分 ID '%s' を展開しています\n"
+msgid "expanded partial id '%s' to '%s'\n"
+msgstr "部分 ID '%s' を '%s' に展開\n"

+#: commands.cc:527 keys.cc:510 netsync.cc:2197
+#, c-format
+msgid "no public key '%s' found in database"
+msgstr "データベース内に公開鍵 '%s' はありません"
+
 #: commands.cc:537
 #, c-format
-msgid "warning: no public key '%s' found in database\n"
-msgstr "警告: 公開鍵 '%s' はデータベース内に存在しません\n"
+msgid ""
+"Key   : %s\n"
+"Sig   : %s\n"
+"Name  : %s\n"
+"Value : %s\n"
+msgstr ""
+"鍵    : %s\n"
+"署名  : %s\n"
+"名前  : %s\n"
+"値    : %s\n"

-#: commands.cc:646
+#: commands.cc:571
+msgid "ok"
+msgstr "OK"
+
+#: commands.cc:574
+msgid "bad"
+msgstr "NG"
+
+#: commands.cc:577
+msgid "unknown"
+msgstr "不明"
+
+#: commands.cc:652
+#, c-format
 msgid "no keys found\n"
 msgstr "鍵がみつかりませんでした\n"

-#: commands.cc:648
+#: commands.cc:654
 #, c-format
 msgid "no keys found matching '%s'\n"
 msgstr "'%s' に一致する鍵はみつかりませんでした\n"

-#: commands.cc:660 commands.cc:1438 commands.cc:1492 commands.cc:2976
+#: commands.cc:672
 #, c-format
-msgid "no revision %s found in database"
-msgstr "リビジョン %s はデータベース内にみつかりませんでした"
-
-#: commands.cc:666
-#, c-format
 msgid "revision %s already has children. We cannot kill it."
-msgstr "リビジョン %s は既に子を持っていて、削除できません"
+msgstr "リビジョン %s は既に子を持っていて削除できません"

-#: commands.cc:806
+#: commands.cc:802 commands.cc:824 commands.cc:856 commands.cc:880
+#: commands.cc:920
+msgid "key and cert"
+msgstr "鍵と証明"
+
+#: commands.cc:802 commands.cc:824 commands.cc:856
+msgid "KEYID"
+msgstr "KEYID"
+
+#: commands.cc:802
+msgid "generate an RSA key-pair"
+msgstr "鍵対を生成"
+
+#: commands.cc:812
 #, c-format
 msgid "key '%s' already exists in database"
-msgstr "鍵 '%s' は既にデータベース内にあります"
+msgstr "鍵 '%s' は既にデータベース内に存在しています"

-#: commands.cc:810
+#: commands.cc:816
 #, c-format
 msgid "generating key-pair '%s'\n"
-msgstr "鍵ペア '%s' を生成しています\n"
+msgstr "鍵対 '%s' を生成\n"

-#: commands.cc:812
+#: commands.cc:818
 #, c-format
 msgid "storing key-pair '%s' in database\n"
-msgstr "鍵ペア '%s' をデータベースに保存しています\n"
+msgstr "鍵対 '%s' をデータベースに保存\n"

-#: commands.cc:829
+#: commands.cc:824
+msgid "drop a public and private key"
+msgstr "公開鍵と秘密鍵を破棄"
+
+#: commands.cc:835
 #, c-format
 msgid "dropping public key '%s' from database\n"
-msgstr "公開鍵 '%s' をデータベースから破棄しています\n"
+msgstr "公開鍵 '%s' をデータベースから破棄\n"

-#: commands.cc:836
+#: commands.cc:842
 #, c-format
 msgid ""
 "dropping private key '%s' from database\n"
 "\n"
-msgstr ""
-"秘密鍵 '%s' をデータベースから破棄しています\n"
-"\n"
+msgstr "秘密鍵 '%s' をデータベースから破棄\n\n"

-#: commands.cc:837
-msgid "the private key data may not have been erased from the"
-msgstr "秘密鍵データはデータベースから削除されていないかも"
+#: commands.cc:843
+#, c-format
+msgid ""
+"the private key data may not have been erased from the\n"
+"database. it is recommended that you use 'db dump' and\n"
+"'db load' to be sure."
+msgstr "秘密鍵データはデータベースから削除されていない\n"
+"かもしれません。'db dump' と 'db load' で確かめることを\n"
+"お勧めします"

-#: commands.cc:838
-msgid "database. it is recommended that you use 'db dump' and"
-msgstr "しれません. 'db dump' と 'db load' で確認することを"
-
-#: commands.cc:839
-msgid "'db load' to be sure."
-msgstr "お勧めします."
-
-#: commands.cc:845
+#: commands.cc:851
 #, c-format
 msgid "public or private key '%s' does not exist in database"
 msgstr "公開または秘密鍵 '%s' はデータベース内に存在しません"

-#: commands.cc:861
+#: commands.cc:857
+msgid "change passphrase of a private RSA key"
+msgstr "秘密 RSA 鍵のパスフレーズを変更"
+
+#: commands.cc:868
 #, c-format
 msgid "key '%s' does not exist in database"
 msgstr "鍵 '%s' はデータベース内にありません"

-#: commands.cc:868
+#: commands.cc:875
+#, c-format
 msgid "passphrase changed\n"
 msgstr "パスフレーズを変更しました\n"

-#: commands.cc:894
+#: commands.cc:880
+msgid "REVISION CERTNAME [CERTVAL]"
+msgstr "REVISION CERTNAME [CERTVAL]"
+
+#: commands.cc:881
+msgid "create a cert for a revision"
+msgstr "リビジョンの証明を作成"
+
+#: commands.cc:901
+#, c-format
 msgid "no unique private key found, and no key specified"
 msgstr "固有の秘密鍵がみつからず、かつ鍵が指定されていません"

-#: commands.cc:988
+#: commands.cc:920
+msgid "REVISION NAME VALUE SIGNER1 [SIGNER2 [...]]"
+msgstr "REVISION NAME VALUE SIGNER1 [SIGNER2 [...]]"
+
+#: commands.cc:921
+msgid ""
+"test whether a hypothetical cert would be trusted\n"
+"by current settings"
+msgstr "現在の設定で仮想証明が信頼可能かテスト"
+
+#: commands.cc:954
+#, c-format
+msgid ""
+"if a cert on: %s\n"
+"with key: %s\n"
+"and value: %s\n"
+"was signed by: %s\n"
+"it would be: %s\n"
+msgstr ""
+"証明   : %s\n"
+"鍵     : %s\n"
+"値     : %s\n"
+"署名者 : %s\n"
+"よっておそらく %s でしょう\n"
+
+#: commands.cc:963
+msgid "trusted"
+msgstr "trusted"
+
+#: commands.cc:963
+msgid "UNtrusted"
+msgstr "UNtrusted"
+
+#: commands.cc:966 commands.cc:979 commands.cc:991 commands.cc:1008
+#: commands.cc:1054
+msgid "review"
+msgstr "レビュー"
+
+#: commands.cc:966
+msgid "REVISION TAGNAME"
+msgstr "REVISION TAGNAME"
+
+#: commands.cc:967
+msgid "put a symbolic tag cert on a revision version"
+msgstr "象徴的なタグ証明をリビジョンバージョンに付加"
+
+#: commands.cc:979
+msgid "ID (pass|fail|true|false|yes|no|1|0)"
+msgstr "ID (pass|fail|true|false|yes|no|1|0)"
+
+#: commands.cc:980
+msgid "note the results of running a test on a revision"
+msgstr "リビジョンのテストの実行結果を記録"
+
+#: commands.cc:991 commands.cc:1008
+msgid "REVISION"
+msgstr "REVISION"
+
+#: commands.cc:992
+msgid "approve of a particular revision"
+msgstr "特定のリビジョンを承認"
+
+#: commands.cc:1003
+#, c-format
 msgid "need --branch argument for approval"
 msgstr "承認には --branch 引数が必要です"

-#: commands.cc:1007
+#: commands.cc:1009
+msgid "disapprove of a particular revision"
+msgstr "特定のリビジョンを非承認"
+
+#: commands.cc:1022
 #, c-format
-msgid "revision %s has %d changesets, cannot invert\n"
-msgstr "リビジョン %s には %d 個の変更セットがあり、反転できません\n"
+msgid "revision '%s' has %d changesets, cannot invert\n"
+msgstr "リビジョン '%s' には %d 個の変更セットがあり、反転できません\n"

-#: commands.cc:1011
+#: commands.cc:1026
+#, c-format
 msgid "need --branch argument for disapproval"
-msgstr "不可とするには --branch 引数が必要です"
+msgstr "非承認とするには --branch 引数が必要です"

-#: commands.cc:1034
-#, c-format
-msgid "disapproval of revision %s"
-msgstr "リビジョン %s を不可とする"
+#: commands.cc:1054
+msgid "REVISION [COMMENT]"
+msgstr "REVISION [COMMENT]"

-#: commands.cc:1050
+#: commands.cc:1055
+msgid "comment on a particular revision"
+msgstr "特定のリビジョンにコメント"
+
+#: commands.cc:1065
+#, c-format
 msgid "edit comment failed"
 msgstr "コメント編集に失敗"

-#: commands.cc:1053
+#: commands.cc:1068
+#, c-format
 msgid "empty comment"
 msgstr "空のコメント"

-#: commands.cc:1170
-#, c-format
-msgid "cannot find file %s revision %s"
-msgstr "ファイル %s リビジョン %s を発見できませんでした"
+#: commands.cc:1078 commands.cc:1103 commands.cc:1130 commands.cc:1262
+#: commands.cc:2092 commands.cc:2215 commands.cc:2773 commands.cc:3306
+msgid "working copy"
+msgstr "作業コピー"

-#: commands.cc:1211 commands.cc:2378
-msgid "empty log message"
-msgstr "空のログメッセージ"
+#: commands.cc:1078 commands.cc:1103
+msgid "PATH..."
+msgstr "PATH..."

-#: commands.cc:1246
+#: commands.cc:1079
+msgid "add files to working copy"
+msgstr "ファイルを作業コピーに追加"
+
+#: commands.cc:1104
+msgid "drop files from working copy"
+msgstr "ファイルを作業コピーから削除"
+
+#: commands.cc:1130
+msgid "SRC DST"
+msgstr "SRC DST"
+
+#: commands.cc:1131
+msgid "rename entries in the working copy"
+msgstr "作業コピー内のエントリの名称を変更"
+
+#: commands.cc:1159 commands.cc:1172 commands.cc:2694 commands.cc:2711
+#: commands.cc:3366
+msgid "debug"
+msgstr "デバッグ"
+
+#: commands.cc:1159
+msgid "load file contents into db"
+msgstr "ファイルの内容をデータベースに読み込み"
+
+#: commands.cc:1172
+msgid "<parent> <left> <right>"
+msgstr "<親> <左> <右>"
+
+#: commands.cc:1173
+msgid "merge 3 files and output result"
+msgstr "三つのファイルを統合し結果を出力"
+
+#: commands.cc:1183
+#, c-format
 msgid "ancestor file id does not exist"
 msgstr "祖先のファイル ID は存在しません"

-#: commands.cc:1249
+#: commands.cc:1186
+#, c-format
 msgid "left file id does not exist"
 msgstr "左ファイル ID は存在しません"

-#: commands.cc:1252
+#: commands.cc:1189
+#, c-format
 msgid "right file id does not exist"
 msgstr "右ファイル ID は存在しません"

-#: commands.cc:1263
+#: commands.cc:1200
+#, c-format
 msgid "merge failed"
 msgstr "統合失敗"

-#: commands.cc:1370
-#, c-format
-msgid "no file version %s found in database"
-msgstr "バージョン %s のファイルはデータベース内にはありませんでした"
+#: commands.cc:1205 commands.cc:1285 commands.cc:1631 commands.cc:2561
+#: commands.cc:3249 commands.cc:3446 commands.cc:3483
+msgid "informative"
+msgstr "情報"

-#: commands.cc:1382
+#: commands.cc:1205 commands.cc:2215 commands.cc:2561 commands.cc:3306
+msgid "[PATH]..."
+msgstr "[PATH]..."
+
+#: commands.cc:1205
+msgid "show status of working copy"
+msgstr "作業コピーの状態を表示"
+
+#: commands.cc:1262
+msgid "[PATH]"
+msgstr "[PATH]"
+
+#: commands.cc:1263
+msgid "calculate identity of PATH or stdin"
+msgstr "PATH または標準入力を識別"
+
+#: commands.cc:1286
+msgid "FILENAME"
+msgstr "FILENAME"
+
+#: commands.cc:1287
+msgid "write file from database to stdout"
+msgstr "データベースのファイルを標準出力に書き出し"
+
+#: commands.cc:1318
 #, c-format
 msgid "no file '%s' found in revision '%s'\n"
 msgstr "ファイル '%s' はリビジョン '%s' にはありませんでした\n"

-#: commands.cc:1387
+#: commands.cc:1322
 #, c-format
-msgid "dumping file %s\n"
-msgstr "ファイル %s をダンプ中\n"
+msgid "dumping file '%s'\n"
+msgstr "ファイル '%s' をダンプ\n"

-#: commands.cc:1411
-#, c-format
-msgid "no manifest version %s found in database"
-msgstr "マニフェストバージョン %s はデータベース内にはありませんでした"
+#: commands.cc:1330 commands.cc:1437 commands.cc:3049 commands.cc:3098
+#: commands.cc:3183 commands.cc:3190 commands.cc:3651
+msgid "tree"
+msgstr "ツリー"

-#: commands.cc:1415
-#, c-format
-msgid "dumping manifest %s\n"
-msgstr "マニフェスト %s をダンプ中\n"
+#: commands.cc:1330
+msgid "[DIRECTORY]\n"
+msgstr "[DIRECTORY]\n"

-#: commands.cc:1442
-#, c-format
-msgid "dumping revision %s\n"
-msgstr "リビジョン %s をダンプ中\n"
+#: commands.cc:1331
+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"
+"Otherwise, it will be the head of the branch (given or implicit).\n"
+"If no directory is given, the branch name will be used as directory"
+msgstr ""
+"データベースからあるリビジョンを取り出してディレクトリに\n"
+"書き出します。リビジョンが指定されていればそれを取り出し、\n"
+"未指定なら、明示的または暗黙的に指定されたブランチの最新版を\n"
+"取り出します。ディレクトリが未指定ならディレクトリ名として\n"
+"ブランチ名を使います"

-#: commands.cc:1468 commands.cc:1480
+#: commands.cc:1348 commands.cc:1362
+#, c-format
 msgid "need --branch argument for branch-based checkout"
 msgstr "ブランチを基準にしたチェックアウトには --branch 引数が必要です"

-#: commands.cc:1483
+#: commands.cc:1365
 #, c-format
 msgid "branch %s is empty"
 msgstr "ブランチ %s は空です"

-#: commands.cc:1484
+#: commands.cc:1366
 #, c-format
 msgid "branch %s has multiple heads"
-msgstr "ブランチ %s には複数のヘッド(最新版)が存在しています"
+msgstr "ブランチ %s には複数の最新版が存在しています"

-#: commands.cc:1505
+#: commands.cc:1387
 #, c-format
 msgid "found %d %s branch certs on revision %s\n"
-msgstr "%d %s ブランチ証明をリビジョン %s でみつけました\n"
+msgstr "%d %s ブランチ証明がリビジョン %s でみつかりました\n"

-#: commands.cc:1510
+#: commands.cc:1392
 #, c-format
 msgid "revision %s is not a member of branch %s\n"
 msgstr "リビジョン %s はブランチ %s には属していません\n"

-#: commands.cc:1526
+#: commands.cc:1398
 #, c-format
+msgid "checkout directory '%s' already exists"
+msgstr "取り出すディレクトリ '%s' は既に存在しています"
+
+#: commands.cc:1412
+#, c-format
 msgid "no manifest %s found in database"
-msgstr "マニフェスト %s はデータベース内にはありませんでした"
+msgstr "マニフェスト %s はデータベース内にはみつかりません"

-#: commands.cc:1528
+#: commands.cc:1414
 #, c-format
 msgid "checking out revision %s to directory %s\n"
-msgstr "リビジョン %s をディレクトリ %s にチェックアウト中\n"
+msgstr "リビジョン %s をディレクトリ %s に取り出し中\n"

-#: commands.cc:1534
+#: commands.cc:1420
 #, c-format
 msgid "no file %s found in database for %s"
-msgstr "ファイル %s (対象=%s)はデータベース内にはありませんでした"
+msgstr "ファイル %s (対象 %s)はデータベース内にはみつかりません"

-#: commands.cc:1538 commands.cc:3505
+#: commands.cc:1424 commands.cc:3353
 #, c-format
 msgid "writing file %s to %s\n"
 msgstr "ファイル %s を %s に書き込み中\n"

-#: commands.cc:1559 commands.cc:3210
+#: commands.cc:1437
+msgid "show unmerged head revisions of branch"
+msgstr "ブランチの統合されていない最新リビジョンを表示"
+
+#: commands.cc:1445 commands.cc:3058
+#, c-format
 msgid "please specify a branch, with --branch=BRANCH"
 msgstr "--branch=BRANCH というようにブランチを指定して下さい"

-#: commands.cc:1564 commands.cc:3214 commands.cc:3284 commands.cc:3287
+#: commands.cc:1450 commands.cc:3062 commands.cc:3132 commands.cc:3135
 #, c-format
 msgid "branch '%s' is empty\n"
 msgstr "ブランチ '%s' は空です\n"

-#: commands.cc:1566
+#: commands.cc:1452
 #, c-format
 msgid "branch '%s' is currently merged:\n"
 msgstr "ブランチ '%s' は現在統合済みです:\n"

-#: commands.cc:1568
+#: commands.cc:1454
 #, c-format
 msgid "branch '%s' is currently unmerged:\n"
 msgstr "ブランチ '%s' は現在未統合です:\n"

-#: commands.cc:1607
+#: commands.cc:1493
 #, c-format
 msgid "no epoch for branch %s\n"
 msgstr "ブランチ %s は epoch を持ちません\n"

-#: commands.cc:1807 commands.cc:1809 commands.cc:1872
+#: commands.cc:1632
+msgid ""
+"certs ID\n"
+"keys [PATTERN]\n"
+"branches\n"
+"epochs [BRANCH [...]]\n"
+"tags\n"
+"vars [DOMAIN]\n"
+"known\n"
+"unknown\n"
+"ignored\n"
+"missing"
+msgstr ""
+"certs ID\n"
+"keys [PATTERN]\n"
+"branches\n"
+"epochs [BRANCH [...]]\n"
+"tags\n"
+"vars [DOMAIN]\n"
+"known\n"
+"unknown\n"
+"ignored\n"
+"missing"
+
+#: commands.cc:1642
+msgid ""
+"show database objects, or the current working copy manifest,\n"
+"or unknown, intentionally ignored, or missing state files"
+msgstr ""
+"データベースオブジェクト、現在の作業コピーのマニフェスト、\n"
+"不明な、無視された、または失なわれた状態のファイルを表示"
+
+#: 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
+msgid "packet i/o"
+msgstr "パケット I/O"
+
+#: commands.cc:1679 commands.cc:1705
+msgid "OLDID NEWID"
+msgstr "OLDID NEWID"
+
+#: commands.cc:1680
+msgid "write manifest delta packet to stdout"
+msgstr "マニフェスト差分パケットを標準出力に出力"
+
+#: commands.cc:1694 commands.cc:1696 commands.cc:1760
 #, c-format
-msgid "no such manifest %s"
-msgstr "マニフェスト %s は存在しません"
+msgid "no such manifest '%s'"
+msgstr "マニフェスト '%s' は存在しません"

-#: commands.cc:1832 commands.cc:1834 commands.cc:1891
+#: commands.cc:1706
+msgid "write file delta packet to stdout"
+msgstr "ファイル差分パケットを標準出力に出力"
+
+#: commands.cc:1720 commands.cc:1722 commands.cc:1779 commands.cc:2113
 #, c-format
-msgid "no such file %s"
-msgstr "ファイル %s は存在しません"
+msgid "no such file '%s'"
+msgstr "ファイル '%s' は存在しません"

-#: commands.cc:1854
-#, c-format
-msgid "no such revision %s"
-msgstr "リビジョン %s は存在しません"
+#: commands.cc:1729 commands.cc:1747 commands.cc:1766 commands.cc:1785
+#: commands.cc:1803 commands.cc:1819
+msgid "ID"
+msgstr "ID"

-#: commands.cc:1923
+#: commands.cc:1729
+msgid "write revision data packet to stdout"
+msgstr "リビジョンデータパケットを標準出力に出力"
+
+#: commands.cc:1747
+msgid "write manifest data packet to stdout"
+msgstr "マニフェストデータパケットを標準出力に出力"
+
+#: commands.cc:1766
+msgid "write file data packet to stdout"
+msgstr "ファイルデータパケットを標準出力に出力"
+
+#: commands.cc:1785
+msgid "write cert packets to stdout"
+msgstr "証明パケットを標準出力に出力"
+
+#: commands.cc:1803
+msgid "write public key packet to stdout"
+msgstr "公開鍵パケットを標準出力に出力"
+
+#: commands.cc:1811
 #, c-format
 msgid "public key '%s' does not exist in database"
 msgstr "公開鍵 '%s' はデータベース内に存在しません"

-#: commands.cc:1939
+#: commands.cc:1819
+msgid "write private key packet to stdout"
+msgstr "秘密鍵パケットを標準出力に出力"
+
+#: commands.cc:1827
 #, c-format
 msgid "public and private key '%s' do not exist in database"
 msgstr "公開または秘密鍵 '%s' はデータベース内に存在しません"

-#: commands.cc:1956
+#: commands.cc:1840
+msgid "read packets from files or stdin"
+msgstr "ファイルまたは標準入力からパケットを読み込み"
+
+#: commands.cc:1848
+#, c-format
 msgid "no packets found on stdin"
 msgstr "標準入力にパケットをみつけることができませんでした"

-#: commands.cc:1958
-msgid "read 1 packet\n"
-msgstr "1 パケット読み込み\n"
+#: commands.cc:1859
+#, c-format
+msgid "no packets found in given file"
+msgid_plural "no packets found in given files"
+msgstr[0] "ファイル内にパケットは含まれていません"
+msgstr[1] "ファイル内にパケットは含まれていません"

-#: commands.cc:1960
+#: commands.cc:1863
 #, c-format
-msgid "read %d packets\n"
-msgstr "%d パケット読み込み\n"
+msgid "read %d packet"
+msgid_plural "read %d packets"
+msgstr[0] "%d パケット読み込み"
+msgstr[1] "%d パケット読み込み"

-#: commands.cc:1999
+#: commands.cc:1867 commands.cc:1956 commands.cc:1971 commands.cc:1985
+#: commands.cc:2000
+msgid "network"
+msgstr "ネットワーク"
+
+#: commands.cc:1868
+msgid "rebuild the indices used to sync over the network"
+msgstr "ネットワークを介して同期するのに使う索引を再構築"
+
+#: commands.cc:1902
 #, c-format
 msgid "setting default server to %s\n"
-msgstr "デフォルトのサーバーを %s に設定しています\n"
+msgstr "デフォルトのサーバーを %s に設定\n"

-#: commands.cc:2005
+#: commands.cc:1908
+#, c-format
 msgid "no hostname given"
 msgstr "ホスト名を指定して下さい"

-#: commands.cc:2007
+#: commands.cc:1910
+#, c-format
 msgid "no server given and no default server set"
 msgstr "サーバが未指定であり、デフォルトのサーバーも設定されていません"

-#: commands.cc:2011
+#: commands.cc:1914
 #, c-format
 msgid "using default server address: %s\n"
 msgstr "デフォルトのサーバーアドレスを利用: %s\n"

-#: commands.cc:2023
+#: commands.cc:1926
 #, c-format
 msgid "setting default branch include pattern to '%s'\n"
-msgstr "ブランチ名に含めるデフォルトパターンを '%s' に設定しています\n"
+msgstr "ブランチ名に含めるデフォルトパターンを '%s' に設定\n"

-#: commands.cc:2029
+#: commands.cc:1932
 #, c-format
 msgid "setting default branch exclude pattern to '%s'\n"
-msgstr "ブランチ名に含めないデフォルトパターンを '%s' に設定しています\n"
+msgstr "ブランチ名に含めないデフォルトパターンを '%s' に設定\n"

-#: commands.cc:2035
+#: commands.cc:1938
+#, c-format
 msgid "no branch pattern given"
 msgstr "ブランチ名を指定して下さい"

-#: commands.cc:2037
+#: commands.cc:1940
+#, c-format
 msgid "no branch pattern given and no default pattern set"
 msgstr "ブランチパターンが未指定、かつデフォルトパターンも設定されていません"

-#: commands.cc:2041
+#: commands.cc:1944
 #, c-format
 msgid "using default branch include pattern: '%s'\n"
 msgstr "ブランチ名に含めるデフォルトのパターンを利用: '%s'\n"

-#: commands.cc:2049
+#: commands.cc:1952
 #, c-format
 msgid "excluding: %s\n"
 msgstr "除外: %s\n"

-#: commands.cc:2061 commands.cc:2090 commands.cc:2107
+#: commands.cc:1956 commands.cc:1971 commands.cc:1985
+msgid "[ADDRESS[:PORTNUMBER] [PATTERN]]"
+msgstr "[ADDRESS[:PORTNUMBER] [PATTERN]]"
+
+#: commands.cc:1957
+msgid "push branches matching PATTERN to netsync server at ADDRESS"
+msgstr "PATTERN に合うブランチを netsync サーバー (ADDRESS) にプッシュ"
+
+#: commands.cc:1964 commands.cc:1993 commands.cc:2010
+#, c-format
 msgid "could not guess default signing key"
 msgstr "デフォルトの署名鍵を推測できませんでした"

-#: commands.cc:2076
+#: commands.cc:1972
+msgid "pull branches matching PATTERN from netsync server at ADDRESS"
+msgstr "PATTERN に合うブランチを netsync サーバー (ADDRESS) から取り込み"
+
+#: commands.cc:1979
+#, c-format
 msgid "doing anonymous pull; use -kKEYNAME if you need authentication\n"
-msgstr "匿名 pull を実行中. 認証が必要な場合は -kKEYNAME を使って下さい\n"
+msgstr "匿名で取り込んでいます; 認証が必要な場合は -kKEYNAME を使って下さい\n"

-#: commands.cc:2111
+#: commands.cc:1986
+msgid "sync branches matching PATTERN with netsync server at ADDRESS"
+msgstr "PATTERN に合うブランチを netsync サーバー (ADDRESS) と同期"
+
+#: commands.cc:2000
+msgid "ADDRESS[:PORTNUMBER] PATTERN ..."
+msgstr "ADDRESS[:PORTNUMBER] PATTERN ..."
+
+#: commands.cc:2001
 msgid ""
+"listen on ADDRESS and serve the specified branches to connecting clients"
+msgstr "ADDRESS で待機し、指定ブランチを接続クライアントに提供"
+
+#: commands.cc:2014
+#, c-format
+msgid ""
 "need permission to store persistent passphrase (see hook persist_phrase_ok())"
+msgstr "永続的にパスフレーズを保存しておきたいのなら権限が必要です "
+"(フック persist_phrase_ok() を参照して下さい)"
+
+#: commands.cc:2024
+msgid "database"
+msgstr "データベース"
+
+#: commands.cc:2025
+msgid ""
+"init\n"
+"info\n"
+"version\n"
+"dump\n"
+"load\n"
+"migrate\n"
+"execute\n"
+"kill_rev_locally ID\n"
+"kill_branch_certs_locally BRANCH\n"
+"kill_tag_locally TAG\n"
+"check\n"
+"changesetify\n"
+"rebuild\n"
+"set_epoch BRANCH EPOCH\n"
 msgstr ""
-"永続的にパスフレーズを保存しておきたいのなら権限が必要です (フック "
-"persist_phrase_ok() を参照して下さい)"
+"init\n"
+"info\n"
+"version\n"
+"dump\n"
+"load\n"
+"migrate\n"
+"execute\n"
+"kill_rev_locally ID\n"
+"kill_branch_certs_locally BRANCH\n"
+"kill_tag_locally TAG\n"
+"check\n"
+"changesetify\n"
+"rebuild\n"
+"set_epoch BRANCH EPOCH\n"

-#: commands.cc:2210
-#, c-format
-msgid "file '%s' not found"
-msgstr "ファイル '%s' がみつかりません"
+#: commands.cc:2039
+msgid "manipulate database state"
+msgstr "データベースの状態を操作"

-#: commands.cc:2278 work.cc:114
+#: commands.cc:2092
+msgid ""
+"set FILE ATTR VALUE\n"
+"get FILE [ATTR]\n"
+"drop FILE"
+msgstr ""
+"set FILE ATTR VALUE\n"
+"get FILE [ATTR]\n"
+"drop FILE"
+
+#: commands.cc:2093
+msgid "set, get or drop file attributes"
+msgstr "ファイル属性を設定/取得/削除"
+
+#: commands.cc:2181 work.cc:113
 #, c-format
 msgid "registering %s file in working copy\n"
-msgstr "作業コピー内の %s ファイルを登録中\n"
+msgstr "作業コピー内の %s ファイルを登録\n"

-#: commands.cc:2307
+#: commands.cc:2210
 #, c-format
 msgid "failed to parse date string '%s': %s"
 msgstr "データ文字列 '%s' の解析に失敗: %s"

-#: commands.cc:2311
-#, c-format
-msgid "failed to parse date string '%s'"
-msgstr "データ文字列 '%s' の解析に失敗"
+#: commands.cc:2216
+msgid "commit working copy to database"
+msgstr "作業コピーをデータベースにコミット"

-#: commands.cc:2335
+#: commands.cc:2234
+#, c-format
 msgid "no changes to commit\n"
 msgstr "コミットすべき変更がありません\n"

-#: commands.cc:2346
+#: commands.cc:2245
 #, c-format
 msgid "beginning commit on branch '%s'\n"
 msgstr "ブランチ '%s' についてコミット開始\n"

-#: commands.cc:2347
+#: commands.cc:2246
 #, c-format
-msgid "new manifest %s\n"
-msgstr "新規マニフェスト %s\n"
+msgid ""
+"new manifest '%s'\n"
+"new revision '%s'\n"
+msgstr "新規マニフェスト '%s'\n"
+"新規リビジョン '%s'\n"

-#: commands.cc:2348
+#: commands.cc:2253
 #, c-format
-msgid "new revision %s\n"
-msgstr "新規リビジョン %s\n"
-
-#: commands.cc:2352
 msgid "--message and --message-file are mutually exclusive"
 msgstr "--message と --message-file を同時に指定することはできません"

-#: commands.cc:2355
+#: commands.cc:2256
+#, c-format
 msgid ""
 "MT/log is non-empty and --message supplied\n"
 "perhaps move or delete MT/log,\n"
@@ -1008,7 +1300,8 @@ msgstr ""
 "もしかしたら MT/log を移動/削除したか、コマンド\n"
 "行から --message を削除したのではありませんか?"

-#: commands.cc:2360
+#: commands.cc:2261
+#, c-format
 msgid ""
 "MT/log is non-empty and --message-file supplied\n"
 "perhaps move or delete MT/log,\n"
@@ -1018,588 +1311,1072 @@ msgstr ""
 "もしかしたら MT/log を移動/削除したか、コマンド\n"
 "行から --message-file を削除したのではありませんか?"

-#: commands.cc:2390
+#: commands.cc:2279
 #, c-format
+msgid "empty log message; commit canceled"
+msgstr "空のログメッセージ; コミットは取り消されました"
+
+#: commands.cc:2291
+#, c-format
 msgid "revision %s already in database\n"
 msgstr "リビジョン %s は既にデータベース内に存在しています\n"

-#: commands.cc:2395
+#: commands.cc:2296
 #, c-format
 msgid "inserting new revision %s\n"
 msgstr "新規リビジョン %s を挿入中\n"

-#: commands.cc:2404
+#: commands.cc:2305
 #, c-format
 msgid "skipping manifest %s, already in database\n"
-msgstr "既にデータベースにあるマニフェスト %s をスキップしています\n"
+msgstr "既にデータベースにあるマニフェスト %s をスキップ\n"

-#: commands.cc:2408
+#: commands.cc:2309
 #, c-format
 msgid "inserting manifest delta %s -> %s\n"
 msgstr "マニフェスト差分 %s -> %s を挿入中\n"

-#: commands.cc:2419
+#: commands.cc:2320
 #, c-format
 msgid "inserting full manifest %s\n"
 msgstr "完全マニフェスト %s を挿入中\n"

-#: commands.cc:2432
+#: commands.cc:2333
 #, c-format
 msgid "skipping file delta %s, already in database\n"
-msgstr "既にデータベースにあるファイル差分 %s をスキップしています\n"
+msgstr "既にデータベースにあるファイル差分 %s をスキップ\n"

-#: commands.cc:2438
+#: commands.cc:2339
 #, c-format
 msgid "inserting delta %s -> %s\n"
 msgstr "差分 %s -> %s を挿入中\n"

-#: commands.cc:2448 commands.cc:2465
+#: commands.cc:2349 commands.cc:2366
 #, c-format
 msgid "file '%s' modified during commit, aborting"
 msgstr "ファイル '%s' は commit 前に変更されました. 中止します"

-#: commands.cc:2458
+#: commands.cc:2359
 #, c-format
 msgid "inserting full version %s\n"
 msgstr "完全なバージョン %s を挿入中\n"

-#: commands.cc:2492
+#: commands.cc:2393
 #, c-format
 msgid "committed revision %s\n"
 msgstr "リビジョン %s をコミット\n"

-#: commands.cc:2498
+#: commands.cc:2399
+#, c-format
 msgid ""
 "note: this revision creates divergence\n"
 "note: you may (or may not) wish to run 'monotone merge'"
-msgstr ""
-"注意: このリビジョンによって分岐が生じます\n"
+msgstr "注意: このリビジョンによって分岐が生じます\n"
 "注意: 分岐を望まないなら 'monotone merge' を実行して下さい"

-#: commands.cc:2607
-#, c-format
-msgid "--- %s\t%s\n"
-msgstr "--- %s\t%s\n"
+#: commands.cc:2562
+msgid ""
+"show current diffs on stdout.\n"
+"If one revision is given, the diff between the working directory and\n"
+"that revision is shown.  If two revisions are given, the diff between\n"
+"them is given.  If no format is specified, unified is used by default."
+msgstr "現在の差分を標準出力に表示\n"
+"リビジョンが一つ指定されていれば作業ディレクトリとそのリビジョンの\n"
+"差分を、二つ指定されていればそれらリビジョン間の差分を表示します。\n"
+"形式が指定されていなければ、デフォルトでは unified 形式が使用されます。"

-#: commands.cc:2608
+#: commands.cc:2578
 #, c-format
-msgid "+++ %s\t%s\n"
-msgstr "+++ %s\t%s\n"
+msgid ""
+"--diff-args requires --external\n"
+"try adding --external or removing --diff-args?"
+msgstr ""
+"--diff-args は --external を必要とします。\n"
+"--external を追加するか、--diff-args を省いてみてはどうですか?"

-#: commands.cc:2609
+#: commands.cc:2612
 #, c-format
-msgid "@@ -0,0 +1,%d @@\n"
-msgstr "@@ -0,0 +1,%d @@\n"
-
-#: commands.cc:2695 commands.cc:2711 commands.cc:2715
-#, c-format
-msgid "revision %s does not exist"
-msgstr "リビジョン %s は存在しません"
-
-#: commands.cc:2699
 msgid "current revision has no ancestor"
 msgstr "現在のリビジョンには祖先がありません"

-#: commands.cc:2742
+#: commands.cc:2651
 #, c-format
 msgid "no common ancestor for %s and %s"
 msgstr "%s と %s には共通の祖先がありません"

-#: commands.cc:2748
+#: commands.cc:2657
+#, c-format
 msgid "concatenating un-committed changeset to composite\n"
-msgstr "合成のためにコミットされていない変更セットを連結しています\n"
+msgstr "合成のためにコミットされていない変更セットを連結\n"

-#: commands.cc:2774
-msgid "# no changes"
-msgstr "# 変更点なし"
+#: commands.cc:2694 commands.cc:2711
+msgid "LEFT RIGHT"
+msgstr "LEFT RIGHT"

-#: commands.cc:2902
+#: commands.cc:2694
+msgid "print least common ancestor"
+msgstr "最も近い祖先を表示"
+
+#: commands.cc:2707
+msgid "no common ancestor found"
+msgstr "共通の祖先はありませんでした"
+
+#: commands.cc:2711
+msgid "print least common ancestor / dominator"
+msgstr "最も近い祖先 / 支配者を表示"
+
+#: commands.cc:2725
+msgid "no common ancestor/dominator found"
+msgstr "共通の祖先 / 支配者がみつかりません"
+
+#: commands.cc:2750
 #, c-format
 msgid "updating %s to %s\n"
 msgstr "%s を %s に更新中\n"

-#: commands.cc:2951
+#: commands.cc:2774
+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 ""
+"作業コピーを更新。\n"
+"リビジョンが指定されていればそれに基づいて、指定されていなければ\n"
+"明示的または暗黙に指定されたブランチの最新版に基づいて更新します。"
+
+#: commands.cc:2799
+#, c-format
 msgid "this working directory is a new project; cannot update"
 msgstr "この作業ディレクトリは新規のプロジェクトです; 更新できません"

-#: commands.cc:2958
+#: commands.cc:2806
+#, c-format
 msgid ""
 "your request matches no descendents of the current revision\n"
 "in fact, it doesn't even match the current revision\n"
 "maybe you want --revision=<rev on other branch>"
-msgstr ""
-"現在のリビジョンにもその子孫にもご希望に沿うものはありません.\n"
+msgstr "現在のリビジョンにもその子孫にもご希望に沿うものはありません.\n"
 "もしかしたら --revision=<他のブランチのリビジョン> としたいのでは\n"
 "ありませんか?"

-#: commands.cc:2963
+#: commands.cc:2811
+#, c-format
 msgid "multiple update candidates:\n"
 msgstr "複数の更新候補:\n"

-#: commands.cc:2966
+#: commands.cc:2815
 #, c-format
-msgid "  %s\n"
-msgstr "  %s\n"
+msgid "choose one with 'monotone update -r<id>'\n"
+msgstr "'monotone update -r<id>' として一つ選択\n"

-#: commands.cc:2967
-msgid "choose one with 'monotone update <id>'\n"
-msgstr "'monotone update <id>' として一つ選択\n"
-
-#: commands.cc:2968
+#: commands.cc:2816
+#, c-format
 msgid "multiple candidates remain after selection"
-msgstr "選択より後ろに複数の候補が残っています"
+msgstr "選択したものより後に複数の候補が残っています"

-#: commands.cc:2983
+#: commands.cc:2831
 #, c-format
 msgid "already up to date at %s\n"
 msgstr "%s は既に最新です\n"

-#: commands.cc:2987
+#: commands.cc:2835
 #, c-format
 msgid "selected update target %s\n"
 msgstr "選択された更新ターゲット %s\n"

-#: commands.cc:2999
+#: commands.cc:2847
 #, c-format
 msgid ""
 "revision %s is not a member of branch %s\n"
 "try again with explicit --branch\n"
-msgstr ""
-"リビジョン %s はブランチ %s に属していません\n"
+msgstr "リビジョン %s はブランチ %s に属していません\n"
 "明示的に --branch を指定して再試行して下さい\n"

-#: commands.cc:3014
+#: commands.cc:2862
 #, c-format
 msgid "updating along chosen edge %s -> %s\n"
 msgstr "選択した先端 %s -> %s に従って更新中\n"

-#: commands.cc:3025
+#: commands.cc:2873
 #, c-format
 msgid "merging working copy with chosen edge %s -> %s\n"
 msgstr "作業コピーを選択した先端 %s -> %s と統合中\n"

-#: commands.cc:3074
+#: commands.cc:2922
 #, c-format
 msgid "updated to base revision %s\n"
-msgstr "ベースリビジョン %s に更新\n"
+msgstr "基準リビジョン %s に更新\n"

-#: commands.cc:3140
+#: commands.cc:2988
 #, c-format
-msgid "common ancestor %s found\n"
+msgid ""
+"common ancestor %s found\n"
+"trying 3-way merge\n"
 msgstr "共通の祖先 %s を発見\n"
+"3方結合を試みています\n"

-#: commands.cc:3141
-msgid "trying 3-way merge\n"
-msgstr "3 方向統合を試行中\n"
-
-#: commands.cc:3151
+#: commands.cc:2999
+#, c-format
 msgid "no common ancestor found, synthesizing edges\n"
 msgstr "共通の祖先がありませんでしたので、先端同士を同期中\n"

-#: commands.cc:3215
+#: commands.cc:3049
+msgid "merge unmerged heads of branch"
+msgstr "統合されていないブランチの複数の最新版を統合"
+
+#: commands.cc:3063
 #, c-format
 msgid "branch '%s' is merged\n"
 msgstr "ブランチ '%s' を統合\n"

-#: commands.cc:3221
+#: commands.cc:3069
 #, c-format
 msgid "starting with revision 1 / %d\n"
 msgstr "リビジョン 1 / %d について作業開始\n"

-#: commands.cc:3225
+#: commands.cc:3073
 #, c-format
 msgid "merging with revision %d / %d\n"
 msgstr "リビジョン %d / %d について統合中\n"

-#: commands.cc:3226 commands.cc:3227 commands.cc:3294 commands.cc:3378
-#: commands.cc:3379
+#: commands.cc:3074 commands.cc:3075 commands.cc:3142 commands.cc:3226
+#: commands.cc:3227
 #, c-format
 msgid "[source] %s\n"
 msgstr "[元] %s\n"

-#: commands.cc:3239
+#: commands.cc:3092 commands.cc:3179 commands.cc:3246
 #, c-format
-msgid ""
-"merge of %s\n"
-"     and %s\n"
-msgstr ""
-"%s と\n"
-"     %s の統合\n"
-
-#: commands.cc:3244 commands.cc:3331 commands.cc:3398
-#, c-format
 msgid "[merged] %s\n"
 msgstr "[統合済み] %s\n"

-#: commands.cc:3247
+#: commands.cc:3095
+#, c-format
 msgid "note: your working copies have not been updated\n"
 msgstr "注意: 作業コピーは更新されていません\n"

-#: commands.cc:3285 commands.cc:3288
+#: commands.cc:3098
+msgid "SOURCE-BRANCH DEST-BRANCH"
+msgstr "SOURCE-BRANCH DEST-BRANCH"
+
+#: commands.cc:3099
+msgid "merge from one branch to another asymmetrically"
+msgstr "一方のブランチを他方に非同期に統合"
+
+#: commands.cc:3133 commands.cc:3136
 #, c-format
 msgid "branch '%s' is not merged\n"
 msgstr "ブランチ '%s' は統合されていません\n"

-#: commands.cc:3293
+#: commands.cc:3141
 #, c-format
 msgid "propagating %s -> %s\n"
 msgstr "伝播中 %s -> %s\n"

-#: commands.cc:3295
+#: commands.cc:3143
 #, c-format
 msgid "[target] %s\n"
 msgstr "[先] %s\n"

-#: commands.cc:3300
+#: commands.cc:3148
 #, c-format
 msgid "branch '%s' is up-to-date with respect to branch '%s'\n"
 msgstr "ブランチ '%s' はブランチ '%s' に対して最新です\n"

-#: commands.cc:3302
+#: commands.cc:3150
+#, c-format
 msgid "no action taken\n"
 msgstr "何もしません\n"

-#: commands.cc:3306
+#: commands.cc:3154
 #, c-format
 msgid "no merge necessary; putting %s in branch '%s'\n"
 msgstr "統合は必要ありません. %s をブランチ '%s' 内に取り込み中\n"

-#: commands.cc:3323
-#, c-format
+#: commands.cc:3183
+msgid "refresh the inodeprint cache"
+msgstr "i-node 表示キャッシュを更新"
+
+#: commands.cc:3191
 msgid ""
-"propagate from branch '%s' (head %s)\n"
-"            to branch '%s' (head %s)\n"
+"LEFT-REVISION RIGHT-REVISION DEST-BRANCH\n"
+"LEFT-REVISION RIGHT-REVISION COMMON-ANCESTOR DEST-BRANCH"
 msgstr ""
-"ブランチ '%s' (ヘッド %s) から伝播\n"
-"ブランチ '%s' (ヘッド %s) へ\n"
+"LEFT-REVISION RIGHT-REVISION DEST-BRANCH\n"
+"LEFT-REVISION RIGHT-REVISION COMMON-ANCESTOR DEST-BRANCH"

-#: commands.cc:3360 commands.cc:3362
+#: commands.cc:3193
+msgid "merge two explicitly given revisions, placing result in given branch"
+msgstr "明示的に指定した二つのリビジョンを統合。結果は指定ブランチへ。"
+
+#: commands.cc:3208 commands.cc:3210
 #, c-format
 msgid "%s is not an ancestor of %s"
 msgstr "%s は %s の祖先ではありません"

-#: commands.cc:3371
+#: commands.cc:3219
 #, c-format
 msgid "%s and %s are the same revision, aborting"
 msgstr "%s と %s は同じリビジョンです. 中止します"

-#: commands.cc:3373 commands.cc:3375
+#: commands.cc:3221 commands.cc:3223
 #, c-format
 msgid "%s is already an ancestor of %s"
 msgstr "%s は既に %s の祖先となっています"

-#: commands.cc:3389
+#: commands.cc:3249
+msgid "(revision|manifest|file|key) PARTIAL-ID"
+msgstr "(revision|manifest|file|key) PARTIAL-ID"
+
+#: commands.cc:3250
+msgid "complete partial id"
+msgstr "部分 ID を補完"
+
+#: commands.cc:3259
 #, c-format
-msgid ""
-"explicit_merge of %s\n"
-"              and %s\n"
-"   using ancestor %s\n"
-"        to branch '%s'\n"
-msgstr ""
-"%s と %s の explicit_merge\n"
-"祖先 %s をブランチ '%s' に使用\n"
-
-#: commands.cc:3411
 msgid "non-hex digits in partial id"
 msgstr "部分 ID に十六進数が含まれていません"

-#: commands.cc:3497
+#: commands.cc:3307
+msgid "revert file(s), dir(s) or entire working copy"
+msgstr "ファイル、ディレクトリまたは完全な作業コピーの変更を破棄"
+
+#: commands.cc:3345
 #, c-format
 msgid "reverting %s from %s to %s\n"
 msgstr "%s を %s から %s へ戻しています\n"

-#: commands.cc:3501
+#: commands.cc:3349
 #, c-format
 msgid "no file version %s found in database for %s"
 msgstr "バージョン %s のファイルはデータベース内にみつかりません (対象: %s)"

-#: commands.cc:3616
+#: commands.cc:3366
+msgid "RCSFILE..."
+msgstr "RCSFILE..."
+
+#: commands.cc:3367
+msgid ""
+"parse versions in RCS files\n"
+"this command doesn't reconstruct or import revisions.you probably want "
+"cvs_import"
+msgstr ""
+"RCS ファイル内のバージョンを解析\n"
+"このコマンドは (CVS の) リビジョンを再構築または取り込みはしません。"
+"おそらくあなたの期待しているのは cvs_import でしょう。"
+
+#: commands.cc:3383
+msgid "rcs"
+msgstr "RCS 関連"
+
+#: commands.cc:3383
+msgid "CVSROOT"
+msgstr "CVSROOT"
+
+#: commands.cc:3383
+msgid "import all versions in CVS repository"
+msgstr "CVS リポジトリ内のすべてのバージョンを取り込む"
+
+#: commands.cc:3446
+msgid "PATH"
+msgstr "PATH"
+
+#: commands.cc:3447
+msgid "print annotated copy of the file from REVISION"
+msgstr "REVISION の注釈付きのファイルのコピーを表示"
+
+#: commands.cc:3464
 #, c-format
 msgid "no revision for file '%s' in database"
 msgstr "ファイル '%s' に対するリビジョンはデータベース内にみつかりませんでした"

-#: commands.cc:3619
+#: commands.cc:3467
 #, c-format
 msgid "annotate file file_path '%s'\n"
 msgstr "注釈ファイル file_path '%s'\n"

-#: commands.cc:3628
+#: commands.cc:3476
 #, c-format
-msgid "No such file '%s' in revision %s\n"
+msgid "no such file '%s' in revision '%s'\n"
 msgstr "ファイル '%s' はリビジョン %s 内にはありません\n"

-#: commands.cc:3630
+#: commands.cc:3478
 #, c-format
 msgid "annotate for file_id %s\n"
 msgstr "file_id %s に対する注釈\n"

-#: commands.cc:3696
+#: commands.cc:3483
+msgid "[FILE]"
+msgstr "[FILE]"
+
+#: commands.cc:3484
+msgid ""
+"print history in reverse order (filtering by 'FILE'). If one or more\n"
+"revisions are given, use them as a starting point."
+msgstr ""
+"降順で履歴を表示 ('FILE' でフィルタ)。一つ以上のリビジョンが指定されて\n"
+"いればそれを開始点として利用。"
+
+#: commands.cc:3544
 #, c-format
 msgid "revision %s does not exist in db, skipping\n"
 msgstr "リビジョン %s は db 内にありません. スキップします\n"

-#: commands.cc:3729
+#: commands.cc:3577
 #, c-format
 msgid "revision '%s' in '%s' maps to '%s' in %s\n"
 msgstr "リビジョン '%s' ('%s' 内) を '%s' (%s 内) にマップ\n"

-#: commands.cc:3877
+#: commands.cc:3651
+msgid "DIRECTORY"
+msgstr "DIRECTORY"
+
+#: commands.cc:3651
+msgid "setup a new working copy directory"
+msgstr "新規作業コピーディレクトリを作成"
+
+#: commands.cc:3657
 #, c-format
+msgid "need --branch argument for setup"
+msgstr "作成には --branch 引数が必要です"
+
+#: commands.cc:3666
+msgid "automation"
+msgstr "自動化"
+
+#: commands.cc:3667
+msgid ""
+"interface_version\n"
+"heads [BRANCH]\n"
+"ancestors REV1 [REV2 [REV3 [...]]]\n"
+"attributes [FILE]\n"
+"parents REV\n"
+"descendents REV1 [REV2 [REV3 [...]]]\n"
+"children REV\n"
+"graph\n"
+"erase_ancestors [REV1 [REV2 [REV3 [...]]]]\n"
+"toposort [REV1 [REV2 [REV3 [...]]]]\n"
+"ancestry_difference NEW_REV [OLD_REV1 [OLD_REV2 [...]]]\n"
+"leaves\n"
+"inventory\n"
+"stdio\n"
+"certs REV\n"
+"select SELECTOR\n"
+"get_file ID\n"
+"get_manifest [ID]\n"
+"get_revision [ID]\n"
+msgstr ""
+"interface_version\n"
+"heads [BRANCH]\n"
+"ancestors REV1 [REV2 [REV3 [...]]]\n"
+"attributes [FILE]\n"
+"parents REV\n"
+"descendents REV1 [REV2 [REV3 [...]]]\n"
+"children REV\n"
+"graph\n"
+"erase_ancestors [REV1 [REV2 [REV3 [...]]]]\n"
+"toposort [REV1 [REV2 [REV3 [...]]]]\n"
+"ancestry_difference NEW_REV [OLD_REV1 [OLD_REV2 [...]]]\n"
+"leaves\n"
+"inventory\n"
+"stdio\n"
+"certs REV\n"
+"select SELECTOR\n"
+"get_file ID\n"
+"get_manifest [ID]\n"
+"get_revision [ID]\n"
+
+#: commands.cc:3686
+msgid "automation interface"
+msgstr "自動化インターフェース"
+
+#: commands.cc:3700 commands.cc:3716
+msgid "vars"
+msgstr "変数"
+
+#: commands.cc:3700
+msgid "DOMAIN NAME VALUE"
+msgstr "DOMAIN NAME VALUE"
+
+#: commands.cc:3701
+msgid "set the database variable NAME to VALUE, in domain DOMAIN"
+msgstr "ドメイン DOMAIN のデータベース変数 NAME を VALUE に設定"
+
+#: commands.cc:3716
+msgid "DOMAIN NAME"
+msgstr "DOMAIN NAME"
+
+#: commands.cc:3717
+msgid "remove the database variable NAME in domain DOMAIN"
+msgstr "ドメイン DOMAIN のデータベース変数 NAME を消去"
+
+#: commands.cc:3728
+#, c-format
 msgid "no var with name %s in domain %s"
 msgstr "%s という変数はドメイン %s 内にはありません"

-#: database.cc:82
+#: database_check.cc:109
 #, c-format
+msgid "checking %d files\n"
+msgstr "%d 個のファイルを検証中\n"
+
+#: database_check.cc:111
+msgid "files"
+msgstr "ファイル"
+
+#: database_check.cc:116
+#, c-format
+msgid "checking file %s\n"
+msgstr "ファイル %s を検証中\n"
+
+#: database_check.cc:134
+#, c-format
+msgid "checking %d manifests\n"
+msgstr "%d 個のマニフェストを検証中\n"
+
+#: database_check.cc:136 rcs_import.cc:1259
+msgid "manifests"
+msgstr "マニフェスト"
+
+#: database_check.cc:141
+#, c-format
+msgid "checking manifest %s\n"
+msgstr "マニフェスト %s を検証中\n"
+
+#: database_check.cc:153
+#, c-format
+msgid "error parsing manifest %s: %s"
+msgstr "マニフェスト %s: %s を解析中にエラー"
+
+#: database_check.cc:190
+#, c-format
+msgid "checking %d revisions\n"
+msgstr "%d 個のリビジョンを検証中\n"
+
+#: database_check.cc:192 database_check.cc:380 netsync.cc:3718
+#: rcs_import.cc:1258
+msgid "revisions"
+msgstr "リビジョン"
+
+#: database_check.cc:197
+#, c-format
+msgid "checking revision %s\n"
+msgstr "リビジョン %s を検証中\n"
+
+#: database_check.cc:209
+#, c-format
+msgid "error parsing revision %s: %s"
+msgstr "リビジョン %s: %s を解析中にエラー"
+
+#: database_check.cc:277
+#, c-format
+msgid "checked %d revisions after starting with %d\n"
+msgstr "%d 個のリビジョンを %d からはじめて検証しました\n"
+
+#: database_check.cc:289
+#, c-format
+msgid "checking %d ancestry edges\n"
+msgstr "%d 個の祖先の端を検証中\n"
+
+#: database_check.cc:291
+msgid "ancestry"
+msgstr "祖先"
+
+#: database_check.cc:322
+#, c-format
+msgid "checking %d public keys\n"
+msgstr "%d 個の公開鍵を検証中\n"
+
+#: database_check.cc:324 netsync.cc:3722
+msgid "keys"
+msgstr "鍵"
+
+#: database_check.cc:348
+#, c-format
+msgid "checking %d revision certs\n"
+msgstr "%d 個のリビジョン証明を検証中\n"
+
+#: database_check.cc:350 netsync.cc:3720
+msgid "certs"
+msgstr "証明"
+
+#: database_check.cc:378
+#, c-format
+msgid "checking local history of %d revisions\n"
+msgstr "%d 個のリビジョンのローカルの履歴を検証中\n"
+
+#: database_check.cc:413
+#, c-format
+msgid "file %s missing (%d manifest references)\n"
+msgstr "ファイル %s がありません (マニフェスト参照: %d)\n"
+
+#: database_check.cc:420
+#, c-format
+msgid "file %s unreferenced\n"
+msgstr "ファイル %s は参照されていません\n"
+
+#: database_check.cc:442
+#, c-format
+msgid "manifest %s missing (%d revision references)\n"
+msgstr "マニフェスト %s がありません (リビジョン参照: %d)\n"
+
+#: database_check.cc:449
+#, c-format
+msgid "manifest %s unreferenced\n"
+msgstr "マニフェスト %s は参照されていません\n"
+
+#: database_check.cc:455
+#, c-format
+msgid "manifest %s incomplete (%d missing files)\n"
+msgstr "マニフェスト %s は不完全です (みつからないファイル: %d)\n"
+
+#: database_check.cc:462
+#, c-format
+msgid "manifest %s is not parseable (perhaps with unnormalized paths?)\n"
+msgstr "マニフェスト %s を解析できません (パスが正規化されていないのでは?)\n"
+
+#: database_check.cc:469
+#, c-format
+msgid "manifest %s is not in normalized form\n"
+msgstr "マニフェスト %s は正規化された形式になっていません\n"
+
+#: database_check.cc:493
+#, c-format
+msgid "revision %s missing (%d revision references; %d cert references)\n"
+msgstr "リビジョン %s がありません (リビジョン参照: %d, 証明参照: %d)\n"
+
+#: database_check.cc:500
+#, c-format
+msgid "revision %s incomplete (%d missing manifests)\n"
+msgstr "リビジョン %s は不完全です (みつからないマニフェスト: %d)\n"
+
+#: database_check.cc:507
+#, c-format
+msgid "revision %s incomplete (%d missing revisions)\n"
+msgstr "リビジョン %s は不完全です (みつからないリビジョン: %d)\n"
+
+#: database_check.cc:514
+#, c-format
+msgid "revision %s incomplete (%d incomplete manifests)\n"
+msgstr "リビジョン %s は不完全です (不完全なマニフェスト: %d)\n"
+
+#: database_check.cc:521
+#, c-format
 msgid ""
+"revision %s mismatched parents (%d ancestry parents; %d revision refs)\n"
+msgstr "リビジョン %s は親と不一致です (親: %d; リビジョン参照: %d)\n"
+
+#: database_check.cc:530
+#, c-format
+msgid "revision %s mismatched children (%d ancestry children; %d parents)\n"
+msgstr "リビジョン %s は子と不一致です (子: %d; 親: %d)\n"
+
+#: database_check.cc:542
+#, c-format
+msgid "revision %s has bad history (%s)\n"
+msgstr "リビジョン %s は不正な履歴 (%s) を持っています\n"
+
+#: database_check.cc:549
+#, c-format
+msgid "revision %s is not parseable (perhaps with unnormalized paths?)\n"
+msgstr "リビジョン %s を解析できません (パスが正規化されていないのでは?)\n"
+
+#: database_check.cc:556
+#, c-format
+msgid "revision %s is not in normalized form\n"
+msgstr "リビジョン %s は正規化された形式ではありません\n"
+
+#: database_check.cc:573
+#, c-format
+msgid "key %s signed %d certs\n"
+msgstr "鍵 %s は %d 個の証明の署名に使われています\n"
+
+#: database_check.cc:580
+#, c-format
+msgid "key %s missing (signed %d certs)\n"
+msgstr "鍵 %s がありません (%d 個の証明を署名)\n"
+
+#: database_check.cc:613
+#, c-format
+msgid "revision %s unchecked signature in %s cert from missing key %s\n"
+msgstr "リビジョン %s の %s 証明(失われた鍵 %s) "
+"の署名は検証されたものではありません\n"
+
+#: database_check.cc:621
+#, c-format
+msgid "revision %s bad signature in %s cert from key %s\n"
+msgstr "リビジョン %s の %s 証明 (鍵 %s) の不正な署名を無視します\n"
+
+#: database_check.cc:636
+#, c-format
+msgid "revision %s missing %s cert\n"
+msgstr "リビジョン %s は %s 証明を欠いています\n"
+
+#: database_check.cc:645
+#, c-format
+msgid "revision %s mismatched certs (%d authors %d dates %d changelogs)\n"
+msgstr "リビジョン %s は証明に合致しません (%d 作者 %d 日時 %d 変更ログ)\n"
+
+#: database_check.cc:717
+#, c-format
+msgid "%d missing files\n"
+msgstr "みつからないファイル: %d\n"
+
+#: database_check.cc:719
+#, c-format
+msgid "%d unreferenced files\n"
+msgstr "参照されていないファイル: %d\n"
+
+#: database_check.cc:722
+#, c-format
+msgid "%d missing manifests\n"
+msgstr "みつからないマニフェスト: %d\n"
+
+#: database_check.cc:724
+#, c-format
+msgid "%d unreferenced manifests\n"
+msgstr "参照されていないマニフェスト: %d\n"
+
+#: database_check.cc:726
+#, c-format
+msgid "%d incomplete manifests\n"
+msgstr "不完全なマニフェスト: %d\n"
+
+#: database_check.cc:728
+#, c-format
+msgid "%d manifests not parseable (perhaps with invalid paths)\n"
+msgstr "解析できないマニフェスト(不適切なパスを指定していませんか?): %d\n"
+
+#: database_check.cc:731
+#, c-format
+msgid "%d manifests not in normalized form\n"
+msgstr "正規化された形式になっていないマニフェスト: %d\n"
+
+#: database_check.cc:734
+#, c-format
+msgid "%d missing revisions\n"
+msgstr "みつからないリビジョン: %d\n"
+
+#: database_check.cc:736
+#, c-format
+msgid "%d incomplete revisions\n"
+msgstr "不完全なリビジョン: %d\n"
+
+#: database_check.cc:738
+#, c-format
+msgid "%d mismatched parents\n"
+msgstr "一致しない親: %d\n"
+
+#: database_check.cc:740
+#, c-format
+msgid "%d mismatched children\n"
+msgstr "一致しない子: %d\n"
+
+#: database_check.cc:742
+#, c-format
+msgid "%d revisions with bad history\n"
+msgstr "不正な履歴を持つリビジョン: %d\n"
+
+#: database_check.cc:744
+#, c-format
+msgid "%d revisions not parseable (perhaps with invalid paths)\n"
+msgstr "解析できないリビジョン (パスが不適切なのでは?): %d\n"
+
+#: database_check.cc:747
+#, c-format
+msgid "%d revisions not in normalized form\n"
+msgstr "正規化された形式になっていないリビジョン: %d\n"
+
+#: database_check.cc:750
+#, c-format
+msgid "%d missing keys\n"
+msgstr "みつからない鍵: %d\n"
+
+#: database_check.cc:753
+#, c-format
+msgid "%d missing certs\n"
+msgstr "みつからない証明: %d\n"
+
+#: database_check.cc:755
+#, c-format
+msgid "%d mismatched certs\n"
+msgstr "一致しない証明: %d\n"
+
+#: database_check.cc:757
+#, c-format
+msgid "%d unchecked signatures due to missing keys\n"
+msgstr "鍵がみつからないために検証されていない署名: %d\n"
+
+#: database_check.cc:759
+#, c-format
+msgid "%d bad signatures\n"
+msgstr "不正な署名: %d\n"
+
+#: database_check.cc:784
+#, c-format
+msgid ""
+"check complete: %d files; %d manifests; %d revisions; %d keys; %d certs\n"
+msgstr "検証完了: %d ファイル; %d マニフェスト; %d リビジョン; %d 鍵; %d 証明\n"
+
+#: database_check.cc:790
+#, c-format
+msgid "total problems detected: %d (%d serious)\n"
+msgstr "検出した障害総計: %d (深刻: %d)\n"
+
+#: database_check.cc:792
+#, c-format
+msgid "serious problems detected"
+msgstr "深刻な問題を検出しました"
+
+#: database_check.cc:794
+#, c-format
+msgid "minor problems detected\n"
+msgstr "軽微な問題を検出しました\n"
+
+#: database_check.cc:796
+#, c-format
+msgid "database is good\n"
+msgstr "データベースは正常です\n"
+
+#: database.cc:80
+#, c-format
+msgid ""
 "database schemas do not match: wanted %s, got %s. try migrating database"
-msgstr ""
-"データベーススキーマの不一致: 期待した %s ではなく %s を取得. データベースを"
-"統合してみて下さい"
+msgstr "データベーススキーマが一致しません: 結果は期待した %s ではなく"
+"%s。データベースを統合してみて下さい"

-#: database.cc:139
+#: database.cc:135 database.cc:197
 #, c-format
-msgid "database %s is a directory\n"
-msgstr "データベース %s はディレクトリです\n"
+msgid "database %s does not exist"
+msgstr "データベース %s は存在しません"

-#: database.cc:146
+#: database.cc:136
 #, c-format
+msgid "%s is a directory, not a database"
+msgstr "%s はデータベースではなくディレクトリです"
+
+#: database.cc:143
+#, c-format
 msgid "unable to probe database version in file %s"
 msgstr "ファイル %s 内のデータベースバージョンを検出できませんでした"

-#: database.cc:153
+#: database.cc:150
 #, c-format
 msgid "database %s is not an sqlite version 3 file, try dump and reload"
-msgstr ""
-"データベース %s は SQLite バージョン 3 のファイルではありません. ダンプした"
-"後、再度読み込んでみて下さい"
+msgstr "データベース %s は SQLite ver. 3 のファイルではありません。"
+"ダンプした後再度読み込んでみて下さい"

-#: database.cc:169
+#: database.cc:172 database.cc:183
 #, c-format
-msgid "sqlite error [%d]: %s"
-msgstr "SQLite エラー [%d]: %s"
+msgid "sqlite error: %d: %s"
+msgstr "SQLite エラー: %d: %s"

 #: database.cc:177
-msgid "no database specified"
-msgstr "データベース未指定"
+msgid "make sure database and containing directory are writeable"
+msgstr "データベースとそれを含むディレクトリが書き込み"
+"可能であるか確認して下さい"

-#: database.cc:182
+#: database.cc:198
 #, c-format
-msgid "database %s does not exist"
-msgstr "データベース %s は存在しません"
-
-#: database.cc:184
-#, c-format
 msgid "database %s is a directory"
 msgstr "データベース %s はディレクトリです"

-#: database.cc:213
+#: database.cc:224
 #, c-format
 msgid "could not initialize database: %s: already exists"
 msgstr "データベースを初期化できませんでした: %s: 既に存在しています"

-#: database.cc:218
+#: database.cc:229
 #, c-format
 msgid ""
 "existing (possibly stale) journal file '%s' has same stem as new database '%"
-"s'"
-msgstr ""
-"既存の (おそらく古い) ジャーナルファイル '%s' は新しいデータベース '%s' と同"
-"じ幹を持っています"
+"s'\n"
+"cancelling database creation"
+msgstr "既存の (おそらく古い) ジャーナルファイル '%s' は新しいデータベース "
+"'%s' と同じ幹を持っています\nデータベース作成を中止します"

-#: database.cc:243
+#: database.cc:348
 #, c-format
-msgid "INSERT INTO %s VALUES("
-msgstr "INSERT INTO %s VALUES("
+msgid "cannot create %s; it already exists"
+msgstr "%s を作成できません; 既に存在しています"

-#: database.cc:334 database.cc:435 database.cc:452
-msgid "need database name"
-msgstr "データベース名が必要です"
+#: database.cc:412
+#, c-format
+msgid ""
+"schema version    : %s\n"
+"counts:\n"
+"  full manifests  : %u\n"
+"  manifest deltas : %u\n"
+"  full files      : %u\n"
+"  file deltas     : %u\n"
+"  revisions       : %u\n"
+"  ancestry edges  : %u\n"
+"  certs           : %u\n"
+"bytes:\n"
+"  full manifests  : %u\n"
+"  manifest deltas : %u\n"
+"  full files      : %u\n"
+"  file deltas     : %u\n"
+"  revisions       : %u\n"
+"  cached ancestry : %u\n"
+"  certs           : %u\n"
+"  total           : %u\n"
+msgstr "スキーマバージョン  : %s\n"
+"個数:\n"
+"  完全なマニフェスト: %u\n"
+"  マニフェスト差分  : %u\n"
+"  完全なファイル    : %u\n"
+"  ファイル差分      : %u\n"
+"  リビジョン        : %u\n"
+"  祖先の先端        : %u\n"
+"  証明              : %u\n"
+"バイト数:\n"
+"  完全なマニフェスト: %u\n"
+"  マニフェスト差分  : %u\n"
+"  完全なファイル    : %u\n"
+"  ファイル差分      : %u\n"
+"  リビジョン        : %u\n"
+"  キャッシュ済の祖先: %u\n"
+"  証明              : %u\n"
+"  総計              : %u\n"

-#: database.cc:336
+#: database.cc:465
 #, c-format
-msgid "cannot create %s; it already exists\n"
-msgstr "%s を作成できません; 既に存在しています\n"
+msgid "database schema version: %s"
+msgstr "基準スキーマバージョン: %s"

-#: database.cc:530
+#: database.cc:483
+msgid "mcerts"
+msgstr "mcerts"
+
+#: database.cc:484
+msgid "pubkeys"
+msgstr "公開鍵"
+
+#: database.cc:485
+msgid "privkeys"
+msgstr "秘密鍵"
+
+#: database.cc:545
+#, c-format
 msgid "statement cache statistics\n"
 msgstr "ステートメントキャッシュ統計\n"

-#: database.cc:531
+#: database.cc:546
 #, c-format
 msgid "prepared %d statements\n"
 msgstr "%d 個のプリペアードステートメント\n"

-#: database.cc:536
+#: database.cc:551
 #, c-format
 msgid "%d executions of %s\n"
 msgstr "%d 実行 (%s)\n"

-#: database.cc:593
+#: database.cc:608
 #, c-format
 msgid "prepared statement %s\n"
 msgstr "プリペアードステートメント %s\n"

-#: database.cc:597
+#: database.cc:612
 #, c-format
 msgid "multiple statements in query: %s\n"
 msgstr "クエリ中に複数のステートメント: %s\n"

-#: database.cc:603
+#: database.cc:618
 #, c-format
 msgid "wanted %d columns got %d in query: %s\n"
-msgstr "%d 列要求しましたが得たのは %d 列です: %s\n"
+msgstr "クエリで %d 列要求しましたが得たのは %d 列です: %s\n"

-#: database.cc:609
+#: database.cc:624
 #, c-format
 msgid "binding %d parameters for %s\n"
 msgstr "%d 変数を %s にバインド\n"

-#: database.cc:623
+#: database.cc:638
 #, c-format
 msgid "binding %d with value '%s'\n"
 msgstr "%d を値 '%s' にバインド\n"

-#: database.cc:639
+#: database.cc:654
 #, c-format
 msgid "null result in query: %s\n"
 msgstr "クエリ中に結果 null が含まれています: %s\n"

-#: database.cc:657
+#: database.cc:672
 #, c-format
 msgid "wanted %d rows got %s in query: %s\n"
-msgstr "%d 行要求しましたが得たのは %s です: %s\n"
+msgstr "クエリで %d 行要求しましたが得たのは %s です: %s\n"

-#: database.cc:853
+#: database.cc:682
 #, c-format
-msgid "%08.8x