[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Monotone-commits-diffs] net.venge.monotone: 53e02eaa302bc05e96a18e3882b
From: |
code |
Subject: |
[Monotone-commits-diffs] net.venge.monotone: 53e02eaa302bc05e96a18e3882b0e9843b53cf9a |
Date: |
Mon, 14 May 2012 02:33:11 +0200 (CEST) |
revision: 53e02eaa302bc05e96a18e3882b0e9843b53cf9a
date: 2012-05-14T00:32:33
author: address@hidden
branch: net.venge.monotone
changelog:
propagate from branch 'net.venge.monotone.lua-5.2' (head
aad657f04d0f21ece638434694aeabc833f37aa4)
to branch 'net.venge.monotone' (head
384d89bf03cca6815b2df2580001d67378e41d26)
manifest:
format_version "1"
new_manifest [99e1fc2b67ab43131bcb46fdd6aa4a8cb56e3b0c]
old_revision [384d89bf03cca6815b2df2580001d67378e41d26]
patch "INSTALL_windows_cygwin.txt"
from [46b16835478139759c0f52b531f16b6731e26314]
to [155d548dd4bd91fa35deb7166c06a9353d615a23]
patch "INSTALL_windows_native.txt"
from [d67a72a79605d8e65abc2529e06481fad204724f]
to [a2eb4d25afc4f28d95fd62756e6527aab3ac88fa]
patch "NEWS"
from [17c819736b0893e4d4667526656138ed23cb4b48]
to [8e1f0621a0612b9d910be8c3b0d87829269e72a7]
patch "extra/mtn-hooks/monotone-cvs-ignore.lua"
from [7bc64a29dac6409b2dbfbda0b3458ccc5b5fdc46]
to [e237828983a27a99d58ec6bb0243fbf56fdcb817]
patch "innosetup/README.txt"
from [2d4c16c9b1fc3da9d98e3d4806911490f876ef62]
to [798ee75cb8be7728e4c5fbc6cb682d1f7beca7a2]
patch "src/lua.cc"
from [40d590a9716e281f2004c1b5eb19c2b0926e7dde]
to [6787dcbd552c2c8772e511dcd12b8f682868c0b3]
patch "src/lua.hh"
from [146872f14cc23c6179c37bcda8667a0ecd178826]
to [4396421e2bb335241ce33c29a53aeffd3ebf7380]
patch "src/luaext_parse_basic_io.cc"
from [995b37d3cc3eb58a3c6be6db06e38f997ba6845e]
to [f7a89950b6355b57d24ccf12331c7e2beae686bd]
patch "src/luaext_platform.cc"
from [288a571d7c91fbb4abffb66611b52aac74889aa2]
to [135278a8a971333575a0d8c92ed5d93262723cc7]
patch "test/func/automate_get_attributes/__driver__.lua"
from [cd69b24a950d6c100143f4267cb9f22f3877ad75]
to [3c820fcccbd5102c4bb3a4e9c01233de137aa21a]
patch "test/func/automate_interface_version/__driver__.lua"
from [6fdc200cf0f8c01e6174ebb04f521b0e645198ec]
to [8b65eadc6b526d1490ed02dc74a06134612c5c7b]
patch "test/func/automate_inventory_ignore_dirs/__driver__.lua"
from [7afec31b9343b5e6d95f0d0bc30aa661254d7aeb]
to [8b022036bd487f071752e21a3da566bc664c5995]
patch "test/func/automate_put_revision/__driver__.lua"
from [deeeb9cb4ff8625284a4f69846ef9fa561a42ccf]
to [e116294fa44da8646b2e41288615035f913b9563]
patch "test/func/automate_set_drop_attribute/__driver__.lua"
from [5a090a94f10ebfa6ddb7378f9a285865ce881245]
to [3d759e4395849775e5194721e6f5b05f50080644]
patch "test/func/clone_weird_branch_names/__driver__.lua"
from [0afc1816afa8d3e4b2dfb9fd016500f224432f0a]
to [e1253c24b2b696483bb621c85e48caa8d5c2cc90]
patch "test/func/list_databases/__driver__.lua"
from [d78cd923f7f4950590407127854dcd3467b85625]
to [9ab31d5e81fbca51ae7a5a919953e79d9c8e6631]
patch "test/func/list_workspaces/__driver__.lua"
from [d7cc622b5a893fd344653512a434440082dbc247]
to [e83147fac524181f19720ec74b04a38f7b1c41a7]
patch "test/func/log_--no-files_and_--merges/__driver__.lua"
from [1a7944f904399553b56f8f4cc69b22152d03b851]
to [7e1b2967179f5b5dec932ee44c0004e41b527bb0]
patch "test/func/manpage/__driver__.lua"
from [a381ef4517c907170547a4984923650617f69c60]
to [c8d528d2e1dab045cd6115111cceb2d5906296a8]
patch "test/func/netsync_negotiation/__driver__.lua"
from [38cd5d9df0e16cf05d59f0d9525ae546a9654f5f]
to [0b30d988c62dfc2aa3c4a7e0021b3395faba8609]
patch "test/func/serve-automate-single-run/__driver__.lua"
from [7a75e9ff02a15ebc62a44c1c596ed39e3fdae0a0]
to [9ac5e0e67c0a6849289ddfaf175505f674da6410]
patch "test/func/ssh_agent/__driver__.lua"
from [e1e991f96a3289db93574829306b32b20aeba886]
to [3f28e56f4fe2fa4169a34c5cc16e4039b2bd492a]
patch "test/func/two_parent_workspace_inodeprints/__driver__.lua"
from [cb9175dd15771248cc7d53864fa77c17b9d09802]
to [27930df4f388e02e7fa017e62aa0dd9873ac3d35]
patch "test/func/user_commands/extra_rc"
from [94c90e2f0259bc9905f6be3fcc2580f0c8c2714d]
to [7830e76cf219e92da08c959d7f9e33804be59c5a]
patch "test/src/testlib.lua"
from [f236da6fce62c15acac578b42756b552e0453d99]
to [445ed7ee75dfde94af676e7644e29e874aff58d7]
old_revision [aad657f04d0f21ece638434694aeabc833f37aa4]
add_dir "test/func/automate_erase_descendants"
add_file "test/func/automate_erase_descendants/__driver__.lua"
content [45830e0a1e9f33e9031ca9953689b3648a9eb04e]
patch "NEWS"
from [94d034c28d13efba836e06f633478f748c531d81]
to [8e1f0621a0612b9d910be8c3b0d87829269e72a7]
patch "doc/monotone.texi"
from [a063880df3b6539cf9f7c3536e82261e6d496708]
to [d1293584f8a36c591fec36bc00427f77512c9876]
patch "innosetup/README.txt"
from [ea1ad861438da89b7cf89f01c32a171ffd81ab11]
to [798ee75cb8be7728e4c5fbc6cb682d1f7beca7a2]
patch "po/de.po"
from [bd824479fb3a72bb048845d858e3a76b96f32c9b]
to [4b2a04bf9575d35175f08c9ed53cca82d5050e4f]
patch "po/sv.po"
from [f84b0093c5af0e103e0857bcf809fe78487e803b]
to [fb60bb1b5c18bbb5c2025f33bed340b7647b7e3c]
patch "src/ancestry.cc"
from [8b3388b690a5f4878bd29d752c3e6e073411739e]
to [e673b17a5d2fad2716f7f4efe33c2ca11c7c31f9]
patch "src/automate.cc"
from [efa4ecceab7f1e31f71778f325da312bf6aefba5]
to [919e3df52514d0877aeafc67791aae6a3faa33b4]
patch "src/cmd_conflicts.cc"
from [ad9dc74c27d4d8c50a74e5825ec9e0a12cdc1b09]
to [86bf4eb2e0608a8b9814cef8b416626b4aa0ca90]
patch "src/gzip.hh"
from [aff9da63bb22366bccf69c2d75ee7790406d2455]
to [17093f66e365b3730a49ef1910295f622972c36e]
patch "src/rev_output.cc"
from [a2c70b893b31296917d1a2b974faa1da46c13f1e]
to [6b9862bfda95d0d558d8335fb2accfc0180e8fbd]
patch "src/revision.hh"
from [740c4dd4ee350fcf06af3ba707cef3dadecb46f8]
to [8d93883e8a6de779aa199d9b2e1aa58589f0626c]
patch "src/selectors.cc"
from [3efba0ce3139290b4088cea0d6e82a912565471e]
to [19a82c64f44ab5433354299f84598174cb15f510]
patch "src/unix/fs.cc"
from [d34f7ed4b5cf3655d7920568e4e1a146fa670e13]
to [f51cae4dbc5589b0add4f7b9b649fde3c83d1220]
patch "test/func/extended-selectors/__driver__.lua"
from [435f44fb1b33bdfb53929fe6bd15ba7fa4c2c1d3]
to [e80ed8e831bbc9cc346e7722c9877d32887104ef]
patch "test/func/resolve_conflicts_errors/__driver__.lua"
from [4911dc65645a5af929cd990eef09c97146e60d17]
to [9a130c83d4a7e3545f18d089542603c8d0bb72fa]
patch "test/unit/tests/xdelta.cc"
from [4aff975cfd9a9cf18c26f70118e2895880ed6100]
to [ed5f467ebc4755f7521e74a40833181974b43a8f]
patch "util/audit-includes"
from [d5757fcf83ab116fba16c53221da0f832307a113]
to [1c6fc8be30ebfafc67ca03980e7860db35e5d2e9]
============================================================
--- INSTALL_windows_cygwin.txt 46b16835478139759c0f52b531f16b6731e26314
+++ INSTALL_windows_cygwin.txt 155d548dd4bd91fa35deb7166c06a9353d615a23
@@ -2,40 +2,29 @@
on Windows using Cygwin:
-Monotone needs the following packages to compile:
-(newer releases are usually ok)
+An official Cygwin package for monotone and all its dependencies is
+usually available soon after release; just run the Cygwin installer
+and install the 'monotone' package.
- Runtime requirements:
- cygwin-1.7.0-60
- libgcc1-4.3.2-2
- libidn11-1.9-1
- libintl8-0.17-11
- libpcre0-7.9-1
- libsqlite3_0-3.6.2-1
- libstdc++6-4.3.2-2
- lua-5.1.4-11
- zlib0-1.2.3-10
+To build Monotone on Cygwin for development and testing, the following
+packages are required (the versions listed are known to work; they may
+not be the exact versions used to build the official Cygwin package).
+Note that the monotone source code is compatible with Lua 5.2, but (as
+of 8 May 2012), Cygwin only has Lua 5.1.4.
- Build requirements:
- gcc4-4.3.2
- binutils-2.19.51
- boost-devel-1.33.1
- libsqlite3-devel-3.6.2
- libidn-devel-1.9
- gettext-devel-0.17
- zlib-1.2.3
- perl-5.10.0
- botan-1.8.2
+ binutils-2.22.51
+ libboost-devel-1.48.0
+ botan-1.8.13
+ gcc4-g++-4.5.3
+ gettext-devel-0.18.1
+ libidn-devel-1.22
+ libpcre-devel-8.21
+ libsqlite3-devel-3.7.3
+ lua-5.1.4-11
+ zlib-devel-1.2.5
-currently every prerequisite is available as packages except
-lua and botan which are only available in Cygwin 1.7;
-an official Cygwin package for monotone and all its
-dependencies is usually available soon after release.
+No special options are needed for configure.
-The following is needed to succesfully configure:
-
- export CXXFLAGS="-I/usr/include/boost-1_33_1/ -g -O2"; configure
-
There is a bug in the bash builtin 'pwd' in bash 4.1; it can return
'c:/' syntax for absolute paths in some circumstances. See
http://sourceware.org/ml/cygwin/2002-11/msg01111.html. In particular,
@@ -43,4 +32,4 @@
configure creating Makefiles with some problems. A work-around is to
put 'cd `/bin/pwd`' in your ~/.emacs_bash.
-See ../cygport/README for building a Cygwin package.
+See cygport/README for building a Cygwin package.
============================================================
--- INSTALL_windows_native.txt d67a72a79605d8e65abc2529e06481fad204724f
+++ INSTALL_windows_native.txt a2eb4d25afc4f28d95fd62756e6527aab3ac88fa
@@ -2,44 +2,44 @@
on Windows (using MinGW):
-Many tools and packages are available on SourceForge:
+Here we give sources for the various packages needed. We give
+directions to the download, rather than an exact URL, to make it easy
+to check for new versions.
-https://sourceforge.net/projects/<project>/files/
-
-That site is organized into several hierarchical lists of files. We
-give the hierarchy names here, rather than a complete download URL, to
-make it easy to check for new versions.
-
The versions given here may not be exactly the same versions as used to
build the current release of monontone.
These instructions work on a new computer, with only
Windows XP installed.
+The most recent MinGW installer mingw-get-inst-20120426 contains g++
+4.6.2; this is broken for C++ exceptions on MinGW. So we use an
+earlier installer mingw-get-inst-20110211, containing g++ 4.5.2 and a
+catalog of other binary packages that are consistent with that runtime.
+
Package | Version | location
--------------------------
-Python | 2.7.1 | http://www.python.org/
- | "Windows Installer" under "Quick Links (2.7.1)"
-mingw-get-inst| latest | http://sourceforge.net/projects/mingw/files/
- | -> Automated MinGW Installer
+Python | 2.7.3 | http://www.python.org/
+ | "Windows Installer" under "Quick Links (2.7.3)"
+ | Used for the Botan install; that does not work with Python 3.2.3
+mingw-get-inst|20110211 | http://sourceforge.net/projects/mingw/files/
+ | -> Installer
| -> mingw-get-inst
| -> mingw-get-inst-20110211
- | -> mingw-get-inst-20110211.exe
-boost | 1.46.1 | http://sourceforge.net/projects/boost/files/
- | -> boost -> 1.46.1 -> boost_1_46_1.tar.gz
-Lua | 5.1.4 | http://www.lua.org/
- | -> download
- | -> "...current release is >Lua 5.1.4<" under "Source"
+ | -> mingw-get-inst-20110211.exe - _not_ the most recent; see above
+boost | 1.49.0 | http://sourceforge.net/projects/boost/files/
+ | -> boost -> 1.49.0 -> boost_1_49_0.tar.bz2
| lua-5.1.4.tar.gz
-pcre | 8.12 | http://www.pcre.org/
+pcre | 8.30 | http://www.pcre.org/
| -> ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
- | -> pcre-8.12.tar.gz
-botan | 1.8.11 | http://botan.randombit.net/download.html
+ | -> pcre-8.30.tar.bz2
+botan | 1.10.1 | http://botan.randombit.net/download.html
| "Source: >tar/gzip<" under "Current Stable Release"
-sqlite3 | 3.7.5 | http://www.sqlite.org/download.html
- | -> sqlite-autoconf-3070500.tar.gz
-libidn | 1.20 | ftp://ftp.gnu.org/gnu/libidn/
- | -> libidn-1.20.tar.gz
+ | _not_ the "windows binary installer"
+sqlite3 | 3.7.11 | http://www.sqlite.org/download.html
+ | -> sqlite-autoconf-3071100.tar.gz
+libidn | 1.24 | ftp://ftp.gnu.org/gnu/libidn/
+ | -> libidn-1.24.tar.gz
Depends.exe | | http://www.dependencywalker.com/ ; also comes with Visual Studio
In general, there are two versions of most tools on the
@@ -78,43 +78,49 @@
command window run "echo %PATH%" and look for the Python directory in the output.
02. MinGW
- Run mingw-get-inst (graphical installer for mingw-get and the MinGW base system).
- At the "Select Components" screen, add "C++ compiler" and "MinGW Developer Toolkit".
- Other than this, accept all defaults.
+ Run mingw-get-inst-20110211.exe - note that later versions include
+ g++ 4.6.2, which is broken for C++ exceptions on MinGW.
+ At the "Select Components" screen, add:
+ C++ compiler
+ MinGW Developer Toolkit
+ Other than this, accept all defaults.
+ In particular, do _not_ update the catalog; use the built-in
+ catalog, to insure the binaries are consistent with the g++ 4.5.2
+ runtime.
Open the MinGW shell (Start->All Programs->MinGW->MinGW Shell)
Run the following:
- $ mingw-get install msys-autoconf msys-automake mingw32-libiconv
+ $ mingw-get install msys-autoconf msys-automake
$ mingw-get install mingw32-zlib mingw32-libz-dev mingw32-gettext
03. boost; only need headers
$ cd /usr
$ mkdir src
$ cd src
- $ tar -zxf ../boost_1_46_1.tar.gz
+ $ tar -jxf ../boost_1_49_0.tar.bz2
This may give errors about gid_t out of range, and then say
"Exiting with failure status due to previous errors"; you can
ignore this.
- $ cd boost_1_46_1
+ $ cd boost_1_49_0
$ cp -a boost /mingw/include
04. Lua
$ cd /usr/src
- $ tar -zxf ../lua-5.1.4.tar.gz
- $ cd lua-5.1.4
+ $ tar -zxf ../lua-5.20.tar.gz
+ $ cd lua-5.2.0
$ make mingw INSTALL_TOP=/mingw
$ make install INSTALL_TOP=/mingw
05. pcre
$ cd /usr/src
- $ tar -zxf ../pcre-8.12.tar.gz
- $ cd pcre-8.12
+ $ tar -jxf ../pcre-8.30.tar.bz2
+ $ cd pcre-8.30
$ ./configure --prefix=/mingw
$ make install
06. botan
$ cd /usr/src
- $ tar -zxf ../Botan-1.8.11.tgz
- $ cd Botan-1.8.11
+ $ tar -zxf ../Botan-1.10.1.tgz
+ $ cd Botan-1.10.1
$ ./configure.py --cc=gcc --os=mingw
The Botan configure script generates paths with Python's
os.path.join(...), which in the case of the Windows Python
@@ -125,15 +131,15 @@
07. sqlite3
$ cd /usr/src
- $ tar -zxf ../sqlite-autoconf-3070500.tar.gz
- $ cd sqlite-autoconf-3070500
+ $ tar -zxf ../sqlite-autoconf-3071100.tar.gz
+ $ cd sqlite-autoconf-3071100
$ ./configure --prefix=/mingw
$ make install
08. libidn
$ cd /usr/src
- $ tar -zxf ../libidn-1.20.tar.gz
- $ cd libidn-1.20
+ $ tar -zxf ../libidn-1.24.tar.gz
+ $ cd libidn-1.24
$ ./configure --prefix=/mingw
$ make install
@@ -143,7 +149,7 @@
unpack it someplace in your %PATH% (for example, C:\MinGW\bin\).
This is only used by the testsuite, in particular the empty_environment test.
If you just want to build monotone for your own use, you can skip this and
- just ignore that that test fails.
+ just ignore that test failing.
10. build monotone
You can skip the CXXFLAGS and LDFLAGS if you really want to, but if you do that
@@ -153,6 +159,9 @@
$ autoreconf -i # not needed if you use the distributed tarball
$ export CXXFLAGS="-static-libgcc -static-libstdc++ -g -O2 -Wall"
$ export LDFLAGS="-static-libgcc -static-libstdc++"
+ $ export botan_CFLAGS="-I/mingw/include/botan-1.10"
+ $ export botan_LIBS="-lbotan-1.10"
$ ./configure
$ make
+See innosetup/README.txt for instructions on building the native Win32 installer.
============================================================
--- NEWS 17c819736b0893e4d4667526656138ed23cb4b48
+++ NEWS 8e1f0621a0612b9d910be8c3b0d87829269e72a7
@@ -38,6 +38,8 @@ XXX XXX XX XX:XX:XX UTC 201X
- Fixed recursive file removal on Solaris.
+ - Monotone now compiles against Lua 5.2 as well.
+
Internal
- The performance and memory usage of regular expressions has
============================================================
--- extra/mtn-hooks/monotone-cvs-ignore.lua 7bc64a29dac6409b2dbfbda0b3458ccc5b5fdc46
+++ extra/mtn-hooks/monotone-cvs-ignore.lua e237828983a27a99d58ec6bb0243fbf56fdcb817
@@ -23,7 +23,7 @@ do
local handle, msg = io.open(dir .. ".cvsignore")
if (handle) then
- for line in handle:lines(dir .. ".cvsignore") do
+ for line in handle:lines() do
pat2 = _glob_to_pattern(line) .. "$"
if (string.find(name, pat1 .. pat2)) then
return true
============================================================
--- innosetup/README.txt 2d4c16c9b1fc3da9d98e3d4806911490f876ef62
+++ innosetup/README.txt 798ee75cb8be7728e4c5fbc6cb682d1f7beca7a2
@@ -1,11 +1,12 @@
This directory keeps the files needed to build the Windows native
-installer, using Inno Setup.
+installer, using Inno Setup.
Here are all the steps for creating a MinGW release, on a fresh
Windows machine:
Install Inno Setup and Inno Setup preprocessor; see
-http://www.jrsoftware.org/isinfo.php, get the Quick Start Pack isetup-5.4.2.exe
+http://www.jrsoftware.org/isinfo.php, isetup-5.4.3.exe. Install the
+preprocessor (we use it).
Install MinGW tools; see ../INSTALL_windows_native.txt
@@ -15,7 +16,7 @@
http://wiki.monotone.ca/MonotoneProjectServer/
Check out the release version of monotone:
-mtn -d /path/to/monotone.db checkout -r t:monotone-<version> --branch net.venge.monotone monotone-<version>
+mtn -d /path/to/monotone.db checkout -r t:monotone-<version> --branch net.venge.monotone.monotone-<version> monotone-<version>
Build the release. See the last instruction in ../INSTALL_windows_native.txt
Then build the installer:
@@ -26,9 +27,9 @@
NOTE:
- If ISCC (Inno setup compiler) is not in PATH, then you must specify
- its location:
-
+ If ISCC (Inno setup compiler) is not in PATH when monotone configure
+ is run, then you must specify its location:
+
make win32-installer ISCC=/d/progs/InnoSetup5/ISCC.exe
Publish the binary on the monotone website with proper permissions:
============================================================
--- src/lua.cc 40d590a9716e281f2004c1b5eb19c2b0926e7dde
+++ src/lua.cc 6787dcbd552c2c8772e511dcd12b8f682868c0b3
@@ -44,7 +44,11 @@ dump_stack(lua_State * st)
switch (t) {
case LUA_TSTRING: /* strings */
out += '`';
+#ifdef lua_strlen
out += string(lua_tostring(st, i), lua_strlen(st, i));
+#else
+ out += string(lua_tostring(st, i), lua_rawlen(st, i));
+#endif
out += '\'';
break;
@@ -95,7 +99,11 @@ Lua::report_error()
Lua::report_error()
{
// I(lua_isstring(st, -1));
+#ifdef lua_strlen
string err = string(lua_tostring(st, -1), lua_strlen(st, -1));
+#else
+ string err = string(lua_tostring(st, -1), lua_rawlen(st, -1));
+#endif
W(i18n_format("%s") % err);
L(FL("lua stack: %s") % dump_stack(st));
lua_pop(st, 1);
@@ -107,7 +115,11 @@ Lua::check_stack(int count)
{
if (!lua_checkstack(st, count))
{
+#ifdef LUAI_MAXCSTACK
fail((FL("lua stack limit '%d' reached") % LUAI_MAXCSTACK).str());
+#else
+ fail((FL("lua stack limit '%d' reached") % LUAI_MAXSTACK).str());
+#endif
return false;
}
return true;
@@ -119,17 +131,27 @@ Lua::get(int idx)
Lua::get(int idx)
{
if (failed) return *this;
- if (!lua_istable (st, idx))
+ if (lua_gettop (st) < 1)
{
- fail("istable() in get");
+ fail("stack top > 0 in get");
return *this;
}
- if (lua_gettop (st) < 1)
+ if (idx)
{
- fail("stack top > 0 in get");
- return *this;
+ if (!lua_istable (st, idx))
+ {
+ fail("istable() in get");
+ return *this;
+ }
+ lua_gettable(st, idx);
}
- lua_gettable(st, idx);
+ else
+ {
+ string name;
+ extract_str(name);
+ pop();
+ lua_getglobal(st, name.c_str());
+ }
return *this;
}
@@ -194,7 +216,11 @@ Lua::extract_str_nolog(string & str)
fail("isstring() in extract_str");
return *this;
}
+#ifdef lua_strlen
str = string(lua_tostring(st, -1), lua_strlen(st, -1));
+#else
+ str = string(lua_tostring(st, -1), lua_rawlen(st, -1));
+#endif
return *this;
}
@@ -460,7 +486,7 @@ void add_functions(lua_State * st)
{
lua_newtable(st);
lua_pushvalue(st, -1);
- lua_setfield(st, LUA_GLOBALSINDEX, table.c_str());
+ lua_setglobal(st, table.c_str());
}
for (luaext::fmap::const_iterator j = i->second.begin();
j != i->second.end(); ++j)
============================================================
--- src/lua.hh 146872f14cc23c6179c37bcda8667a0ecd178826
+++ src/lua.hh 4396421e2bb335241ce33c29a53aeffd3ebf7380
@@ -37,13 +37,13 @@ Lua
void report_error();
bool check_stack(int count);
- // getters
- Lua & get(int idx = LUA_GLOBALSINDEX);
- Lua & get_fn(int idx = LUA_GLOBALSINDEX);
- Lua & get_tab(int idx = LUA_GLOBALSINDEX);
- Lua & get_str(int idx = LUA_GLOBALSINDEX);
- Lua & get_num(int idx = LUA_GLOBALSINDEX);
- Lua & get_bool(int idx = LUA_GLOBALSINDEX);
+ // getters (0 is an invalid index in lua, and is used here to represent the global table)
+ Lua & get(int idx = 0);
+ Lua & get_fn(int idx = 0);
+ Lua & get_tab(int idx = 0);
+ Lua & get_str(int idx = 0);
+ Lua & get_num(int idx = 0);
+ Lua & get_bool(int idx = 0);
// extractors
Lua & extract_str_nolog(std::string & str);
============================================================
--- src/luaext_parse_basic_io.cc 995b37d3cc3eb58a3c6be6db06e38f997ba6845e
+++ src/luaext_parse_basic_io.cc f7a89950b6355b57d24ccf12331c7e2beae686bd
@@ -23,7 +23,11 @@ LUAEXT(parse_basic_io, )
// followed by one or more string or hex values. It returns a table of
// lines.
vector<pair<string, vector<string> > > res;
+#ifdef lua_strlen
const string str(luaL_checkstring(LS, -1), lua_strlen(LS, -1));
+#else
+ const string str(luaL_checkstring(LS, -1), lua_rawlen(LS, -1));
+#endif
basic_io::input_source in(str, "monotone_parse_basic_io_for_lua");
in.made_from = origin::user;
basic_io::tokenizer tok(in);
============================================================
--- src/luaext_platform.cc 288a571d7c91fbb4abffb66611b52aac74889aa2
+++ src/luaext_platform.cc 135278a8a971333575a0d8c92ed5d93262723cc7
@@ -118,7 +118,10 @@ static FILE **newfile (lua_State *LS) {
lua_setmetatable(LS, -2);
lua_pushcfunction(LS, io_fclose);
+#ifdef LUA_ENVIRONINDEX
+ // Lua 5.2 removes C function environments
lua_setfield(LS, LUA_ENVIRONINDEX, "__close");
+#endif
return pf;
}
============================================================
--- test/func/automate_get_attributes/__driver__.lua cd69b24a950d6c100143f4267cb9f22f3877ad75
+++ test/func/automate_get_attributes/__driver__.lua 3c820fcccbd5102c4bb3a4e9c01233de137aa21a
@@ -28,7 +28,7 @@ parsed = parse_basic_io(readfile("stdout
check(fsize("stderr") == 0)
parsed = parse_basic_io(readfile("stdout"))
-- make sure the output generated 8 stanzas
-check(table.getn(parsed) == 8)
+check(#parsed == 8)
lastkey = ""
checked = {}
for _,l in pairs(parsed) do
@@ -108,7 +108,7 @@ parsed = parse_basic_io(readfile("stdout
check(mtn("automate", "get_attributes", "testfile", "-r", rev), 0, true, false)
parsed = parse_basic_io(readfile("stdout"))
-check(table.getn(parsed) == 6)
+check(#parsed == 6)
lastkey = ""
checked = {}
============================================================
--- test/func/automate_interface_version/__driver__.lua 6fdc200cf0f8c01e6174ebb04f521b0e645198ec
+++ test/func/automate_interface_version/__driver__.lua 8b65eadc6b526d1490ed02dc74a06134612c5c7b
@@ -7,4 +7,4 @@ check(numlines("a_v") == 1)
-- MinGW's wc produces " 1" as output. Arithmetic comparison works, string comparison doesn't
check(numlines("a_v") == 1)
-- This is really ^[0-9]+\.[0-9]+$, but m4 is obfuscatory.
-check(qgrep("^[0-9]+\.[0-9]+$", "a_v"))
+check(qgrep("^[0-9]+\\.[0-9]+$", "a_v"))
============================================================
--- test/func/automate_inventory_ignore_dirs/__driver__.lua 7afec31b9343b5e6d95f0d0bc30aa661254d7aeb
+++ test/func/automate_inventory_ignore_dirs/__driver__.lua 8b022036bd487f071752e21a3da566bc664c5995
@@ -14,7 +14,7 @@ function sortContentsByLine(input)
table.insert(lines, string.sub(input, theStart))
table.sort(lines)
- local len = table.getn(lines)
+ local len = #lines
local output = lines[1]
for i = 2, len do
output = output .. delimiter .. lines[i]
============================================================
--- test/func/automate_put_revision/__driver__.lua deeeb9cb4ff8625284a4f69846ef9fa561a42ccf
+++ test/func/automate_put_revision/__driver__.lua e116294fa44da8646b2e41288615035f913b9563
@@ -33,5 +33,5 @@ check(mtn("automate", "put_file", ""), 0
-- but this should work (tests that we can use put_revision to commit a
-- single-parent revision)
check(mtn("automate", "put_file", ""), 0, false, false)
-rev = "format_version \"1\"\n\nnew_manifest [0000000000000000000000000000000000000000]\n\nold_revision [4c2c1d846fa561601254200918fba1fd71e6795d]\n\patch \"foo\"\n from [5bf1fd927dfb8679496a2e6cf00cbe50c1c87145] to [da39a3ee5e6b4b0d3255bfef95601890afd80709]\n"
+rev = "format_version \"1\"\n\nnew_manifest [0000000000000000000000000000000000000000]\n\nold_revision [4c2c1d846fa561601254200918fba1fd71e6795d]\n\npatch \"foo\"\n from [5bf1fd927dfb8679496a2e6cf00cbe50c1c87145] to [da39a3ee5e6b4b0d3255bfef95601890afd80709]\n"
check(mtn("automate", "put_revision", rev), 0, false, false)
============================================================
--- test/func/automate_set_drop_attribute/__driver__.lua 5a090a94f10ebfa6ddb7378f9a285865ce881245
+++ test/func/automate_set_drop_attribute/__driver__.lua 3d759e4395849775e5194721e6f5b05f50080644
@@ -25,7 +25,7 @@ parsed = parse_basic_io(readfile("stdout
check(mtn("automate", "get_attributes", "testfile"), 0, true, false)
parsed = parse_basic_io(readfile("stdout"))
-check(table.getn(parsed) == 2)
+check(#parsed == 2)
for _,l in pairs(parsed) do
if l.name == "attr" then
key = l.values[1]
@@ -44,7 +44,7 @@ parsed = parse_basic_io(readfile("stdout
-- check if it has been really dropped
check(mtn("automate", "get_attributes", "testfile"), 0, true, false)
parsed = parse_basic_io(readfile("stdout"))
-check(table.getn(parsed) == 0)
+check(#parsed == 0)
-- check if it escalates properly if there is no such attr to drop
check(mtn("automate", "drop_attribute", "testfile", "foo"), 1, false, true)
============================================================
--- test/func/clone_weird_branch_names/__driver__.lua 0afc1816afa8d3e4b2dfb9fd016500f224432f0a
+++ test/func/clone_weird_branch_names/__driver__.lua e1253c24b2b696483bb621c85e48caa8d5c2cc90
@@ -9,7 +9,7 @@ test_uri="file://" .. url_encode_path(te
-- some of the special chars need to get double-escaped to get "through"
test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") ..
- "?" .. url_encode_query("my-branch\\\[1,2\\\]-1^3")
+ "?" .. url_encode_query("my-branch\\[1,2\\]-1^3")
check(nodb_mtn("clone", test_uri), 0, false, false)
check(exists("my-branch[1,2]-1^3"))
check(readfile("foo") == readfile("my-branch[1,2]-1^3/foo"))
============================================================
--- test/func/list_databases/__driver__.lua d78cd923f7f4950590407127854dcd3467b85625
+++ test/func/list_databases/__driver__.lua 9ab31d5e81fbca51ae7a5a919953e79d9c8e6631
@@ -25,15 +25,15 @@ check(mt("ls", "dbs"), 0, true, false)
check(exists("managed_databases/bar.mtn"))
check(mt("ls", "dbs"), 0, true, false)
-check(qgrep(":bar.mtn.+in.+list_databases\/managed_databases", "stdout"))
+check(qgrep(":bar.mtn.+in.+list_databases/managed_databases", "stdout"))
check(qgrep("\tno known valid workspaces", "stdout"))
check(mt("setup", "-d", ":bar", "-b", "test.foo.branch", "test_foo"), 0, false, false)
check(mt("ls", "dbs"), 0, true, false)
check(not qgrep("\tno known valid workspaces", "stdout"))
-check(qgrep("\ttest.foo.branch.+in.+list_databases\/test_foo", "stdout"))
+check(qgrep("\ttest.foo.branch.+in.+list_databases/test_foo", "stdout"))
check(rename("managed_databases/bar.mtn", "managed_databases/bar.db"))
check(mt("ls", "dbs"), 0, true, false)
-check(qgrep(":bar.db.+in.+list_databases\/managed_databases", "stdout"))
+check(qgrep(":bar.db.+in.+list_databases/managed_databases", "stdout"))
============================================================
--- test/func/list_workspaces/__driver__.lua d7cc622b5a893fd344653512a434440082dbc247
+++ test/func/list_workspaces/__driver__.lua e83147fac524181f19720ec74b04a38f7b1c41a7
@@ -10,17 +10,17 @@ check(raw_mtn("ls", "workspaces", "-d",
check(raw_mtn("setup", "-d", "test.mtn", "-b", "test.branch1", "work1"), 0, false, false)
check(raw_mtn("ls", "workspaces", "-d", "test.mtn"), 0, true, false)
-check(qgrep("test.branch1.+in.+list_workspaces\/work1", "stdout"))
+check(qgrep("test.branch1.+in.+list_workspaces/work1", "stdout"))
check(raw_mtn("setup", "-d", "test.mtn", "-b", "test.branch2", "work2"), 0, false, false)
check(rename("work1", "work3"))
check(raw_mtn("ls", "workspaces", "-d", "test.mtn"), 0, true, false)
-check(qgrep("test.branch2.+in.+list_workspaces\/work2", "stdout"))
-check(not qgrep("test.branch1.+in.+list_workspaces\/work1", "stdout"))
+check(qgrep("test.branch2.+in.+list_workspaces/work2", "stdout"))
+check(not qgrep("test.branch1.+in.+list_workspaces/work1", "stdout"))
check(indir("work3", raw_mtn("register_workspace", "-d", "../test.mtn")), 0, false, false)
check(raw_mtn("ls", "workspaces", "-d", "test.mtn"), 0, true, false)
-check(qgrep("test.branch1.+in.+list_workspaces\/work3", "stdout"))
+check(qgrep("test.branch1.+in.+list_workspaces/work3", "stdout"))
============================================================
--- test/func/log_--no-files_and_--merges/__driver__.lua 1a7944f904399553b56f8f4cc69b22152d03b851
+++ test/func/log_--no-files_and_--merges/__driver__.lua 7e1b2967179f5b5dec932ee44c0004e41b527bb0
@@ -29,8 +29,8 @@ check(mtn("log"), 0, true, false)
-- check that merge is included by default
check(mtn("log"), 0, true, false)
-check(qgrep("^[\\|\\\\\/ ]+Revision.*"..R2, "stdout"))
+check(qgrep("^[\\|\\\\/ ]+Revision.*"..R2, "stdout"))
-- and that it is excluded by --no-merges
check(mtn("log", "--no-merges"), 0, true, false)
-check(not qgrep("^[\\|\\\\\/ ]+Revision.*"..R2, "stdout"))
+check(not qgrep("^[\\|\\\\/ ]+Revision.*"..R2, "stdout"))
============================================================
--- test/func/manpage/__driver__.lua a381ef4517c907170547a4984923650617f69c60
+++ test/func/manpage/__driver__.lua c8d528d2e1dab045cd6115111cceb2d5906296a8
@@ -5,7 +5,7 @@ check(mtn("version"), 0, true, false)
-- check for a proper header line
check(mtn("version"), 0, true, false)
-local s,e,version = string.find(readfile("stdout"), "(monotone %d+\.%d+%S*)")
+local s,e,version = string.find(readfile("stdout"), "(monotone %d+%.%d+%S*)")
check(qgrep(".TH \"monotone\" 1 \"[0-9]{4}-[0-9]{2}-[0-9]{2}\" \"" .. version .. "\"", "manpage"))
-- check required sections
============================================================
--- test/func/netsync_negotiation/__driver__.lua 38cd5d9df0e16cf05d59f0d9525ae546a9654f5f
+++ test/func/netsync_negotiation/__driver__.lua 0b30d988c62dfc2aa3c4a7e0021b3395faba8609
@@ -87,10 +87,10 @@ function check_same_revs(cmd1, cmd2)
check(cmd2, 0, true, false)
local data2 = {}
for l in io.lines("stdout") do table.insert(data2, l) end
- L("Command 1 has ", table.getn(data1), " lines.")
- L("Command 2 has ", table.getn(data2), " lines.")
- check(table.getn(data1) == table.getn(data2))
- for i = 1, table.getn(data1) do
+ L("Command 1 has ", #data1, " lines.")
+ L("Command 2 has ", #data2, " lines.")
+ check(#data1 == #data2)
+ for i = 1, #data1 do
local hash_len = 40
check(data1[i]:sub(1, hash_len) == data2[i]:sub(1, hash_len))
end
============================================================
--- test/func/serve-automate-single-run/__driver__.lua 7a75e9ff02a15ebc62a44c1c596ed39e3fdae0a0
+++ test/func/serve-automate-single-run/__driver__.lua 9ac5e0e67c0a6849289ddfaf175505f674da6410
@@ -28,7 +28,7 @@ check(mtn2("automate", "remote", "--remo
check(mtn2("automate", "remote", "--remote-stdio-host", server.address,
"interface_version"), 0, true, false)
-check(qgrep("^[0-9]{2,}\.[0-9]+$", "stdout"))
+check(qgrep("^[0-9]{2,}\\.[0-9]+$", "stdout"))
check(mtn2("automate", "remote", "--remote-stdio-host", server.address,
"leaves"), 0, true, false)
============================================================
--- test/func/ssh_agent/__driver__.lua e1e991f96a3289db93574829306b32b20aeba886
+++ test/func/ssh_agent/__driver__.lua 3f28e56f4fe2fa4169a34c5cc16e4039b2bd492a
@@ -81,7 +81,7 @@ for line in io.lines("stdout") do
check({"ssh-agent"}, 0, true, false)
for line in io.lines("stdout") do
- for k, v in string.gmatch(line, "([%w_]+)=([%w/\.-]+)") do
+ for k, v in string.gmatch(line, "([%w_]+)=([%w/%.-]+)") do
set_env(k, v)
end
end
@@ -91,7 +91,7 @@ for line in io.lines("stdout") do
check({"ssh-add", "-l"}, 0, true, false)
ok = false
for line in io.lines("stdout") do
- for k in string.gmatch(line, "address@hidden") do
+ for k in string.gmatch(line, "address@hidden") do
ok = true
end
end
@@ -288,7 +288,7 @@ for line in io.lines("stdout") do
check({"ssh-add", "-l"}, 0, true, false)
ok = false
for line in io.lines("stdout") do
- for k in string.gmatch(line, "address@hidden") do
+ for k in string.gmatch(line, "address@hidden") do
ok = true
end
end
@@ -338,7 +338,7 @@ for line in io.lines("stdout") do
check({"ssh-add", "-l"}, 0, true, false)
ok = false
for line in io.lines("stdout") do
- for k in string.gmatch(line, "address@hidden") do
+ for k in string.gmatch(line, "address@hidden") do
ok = true
end
end
============================================================
--- test/func/two_parent_workspace_inodeprints/__driver__.lua cb9175dd15771248cc7d53864fa77c17b9d09802
+++ test/func/two_parent_workspace_inodeprints/__driver__.lua 27930df4f388e02e7fa017e62aa0dd9873ac3d35
@@ -19,13 +19,13 @@ check(mtn("status"), 0, true, false)
-- check that we've got the expected initial status
check(mtn("status"), 0, true, false)
-check(qgrep("patched[ ]\+foo", "stdout"))
+check(qgrep("patched[ ]+foo", "stdout"))
-- enable inodeprints
writefile("_MTN/inodeprints")
check(mtn("status"), 0, true, false)
-check(qgrep("patched[ ]\+foo", "stdout"))
+check(qgrep("patched[ ]+foo", "stdout"))
sleep(5)
============================================================
--- test/func/user_commands/extra_rc 94c90e2f0259bc9905f6be3fcc2580f0c8c2714d
+++ test/func/user_commands/extra_rc 7830e76cf219e92da08c959d7f9e33804be59c5a
@@ -5,7 +5,8 @@ function check_head(...)
io.stderr:write("automate call failed\n")
return
end
- arghead = unpack(arg)
+ local arg = {...}
+ arghead = arg[1]
heads = heads:gsub("^%s*(.-)%s*$", "%1") -- trim leading and trailing whitespace
if (heads == arghead) then
io.write("heads are equal\n")
============================================================
--- test/src/testlib.lua f236da6fce62c15acac578b42756b552e0453d99
+++ test/src/testlib.lua 445ed7ee75dfde94af676e7644e29e874aff58d7
@@ -326,17 +326,11 @@ function include(name)
-- to want to include from the dir for the current test,
-- since in that case it could just go in the driver file.
function include(name)
- local func, e = loadfile(testdir.."/"..name)
- if func == nil then err(e, 2) end
- setfenv(func, getfenv(2))
- func()
+ dofile(testdir.."/"..name)
end
function includecommon(name)
- local func, e = loadfile(srcdir.."/common/"..name)
- if func == nil then err(e, 2) end
- setfenv(func, getfenv(2))
- func()
+ dofile(srcdir.."/common/"..name)
end
function trim(str)
@@ -495,12 +489,11 @@ function samelines(f, t)
function samelines(f, t)
local fl = {}
for l in io.lines(f) do table.insert(fl, l) end
- if not (table.getn(fl) == table.getn(t)) then
- L(locheader(), string.format("file has %s lines; table has %s\n",
- table.getn(fl), table.getn(t)))
+ if not (#fl == #t) then
+ L(locheader(), string.format("file has %s lines; table has %s\n", #fl, #t))
return false
end
- for i=1,table.getn(t) do
+ for i=1,#t do
if fl[i] ~= t[i] then
if fl[i] then
L(locheader(), string.format("file[%d] = '%s'; table[%d] = '%s'\n",
@@ -518,12 +511,11 @@ function greplines(f, t)
function greplines(f, t)
local fl = {}
for l in io.lines(f) do table.insert(fl, l) end
- if not (table.getn(fl) == table.getn(t)) then
- L(locheader(), string.format("file has %s lines; table has %s\n",
- table.getn(fl), table.getn(t)))
+ if not (#fl == #t) then
+ L(locheader(), string.format("file has %s lines; table has %s\n", #fl, #t))
return false
end
- for i=1,table.getn(t) do
+ for i=1,#t do
if not regex.search(t[i], fl[i]) then
L(locheader(), string.format("file[i] = '%s'; table[i] = '%s'\n",
fl[i], t[i]))
@@ -593,7 +585,7 @@ function tail(...)
local mylines = {}
for l in io.lines(file) do
table.insert(mylines, l)
- if table.getn(mylines) > num then
+ if #mylines > num then
table.remove(mylines, 1)
end
end
@@ -948,8 +940,8 @@ function run_tests(debugging, list_only,
if _1 then
l = l + 0
r = r + 0
- if l < 1 then l = table.getn(tests) + l + 1 end
- if r < 1 then r = table.getn(tests) + r + 1 end
+ if l < 1 then l = #tests + l + 1 end
+ if r < 1 then r = #tests + r + 1 end
if l > r then l,r = r,l end
for j = l,r do
torun[j] = tests[j]
@@ -957,7 +949,7 @@ function run_tests(debugging, list_only,
run_all = false
elseif string.find(a, "^-?%d+$") then
r = a + 0
- if r < 1 then r = table.getn(tests) + r + 1 end
+ if r < 1 then r = #tests + r + 1 end
torun[r] = tests[r]
run_all = false
else
============================================================
--- NEWS 94d034c28d13efba836e06f633478f748c531d81
+++ NEWS 8e1f0621a0612b9d910be8c3b0d87829269e72a7
@@ -10,6 +10,21 @@ XXX XXX XX XX:XX:XX UTC 201X
and returns the attributes for a specific file from the
revision's manifest
+ - New 'erase_descendants' automate command which returns all
+ input revisions, except those that are a descendant of
+ another revision in the input.
+
+ - New 'min(A)' selector is now available which returns all
+ revisions selected by A which are not descendants of other
+ revisions selected by A.
+
+ - New 'not(A)' selector is now available which returns all
+ revisions not selected by 'A'.
+
+ - All certs for a revision are now output by 'mtn log' with
+ 'suspend', 'testresult', and custom certs placed under a
+ a new 'Other certs' heading.
+
Bugs fixed
- Monotone now compiles against Botan 1.10.x (as well as most of
@@ -34,6 +49,8 @@ XXX XXX XX XX:XX:XX UTC 201X
Other
+ - 'mtn diff' now outputs old and new revision IDs in the diff header
+ when both are specified.
Sat Mar 26 10:53:47 UTC 2011
============================================================
--- doc/monotone.texi a063880df3b6539cf9f7c3536e82261e6d496708
+++ doc/monotone.texi d1293584f8a36c591fec36bc00427f77512c9876
@@ -39,7 +39,7 @@
Copyright @copyright{} 2006 Alex Queiroz @*
Copyright @copyright{} 2006, 2007 William Uther @*
Copyright @copyright{} 2006 - 2010 Thomas Keller @*
-Copyright @copyright{} 2007 - 2011 Stephen Leake @*
+Copyright @copyright{} 2007 - 2012 Stephen Leake @*
This manual is made available under the GNU GPL version 2.0 or
greater. See the accompanying file COPYING for details.
@@ -2935,6 +2935,14 @@ @heading Composite selectors
example, @code{difference(a:graydon;b:net.venge.monotone)} would return all
revisions which have an @code{author} cert beginning with @code{graydon} which
are not in the branch @code{net.venge.monotone}.
address@hidden not(A)
+Set complement; this returns all revisions not selected by A. For example,
address@hidden(c:testresult)} would return all revisions which do not have any
address@hidden certs. Conceptually @code{not(A)} is equivalent to
address@hidden(*, A)}, where @code{*} selects all revisions. The previous
+example to return all revisions which have an @code{author} cert beginning
+with @code{graydon} and are not in the branch @code{net.venge.monotone},
+can be written as @code{a:graydon/not(b:net.venge.monotone)}.
@item lca(A;B)
Least common ancestors; this is identical to
@code{max((ancestors(A)|A)/(ancestors(B)|B))},
@@ -2949,6 +2957,11 @@ @heading Composite selectors
@code{max(b:net.venge.monotone/a:graydon)} would return the latest revision(s)
on branch @code{net.venge.monotone} which have an @code{author} cert beginning
with @code{graydon}.
address@hidden min(A)
+Erase descendants; this returns all revisions selected by @code{A} which are not
+descendants of other revisions selected by @code{A}. For example,
address@hidden(b:net.venge.monotone)} would return the earliest revision(s)
+on branch @code{net.venge.monotone}.
@item ancestors(A)
Strict ancestors; returns all revisions which are an ancestor of a revision
selected by @code{A}. For example, @code{ancestors(b:net.venge.monotone)}
@@ -4220,7 +4233,7 @@ @section Exporting to GIT
$ mkdir test.git
$ cd test.git
$ git init
-$ mtn --db test.mtn git_export | git fast import
+$ mtn --db test.mtn git_export | git fast-import
@end group
@end smallexample
@@ -4590,7 +4603,8 @@ @chapter Command Reference
The Lua hook @address@hidden can change the
default value for any option.
-Revision arguments to commands may be selectors or hex ids.
+Revision arguments to commands (but not to automate commands) may be
+selectors (see @ref{Selectors}) or hex ids.
@menu
* Global and Common Options:: Options that affect all or many commands
@@ -4845,7 +4859,7 @@ @section Tree
@anchor{mtn address@hidden mtn checkout [--[no-]move-conflicting-paths] address@hidden @var{directory}
@itemx mtn checkout [--[no-]move-conflicting-paths] address@hidden @var{directory}
@itemx mtn co
address@hidden is an alias for @command{checkout}
address@hidden is an alias for @command{checkout}. See @ref{Selectors}.
These commands copy a revision @var{id} out of your database,
recording the chosen revision (the @dfn{base revision}) in the file
@@ -4894,9 +4908,9 @@ @section Tree
See @ref{Conflicts}
@anchor{mtn address@hidden mtn explicit_merge [--[no-]update] @var{id} @var{id} @var{destbranch}
-See the online help for options. See @ref{--update}.
+See the online help for options. See @ref{--update}. See @ref{Selectors}.
-This command merges exactly the two @var{id}s you give it, and places
+This command merges exactly the two revision @var{id}s you give it, and places
the result in branch @var{destbranch}. It is useful when you need more
control over the merging process than @command{propagate} or @command{merge}
give you. For instance, if you have a branch with three heads, and you
@@ -4919,7 +4933,7 @@ @section Tree
@anchor{mtn address@hidden mtn import address@hidden address@hidden [--[no-]dry-run] @var{dir}
@itemx mtn import address@hidden address@hidden [--[no-]dry-run] @var{dir}
-See the online help for more options.
+See the online help for more options. See @ref{Selectors}.
This command imports the contents of the given directory and commits it
to the head of the given branch or as a child of the given revision (and
@@ -4994,10 +5008,10 @@ @section Tree
@ref{Merge Conflicts} can occur. See @ref{--update}.
@anchor{mtn address@hidden mtn merge_into_workspace [--[no]-move-conflicting-paths] @var{revision}
-Merges @var{revision} into the current workspace; the result is not
-committed to the database. There can be no pending changes in the
-current workspace. The workspace's selected branch is not
-changed.
+Merges @var{revision} (see @ref{Selectors}) into the current
+workspace; the result is not committed to the database. There can be
+no pending changes in the current workspace. The workspace's selected
+branch is not changed.
When a later commit is done, both @var{revision} and the workspace's
base revision will be recorded as parents.
@@ -5092,10 +5106,10 @@ @subheading Commands
@ftable @command
@item mtn conflicts store address@hidden address@hidden @var{right_rev_id}]
Store the conflicts encountered by merging @var{left_rev_id} with
address@hidden, in the specified file (defaults to
address@hidden/conflicts}. If @var{left_rev_id} and @var{right_rev_id} are
-not given, the first two heads that the @command{merge} command would
-merge are used.
address@hidden (revision ids; see @ref{Selectors}), in the
+specified file (defaults to @file{_MTN/conflicts}. If
address@hidden and @var{right_rev_id} are not given, the first two
+heads that the @command{merge} command would merge are used.
The conflicts file format is as output by the @command{automate
show_conflicts} command; see @address@hidden automate show_conflicts}}.
@@ -5471,7 +5485,7 @@ @section Workspace
@anchor{mtn address@hidden mtn pluck [--[no-]move-conflicting-paths] address@hidden
@itemx mtn pluck [--[no-]move-conflicting-paths] address@hidden address@hidden
-See the online help for more options.
+See the online help for more options. See @ref{Selectors}.
This command takes changes made at any point in history, and attempts to
edit your current workspace to include those changes. The end result is
@@ -5547,7 +5561,7 @@ @section Workspace
@anchor{mtn address@hidden mtn update [--[no-]move-conflicting-paths] [--branch @var{branchname}]
@itemx mtn update [--[no-]move-conflicting-paths] address@hidden
This command changes your workspace to have the a different revision as
-the base revision.
+the base revision. See @ref{Selectors}.
@command{update} performs 3 separate stages. If any of these stages
fails, the update aborts, doing nothing. The first two stages select
@@ -5761,9 +5775,9 @@ @section Network
Finally, @command{clone} copies the files out of the newly created
database into a local directory, just as @command{checkout} would. If
no @var{directory} is given, the @var{branchname} is used as
-directory. If @option{--revision} is given, that revision must be on
-the specified branch, and is checked out; otherwise the head of the
-branch is checked out.
+directory. If @option{--revision} is given (see @ref{Selectors}), that
+revision must be on the specified branch, and is checked out;
+otherwise the head of the branch is checked out.
@strong{Important notice:} The @var{address}[:@var{port}] @var{branchname}
call syntax is deprecated and subject to removal in future versions of monotone!
@@ -5776,6 +5790,7 @@ @section Informative
@ftable @command
@item mtn annotate @var{file}
@itemx mtn annotate address@hidden [--revs-only] @var{file}
+See @ref{Selectors}.
Dumps an annotated copy of the file to stdout. The output is in the
form:
@@ -5799,10 +5814,10 @@ @section Informative
@item mtn bisect bad address@hidden ...] [--[no-]move-conflicting-paths]
Mark the specified revisions as ``bad'' for the current bisection
-operation (see @ref{Bisecting}). If no bisection operation is in
-progress a new bisection is initialized. If a bisection operation is
-in progress the next update target is selected and the workspace is
-updated to the selected revision.
+operation (see @ref{Bisecting}, see @ref{Selectors}). If no bisection
+operation is in progress a new bisection is initialized. If a
+bisection operation is in progress the next update target is selected
+and the workspace is updated to the selected revision.
If the update is blocked by conflicting unversioned paths existing in
the workspace this command may be re-issued with the
@@ -5812,10 +5827,10 @@ @section Informative
@item mtn bisect good address@hidden ...] [--[no-]move-conflicting-paths]
Mark the specified revisions as ``good'' for the current bisection
-operation (see @ref{Bisecting}). If no bisection operation is in
-progress a new bisection is initialized. If a bisection operation is
-in progress the next update target is selected and the workspace is
-updated to the selected revision.
+operation (see @ref{Bisecting}, see @ref{Selectors}). If no bisection
+operation is in progress a new bisection is initialized. If a
+bisection operation is in progress the next update target is selected
+and the workspace is updated to the selected revision.
If the update is blocked by conflicting unversioned paths existing in
the workspace this command may be re-issued with the
@@ -5830,10 +5845,10 @@ @section Informative
@item mtn bisect skip address@hidden ...] [--[no-]move-conflicting-paths]
Mark the specified revisions as ``skipped'' for the current bisection
-operation (see @ref{Bisecting}). If no bisection operation is in
-progress a new bisection is initialized. If a bisection operation is
-in progress the next update target is selected and the workspace is
-updated to the selected revision.
+operation (see @ref{Bisecting}, see @ref{Selectors}). If no bisection
+operation is in progress a new bisection is initialized. If a
+bisection operation is in progress the next update target is selected
+and the workspace is updated to the selected revision.
If the update is blocked by conflicting unversioned paths existing in
the workspace this command may be re-issued with the
@@ -5855,16 +5870,18 @@ @section Informative
@item mtn cat address@hidden @var{path}
Write the contents of a specific file @var{path} in revision @var{id}
-(default to workspace base revision) to standard output.
+(see @ref{Selectors}; default to workspace base revision) to standard
+output.
@item mtn complete file @var{partial-id}
@itemx mtn complete key @var{partial-id}
@itemx mtn complete revision @var{partial-id}
These commands print out all known completions of a partial @sc{sha1}
-value, listing completions which are @code{file}, @code{manifest} or
address@hidden IDs depending on which variant is used. For
-example, suppose you enter this command and get this result:
+value (@emph{not} a selector), listing completions which are
address@hidden, @code{manifest} or @code{revision} IDs depending on which
+variant is used. For example, suppose you enter this command and get
+this result:
@smallexample
@group
@@ -5889,7 +5906,8 @@ @section Informative
@itemx mtn diff address@hidden address@hidden
@itemx mtn diff address@hidden address@hidden @var{pathname...}
@itemx mtn di
address@hidden is an alias for @command{diff}. See online help for more options.
address@hidden is an alias for @command{diff}. See online help for more
+options. See @ref{Selectors}.
These commands print out textual difference listings between various
manifest versions. With no @option{--revision} options, @command{diff}
@@ -6059,7 +6077,8 @@ @section Informative
@item mtn list duplicates address@hidden
@itemx mtn ls duplicates
address@hidden duplicates} is an alias for @command{list duplicates}.
address@hidden duplicates} is an alias for @command{list duplicates}. See
address@hidden
This command lists duplicate files in a given revision (defaults to
the workspace base revision). Ignored and unknown files are excluded
@@ -6172,7 +6191,7 @@ @section Informative
@anchor{mtn address@hidden mtn log
@itemx mtn log address@hidden address@hidden address@hidden [...]] [--clear-from] address@hidden [...]] [--clear-to] address@hidden [...]] [--[no-]brief] [--[no-]merges] [--[no-]files] [--[no-]graph] [--[no-]diffs] address@hidden
-See the online help for more options.
+See the online help for more options. See @ref{Selectors}.
This command prints out a log, in forward ancestry order by default
but optionally in reverse ancestry order, of small history summaries.
@@ -6269,7 +6288,7 @@ @section Informative
@item mtn show_conflicts @var{rev} @var{rev}
This command shows what conflicts would need to be resolved in order to merge
-the given revisions; see @ref{Merge Conflicts}.
+the given revisions; see @ref{Merge Conflicts}, see @ref{Selectors}.
Note that this does not show conflicts due to update commands, since
in that case one revision is the workspace.
@@ -6328,8 +6347,8 @@ @section Review
@anchor{mtn address@hidden mtn comment @var{rev} address@hidden
-This adds a new comment to a committed revision. If @var{comment} is
-not provided, it is obtained from the Lua hook
+This adds a new comment to a committed revision (see @ref{Selectors}).
+If @var{comment} is not provided, it is obtained from the Lua hook
@address@hidden; the hook is passed an empty string.
This command is a synonym for @command{mtn cert @var{rev} comment
@@ -6338,10 +6357,12 @@ @section Review
@item mtn disapprove [--[no-]update] address@hidden @var{child}
See online help for more options; see @ref{Common Options}. See @ref{--update}.
-This command records a disapproval of the changes between @var{parent}'s
-ancestor and @var{child}. If @var{parent} is omitted, only @var{child}
-is disapproved. The command does the disapproval by committing
-the @i{inverse} changes as a new revision descending from @var{child}.
+This command records a disapproval of the changes between
address@hidden's ancestor and @var{child}. @var{parent} and @var{child}
+are revision ids (see @ref{Selectors}). If @var{parent} is omitted,
+only @var{child} is disapproved. The command does the disapproval by
+committing the @i{inverse} changes as a new revision descending from
address@hidden
Conceptually, @command{disapprove}'s contract is that disapprove(A) gives a
revision B such that whenever B is merged with a descendant D of A the merge
@@ -6356,10 +6377,11 @@ @section Review
@anchor{mtn address@hidden mtn suspend [--[no-]update] [--branch @var{branchname}] @var{rev}
See @ref{--update}.
-This makes @var{rev} invisible as a head of branch @var{branchname}
-(defaults to the current workspace branch). Any operation that looks
-for heads will not count @var{rev}; this includes @address@hidden
-list branches}} as well as @address@hidden merge}} etc.
+This makes @var{rev} (a revision id; see @ref{Selectors}) invisible as
+a head of branch @var{branchname} (defaults to the current workspace
+branch). Any operation that looks for heads will not count @var{rev};
+this includes @address@hidden list branches}} as well as
address@hidden@ref{mtn merge}} etc.
If @var{rev} is not a head, @command{suspend} has no effect.
@@ -6372,8 +6394,9 @@ @section Review
@item mtn tag @var{rev} @var{tagname}
This command associates the symbolic name @var{tagname} with the
-revision @var{rev}, so that symbolic name can later be used in
address@hidden for specifying revisions.
+revision @var{rev} (a revision id; see @ref{Selectors}), so that
+symbolic name can later be used in selectors for specifying
+revisions.
This command is a synonym for @command{mtn cert @var{rev} tag
@var{tagname}}.
@@ -6426,7 +6449,7 @@ @section Key and Cert
@anchor{mtn address@hidden mtn cert @var{selector} @var{certname} address@hidden
Create a new certificate with name @var{certname}, for all
-revisions matching @var{selector}.
+revisions matching @var{selector} (see @ref{Selectors}).
If @var{certval} is provided, it is the value of the certificate.
Otherwise the certificate value is read from @code{stdin}.
@@ -6547,11 +6570,11 @@ @section Key and Cert
@item mtn trusted @var{id} @var{certname} @var{certval} @var{signers}
This command lets you test your revision trust hook
address@hidden You pass it a revision ID, a
-certificate name, a certificate value, and one or more key IDs or key
-names, and it will tell you whether, under your current settings,
-Monotone would trust a cert on that revision with that value signed by
-those keys.
address@hidden You pass it a revision ID (see
address@hidden), a certificate name, a certificate value, and one or
+more key IDs or key names, and it will tell you whether, under your
+current settings, Monotone would trust a cert on that revision with
+that value signed by those keys.
The specified keys must exist either in your keystore or in the database.
@@ -6813,15 +6836,15 @@ @section Database
@item mtn local kill_certs @var{selector} @var{certname} address@hidden
This command deletes certs with the given name on revisions that match
-the given selector. If a value is given, it restricts itself to only
-delete certs that also have that same value. Like @address@hidden
-local kill_revision}}, it is a very dangerous command; it permanently
-and irrevocably deletes historical information from your
-database. Also like @command{kill_revision}, this only deletes the
-certs from your local database; if there are other databases that you
-sync with which have these certs they will reappear when you sync,
-unless the owners of those databases also delete those certificates
-locally.
+the given selector (see @ref{Selectors}). If a value is given, it
+restricts itself to only delete certs that also have that same
+value. Like @address@hidden local kill_revision}}, it is a very
+dangerous command; it permanently and irrevocably deletes historical
+information from your database. Also like @command{kill_revision},
+this only deletes the certs from your local database; if there are
+other databases that you sync with which have these certs they will
+reappear when you sync, unless the owners of those databases also
+delete those certificates locally.
Early versions of monotone had @command{db kill_tag_locally} and
@command{db kill_branch_certs_locally} commands. These can be emulated with
@@ -6829,14 +6852,15 @@ @section Database
@command{local kill_certs i: branch BRANCH}, respectively.
@anchor{mtn local address@hidden mtn local kill_revision @var{id}
-This command ``kills'', i.e., deletes, a given revision, as well as
-any certs attached to it. It is a very dangerous command; it
-permanently and irrevocably deletes historical information from your
-database. If you execute this command in a workspace, whose parent
-revision is the one you are about to delete, the killed revision is
-re-applied to this workspace which makes it possible for you to fix a
-problem and commit again later on easily. For this to work, the
-workspace may not have any changes and/or missing files.
+This command ``kills'', i.e., deletes, a given revision (see
address@hidden), as well as any certs attached to it. It is a very
+dangerous command; it permanently and irrevocably deletes historical
+information from your database. If you execute this command in a
+workspace, whose parent revision is the one you are about to delete,
+the killed revision is re-applied to this workspace which makes it
+possible for you to fix a problem and commit again later on
+easily. For this to work, the workspace may not have any changes
+and/or missing files.
There are a number of other caveats with this command:
@itemize
@@ -7499,7 +7523,48 @@ @section Automation
@end table
address@hidden mtn automate erase_descendants address@hidden
address@hidden @strong
address@hidden Arguments:
+
+One or more revision IDs.
+
address@hidden Added in:
+
+13.1
+
address@hidden Purpose:
+
+Prints all arguments, except those that are a descendant of some other
+argument.
+
+One way to think about this is that it prints the minimal elements of
+the given set, under the ordering imposed by the ``parent of''
+relation. Another way to think of it is if the arguments formed a
+branch, then we would print the roots of that branch. If there are no
+arguments, prints nothing.
+
address@hidden Sample output:
+
address@hidden
+28ce076c69eadb9b1ca7bdf9d40ce95fe2f29b61
+75156724e0e2e3245838f356ec373c50fa469f1f
address@hidden verbatim
+
address@hidden Output format:
+
+Zero or more lines, each giving the ID of one of the given revisions.
+Each line consists of a revision ID, in hexadecimal, followed by a
+newline. The lines are printed in alphabetically sorted order.
+
address@hidden Error conditions:
+
+If any of the revisions do not exist, prints nothing to stdout, prints
+an error message to stderr, and exits with status 1.
+
address@hidden table
+
@item mtn automate file_merge @var{left-rid} @var{left-path} @var{right-rid} @var{right-path}
@table @strong
============================================================
--- innosetup/README.txt ea1ad861438da89b7cf89f01c32a171ffd81ab11
+++ innosetup/README.txt 798ee75cb8be7728e4c5fbc6cb682d1f7beca7a2
============================================================
--- po/de.po bd824479fb3a72bb048845d858e3a76b96f32c9b
+++ po/de.po 4b2a04bf9575d35175f08c9ed53cca82d5050e4f
@@ -7,7 +7,7 @@ msgstr ""
msgstr ""
"Project-Id-Version: monotone\n"
"Report-Msgid-Bugs-To: https://code.monotone.ca/p/monotone/issues/\n"
-"POT-Creation-Date: 2011-03-14 01:32+0100\n"
+"POT-Creation-Date: 2012-04-26 01:46+0200\n"
"PO-Revision-Date: 2011-03-14 10:18+0100\n"
"Last-Translator: tommyd <address@hidden>\n"
"Language-Team: Deutsch <address@hidden>\n"
@@ -55,7 +55,7 @@ msgstr "GröÃe der hex-enkodierten ID '
msgid "hex encoded ID '%s' size != %d"
msgstr "GröÃe der hex-enkodierten ID '%s' ist ungleich %d"
-#: src/vocab.cc:53 src/database.cc:4231
+#: src/vocab.cc:53 src/database.cc:4229
#, c-format
msgid "bad character '%c' in id name '%s'"
msgstr "ungültiges Zeichen '%c' in ID-Name '%s'"
@@ -82,12 +82,12 @@ msgstr "ungültiges Zeichen '%c' in Schl
#: src/vocab.cc:109
#, c-format
-msgid "Invalid key length of %d bytes"
+msgid "invalid key length of %d bytes"
msgstr "Ungültige Schlüssellänge von %d Bytes"
#: src/vocab.cc:123
#, c-format
-msgid "Invalid hmac length of %d bytes"
+msgid "invalid hmac length of %d bytes"
msgstr "Ungültige 'hmac'-Länge von %d Bytes"
#: src/charset.cc:72
@@ -117,17 +117,17 @@ msgstr "Pfad '%s' ist im monotone-System
#: src/paths.cc:460
#, c-format
-msgid "Invalid utf8"
+msgid "invalid utf8"
msgstr "Ungültiges UTF-8"
#: src/paths.cc:484
#, c-format
-msgid "Path is not normalized"
+msgid "path is not normalized"
msgstr "Pfad ist nicht normalisiert"
#: src/paths.cc:486
#, c-format
-msgid "Bookkeeping path is not in bookkeeping dir"
+msgid "bookkeeping path is not in bookkeeping directory"
msgstr "Systempfad ist nicht im monotone-Systemverzeichnis"
#: src/paths.cc:827
@@ -172,7 +172,7 @@ msgstr "%s wurde mit einem ungültigen P
#: src/lua.cc:592
#, c-format
-msgid "Directory '%s' does not exist"
+msgid "directory '%s' does not exist"
msgstr "Das Verzeichnis '%s' existiert nicht"
#: src/lua.cc:594 src/cmd_othervcs.cc:61 src/work.cc:2140
@@ -276,7 +276,7 @@ msgstr "Kann Datei '%s' nicht zum Lesen
#: src/file_io.cc:303
#, c-format
-msgid "Cannot read standard input multiple times"
+msgid "cannot read standard input multiple times"
msgstr "Kann nicht mehrmals von der Standardeingabe lesen"
#: src/file_io.cc:334
@@ -478,29 +478,29 @@ msgstr "%s: entfernte Kopfzeile:"
#: src/automate_reader.cc:46
#, c-format
-msgid "Bad input to automate stdio: expected ':' after string size"
+msgid "bad input to automate stdio: expected ':' after string size"
msgstr ""
-"Falsche Eingabe für 'automate stdio': erwartete ':' nach Zeichenketten-Länge."
+"Falsche Eingabe für 'automate stdio': erwartete ':' nach Zeichenketten-Länge"
#: src/automate_reader.cc:66
#, c-format
-msgid "Bad input to automate stdio: unexpected EOF"
-msgstr "Falsche Eingabe für 'automate stdio': unerwartetes EOF."
+msgid "bad input to automate stdio: unexpected EOF"
+msgstr "Falsche Eingabe für 'automate stdio': unerwartetes EOF"
#: src/automate_reader.cc:94
#, c-format
-msgid "Bad input to automate stdio: unknown start token '%c'"
-msgstr "Falsche Eingabe für 'automate stdio': unbekanntes Startzeichen '%c'."
+msgid "bad input to automate stdio: unknown start token '%c'"
+msgstr "Falsche Eingabe für 'automate stdio': unbekanntes Startzeichen '%c'"
#: src/automate_reader.cc:116
#, c-format
-msgid "Bad input to automate stdio: expected '%c' token"
-msgstr "Falsche Eingabe für 'automate stdio': erwartete Zeichen '%c'."
+msgid "bad input to automate stdio: expected '%c' token"
+msgstr "Falsche Eingabe für 'automate stdio': erwartete Zeichen '%c'"
#: src/automate_reader.cc:123
#, c-format
-msgid "Bad input to automate stdio: command name is missing"
-msgstr "Falsche Eingabe für 'automate stdio': Kommandoname fehlt."
+msgid "bad input to automate stdio: command name is missing"
+msgstr "Falsche Eingabe für 'automate stdio': Kommandoname fehlt"
#: src/commands.cc:496
#, c-format
@@ -654,7 +654,7 @@ msgstr ""
#: src/cmd.cc:459
#, c-format
-msgid "Call to user command '%s' (lua command: '%s') failed."
+msgid "call to user command '%s' (lua command: '%s') failed."
msgstr ""
"Der Aufruf des Benutzerkommandos '%s' (Lua-Kommando: '%s') schlug fehl."
@@ -849,7 +849,7 @@ msgid ""
#: src/cmd_netsync.cc:122 src/cmd_netsync.cc:225
#, c-format
msgid ""
-"No database given; assuming '%s' database. This means that\n"
+"no database given; assuming '%s' database. This means that\n"
"we can't verify the server key, because we have no record of\n"
"what it should be."
msgstr ""
@@ -869,8 +869,8 @@ msgstr "Führt KOMMANDO auf einem entfer
#: src/cmd_netsync.cc:221 src/cmd_list.cc:1021 src/cmd_packet.cc:73
#: src/cmd_packet.cc:134 src/cmd_packet.cc:254 src/cmd_key_cert.cc:81
#: src/cmd_key_cert.cc:186 src/cmd_merging.cc:384 src/cmd_merging.cc:1141
-#: src/cmd_merging.cc:1219 src/cmd_ws_commit.cc:1134 src/cmd_ws_commit.cc:1342
-#: src/cmd_ws_commit.cc:1456 src/cmd_ws_commit.cc:1478 src/cmd_automate.cc:138
+#: src/cmd_merging.cc:1219 src/cmd_ws_commit.cc:1136 src/cmd_ws_commit.cc:1342
+#: src/cmd_ws_commit.cc:1484 src/cmd_ws_commit.cc:1506 src/cmd_automate.cc:138
#: src/cmd_files.cc:239 src/cmd_files.cc:336 src/cmd_files.cc:360
#: src/cmd_files.cc:394 src/automate.cc:85 src/automate.cc:122
#: src/automate.cc:175 src/automate.cc:298 src/automate.cc:400
@@ -1010,18 +1010,18 @@ msgstr "Das Zielverzeichnis für das Kop
msgid "clone destination directory '%s' already exists"
msgstr "Das Zielverzeichnis für das Kopieren '%s' existiert bereits."
-#: src/cmd_netsync.cc:832 src/cmd_ws_commit.cc:1842 src/cmd_ws_commit.cc:1931
+#: src/cmd_netsync.cc:832 src/cmd_ws_commit.cc:1870 src/cmd_ws_commit.cc:1959
#, c-format
msgid "bookkeeping directory already exists in '%s'"
msgstr "Das monotone-Systemverzeichnis existiert bereits in '%s'"
#: src/cmd_netsync.cc:866 src/cmd_merging.cc:535 src/cmd_merging.cc:636
-#: src/cmd_merging.cc:641 src/cmd_merging.cc:1471 src/cmd_ws_commit.cc:1030
+#: src/cmd_merging.cc:641 src/cmd_merging.cc:1471 src/cmd_ws_commit.cc:1032
#, c-format
msgid "branch '%s' is empty"
msgstr "Zweig '%s' ist leer"
-#: src/cmd_netsync.cc:869 src/cmd_ws_commit.cc:1033 src/cmd_ws_commit.cc:1910
+#: src/cmd_netsync.cc:869 src/cmd_ws_commit.cc:1035 src/cmd_ws_commit.cc:1938
#, c-format
msgid "branch '%s' has multiple heads:"
msgstr "Zweig '%s' hat mehrere Köpfe:"
@@ -1031,12 +1031,12 @@ msgstr "wählen Sie eine durch '%s clone
msgid "choose one with '%s clone -r<id> URI'"
msgstr "wählen Sie eine durch '%s clone -r<id> URI'"
-#: src/cmd_netsync.cc:874 src/cmd_ws_commit.cc:1039 src/cmd_ws_commit.cc:1916
+#: src/cmd_netsync.cc:874 src/cmd_ws_commit.cc:1041 src/cmd_ws_commit.cc:1944
#, c-format
msgid "branch '%s' has multiple heads"
msgstr "Zweig '%s' hat mehrere Köpfe"
-#: src/cmd_netsync.cc:885 src/cmd_ws_commit.cc:1896
+#: src/cmd_netsync.cc:885 src/cmd_ws_commit.cc:1924
#, c-format
msgid "revision %s is not a member of branch '%s'"
msgstr "Revision %s ist nicht Mitglied des Zweiges '%s'"
@@ -1125,7 +1125,7 @@ msgstr "mehr als eine Revision wurde üb
#: src/automate.cc:1602 src/automate.cc:1634 src/automate.cc:1701
#: src/automate.cc:1703 src/automate.cc:1739 src/automate.cc:1946
#: src/automate.cc:2008 src/automate.cc:2013 src/automate.cc:2175
-#: src/selectors.cc:904 src/selectors.cc:922
+#: src/selectors.cc:917 src/selectors.cc:935
#, c-format
msgid "no revision %s found in database"
msgstr "Revision %s nicht in Datenbank gefunden"
@@ -1202,12 +1202,12 @@ msgstr "Listet verwaltete Datenbanken un
msgid "Lists managed databases and their known workspaces"
msgstr "Listet verwaltete Datenbanken und deren bekannte Arbeitsbereiche"
-#: src/cmd_list.cc:684 src/database.cc:4978
+#: src/cmd_list.cc:684 src/database.cc:4976
#, c-format
msgid "no default database location configured"
msgstr "kein Standard-Datenbankpfad konfiguriert"
-#: src/cmd_list.cc:688 src/database.cc:5056
+#: src/cmd_list.cc:688 src/database.cc:5054
#, c-format
msgid "could not query default database glob"
msgstr "konnte nicht das Standarddateimuster für Datenbanken abfragen"
@@ -1560,8 +1560,8 @@ msgstr ""
"Beim nächsten Einpflegen wird der Zweig '%s' genutzt"
#: src/cmd_merging.cc:209 src/cmd_merging.cc:824 src/cmd_ws_commit.cc:370
-#: src/cmd_ws_commit.cc:1358 src/cmd_ws_commit.cc:2042
-#: src/cmd_ws_commit.cc:2270 src/cmd_ws_commit.cc:2385 src/cmd_files.cc:308
+#: src/cmd_ws_commit.cc:1362 src/cmd_ws_commit.cc:2070
+#: src/cmd_ws_commit.cc:2298 src/cmd_ws_commit.cc:2413 src/cmd_files.cc:308
#: src/cmd_files.cc:406 src/automate.cc:1035 src/automate.cc:1328
#, c-format
msgid "this command can only be used in a single-parent workspace"
@@ -2284,7 +2284,7 @@ msgstr ""
#: src/cmd_db.cc:464 src/cmd_db.cc:486
#, c-format
-msgid "No workspace given"
+msgid "no workspace given"
msgstr "Kein Arbeitsbereich angegeben"
#: src/cmd_db.cc:478
@@ -2340,8 +2340,8 @@ msgstr "zwischengespeicherte Höhenangab
msgstr "zwischengespeicherte Höhenangabe: %s"
#: src/cmd_db.cc:630
-msgid "load all revisions from the database"
-msgstr "läd alle Revision aus der Datenbank"
+msgid "Load all revisions from the database"
+msgstr "läd alle Revisionen aus der Datenbank"
#: src/cmd_db.cc:631
msgid ""
@@ -2362,7 +2362,7 @@ msgstr "Revisionen"
msgstr "Revisionen"
#: src/cmd_db.cc:659
-msgid "load all roster versions from the database"
+msgid "Load all roster versions from the database"
msgstr "läd alle Katalog-Versionen aus der Datenbank"
#: src/cmd_db.cc:660
@@ -2383,7 +2383,7 @@ msgstr "Kataloge"
msgstr "Kataloge"
#: src/cmd_db.cc:687
-msgid "load all file versions from the database"
+msgid "Load all file versions from the database"
msgstr "läd alle Dateiversionen aus der Datenbank"
#: src/cmd_db.cc:688
@@ -2404,7 +2404,7 @@ msgstr "Dateien"
msgstr "Dateien"
#: src/cmd_db.cc:713
-msgid "load all certs from the database"
+msgid "Load all certs from the database"
msgstr "läd alle Zertifikate aus der Datenbank"
#: src/cmd_db.cc:714
@@ -2445,21 +2445,21 @@ msgstr ""
"(Geben Sie die Revision, gegen die Ãnderungen angezeigt werden sollen, "
"explizit mit '--revision' an.)"
-#: src/cmd_diff_log.cc:407 src/rev_output.cc:147
+#: src/cmd_diff_log.cc:410 src/rev_output.cc:164
msgid "no changes"
msgstr "keine Ãnderungen"
-#: src/cmd_diff_log.cc:416 src/cmd_ws_commit.cc:538 src/cmd_ws_commit.cc:776
-#: src/cmd_ws_commit.cc:818 src/cmd_ws_commit.cc:890 src/cmd_ws_commit.cc:1808
+#: src/cmd_diff_log.cc:419 src/cmd_ws_commit.cc:538 src/cmd_ws_commit.cc:778
+#: src/cmd_ws_commit.cc:820 src/cmd_ws_commit.cc:892 src/cmd_ws_commit.cc:1836
#: src/automate.cc:1019
msgid "[PATH]..."
msgstr "[PFAD]..."
-#: src/cmd_diff_log.cc:417
+#: src/cmd_diff_log.cc:420
msgid "Shows current differences"
msgstr "Zeigt die derzeitigen Unterschiede"
-#: src/cmd_diff_log.cc:418
+#: src/cmd_diff_log.cc:421
msgid ""
"Compares the current tree with the files in the repository and prints the "
"differences on the standard output.\n"
@@ -2474,7 +2474,7 @@ msgstr ""
"Unterschiede zwischen diesen beiden ausgegeben. Wenn kein Format angegeben "
"wurde, wird standardmäÃig 'unified' verwendet."
-#: src/cmd_diff_log.cc:429
+#: src/cmd_diff_log.cc:432
#, c-format
msgid ""
"'--diff-args' requires '--external'; try adding '--external' or remove '--"
@@ -2483,31 +2483,31 @@ msgstr ""
"'--diff-args' benötigt '--external'; fügen Sie '--external' hinzu oder "
"entfernen Sie '--diff-args'"
-#: src/cmd_diff_log.cc:462
+#: src/cmd_diff_log.cc:465
msgid "[FILE [...]]"
msgstr "[DATEI [...]]"
-#: src/cmd_diff_log.cc:463
+#: src/cmd_diff_log.cc:466
msgid "Calculates diffs of files"
msgstr "Berechnet die Unterschiede in Dateien"
-#: src/cmd_diff_log.cc:643
+#: src/cmd_diff_log.cc:646
#, c-format
msgid "only one of '--last'/'--next' allowed"
msgstr "'--last' und '--next' sind nur einmal erlaubt"
-#: src/cmd_diff_log.cc:660
+#: src/cmd_diff_log.cc:663
#, c-format
msgid "try passing a '--from' revision to start at"
msgstr "Versuchen Sie, über die Option '--from' eine Startrevision anzugeben."
-#: src/cmd_diff_log.cc:669
+#: src/cmd_diff_log.cc:672
#, c-format
msgid "workspace has no parent revision, probably an empty branch"
msgstr ""
"Arbeitsbereich hat keine Elternrevision, wahrscheinlich ein leerer Zweig"
-#: src/cmd_diff_log.cc:672
+#: src/cmd_diff_log.cc:675
#, c-format
msgid ""
"workspace parent revision %s not found - did you specify a wrong database?"
@@ -2515,20 +2515,20 @@ msgstr ""
"Eltern-Revision %s des Arbeitsbereiches wurde nicht gefunden - haben Sie "
"eine falsche Datenbank angegeben?"
-#: src/cmd_diff_log.cc:958
+#: src/cmd_diff_log.cc:961
#, c-format
msgid "(Revision: %s)"
msgstr "(Revision: %s)"
-#: src/cmd_diff_log.cc:980 src/cmd_diff_log.cc:994
+#: src/cmd_diff_log.cc:983 src/cmd_diff_log.cc:997
msgid "[PATH] ..."
msgstr "[PFAD] ..."
-#: src/cmd_diff_log.cc:981
+#: src/cmd_diff_log.cc:984
msgid "Prints selected history in forward or reverse order"
msgstr "Gibt die ausgewählte Historie vorwärts oder rückwärts aus"
-#: src/cmd_diff_log.cc:982
+#: src/cmd_diff_log.cc:985
msgid ""
"This command prints selected history in forward or reverse order, filtering "
"it by PATH if given."
@@ -2536,7 +2536,7 @@ msgstr ""
"Dieses Kommando gibt die ausgewählte Historie vorwärts oder rückwärts aus, "
"gefiltert durch PFAD, sofern angegeben."
-#: src/cmd_diff_log.cc:995
+#: src/cmd_diff_log.cc:998
msgid "Lists the selected revision history"
msgstr "Listet die ausgewählte Revisionshistorie"
@@ -2592,19 +2592,19 @@ msgstr ""
"Datumsformat '%s' kann nicht analysiert werden; nutze stattdessen "
"Standardformat"
-#: src/cmd_ws_commit.cc:237 src/cmd_ws_commit.cc:985
+#: src/cmd_ws_commit.cc:237 src/cmd_ws_commit.cc:987
msgid "*** THIS REVISION WILL CREATE A NEW BRANCH ***"
msgstr "*** DIESE REVISION ERZEUGT EINEN NEUEN ZWEIG ***"
-#: src/cmd_ws_commit.cc:240 src/cmd_ws_commit.cc:988
+#: src/cmd_ws_commit.cc:240 src/cmd_ws_commit.cc:990
msgid "Old Branch: "
msgstr "Alter Zweig: "
-#: src/cmd_ws_commit.cc:241 src/cmd_ws_commit.cc:989
+#: src/cmd_ws_commit.cc:241 src/cmd_ws_commit.cc:991
msgid "New Branch: "
msgstr "Neuer Zweig: "
-#: src/cmd_ws_commit.cc:252 src/cmd_ws_commit.cc:1000
+#: src/cmd_ws_commit.cc:252 src/cmd_ws_commit.cc:1002
msgid "*** THIS REVISION WILL CREATE DIVERGENCE ***"
msgstr "*** DIESE REVISION WIRD EINEN NEUEN KOPF ERZEUGEN ***"
@@ -2745,8 +2745,13 @@ msgstr ""
"Revisionen teilen gemeinsame Historie, aber %s ist kein Vorfahr von %s, kann "
"nicht umkehren"
-#: src/cmd_ws_commit.cc:702 src/cmd_ws_commit.cc:1771
+#: src/cmd_ws_commit.cc:674
#, c-format
+msgid "cannot disapprove root revision"
+msgstr "kann Wurzel-Revision nicht verwerfen"
+
+#: src/cmd_ws_commit.cc:704 src/cmd_ws_commit.cc:1799
+#, c-format
msgid ""
"note: this revision creates divergence\n"
"note: you may (or may not) wish to run '%s merge'"
@@ -2754,33 +2759,33 @@ msgstr ""
"Hinweis: Diese Revision erzeugt einen neuen Kopf\n"
"Hinweis: Sie möchten eventuell '%s merge' ausführen"
-#: src/cmd_ws_commit.cc:709
+#: src/cmd_ws_commit.cc:711
msgid "[DIRECTORY...]"
msgstr "[VERZEICHNIS...]"
-#: src/cmd_ws_commit.cc:710
+#: src/cmd_ws_commit.cc:712
msgid "Creates directories and adds them to the workspace"
msgstr "Erzeugt Verzeichnisse und fügt sie zum Arbeitsbereich hinzu"
-#: src/cmd_ws_commit.cc:728
+#: src/cmd_ws_commit.cc:730
#, c-format
msgid "directory '%s' already exists"
msgstr "Das Verzeichnis '%s' existiert bereits."
-#: src/cmd_ws_commit.cc:735
+#: src/cmd_ws_commit.cc:737
#, c-format
msgid "ignoring directory '%s' (see '.mtn-ignore')"
msgstr "ignoriere Verzeichnis '%s' (siehe '.mtn-ignore')"
-#: src/cmd_ws_commit.cc:777
+#: src/cmd_ws_commit.cc:779
msgid "Adds files to the workspace"
msgstr "Fügt Dateien zum Arbeitsbereich hinzu"
-#: src/cmd_ws_commit.cc:819
+#: src/cmd_ws_commit.cc:821
msgid "Drops files from the workspace"
msgstr "Entfernt Dateien vom Arbeitsbereich"
-#: src/cmd_ws_commit.cc:834
+#: src/cmd_ws_commit.cc:836
msgid ""
"SRC DEST\n"
"SRC1 [SRC2 [...]] DEST_DIR"
@@ -2788,24 +2793,24 @@ msgstr ""
"QUELLE ZIEL\n"
"QUELLE1 [QUELLE2 [...]] ZIEL_VERZEICHNIS"
-#: src/cmd_ws_commit.cc:836
+#: src/cmd_ws_commit.cc:838
msgid "Renames entries in the workspace"
msgstr "Benennt Einträge im Arbeitsbereich um"
-#: src/cmd_ws_commit.cc:862
+#: src/cmd_ws_commit.cc:864
#, c-format
msgid "the specified target directory '%s/' doesn't exist."
msgstr "Das angegebene Ziel-Verzeichnis '%s/' existiert nicht."
-#: src/cmd_ws_commit.cc:868
+#: src/cmd_ws_commit.cc:870
msgid "NEW_ROOT PUT_OLD"
msgstr "NEUE_WURZEL ALTE_WURZEL"
-#: src/cmd_ws_commit.cc:869
+#: src/cmd_ws_commit.cc:871
msgid "Renames the root directory"
msgstr "Benennt das Wurzelverzeichnis um"
-#: src/cmd_ws_commit.cc:870
+#: src/cmd_ws_commit.cc:872
msgid ""
"After this command, the directory that currently has the name NEW_ROOT will "
"be the root directory, and the directory that is currently the root "
@@ -2817,52 +2822,52 @@ msgstr ""
"ALTE_WURZEL erhält.\n"
"Die Benutzung von '--bookkeep-only' wird NICHT empfohlen."
-#: src/cmd_ws_commit.cc:891
+#: src/cmd_ws_commit.cc:893
msgid "Shows workspace's status information"
msgstr "Zeigt Status-Informationen des Arbeitsbereiches"
-#: src/cmd_ws_commit.cc:929
+#: src/cmd_ws_commit.cc:931
#, c-format
msgid "bisection from revision %s in progress"
msgstr "Bisektion von Revision %s wird durchgeführt"
-#: src/cmd_ws_commit.cc:1024
+#: src/cmd_ws_commit.cc:1026
#, c-format
msgid "use '--revision' or '--branch' to specify what to checkout"
msgstr ""
"nutzen Sie '--revision' oder '--branch' um festzulegen, was ausgecheckt "
"werden soll"
-#: src/cmd_ws_commit.cc:1037
+#: src/cmd_ws_commit.cc:1039
#, c-format
msgid "choose one with '%s checkout -r<id>'"
msgstr "wählen Sie einen durch '%s checkout -r<id>'"
-#: src/cmd_ws_commit.cc:1054
+#: src/cmd_ws_commit.cc:1056
#, c-format
msgid "revision %s is not a member of branch %s"
msgstr "Revision %s ist nicht Mitglied des Zweiges %s"
-#: src/cmd_ws_commit.cc:1071
+#: src/cmd_ws_commit.cc:1073
#, c-format
msgid "you must specify a destination directory"
msgstr "Es muss ein Zielverzeichnis angegeben werden."
-#: src/cmd_ws_commit.cc:1084
+#: src/cmd_ws_commit.cc:1086
#, c-format
msgid "checkout directory '%s' already exists"
msgstr "Das Verzeichnis '%s' zum Auschecken existiert bereits."
-#: src/cmd_ws_commit.cc:1111 src/cmd_ws_commit.cc:1125
-#: src/cmd_ws_commit.cc:1821 src/cmd_ws_commit.cc:1978
+#: src/cmd_ws_commit.cc:1113 src/cmd_ws_commit.cc:1127
+#: src/cmd_ws_commit.cc:1849 src/cmd_ws_commit.cc:2006
msgid "[DIRECTORY]"
msgstr "[VERZEICHNIS]"
-#: src/cmd_ws_commit.cc:1112 src/cmd_ws_commit.cc:1126
+#: src/cmd_ws_commit.cc:1114 src/cmd_ws_commit.cc:1128
msgid "Checks out a revision from the database into a directory"
msgstr "Checkt eine Revision aus der Datenbank in ein Verzeichnis aus"
-#: src/cmd_ws_commit.cc:1113 src/cmd_ws_commit.cc:1127
+#: src/cmd_ws_commit.cc:1115 src/cmd_ws_commit.cc:1129
msgid ""
"If a revision is given, that's the one that will be checked out. Otherwise, "
"it will be the head of the branch (given or implicit). If no directory is "
@@ -2873,41 +2878,41 @@ msgstr ""
"ausgecheckt. Wenn kein Verzeichnis angegeben wird, wird der Zweigname als "
"Verzeichnisname verwendet."
-#: src/cmd_ws_commit.cc:1137
+#: src/cmd_ws_commit.cc:1139
#, c-format
msgid "wrong revision count"
msgstr "falsche Anzahl von Revisionen"
-#: src/cmd_ws_commit.cc:1143
+#: src/cmd_ws_commit.cc:1145
msgid "Manages file attributes"
msgstr "Verwaltet Dateiattribute"
-#: src/cmd_ws_commit.cc:1144
+#: src/cmd_ws_commit.cc:1146
msgid "This command is used to set, get or drop file attributes."
msgstr ""
"Dieses Kommando wird benutzt, um Dateiattribute zu setzen, zu holen oder zu "
"löschen."
-#: src/cmd_ws_commit.cc:1163 src/cmd_ws_commit.cc:1231
-#: src/cmd_ws_commit.cc:1281 src/cmd_ws_commit.cc:1362
+#: src/cmd_ws_commit.cc:1165 src/cmd_ws_commit.cc:1233
+#: src/cmd_ws_commit.cc:1283 src/cmd_ws_commit.cc:1366
#, c-format
msgid "unknown path '%s'"
msgstr "unbekannter Pfad '%s'"
-#: src/cmd_ws_commit.cc:1180
+#: src/cmd_ws_commit.cc:1182
#, c-format
msgid "path '%s' does not have attribute '%s'"
msgstr "Pfad '%s' hat kein Attribut '%s'"
-#: src/cmd_ws_commit.cc:1199 src/cmd_ws_commit.cc:1212
+#: src/cmd_ws_commit.cc:1201 src/cmd_ws_commit.cc:1214
msgid "PATH [ATTR]"
msgstr "PFAD [ATTRIBUT]"
-#: src/cmd_ws_commit.cc:1200
+#: src/cmd_ws_commit.cc:1202
msgid "Removes attributes from a file"
msgstr "Entfernt Attribute von einer Datei"
-#: src/cmd_ws_commit.cc:1201
+#: src/cmd_ws_commit.cc:1203
msgid ""
"If no attribute is specified, this command removes all attributes attached "
"to the file given in PATH. Otherwise only removes the attribute specified "
@@ -2917,11 +2922,11 @@ msgstr ""
"die einer Datei zugeordnet wurden. Andernfalls wird lediglich das "
"übergebene Attribut entfernt."
-#: src/cmd_ws_commit.cc:1213
+#: src/cmd_ws_commit.cc:1215
msgid "Gets the values of a file's attributes"
msgstr "Gibt den Wert eines Dateiattributs aus"
-#: src/cmd_ws_commit.cc:1214
+#: src/cmd_ws_commit.cc:1216
msgid ""
"If no attribute is specified, this command prints all attributes attached to "
"the file given in PATH. Otherwise it only prints the attribute specified in "
@@ -2931,61 +2936,79 @@ msgstr ""
"die der Datei zugeordnet wurden. Andernfalls wird lediglich der Wert des "
"übergebenen Attributs ausgegeben."
-#: src/cmd_ws_commit.cc:1247
+#: src/cmd_ws_commit.cc:1249
#, c-format
msgid "no attributes for '%s'"
msgstr "keine Attribute für '%s'"
-#: src/cmd_ws_commit.cc:1259
+#: src/cmd_ws_commit.cc:1261
#, c-format
msgid "no attribute '%s' on path '%s'"
msgstr "kein Attribut für '%s' auf Pfad '%s'"
-#: src/cmd_ws_commit.cc:1305
+#: src/cmd_ws_commit.cc:1307
msgid "PATH ATTR VALUE"
msgstr "PFAD ATTRIBUT WERT"
-#: src/cmd_ws_commit.cc:1306
+#: src/cmd_ws_commit.cc:1308
msgid "Sets an attribute on a file"
msgstr "Setzt ein Attribut auf eine Datei"
-#: src/cmd_ws_commit.cc:1307
+#: src/cmd_ws_commit.cc:1309
msgid ""
"Sets the attribute given on ATTR to the value specified in VALUE for the "
"file mentioned in PATH."
msgstr ""
"Setzt das Attribut ATTRIBUT auf den Wert WERT für die übergebene Datei DATEI."
-#: src/cmd_ws_commit.cc:1336 src/cmd_files.cc:138 src/cmd_files.cc:233
+#: src/cmd_ws_commit.cc:1335 src/cmd_files.cc:138 src/cmd_files.cc:233
msgid "PATH"
msgstr "PFAD"
-#: src/cmd_ws_commit.cc:1337
+#: src/cmd_ws_commit.cc:1336
msgid "Prints all attributes for the specified path"
msgstr "Gibt alle Attribute für den übergebenen Pfad aus"
-#: src/cmd_ws_commit.cc:1450
+#: src/cmd_ws_commit.cc:1337
+msgid ""
+"If an explicit revision is given, the file's attributes at this specific "
+"revision are returned."
+msgstr ""
+"Wenn eine Revision explizit übergeben wird, werden die Attribute der Datei "
+"in dieser Revision zurückgegeben"
+
+#: src/cmd_ws_commit.cc:1378
+#, c-format
+msgid "unknown path '%s' in %s"
+msgstr "unbekannter Pfad '%s' in %s"
+
+#: src/cmd_ws_commit.cc:1381
+#, c-format
+msgid "none or only one revision must be given"
+msgstr "keine oder eine Revision müssen übergeben werden"
+
+#: src/cmd_ws_commit.cc:1478
msgid "PATH KEY VALUE"
msgstr "PFAD SCHLÃSSEL WERT"
-#: src/cmd_ws_commit.cc:1451
+#: src/cmd_ws_commit.cc:1479
msgid "Sets an attribute on a certain path"
msgstr "Setzt ein Attribut auf den übergebenen Pfad"
-#: src/cmd_ws_commit.cc:1472
+#: src/cmd_ws_commit.cc:1500
msgid "PATH [KEY]"
msgstr "PFAD [SCHLÃSSEL]"
-#: src/cmd_ws_commit.cc:1473
+#: src/cmd_ws_commit.cc:1501
msgid "Drops an attribute or all of them from a certain path"
msgstr "Entfernt ein Attribut oder alle Attribute vom übergebenen Pfad"
-#: src/cmd_ws_commit.cc:1513
+#: src/cmd_ws_commit.cc:1541
#, c-format
msgid "no changes to commit"
msgstr "keine Ãnderungen zum Einpflegen"
-#: src/cmd_ws_commit.cc:1534
+#: src/cmd_ws_commit.cc:1562
#, c-format
msgid ""
"parent revisions of this commit are in different branches:\n"
@@ -2997,12 +3020,12 @@ msgstr ""
"'%s' und '%s'.\n"
"Bitte geben Sie einen Zweignamen mit '--branch' für das Einpflegen an."
-#: src/cmd_ws_commit.cc:1556
+#: src/cmd_ws_commit.cc:1584
#, c-format
msgid "changes rejected by hook: %s"
msgstr "Ãnderungen durch Hook zurückgewiesen: %s"
-#: src/cmd_ws_commit.cc:1570
+#: src/cmd_ws_commit.cc:1598
#, c-format
msgid ""
"'_MTN/log' is non-empty and log message was specified on command line.\n"
@@ -3015,74 +3038,74 @@ msgstr ""
"entfernen Sie den '--message'-/'--message-file'-Parameter aus der "
"Kommandozeile."
-#: src/cmd_ws_commit.cc:1615
+#: src/cmd_ws_commit.cc:1643
#, c-format
msgid "empty log message; commit canceled"
msgstr "leerer Kommentar; Einpflegen abgebrochen"
-#: src/cmd_ws_commit.cc:1635
+#: src/cmd_ws_commit.cc:1663
#, c-format
msgid "log message rejected by hook: %s"
msgstr "Kommentar durch Hook zurückgewiesen: %s"
-#: src/cmd_ws_commit.cc:1645
+#: src/cmd_ws_commit.cc:1673
#, c-format
msgid "beginning commit on branch '%s'"
msgstr "beginne Einpflegen auf Zweig '%s'"
-#: src/cmd_ws_commit.cc:1651
+#: src/cmd_ws_commit.cc:1679
#, c-format
msgid "revision %s already in database"
msgstr "Revision %s ist bereits in der Datenbank"
-#: src/cmd_ws_commit.cc:1695 src/cmd_ws_commit.cc:1725
+#: src/cmd_ws_commit.cc:1723 src/cmd_ws_commit.cc:1753
#, c-format
msgid "file '%s' modified during commit, aborting"
msgstr "Datei '%s' wurde während des Einpflegens geändert, breche ab"
-#: src/cmd_ws_commit.cc:1706
+#: src/cmd_ws_commit.cc:1734
#, c-format
msgid "your database is missing version %s of file '%s'"
msgstr "Ihrer Datenbank fehlt die Version %s der Datei '%s'"
-#: src/cmd_ws_commit.cc:1764
+#: src/cmd_ws_commit.cc:1792
#, c-format
msgid "committed revision %s"
msgstr "Revision %s eingepflegt"
-#: src/cmd_ws_commit.cc:1809
+#: src/cmd_ws_commit.cc:1837
msgid "Commits workspace changes to the database"
msgstr "Pflegt Ãnderungen am Arbeitsbereich in die Datenbank ein"
-#: src/cmd_ws_commit.cc:1822
+#: src/cmd_ws_commit.cc:1850
msgid "Sets up a new workspace directory"
msgstr "Setzt einen neuen Arbeitsbereich auf"
-#: src/cmd_ws_commit.cc:1823
+#: src/cmd_ws_commit.cc:1851
msgid "If no directory is specified, uses the current directory."
msgstr ""
"Wenn kein Verzeichnis übergeben wird, wird das derzeitige Verzeichnis "
"genutzt."
-#: src/cmd_ws_commit.cc:1830
+#: src/cmd_ws_commit.cc:1858
#, c-format
msgid "need '--branch' argument for setup"
msgstr "benötige '--branch'-Parameter für das Setup"
-#: src/cmd_ws_commit.cc:1868
+#: src/cmd_ws_commit.cc:1896
msgid "DIRECTORY"
msgstr "VERZEICHNIS"
-#: src/cmd_ws_commit.cc:1869
+#: src/cmd_ws_commit.cc:1897
msgid "Imports the contents of a directory into a branch"
msgstr "Importiert die Inhalte eines Verzeichnisses in einen Zweig"
-#: src/cmd_ws_commit.cc:1883
+#: src/cmd_ws_commit.cc:1911
#, c-format
msgid "you must specify a directory to import"
msgstr "Es muss ein Verzeichnis für den Import angegeben werden."
-#: src/cmd_ws_commit.cc:1903
+#: src/cmd_ws_commit.cc:1931
#, c-format
msgid ""
"use '--revision' or '--branch' to specify the parent revision for the import"
@@ -3090,40 +3113,40 @@ msgstr ""
"Nutzen Sie '--revision' oder '--branch', um die Elternrevision für den "
"Import festzulegen."
-#: src/cmd_ws_commit.cc:1914
+#: src/cmd_ws_commit.cc:1942
#, c-format
msgid "choose one with '%s import -r<id>'"
msgstr "wählen Sie eine durch '%s import -r<id>'"
-#: src/cmd_ws_commit.cc:1925
+#: src/cmd_ws_commit.cc:1953
#, c-format
msgid "import directory '%s' doesn't exists"
msgstr "Das Import-Verzeichnis '%s' existiert nicht."
-#: src/cmd_ws_commit.cc:1926
+#: src/cmd_ws_commit.cc:1954
#, c-format
msgid "import directory '%s' is a file"
msgstr "Der Import-Pfad '%s' ist eine Datei und kein Verzeichnis."
-#: src/cmd_ws_commit.cc:1979
+#: src/cmd_ws_commit.cc:2007
msgid "Migrates a workspace directory's metadata to the latest format"
msgstr "Migriert die Metadaten eines Arbeitsbereichs auf das neueste Format"
-#: src/cmd_ws_commit.cc:1980
+#: src/cmd_ws_commit.cc:2008
msgid "If no directory is given, defaults to the current workspace."
msgstr ""
"Wenn kein Verzeichnis übergeben wurde, wird standardmäÃig der derzeitige "
"Arbeitsbereich genutzt."
-#: src/cmd_ws_commit.cc:2004
+#: src/cmd_ws_commit.cc:2032
msgid "Refreshes the inodeprint cache"
msgstr "Aktualisiert den 'inodeprint'-Cache"
-#: src/cmd_ws_commit.cc:2015
+#: src/cmd_ws_commit.cc:2043
msgid "Search revisions to find where a change first appeared"
msgstr "Suche Revisionen, in denen eine Ãnderung zuerst erschien"
-#: src/cmd_ws_commit.cc:2016
+#: src/cmd_ws_commit.cc:2044
msgid ""
"These commands subdivide a set of revisions into good, bad and untested "
"subsets and successively narrow the untested set to find the first revision "
@@ -3134,11 +3157,11 @@ msgstr ""
"sukksessive solange, bis die erste Revision gefunden wurde, die eine "
"bestimmte Ãnderung eingeführt hat."
-#: src/cmd_ws_commit.cc:2021
+#: src/cmd_ws_commit.cc:2049
msgid "Reset the current bisection search"
msgstr "Setze die aktuelle Bisektionssuche zurück"
-#: src/cmd_ws_commit.cc:2022
+#: src/cmd_ws_commit.cc:2050
msgid ""
"Update the workspace back to the revision from which the bisection was "
"started and remove all current search information, allowing a new search to "
@@ -3148,24 +3171,24 @@ msgstr ""
"Bisektion gestartet wurde und entferne alle derzeitigen Suchinformationen, "
"um eine neue Suche zu ermöglichen."
-#: src/cmd_ws_commit.cc:2037 src/cmd_ws_commit.cc:2093
+#: src/cmd_ws_commit.cc:2065 src/cmd_ws_commit.cc:2121
#, c-format
msgid "no bisection in progress"
msgstr "es wird keine Bisektion durchgeführt"
-#: src/cmd_ws_commit.cc:2052 src/cmd_ws_commit.cc:2280
+#: src/cmd_ws_commit.cc:2080 src/cmd_ws_commit.cc:2308
#, c-format
msgid "this command can only be used in a workspace with no pending changes"
msgstr ""
"dieses Kommando kann nur in einem Arbeitsbereich genutzt werden, der keine "
"Ãnderungen aufweist."
-#: src/cmd_ws_commit.cc:2058
+#: src/cmd_ws_commit.cc:2086
#, c-format
msgid "reset back to %s"
msgstr "setzte auf %s zurück"
-#: src/cmd_ws_commit.cc:2124
+#: src/cmd_ws_commit.cc:2152
#, c-format
msgid ""
"bisecting revisions; %d good; %d bad; %d skipped; specify good revisions to "
@@ -3174,7 +3197,7 @@ msgstr ""
"unterteile Revisionen; %d gute; %d schlechte; %d übergangene; geben Sie gute "
"Revisionen an, um die Suche zu starten"
-#: src/cmd_ws_commit.cc:2130
+#: src/cmd_ws_commit.cc:2158
#, c-format
msgid ""
"bisecting revisions; %d good; %d bad; %d skipped; specify bad revisions to "
@@ -3183,43 +3206,43 @@ msgstr ""
"unterteile Revisionen; %d gute; %d schlechte; %d übergangene; geben Sie "
"schlechte Revisionen an, um die Suche zu starten"
-#: src/cmd_ws_commit.cc:2193
+#: src/cmd_ws_commit.cc:2221
#, c-format
msgid "bisecting %d revisions; %d good; %d bad; %d skipped; %d remaining"
msgstr ""
"unterteile %d Revisionen; %d gute; %d schlechte; %d übergangene; %d "
"verbleiben"
-#: src/cmd_ws_commit.cc:2211
+#: src/cmd_ws_commit.cc:2239
#, c-format
msgid "bisection finished at revision %s"
msgstr "Bisektion bei Revision %s beendet"
-#: src/cmd_ws_commit.cc:2304
+#: src/cmd_ws_commit.cc:2332
#, c-format
msgid "bisection started at revision %s"
msgstr "Bisektion bei Revision %s gestartet"
-#: src/cmd_ws_commit.cc:2320
+#: src/cmd_ws_commit.cc:2348
#, c-format
msgid "ignored redundant bisect %s on revision %s"
msgstr "ignoriere überflüssiges 'bisect %s' auf Revision %s"
-#: src/cmd_ws_commit.cc:2325
+#: src/cmd_ws_commit.cc:2353
#, c-format
msgid "conflicting bisect %s/%s on revision %s"
msgstr "Konflikt bei 'bisect %s/%s' auf Revision %s"
-#: src/cmd_ws_commit.cc:2343
+#: src/cmd_ws_commit.cc:2371
#, c-format
msgid "updating to %s"
msgstr "aktualisiere auf %s"
-#: src/cmd_ws_commit.cc:2368
+#: src/cmd_ws_commit.cc:2396
msgid "Reports on the current status of the bisection search"
msgstr "Berichtet den derzeitigen Status der Bisektionssuche"
-#: src/cmd_ws_commit.cc:2369
+#: src/cmd_ws_commit.cc:2397
msgid ""
"Lists the total number of revisions in the search set, the number of "
"revisions that have been determined to be good or bad, the number of "
@@ -3231,30 +3254,30 @@ msgstr ""
"Revisionen, die übergangen wurden, sowie die Anzahl der zum Test "
"verbleibenden Revisionen auf."
-#: src/cmd_ws_commit.cc:2397
+#: src/cmd_ws_commit.cc:2425
#, c-format
msgid "next revision for bisection testing is %s\n"
msgstr "nächste Revision für Bisektionstest ist %s\n"
-#: src/cmd_ws_commit.cc:2398
+#: src/cmd_ws_commit.cc:2426
#, c-format
msgid "however this workspace is currently at %s\n"
msgstr "der Arbeitsbereich hat jedoch derzeit die Revision %s\n"
-#: src/cmd_ws_commit.cc:2399
+#: src/cmd_ws_commit.cc:2427
#, c-format
msgid "run 'bisect update' to update to this revision before testing"
msgstr ""
"führen Sie 'bisect update' aus, um vor dem Test zur korrekten Revision zu "
"aktualisieren"
-#: src/cmd_ws_commit.cc:2404
+#: src/cmd_ws_commit.cc:2432
msgid "Updates the workspace to the next revision to be tested by bisection"
msgstr ""
"Aktualisiert den Arbeitsbereich zur nächsten Revision, die durch die "
"Bisektionssuche getestet werden soll."
-#: src/cmd_ws_commit.cc:2405
+#: src/cmd_ws_commit.cc:2433
msgid ""
"This command can be used if updates by good, bad or skip commands fail due "
"to blocked paths or other problems."
@@ -3263,13 +3286,13 @@ msgstr ""
"Kommandos 'good', 'bad' oder 'skip' durch bestimmte Probleme, wie "
"beispielsweise blockierte Pfade, fehlschlagen."
-#: src/cmd_ws_commit.cc:2415
+#: src/cmd_ws_commit.cc:2443
msgid "Excludes the current revision or specified revisions from the search"
msgstr ""
"SchlieÃt die derzeitige Revision oder die spezifizierten Revisionen von der "
"Suche aus"
-#: src/cmd_ws_commit.cc:2416
+#: src/cmd_ws_commit.cc:2444
msgid ""
"Skipped revisions are removed from the set being searched. Revisions that "
"cannot be tested for some reason should be skipped."
@@ -3278,23 +3301,23 @@ msgstr ""
"die aus irgend einem Grund nicht getestet werden können, sollten übergangen "
"werden."
-#: src/cmd_ws_commit.cc:2426
+#: src/cmd_ws_commit.cc:2454
msgid "Marks the current revision or specified revisions as bad"
msgstr ""
"Markiert die derzeitige Revision oder die spezifizierten Revisionen als "
"schlecht"
-#: src/cmd_ws_commit.cc:2427
+#: src/cmd_ws_commit.cc:2455
msgid "Known bad revisions are removed from the set being searched."
msgstr ""
"Bekannte schlechte Revisionen werden von der durchsuchten Menge entfernt."
-#: src/cmd_ws_commit.cc:2436
+#: src/cmd_ws_commit.cc:2464
msgid "Marks the current revision or specified revisions as good"
msgstr ""
"Markiert die derzeitige Revision oder die spezifizierten Revisionen als gut"
-#: src/cmd_ws_commit.cc:2437
+#: src/cmd_ws_commit.cc:2465
msgid "Known good revisions are removed from the set being searched."
msgstr "Bekannte gute Revisionen werden von der durchsuchten Menge entfernt."
@@ -3409,8 +3432,7 @@ msgid "bad input to mtn_automate() lua e
#: src/cmd_automate.cc:333
#, c-format
msgid "bad input to mtn_automate() lua extension: command name is missing"
-msgstr ""
-"falsche Eingabe für mtn_automate()-Lua-Erweiterung: Kommandoname fehlt"
+msgstr "falsche Eingabe für mtn_automate()-Lua-Erweiterung: Kommandoname fehlt"
#: src/cmd_files.cc:39
msgid "Loads a file's contents into the database"
@@ -3748,7 +3770,7 @@ msgstr "rc-Datei '%s' existiert nicht"
msgid "rcfile '%s' does not exist"
msgstr "rc-Datei '%s' existiert nicht"
-#: src/transforms.cc:83
+#: src/transforms.cc:84
#, c-format
msgid ""
"%s\n"
@@ -4332,7 +4354,8 @@ msgstr ""
msgstr ""
"Datenbank '%s' beinhaltet Manifeste, aber keine Revisionen\n"
"Dies ist eine sehr alte Datenbank, die erneuert werden muss.\n"
-"Bitte konsultieren Sie 'http://wiki.monotone.ca/upgradefromchangesets/' für Details"
+"Bitte konsultieren Sie 'http://wiki.monotone.ca/upgradefromchangesets/' für "
+"Details"
#: src/database.cc:650
#, c-format
@@ -4552,7 +4575,7 @@ msgid ""
#: src/database.cc:2530
#, c-format
msgid ""
-"Unknown delta direction '%s'; assuming 'reverse'. Valid values are "
+"unknown delta direction '%s'; assuming 'reverse'. Valid values are "
"'reverse', 'forward', 'both'."
msgstr ""
"Unbekannte Delta-Richtung '%s'; habe 'reverse' vermutet. Gültige Werte sind "
@@ -4594,27 +4617,27 @@ msgstr "Revision beinhaltet ungültige m
msgid "revision contains incorrect manifest_id"
msgstr "Revision beinhaltet ungültige manifest_id"
-#: src/database.cc:3489
+#: src/database.cc:3487
#, c-format
-msgid "Failed to get RSA verifying key for %s"
+msgid "failed to get RSA verifying key for %s"
msgstr "RSA konnte den Schlüssel für %s nicht überprüfen"
-#: src/database.cc:3628
+#: src/database.cc:3626
#, c-format
-msgid "Your database contains multiple keys named '%s'"
+msgid "your database contains multiple keys named '%s'"
msgstr "Ihre Datenbank beinhaltet mehrere Schlüssel mit dem Namen '%s'"
-#: src/database.cc:3789
+#: src/database.cc:3787
#, c-format
msgid "cert revision %s does not exist in db"
msgstr "Zertifikats-Revision %s existiert nicht in der Datenbank"
-#: src/database.cc:3791
+#: src/database.cc:3789
#, c-format
msgid "dropping cert"
msgstr "entferne Zertifikat"
-#: src/database.cc:3801
+#: src/database.cc:3799
#, c-format
msgid ""
"the branch name\n"
@@ -4638,34 +4661,34 @@ msgstr ""
"Kommando '%s local kill_certs' um das Zweigzertifikat wieder zu löschen\n"
"und danach ein neues mit gültigen Zweignamen zu erstellen."
-#: src/database.cc:4118
+#: src/database.cc:4116
#, c-format
msgid "ignoring bad signature by '%s' on '%s'"
msgstr "ignoriere ungültige Signatur von '%s' vom '%s'"
-#: src/database.cc:4123
+#: src/database.cc:4121
#, c-format
msgid "ignoring unknown signature by '%s' on '%s'"
msgstr "ignoriere unbekannte Signatur von '%s' vom '%s'"
-#: src/database.cc:4125
+#: src/database.cc:4123
#, c-format
msgid "trust function disliked %d signers of '%s' cert on revision %s"
msgstr ""
"Vertrauensfunktion lehnt %d Unterzeichner des Zertifikats '%s' auf Revision "
"%s ab"
-#: src/database.cc:4813 src/database.cc:4955
+#: src/database.cc:4811 src/database.cc:4953
#, c-format
msgid "no database specified"
msgstr "keine Datenbank spezifiziert"
-#: src/database.cc:4826
+#: src/database.cc:4824
#, c-format
msgid "database '%s' does not exist"
msgstr "Datenbank '%s' existiert nicht"
-#: src/database.cc:4834
+#: src/database.cc:4832
#, c-format
msgid ""
"'%s' is a workspace, not a database\n"
@@ -4674,17 +4697,17 @@ msgstr ""
"'%s' ist ein Arbeitsverzeichnis, keine Datenbank\n"
"(meinten Sie '%s'?)"
-#: src/database.cc:4838
+#: src/database.cc:4836
#, c-format
msgid "'%s' is a directory, not a database"
msgstr "'%s' ist ein Verzeichnis, keine Datenbank"
-#: src/database.cc:4846
+#: src/database.cc:4844
#, c-format
msgid "database '%s' already exists"
msgstr "Datenbank '%s' existiert bereits"
-#: src/database.cc:4851
+#: src/database.cc:4849
#, c-format
msgid ""
"existing (possibly stale) journal file '%s' has same stem as new database "
@@ -4695,32 +4718,32 @@ msgstr ""
"'%s'.\n"
"Datenbankerstellung abgebrochen"
-#: src/database.cc:5013
+#: src/database.cc:5011
#, c-format
msgid "the database alias '%s' has multiple ambiguous expansions:"
msgstr "der Datenbankalias '%s' kann auf mehrere Arten erweitert werden:"
-#: src/database.cc:5036
+#: src/database.cc:5034
#, c-format
msgid "could not query default database alias"
msgstr "konnte nicht den Standarddatenbankalias abfragen"
-#: src/database.cc:5038
+#: src/database.cc:5036
#, c-format
msgid "using default database '%s'"
msgstr "nutze Standarddatenbank '%s'"
-#: src/database.cc:5048
+#: src/database.cc:5046
#, c-format
msgid "invalid database alias '%s': does not start with a colon"
msgstr "ungültiger Datenbankalias '%s': beginnt nicht mit einem Doppelpunkt"
-#: src/database.cc:5052
+#: src/database.cc:5050
#, c-format
msgid "invalid database alias '%s': must not be empty"
msgstr "ungültiger Datenbankalias '%s': darf nicht leer sein"
-#: src/database.cc:5068
+#: src/database.cc:5066
#, c-format
msgid "invalid database alias '%s': does contain invalid characters"
msgstr "ungültiger Datenbankalias '%s': beinhaltet ungültige Zeichen"
@@ -4794,7 +4817,7 @@ msgstr "kein Schlüsselpaar %s im Schlü
msgid "no key pair %s found in key store '%s'"
msgstr "kein Schlüsselpaar %s im Schlüsselbund '%s' gefunden"
-#: src/key_store.cc:620
+#: src/key_store.cc:633
#, c-format
msgid ""
"failed to decrypt old private RSA key, probably incorrect passphrase or "
@@ -4803,48 +4826,48 @@ msgstr ""
"konnte alten, privaten RSA-Schlüssel nicht entschlüsseln; Passwort ist "
"womöglich falsch oder der 'get_passphrase'-Luahook fehlt"
-#: src/key_store.cc:633
+#: src/key_store.cc:646
#, c-format
msgid "failed to extract RSA private key from PKCS#8 keypair"
msgstr ""
"konnte privaten RSA-Schlüssel nicht vom PKCS#8-Schlüsselpaar extrahieren"
-#: src/key_store.cc:673
+#: src/key_store.cc:686
#, c-format
msgid "key '%s' already exists"
msgstr "Schlüssel '%s' existiert bereits"
-#: src/key_store.cc:685
+#: src/key_store.cc:698
#, c-format
msgid "generating key-pair '%s'"
msgstr "erzeuge Schlüsselpaar '%s'"
-#: src/key_store.cc:733
+#: src/key_store.cc:746
#, c-format
msgid "storing key-pair %s in '%s/'"
msgstr "speichere Schlüsselpaar %s in '%s/'"
-#: src/key_store.cc:746
+#: src/key_store.cc:759
#, c-format
msgid "storing public key %s in '%s'"
msgstr "speichere öffentlichen Schlüssel %s in '%s'"
-#: src/key_store.cc:762
+#: src/key_store.cc:775
#, c-format
msgid "key '%s' has hash '%s'"
msgstr "Der Schlüssel '%s' hat die Prüfsumme '%s'"
-#: src/key_store.cc:776
+#: src/key_store.cc:789
#, c-format
msgid "no key pair '%s' found in key store '%s'"
msgstr "kein Schlüsselpaar '%s' in Schlüsselbund '%s' gefunden"
-#: src/key_store.cc:828
+#: src/key_store.cc:845
#, c-format
msgid "Botan error decrypting data: '%s'"
msgstr "Botan-Fehler beim Entschlüsseln von Daten: '%s'"
-#: src/key_store.cc:851
+#: src/key_store.cc:868
#, c-format
msgid ""
"you have chosen to sign only with ssh-agent but ssh-agent does not seem to "
@@ -4853,12 +4876,12 @@ msgstr ""
"Sie haben ausgewählt, nur mit ssh-agent zu signieren, aber derzeit scheint "
"ssh-agent nicht zu laufen"
-#: src/key_store.cc:881
+#: src/key_store.cc:898
#, c-format
msgid "you don't seem to have your monotone key imported "
msgstr "anscheinend haben Sie Ihren monotone-Schlüssel nicht importiert"
-#: src/key_store.cc:935
+#: src/key_store.cc:952
#, c-format
msgid ""
"make_signature: ssh signature (%i) != monotone signature (%i)\n"
@@ -4869,24 +4892,24 @@ msgstr ""
"ssh-Signatur : %s\n"
"monotone-Signatur: %s"
-#: src/key_store.cc:951
+#: src/key_store.cc:968
#, c-format
msgid "make_signature: signature is not valid"
msgstr "make_signature: Signatur ist ungültig"
-#: src/key_store.cc:963
+#: src/key_store.cc:980
#, c-format
msgid "no ssh-agent is available, cannot add key %s"
msgstr "es ist kein ssh-agent verfügbar; kann Schlüssel %s nicht hinzufügen"
-#: src/key_store.cc:1060
+#: src/key_store.cc:1087
#, c-format
msgid "failed to decrypt old private RSA key, probably incorrect passphrase"
msgstr ""
"konnte alten, privaten RSA-Schlüssel nicht entschlüsseln; Passwort ist "
"womöglich falsch"
-#: src/key_store.cc:1097
+#: src/key_store.cc:1124
#, c-format
msgid "public and private keys for %s do not match"
msgstr "öffentlicher und privater Schlüssel für %s stimmen nicht überein"
@@ -5030,22 +5053,22 @@ msgstr ""
msgstr ""
"falsch gebildetes Paket: ungültige öffentliche Schlüsseldaten für '%s': %s"
-#: src/packet.cc:187
+#: src/packet.cc:189
#, c-format
msgid "malformed packet: invalid private key data for '%s': %s"
msgstr "falsch gebildetes Paket: ungültige private Schlüsseldaten für '%s': %s"
-#: src/packet.cc:199
+#: src/packet.cc:205
#, c-format
msgid "malformed packet: invalid cert name"
msgstr "falsch gebildetes Paket: ungültiger Zertifikatsname"
-#: src/packet.cc:206
+#: src/packet.cc:212
#, c-format
msgid "malformed packet: too many arguments in header"
msgstr "falsch gebildetes Paket: zu viele Argumente im Kopf"
-#: src/packet.cc:335
+#: src/packet.cc:341
#, c-format
msgid "unknown packet type '%s'"
msgstr "unbekannter Pakettyp '%s'"
@@ -5416,7 +5439,7 @@ msgstr "Server ist zu alt für entfernte
#: src/network/automate_session.cc:130
#, c-format
-msgid "Sorry, you aren't allowed to do that."
+msgid "sorry, you aren't allowed to do that."
msgstr "Entschuldigung, Sie dürfen dies nicht tun."
#: src/network/automate_session.cc:219
@@ -5628,7 +5651,8 @@ msgstr ""
"keys with this name and we don't know which one it is"
msgstr ""
"entferne eingehendes Zertifkat, welches von einem Schlüssel unterschrieben\n"
-"wurden, den wir nicht haben. Sie müssen wahrscheinlich diesen Schlüssel von\n"
+"wurden, den wir nicht haben. Sie müssen wahrscheinlich diesen Schlüssel "
+"von\n"
"einem neueren netsync-Peer holen. Der Name des Schlüssels ist '%s', aber\n"
"beachten Sie, dass es mehrere Schlüssel mit diesem Namen gibt und wir nicht\n"
"wissen, welcher das ist"
@@ -5715,7 +5739,7 @@ msgstr "Schlüssel"
#: src/network/netsync_session.cc:1467
#, c-format
-msgid "Cannot find key '%s'"
+msgid "cannot find key '%s'"
msgstr "Kann Schlüssel '%s' nicht finden"
#: src/network/reactor.cc:182
@@ -5846,7 +5870,7 @@ msgstr "Peer %s E/A im 'confirmed state'
#: src/network/session_base.cc:256
#, c-format
-msgid "Network error on peer %s, disconnecting"
+msgid "network error on peer %s, disconnecting"
msgstr "Netzwerk-Fehler an Peer %s, trenne Verbindung"
#: src/netxx_pipe.cc:50 src/netxx_pipe.cc:189
@@ -6222,8 +6246,8 @@ msgstr ""
"'%s' is both known and ignored; it will be shown as 'missing'. Check '.mtn-"
"ignore'"
msgstr ""
-"'%s' ist bekannt, wird aber gleichzeitig ignoriert und wird daher "
-"als 'fehlend' gekennzeichnet. Ãberpüfen Sie die Datei '.mtn-ignore'"
+"'%s' ist bekannt, wird aber gleichzeitig ignoriert und wird daher als "
+"'fehlend' gekennzeichnet. Ãberpüfen Sie die Datei '.mtn-ignore'"
#: src/automate.cc:1020
msgid "Prints a summary of files found in the workspace"
@@ -6845,39 +6869,39 @@ msgstr[1] "die '%s'-Funktion benötigt %
msgstr[0] "die '%s'-Funktion benötigt %d Argument, nicht %d"
msgstr[1] "die '%s'-Funktion benötigt %d Argumente, nicht %d"
-#: src/selectors.cc:619
+#: src/selectors.cc:632
#, c-format
msgid "unknown selection function '%s'"
msgstr "unbekannte Selektorfunktion '%s'"
-#: src/selectors.cc:652
+#: src/selectors.cc:665
#, c-format
msgid "expanded selector '%s' -> '%s'"
msgstr "expandiere Selektor '%s' -> '%s'"
-#: src/selectors.cc:691
+#: src/selectors.cc:704
#, c-format
msgid "unknown selector type: %c"
msgstr "unbekannter Selektor-Typ: %c"
-#: src/selectors.cc:726
+#: src/selectors.cc:739
#, c-format
msgid "selector '%s' is invalid, it ends with the escape character '\\'"
msgstr "Selektor '%s' ist ungültig, er endet mit dem Escapezeichen '\\'"
-#: src/selectors.cc:731
+#: src/selectors.cc:744
#, c-format
msgid "selector '%s' is invalid, it contains an unknown escape sequence '%s%s'"
msgstr ""
"Selektor '%s' ist ungültig, er beinhaltet eine unbekannte Escapesequenz '%s"
"%s'"
-#: src/selectors.cc:770
+#: src/selectors.cc:783
#, c-format
msgid "selector '%s' is invalid, unmatched ')'"
msgstr "Selektor '%s' ist ungültig, keine öffnende Klammer für ')'"
-#: src/selectors.cc:787
+#: src/selectors.cc:800
#, c-format
msgid ""
"selector '%s' is invalid, function argument doesn't look like an arg-list"
@@ -6885,7 +6909,7 @@ msgstr ""
"Selektor '%s' ist ungültig, Funktionsargument sieht nicht wie eine Liste von "
"Argumenten aus"
-#: src/selectors.cc:798
+#: src/selectors.cc:811
#, c-format
msgid ""
"selector '%s' is invalid, grouping parentheses contain something that "
@@ -6894,17 +6918,17 @@ msgstr ""
"Selektor '%s' ist ungültig, gruppierende Klammern beinhalten etwas, das "
"nicht wie ein Ausdruck aussieht"
-#: src/selectors.cc:809
+#: src/selectors.cc:822
#, c-format
msgid "selector '%s' is invalid, because it starts with a '/'"
msgstr "Selektor '%s' ist ungültig, da er mit einem '/' beginnt"
-#: src/selectors.cc:813
+#: src/selectors.cc:826
#, c-format
msgid "selector '%s' is invalid, because it starts with a '|'"
msgstr "Selektor '%s' ist ungültig, da er mit einem '|' beginnt"
-#: src/selectors.cc:838
+#: src/selectors.cc:851
#, c-format
msgid ""
"selector '%s' is invalid, because there is a '%s' someplace it shouldn't be"
@@ -6912,7 +6936,7 @@ msgstr ""
"Selektor '%s' ist ungültig, da sich ein '%s' an einer Stelle befindet, wo es "
"nicht hingehört"
-#: src/selectors.cc:843 src/selectors.cc:846
+#: src/selectors.cc:856 src/selectors.cc:859
#, c-format
msgid ""
"selector '%s' is invalid, don't mix '/' and '|' operators without parentheses"
@@ -6920,22 +6944,22 @@ msgstr ""
"Selektor '%s' ist ungültig, Vermischung von '/'- und '|'-Operatoren ohne "
"Klammern"
-#: src/selectors.cc:885
+#: src/selectors.cc:898
#, c-format
msgid "selector '%s' is invalid, it doesn't look like an expr"
msgstr "Selektor '%s' ist ungültig, sieht nicht nach einem Ausdruck aus"
-#: src/selectors.cc:908
+#: src/selectors.cc:921
#, c-format
msgid "expanding selection '%s'"
msgstr "expandiere Auswahl '%s'"
-#: src/selectors.cc:912
+#: src/selectors.cc:925
#, c-format
msgid "no match for selection '%s'"
msgstr "kein Treffer für Auswahl '%s'"
-#: src/selectors.cc:917
+#: src/selectors.cc:930
#, c-format
msgid "expanded to '%s'"
msgstr "erweitert zu '%s'"
@@ -7493,7 +7517,7 @@ msgstr "kann Host-Bestandteil der URI '%
#: src/uri.cc:150 src/uri.cc:153 src/uri.cc:175 src/uri.cc:196
#, c-format
-msgid "Bad URLencoded string '%s'"
+msgid "bad URLencoded string '%s'"
msgstr "Falsch URL-kodierte Zeichenfolge '%s'"
#: src/sha1.cc:34
@@ -7505,54 +7529,54 @@ msgstr "Bewerte Botans SHA-1-Kern"
msgid "Benchmarking botan's SHA-1 core"
msgstr "Bewerte Botans SHA-1-Kern"
-#: src/sha1.cc:61
+#: src/sha1.cc:64
#, c-format
msgid "SHA-1 provider '%s': %s MiB/s"
msgstr "SHA-1 Anbieter '%s': %s MiB/s"
-#: src/sha1.cc:73
+#: src/sha1.cc:76
#, c-format
msgid "%s MiB/s"
msgstr "%s MiB/s"
-#: src/pcrewrap.cc:219
+#: src/pcrewrap.cc:273
#, c-format
msgid "while compiling regex '%s': %s"
msgstr "Fehler während der Ãbersetzung des regulären Ausdrucks '%s': %s"
-#: src/pcrewrap.cc:228
+#: src/pcrewrap.cc:282
#, c-format
msgid "error in regex '%s': %s"
msgstr "Fehler im regulären Ausdruck '%s': %s"
-#: src/pcrewrap.cc:230
+#: src/pcrewrap.cc:284
#, c-format
msgid "error near char %d of regex '%s': %s"
msgstr "Fehler in der Nähe des Zeichens %d des regulären Ausdrucks '%s': %s"
-#: src/pcrewrap.cc:245
+#: src/pcrewrap.cc:299
#, c-format
msgid "while studying regex '%s': %s"
msgstr "Fehler während der Untersuchung des regulären Ausdrucks '%s': %s"
-#: src/pcrewrap.cc:263
+#: src/pcrewrap.cc:317
#, c-format
msgid "backtrack limit exceeded in regular _expression_ matching"
msgstr "Backtrack-Grenze im regulären Ausdruck überschritten"
-#: src/pcrewrap.cc:267
+#: src/pcrewrap.cc:321
#, c-format
msgid "recursion limit exceeded in regular _expression_ matching"
msgstr "Rekursions-Grenze im regulären Ausdruck überschritten"
-#: src/pcrewrap.cc:272
+#: src/pcrewrap.cc:326
#, c-format
msgid "invalid UTF-8 sequence found during regular _expression_ matching"
msgstr ""
"ungültige UTF-8-Sequenz während der Anwendung des regulären Ausdrucks "
"gefunden"
-#: src/pcrewrap.cc:275
+#: src/pcrewrap.cc:329
#, c-format
msgid "pcre_exec returned %d"
msgstr "pcre_exec gab %d zurück"
@@ -7569,30 +7593,34 @@ msgstr "Marke: "
msgid "Tag: "
msgstr "Marke: "
-#: src/rev_output.cc:106
+#: src/rev_output.cc:110
+msgid "Other certs:"
+msgstr "Andere Zertifikate:"
+
+#: src/rev_output.cc:123
msgid "Changelog: "
msgstr "Ãnderungen: "
-#: src/rev_output.cc:114
+#: src/rev_output.cc:131
msgid "Comments: "
msgstr "Kommentare: "
-#: src/rev_output.cc:141
+#: src/rev_output.cc:158
msgid "Changes"
msgstr "Ãnderungen"
-#: src/rev_output.cc:143
+#: src/rev_output.cc:160
msgid "Changes against parent "
msgstr "Veränderungen ggü. Elternrev. "
-#: src/rev_output.cc:151
+#: src/rev_output.cc:168
#, c-format
msgid " dropped %s"
msgstr ""
" Pfad %s\n"
" entfernt"
-#: src/rev_output.cc:156
+#: src/rev_output.cc:173
#, c-format
msgid ""
" renamed %s\n"
@@ -7602,21 +7630,21 @@ msgstr ""
" nach %s\n"
" umbenannt"
-#: src/rev_output.cc:161 src/rev_output.cc:165
+#: src/rev_output.cc:178 src/rev_output.cc:182
#, c-format
msgid " added %s"
msgstr ""
" Pfad %s\n"
"hinzugefügt"
-#: src/rev_output.cc:169
+#: src/rev_output.cc:186
#, c-format
msgid " patched %s"
msgstr ""
" Datei %s\n"
" verändert"
-#: src/rev_output.cc:173
+#: src/rev_output.cc:190
#, c-format
msgid ""
" attr on %s\n"
@@ -7628,7 +7656,7 @@ msgstr ""
" auf %1$s\n"
" gesetzt"
-#: src/rev_output.cc:186
+#: src/rev_output.cc:203
#, c-format
msgid ""
" attr on %s\n"
@@ -8566,43 +8594,65 @@ msgid "this monotone binary requires at
#: src/monotone.cc:143
#, c-format
msgid "this monotone binary requires at least SQLite 3.3.8 to run"
-msgstr "dieses monotone benötigt mindestens SQLite 3.3.8, um ausgeführt zu werden"
+msgstr ""
+"dieses monotone benötigt mindestens SQLite 3.3.8, um ausgeführt zu werden"
#: src/monotone.cc:146
#, c-format
msgid "this monotone binary requires at least SQLite 3.3.14 to run"
-msgstr "dieses monotone benötigt mindestens SQLite 3.3.14, um ausgeführt zu werden"
+msgstr ""
+"dieses monotone benötigt mindestens SQLite 3.3.14, um ausgeführt zu werden"
#: src/monotone.cc:157
#, c-format
msgid "monotone does not support Botan 1.7.14"
msgstr "monotone unterstüzt Botan 1.7.14 nicht"
-#: src/monotone.cc:161
+#: src/monotone.cc:163
#, c-format
+msgid "monotone does not support Botan 1.9.9"
+msgstr "monotone unterstüzt Botan 1.9.9 nicht"
+
+#: src/monotone.cc:168
+#, c-format
msgid "this monotone binary requires Botan 1.6.3 or newer"
msgstr "dieses monotone benötigt Botan 1.6.3 oder neuer"
-#: src/monotone.cc:163
+#: src/monotone.cc:170
#, c-format
-msgid "this monotone binary does not work with Botan newer than 1.7.6"
-msgstr "dieses monotone arbeitet nicht mit Botan >1.7.6 zusammen"
+msgid "this monotone binary does not work with Botan 1.7.7 or newer"
+msgstr "dieses monotone arbeitet nicht mit Botan 1.7.7 oder neuer zusammen"
-#: src/monotone.cc:166
+#: src/monotone.cc:175
#, c-format
msgid "this monotone binary requires Botan 1.7.7 or newer"
msgstr "dieses monotone benötigt Botan 1.7.7 oder neuer"
-#: src/monotone.cc:172 src/monotone.cc:177
+#: src/monotone.cc:182 src/monotone.cc:189
#, c-format
-msgid "this monotone binary does not work with Botan 1.9.x"
-msgstr "dieses monotone arbeitet nicht mit Botan 1.9.x zusammen"
+msgid "this monotone binary does not work with Botan 1.9.4 or newer"
+msgstr "dieses monotone arbeitet nicht mit Botan 1.9.4 oder neuer zusammen"
-#: src/monotone.cc:175
+#: src/monotone.cc:187
#, c-format
msgid "this monotone binary requires Botan 1.7.22 or newer"
msgstr "dieses monotone benötigt Botan 1.7.22 oder neuer"
+#: src/monotone.cc:195
+#, c-format
+msgid "this monotone binary requires Botan 1.9.4 or newer"
+msgstr "dieses monotone benötigt Botan 1.9.4 oder neuer"
+
+#: src/monotone.cc:197
+#, c-format
+msgid "this monotone binary does not work with Botan 1.9.11 or newer"
+msgstr "dieses monotone arbeitet nicht mit Botan 1.9.11 oder neuer zusammen"
+
+#: src/monotone.cc:202
+#, c-format
+msgid "this monotone binary requires Botan 1.9.11 or newer"
+msgstr "dieses monotone benötigt Botan 1.9.11 oder neuer"
+
#: src/std_hooks.lua:56
msgid "Press enter"
msgstr "Drücken Sie die Eingabetaste"
@@ -8611,6 +8661,9 @@ msgstr "Drücken Sie die Eingabetaste, w
msgid "Press enter when the subprocess has completed"
msgstr "Drücken Sie die Eingabetaste, wenn der Unterprozess beendet ist"
+#~ msgid "this monotone binary does not work with Botan newer than 1.7.6"
+#~ msgstr "dieses monotone arbeitet nicht mit Botan >1.7.6 zusammen"
+
#~ msgid "Network error: %s"
#~ msgstr "Netzwerk-Fehler: %s"
============================================================
--- po/sv.po f84b0093c5af0e103e0857bcf809fe78487e803b
+++ po/sv.po fb60bb1b5c18bbb5c2025f33bed340b7647b7e3c
@@ -7,8 +7,8 @@ msgstr ""
msgstr ""
"Project-Id-Version: monotone\n"
"Report-Msgid-Bugs-To: https://code.monotone.ca/p/monotone/issues/\n"
-"POT-Creation-Date: 2011-03-27 20:20+0200\n"
-"PO-Revision-Date: 2011-03-27 20:22+0200\n"
+"POT-Creation-Date: 2012-04-25 21:48+0200\n"
+"PO-Revision-Date: 2012-04-25 22:02+0200\n"
"Last-Translator: tommyd <address@hidden>\n"
"Language-Team: Richard Levitte <address@hidden>\n"
"Language: sv\n"
@@ -55,7 +55,7 @@ msgstr "storleken för den hexadecimalt
msgid "hex encoded ID '%s' size != %d"
msgstr "storleken för den hexadecimalt kodade identiteten '%s' != %d"
-#: src/vocab.cc:53 src/database.cc:4231
+#: src/vocab.cc:53 src/database.cc:4229
#, c-format
msgid "bad character '%c' in id name '%s'"
msgstr "otillåtet tecken '%c' i identitetsnamnet '%s'"
@@ -856,8 +856,8 @@ msgstr "Kör KOMMANDO på servern i andr
#: src/cmd_netsync.cc:221 src/cmd_list.cc:1021 src/cmd_packet.cc:73
#: src/cmd_packet.cc:134 src/cmd_packet.cc:254 src/cmd_key_cert.cc:81
#: src/cmd_key_cert.cc:186 src/cmd_merging.cc:384 src/cmd_merging.cc:1141
-#: src/cmd_merging.cc:1219 src/cmd_ws_commit.cc:1134 src/cmd_ws_commit.cc:1342
-#: src/cmd_ws_commit.cc:1456 src/cmd_ws_commit.cc:1478 src/cmd_automate.cc:138
+#: src/cmd_merging.cc:1219 src/cmd_ws_commit.cc:1136 src/cmd_ws_commit.cc:1342
+#: src/cmd_ws_commit.cc:1484 src/cmd_ws_commit.cc:1506 src/cmd_automate.cc:138
#: src/cmd_files.cc:239 src/cmd_files.cc:336 src/cmd_files.cc:360
#: src/cmd_files.cc:394 src/automate.cc:85 src/automate.cc:122
#: src/automate.cc:175 src/automate.cc:298 src/automate.cc:400
@@ -993,18 +993,18 @@ msgstr "kloningens tilltänkta katalog '
msgid "clone destination directory '%s' already exists"
msgstr "kloningens tilltänkta katalog '%s' finns redan"
-#: src/cmd_netsync.cc:832 src/cmd_ws_commit.cc:1842 src/cmd_ws_commit.cc:1931
+#: src/cmd_netsync.cc:832 src/cmd_ws_commit.cc:1870 src/cmd_ws_commit.cc:1959
#, c-format
msgid "bookkeeping directory already exists in '%s'"
msgstr "det finns redan en administrativ katalog i '%s'"
#: src/cmd_netsync.cc:866 src/cmd_merging.cc:535 src/cmd_merging.cc:636
-#: src/cmd_merging.cc:641 src/cmd_merging.cc:1471 src/cmd_ws_commit.cc:1030
+#: src/cmd_merging.cc:641 src/cmd_merging.cc:1471 src/cmd_ws_commit.cc:1032
#, c-format
msgid "branch '%s' is empty"
msgstr "grenen '%s' är tom"
-#: src/cmd_netsync.cc:869 src/cmd_ws_commit.cc:1033 src/cmd_ws_commit.cc:1910
+#: src/cmd_netsync.cc:869 src/cmd_ws_commit.cc:1035 src/cmd_ws_commit.cc:1938
#, c-format
msgid "branch '%s' has multiple heads:"
msgstr "grenen '%s' har flera löv:"
@@ -1014,12 +1014,12 @@ msgstr "välj ett med '%s clone -r<id> U
msgid "choose one with '%s clone -r<id> URI'"
msgstr "välj ett med '%s clone -r<id> URI'"
-#: src/cmd_netsync.cc:874 src/cmd_ws_commit.cc:1039 src/cmd_ws_commit.cc:1916
+#: src/cmd_netsync.cc:874 src/cmd_ws_commit.cc:1041 src/cmd_ws_commit.cc:1944
#, c-format
msgid "branch '%s' has multiple heads"
msgstr "grenen '%s' har flera löv"
-#: src/cmd_netsync.cc:885 src/cmd_ws_commit.cc:1896
+#: src/cmd_netsync.cc:885 src/cmd_ws_commit.cc:1924
#, c-format
msgid "revision %s is not a member of branch '%s'"
msgstr "revisionen %s är inte med i grenen '%s'"
@@ -1184,12 +1184,12 @@ msgstr "Visa vilka databaser som hantera
msgid "Lists managed databases and their known workspaces"
msgstr "Visa vilka databaser som hanteras och deras kända arbetskopior"
-#: src/cmd_list.cc:684 src/database.cc:4978
+#: src/cmd_list.cc:684 src/database.cc:4976
#, c-format
msgid "no default database location configured"
msgstr "ingen standardkatalog för databaser finns definierad"
-#: src/cmd_list.cc:688 src/database.cc:5056
+#: src/cmd_list.cc:688 src/database.cc:5054
#, c-format
msgid "could not query default database glob"
msgstr "kunde inte fråga efter standardglobben för databaser"
@@ -1531,8 +1531,8 @@ msgstr ""
"Nästa ändring hamnar i grenen '%s'"
#: src/cmd_merging.cc:209 src/cmd_merging.cc:824 src/cmd_ws_commit.cc:370
-#: src/cmd_ws_commit.cc:1358 src/cmd_ws_commit.cc:2042
-#: src/cmd_ws_commit.cc:2270 src/cmd_ws_commit.cc:2385 src/cmd_files.cc:308
+#: src/cmd_ws_commit.cc:1362 src/cmd_ws_commit.cc:2070
+#: src/cmd_ws_commit.cc:2298 src/cmd_ws_commit.cc:2413 src/cmd_files.cc:308
#: src/cmd_files.cc:406 src/automate.cc:1035 src/automate.cc:1328
#, c-format
msgid "this command can only be used in a single-parent workspace"
@@ -2387,21 +2387,21 @@ msgstr ""
"denna arbetskopia har mer än en förälder\n"
"(ange en revision att se skillnader emot med '--revision')"
-#: src/cmd_diff_log.cc:407 src/rev_output.cc:147
+#: src/cmd_diff_log.cc:410 src/rev_output.cc:147
msgid "no changes"
msgstr "inga ändringar"
-#: src/cmd_diff_log.cc:416 src/cmd_ws_commit.cc:538 src/cmd_ws_commit.cc:776
-#: src/cmd_ws_commit.cc:818 src/cmd_ws_commit.cc:890 src/cmd_ws_commit.cc:1808
+#: src/cmd_diff_log.cc:419 src/cmd_ws_commit.cc:538 src/cmd_ws_commit.cc:778
+#: src/cmd_ws_commit.cc:820 src/cmd_ws_commit.cc:892 src/cmd_ws_commit.cc:1836
#: src/automate.cc:1019
msgid "[PATH]..."
msgstr "[SÃKVÃG]..."
-#: src/cmd_diff_log.cc:417
+#: src/cmd_diff_log.cc:420
msgid "Shows current differences"
msgstr "Visa nuvarande skillnader"
-#: src/cmd_diff_log.cc:418
+#: src/cmd_diff_log.cc:421
msgid ""
"Compares the current tree with the files in the repository and prints the "
"differences on the standard output.\n"
@@ -2415,7 +2415,7 @@ msgstr ""
"revisionen. Om två revisioner anges visas skillnaden mellan dem. Om\n"
"inget format anges används unified."
-#: src/cmd_diff_log.cc:429
+#: src/cmd_diff_log.cc:432
#, c-format
msgid ""
"'--diff-args' requires '--external'; try adding '--external' or remove '--"
@@ -2424,50 +2424,50 @@ msgstr ""
"'--diff-args' kräver att även '--external' anges; lägg till '--external' "
"eller ta bort '--diff-args'"
-#: src/cmd_diff_log.cc:462
+#: src/cmd_diff_log.cc:465
msgid "[FILE [...]]"
msgstr "[FIL [...]]"
-#: src/cmd_diff_log.cc:463
+#: src/cmd_diff_log.cc:466
msgid "Calculates diffs of files"
msgstr "Räknar ut skillnaden mellan filerna"
-#: src/cmd_diff_log.cc:643
+#: src/cmd_diff_log.cc:646
#, c-format
msgid "only one of '--last'/'--next' allowed"
msgstr "enbart en av '--last' eller '--next' tillåten"
-#: src/cmd_diff_log.cc:660
+#: src/cmd_diff_log.cc:663
#, c-format
msgid "try passing a '--from' revision to start at"
msgstr "prova att ange en revision att börja med med hjälpa av '--from'"
-#: src/cmd_diff_log.cc:669
+#: src/cmd_diff_log.cc:672
#, c-format
msgid "workspace has no parent revision, probably an empty branch"
msgstr ""
"arbetskopian har ingen föräldrarevision, det här är antagligen en tom gren"
-#: src/cmd_diff_log.cc:672
+#: src/cmd_diff_log.cc:675
#, c-format
msgid ""
"workspace parent revision %s not found - did you specify a wrong database?"
msgstr "föräldrarevisionen %s finns inte - angav du fel databas?"
-#: src/cmd_diff_log.cc:958
+#: src/cmd_diff_log.cc:961
#, c-format
msgid "(Revision: %s)"
msgstr "(Revision: %s)"
-#: src/cmd_diff_log.cc:980 src/cmd_diff_log.cc:994
+#: src/cmd_diff_log.cc:983 src/cmd_diff_log.cc:997
msgid "[PATH] ..."
msgstr "[SÃKVÃG] ..."
-#: src/cmd_diff_log.cc:981
+#: src/cmd_diff_log.cc:984
msgid "Prints selected history in forward or reverse order"
msgstr "Skriver ut vald historia i framlänges eller baklänges ordning"
-#: src/cmd_diff_log.cc:982
+#: src/cmd_diff_log.cc:985
msgid ""
"This command prints selected history in forward or reverse order, filtering "
"it by PATH if given."
@@ -2475,7 +2475,7 @@ msgstr ""
"Skriv ut historiken i framlänges eller baklänges ordning, med filtrering om "
"SÃKVÃG är angiven."
-#: src/cmd_diff_log.cc:995
+#: src/cmd_diff_log.cc:998
msgid "Lists the selected revision history"
msgstr "Visa vald revisionshistoria"
@@ -2528,19 +2528,19 @@ msgstr "datumformatet '%s' kan inte tolk
msgid "date format '%s' cannot be parsed; using default instead"
msgstr "datumformatet '%s' kan inte tolkas; använder standardformat istället"
-#: src/cmd_ws_commit.cc:237 src/cmd_ws_commit.cc:985
+#: src/cmd_ws_commit.cc:237 src/cmd_ws_commit.cc:987
msgid "*** THIS REVISION WILL CREATE A NEW BRANCH ***"
msgstr "*** DENNA REVISION KOMMER ATT SKAPA EN NY GREN ***"
-#: src/cmd_ws_commit.cc:240 src/cmd_ws_commit.cc:988
+#: src/cmd_ws_commit.cc:240 src/cmd_ws_commit.cc:990
msgid "Old Branch: "
msgstr "Gammal gren: "
-#: src/cmd_ws_commit.cc:241 src/cmd_ws_commit.cc:989
+#: src/cmd_ws_commit.cc:241 src/cmd_ws_commit.cc:991
msgid "New Branch: "
msgstr "Ny gren: "
-#: src/cmd_ws_commit.cc:252 src/cmd_ws_commit.cc:1000
+#: src/cmd_ws_commit.cc:252 src/cmd_ws_commit.cc:1002
msgid "*** THIS REVISION WILL CREATE DIVERGENCE ***"
msgstr "*** DENNA REVISION KOMMER ATT SKAPA EN DIVERGENS ***"
@@ -2675,8 +2675,13 @@ msgstr ""
"flera revisioner har gemensam historia, men %s är inte förfader till %s, kan "
"inte invertera"
-#: src/cmd_ws_commit.cc:702 src/cmd_ws_commit.cc:1771
+#: src/cmd_ws_commit.cc:674
#, c-format
+msgid "cannot disapprove root revision"
+msgstr "kan inte underkänna en rotrevision"
+
+#: src/cmd_ws_commit.cc:704 src/cmd_ws_commit.cc:1799
+#, c-format
msgid ""
"note: this revision creates divergence\n"
"note: you may (or may not) wish to run '%s merge'"
@@ -2684,33 +2689,33 @@ msgstr ""
"obs: den här revisionen skapade divergens\n"
"obs: du kan tänkas vilja (eller kanske inte) köra '%s merge'"
-#: src/cmd_ws_commit.cc:709
+#: src/cmd_ws_commit.cc:711
msgid "[DIRECTORY...]"
msgstr "[KATALOG...]"
-#: src/cmd_ws_commit.cc:710
+#: src/cmd_ws_commit.cc:712
msgid "Creates directories and adds them to the workspace"
msgstr "Skapar en eller flera kataloger och lägger till dem i arbetskopian"
-#: src/cmd_ws_commit.cc:728
+#: src/cmd_ws_commit.cc:730
#, c-format
msgid "directory '%s' already exists"
msgstr "katalogen '%s' finns redan"
-#: src/cmd_ws_commit.cc:735
+#: src/cmd_ws_commit.cc:737
#, c-format
msgid "ignoring directory '%s' (see '.mtn-ignore')"
msgstr "ignorerar katalogen '%s' (se '.mtn-ignore')"
-#: src/cmd_ws_commit.cc:777
+#: src/cmd_ws_commit.cc:779
msgid "Adds files to the workspace"
msgstr "Lägger till filer i arbetskopian"
-#: src/cmd_ws_commit.cc:819
+#: src/cmd_ws_commit.cc:821
msgid "Drops files from the workspace"
msgstr "Ãverger filer i arbetskopian"
-#: src/cmd_ws_commit.cc:834
+#: src/cmd_ws_commit.cc:836
msgid ""
"SRC DEST\n"
"SRC1 [SRC2 [...]] DEST_DIR"
@@ -2718,24 +2723,24 @@ msgstr ""
"KÃLLA MÃ
L\n"
"KÃLLA1 [KÃLLA2 [...]] MÃ
LKATALOG"
-#: src/cmd_ws_commit.cc:836
+#: src/cmd_ws_commit.cc:838
msgid "Renames entries in the workspace"
msgstr "Byter namn på filer i arbetskopian"
-#: src/cmd_ws_commit.cc:862
+#: src/cmd_ws_commit.cc:864
#, c-format
msgid "the specified target directory '%s/' doesn't exist."
msgstr "den angivna målkatalogen '%s/' finns inte."
-#: src/cmd_ws_commit.cc:868
+#: src/cmd_ws_commit.cc:870
msgid "NEW_ROOT PUT_OLD"
msgstr "NY_ROT PLACERA_GAMLA"
-#: src/cmd_ws_commit.cc:869
+#: src/cmd_ws_commit.cc:871
msgid "Renames the root directory"
msgstr "Byter namn på rotkatalogen"
-#: src/cmd_ws_commit.cc:870
+#: src/cmd_ws_commit.cc:872
msgid ""
"After this command, the directory that currently has the name NEW_ROOT will "
"be the root directory, and the directory that is currently the root "
@@ -2747,51 +2752,51 @@ msgstr ""
"PLACERA_GAMLA.\n"
"Det är INTE rekommenderat att använda '--bookkeep-only'."
-#: src/cmd_ws_commit.cc:891
+#: src/cmd_ws_commit.cc:893
msgid "Shows workspace's status information"
msgstr "Visar statusinformation för arbetskopian"
-#: src/cmd_ws_commit.cc:929
+#: src/cmd_ws_commit.cc:931
#, c-format
msgid "bisection from revision %s in progress"
msgstr "uppdelning från revision %s pågår"
-#: src/cmd_ws_commit.cc:1024
+#: src/cmd_ws_commit.cc:1026
#, c-format
msgid "use '--revision' or '--branch' to specify what to checkout"
msgstr ""
"använd '--revision' eller '--branch' för att tala om vad som ska hämtas"
-#: src/cmd_ws_commit.cc:1037
+#: src/cmd_ws_commit.cc:1039
#, c-format
msgid "choose one with '%s checkout -r<id>'"
msgstr "välj ett med '%s update -r<id>'"
-#: src/cmd_ws_commit.cc:1054
+#: src/cmd_ws_commit.cc:1056
#, c-format
msgid "revision %s is not a member of branch %s"
msgstr "revisionen %s är inte med i grenen %s"
-#: src/cmd_ws_commit.cc:1071
+#: src/cmd_ws_commit.cc:1073
#, c-format
msgid "you must specify a destination directory"
msgstr "du måste ange en målkatalog"
-#: src/cmd_ws_commit.cc:1084
+#: src/cmd_ws_commit.cc:1086
#, c-format
msgid "checkout directory '%s' already exists"
msgstr "katalogen '%s' finns redan"
-#: src/cmd_ws_commit.cc:1111 src/cmd_ws_commit.cc:1125
-#: src/cmd_ws_commit.cc:1821 src/cmd_ws_commit.cc:1978
+#: src/cmd_ws_commit.cc:1113 src/cmd_ws_commit.cc:1127
+#: src/cmd_ws_commit.cc:1849 src/cmd_ws_commit.cc:2006
msgid "[DIRECTORY]"
msgstr "[KATALOG]"
-#: src/cmd_ws_commit.cc:1112 src/cmd_ws_commit.cc:1126
+#: src/cmd_ws_commit.cc:1114 src/cmd_ws_commit.cc:1128
msgid "Checks out a revision from the database into a directory"
msgstr "Hämtar en revision från databasen till en katalog"
-#: src/cmd_ws_commit.cc:1113 src/cmd_ws_commit.cc:1127
+#: src/cmd_ws_commit.cc:1115 src/cmd_ws_commit.cc:1129
msgid ""
"If a revision is given, that's the one that will be checked out. Otherwise, "
"it will be the head of the branch (given or implicit). If no directory is "
@@ -2801,39 +2806,39 @@ msgstr ""
"lövet i grenen (implicit eller angiven) att hämtas. Om ingen katalog anges "
"kommer grenens namn att användas som katalognamn."
-#: src/cmd_ws_commit.cc:1137
+#: src/cmd_ws_commit.cc:1139
#, c-format
msgid "wrong revision count"
msgstr "felaktigt antal revisioner"
-#: src/cmd_ws_commit.cc:1143
+#: src/cmd_ws_commit.cc:1145
msgid "Manages file attributes"
msgstr "Hanterar filattribut"
-#: src/cmd_ws_commit.cc:1144
+#: src/cmd_ws_commit.cc:1146
msgid "This command is used to set, get or drop file attributes."
msgstr "Detta kommando används för att sätta, hämta eller ta bort attribut"
-#: src/cmd_ws_commit.cc:1163 src/cmd_ws_commit.cc:1231
-#: src/cmd_ws_commit.cc:1281 src/cmd_ws_commit.cc:1362
+#: src/cmd_ws_commit.cc:1165 src/cmd_ws_commit.cc:1233
+#: src/cmd_ws_commit.cc:1283 src/cmd_ws_commit.cc:1366
#, c-format
msgid "unknown path '%s'"
msgstr "okänd sökväg '%s'"
-#: src/cmd_ws_commit.cc:1180
+#: src/cmd_ws_commit.cc:1182
#, c-format
msgid "path '%s' does not have attribute '%s'"
msgstr "sökvägen '%s' har inget attribut '%s'"
-#: src/cmd_ws_commit.cc:1199 src/cmd_ws_commit.cc:1212
+#: src/cmd_ws_commit.cc:1201 src/cmd_ws_commit.cc:1214
msgid "PATH [ATTR]"
msgstr "SÃKVÃG [ATTR]"
-#: src/cmd_ws_commit.cc:1200
+#: src/cmd_ws_commit.cc:1202
msgid "Removes attributes from a file"
msgstr "Tar bort attribut från en fil"
-#: src/cmd_ws_commit.cc:1201
+#: src/cmd_ws_commit.cc:1203
msgid ""
"If no attribute is specified, this command removes all attributes attached "
"to the file given in PATH. Otherwise only removes the attribute specified "
@@ -2842,11 +2847,11 @@ msgstr ""
"Detta kommando tar bort alla attribut kopplade till filen SÃKVÃG om NYCKEL "
"inte är givet. Om NYCKEL är givet tas enbart detta attribut bort."
-#: src/cmd_ws_commit.cc:1213
+#: src/cmd_ws_commit.cc:1215
msgid "Gets the values of a file's attributes"
msgstr "Hämta värdet för ett filattribut"
-#: src/cmd_ws_commit.cc:1214
+#: src/cmd_ws_commit.cc:1216
msgid ""
"If no attribute is specified, this command prints all attributes attached to "
"the file given in PATH. Otherwise it only prints the attribute specified in "
@@ -2855,60 +2860,76 @@ msgstr ""
"Detta kommando skriver ut alla attribut kopplade till filen SÃKVÃG om NYCKEL "
"inte är givet. Om NYCKEL är givet skrivs enbart detta attribut ut."
-#: src/cmd_ws_commit.cc:1247
+#: src/cmd_ws_commit.cc:1249
#, c-format
msgid "no attributes for '%s'"
msgstr "inga attribut till '%s'"
-#: src/cmd_ws_commit.cc:1259
+#: src/cmd_ws_commit.cc:1261
#, c-format
msgid "no attribute '%s' on path '%s'"
msgstr "inget attribut '%s' för sökvägen '%s'"
-#: src/cmd_ws_commit.cc:1305
+#: src/cmd_ws_commit.cc:1307
msgid "PATH ATTR VALUE"
msgstr "SÃKVÃG ATTR VÃRDE"
-#: src/cmd_ws_commit.cc:1306
+#: src/cmd_ws_commit.cc:1308
msgid "Sets an attribute on a file"
msgstr "Sätt ett attribut på en fil"
-#: src/cmd_ws_commit.cc:1307
+#: src/cmd_ws_commit.cc:1309
msgid ""
"Sets the attribute given on ATTR to the value specified in VALUE for the "
"file mentioned in PATH."
msgstr "Sätt attributet NYCKEL med värde VÃRDE pÃ¥ filen SÃKVÃG."
-#: src/cmd_ws_commit.cc:1336 src/cmd_files.cc:138 src/cmd_files.cc:233
+#: src/cmd_ws_commit.cc:1335 src/cmd_files.cc:138 src/cmd_files.cc:233
msgid "PATH"
msgstr "SÃKVÃG"
-#: src/cmd_ws_commit.cc:1337
+#: src/cmd_ws_commit.cc:1336
msgid "Prints all attributes for the specified path"
msgstr "Skriver ut alla attribut för den givna sökvägen"
-#: src/cmd_ws_commit.cc:1450
+#: src/cmd_ws_commit.cc:1337
+msgid ""
+"If an explicit revision is given, the file's attributes at this specific "
+"revision are returned."
+msgstr "Om en revision anges explicit får man filens attribut i den revisionen specifikt."
+
+#: src/cmd_ws_commit.cc:1378
+#, c-format
+msgid "unknown path '%s' in %s"
+msgstr "okänd sökväg '%s' i %s"
+
+#: src/cmd_ws_commit.cc:1381
+#, c-format
+msgid "none or only one revision must be given"
+msgstr "ingen eller enbart en revision får anges"
+
+#: src/cmd_ws_commit.cc:1478
msgid "PATH KEY VALUE"
msgstr "SÃKVÃG NYCKEL VÃRDE"
-#: src/cmd_ws_commit.cc:1451
+#: src/cmd_ws_commit.cc:1479
msgid "Sets an attribute on a certain path"
msgstr "Sätt ett attribut på en given sökväg"
-#: src/cmd_ws_commit.cc:1472
+#: src/cmd_ws_commit.cc:1500
msgid "PATH [KEY]"
msgstr "SÃKVÃG [NYCKEL]"
-#: src/cmd_ws_commit.cc:1473
+#: src/cmd_ws_commit.cc:1501
msgid "Drops an attribute or all of them from a certain path"
msgstr "Kata ett eller alla attribut för en given sökväg"
-#: src/cmd_ws_commit.cc:1513
+#: src/cmd_ws_commit.cc:1541
#, c-format
msgid "no changes to commit"
msgstr "inga ändringar att arkivera"
-#: src/cmd_ws_commit.cc:1534
+#: src/cmd_ws_commit.cc:1562
#, c-format
msgid ""
"parent revisions of this commit are in different branches:\n"
@@ -2919,12 +2940,12 @@ msgstr ""
"'%s' och '%s'.\n"
"var god ange en gren för denna arkivering med '--branch'."
-#: src/cmd_ws_commit.cc:1556
+#: src/cmd_ws_commit.cc:1584
#, c-format
msgid "changes rejected by hook: %s"
msgstr "ändringar förkastade av hook: %s"
-#: src/cmd_ws_commit.cc:1570
+#: src/cmd_ws_commit.cc:1598
#, c-format
msgid ""
"'_MTN/log' is non-empty and log message was specified on command line.\n"
@@ -2935,72 +2956,72 @@ msgstr ""
"Kanske ta bort eller flytta på '_MTN/log'\n"
"eller ta bort '--message'/'--message-file' från kommandoraden?"
-#: src/cmd_ws_commit.cc:1615
+#: src/cmd_ws_commit.cc:1643
#, c-format
msgid "empty log message; commit canceled"
msgstr "tomt loggmeddelande; arkivering avbryts"
-#: src/cmd_ws_commit.cc:1635
+#: src/cmd_ws_commit.cc:1663
#, c-format
msgid "log message rejected by hook: %s"
msgstr "loggmeddelandet förkastas: %s"
-#: src/cmd_ws_commit.cc:1645
+#: src/cmd_ws_commit.cc:1673
#, c-format
msgid "beginning commit on branch '%s'"
msgstr "börjar arkivering av ändringar i grenen '%s'"
-#: src/cmd_ws_commit.cc:1651
+#: src/cmd_ws_commit.cc:1679
#, c-format
msgid "revision %s already in database"
msgstr "revisionen %s finns redan i databasen"
-#: src/cmd_ws_commit.cc:1695 src/cmd_ws_commit.cc:1725
+#: src/cmd_ws_commit.cc:1723 src/cmd_ws_commit.cc:1753
#, c-format
msgid "file '%s' modified during commit, aborting"
msgstr "filen '%s' ändrades under arkivering, avbryter"
-#: src/cmd_ws_commit.cc:1706
+#: src/cmd_ws_commit.cc:1734
#, c-format
msgid "your database is missing version %s of file '%s'"
msgstr "din databas saknar version %s av filen '%s'"
-#: src/cmd_ws_commit.cc:1764
+#: src/cmd_ws_commit.cc:1792
#, c-format
msgid "committed revision %s"
msgstr "arkiverade revisionen %s"
-#: src/cmd_ws_commit.cc:1809
+#: src/cmd_ws_commit.cc:1837
msgid "Commits workspace changes to the database"
msgstr "Arkiverar ändringar i arbetskopian till databasen"
-#: src/cmd_ws_commit.cc:1822
+#: src/cmd_ws_commit.cc:1850
msgid "Sets up a new workspace directory"
msgstr "Initierar en ny arbetskopie-katalog"
-#: src/cmd_ws_commit.cc:1823
+#: src/cmd_ws_commit.cc:1851
msgid "If no directory is specified, uses the current directory."
msgstr "Använd nuvarande katalog om inget annat anges."
-#: src/cmd_ws_commit.cc:1830
+#: src/cmd_ws_commit.cc:1858
#, c-format
msgid "need '--branch' argument for setup"
msgstr "du måste ange en gren med '--branch' till kommandot 'setup'"
-#: src/cmd_ws_commit.cc:1868
+#: src/cmd_ws_commit.cc:1896
msgid "DIRECTORY"
msgstr "KATALOG"
-#: src/cmd_ws_commit.cc:1869
+#: src/cmd_ws_commit.cc:1897
msgid "Imports the contents of a directory into a branch"
msgstr "Importerar den givna katalogens innehåll till den givna grenen"
-#: src/cmd_ws_commit.cc:1883
+#: src/cmd_ws_commit.cc:1911
#, c-format
msgid "you must specify a directory to import"
msgstr "du måste ange en katalog att importera"
-#: src/cmd_ws_commit.cc:1903
+#: src/cmd_ws_commit.cc:1931
#, c-format
msgid ""
"use '--revision' or '--branch' to specify the parent revision for the import"
@@ -3008,38 +3029,38 @@ msgstr ""
"använd '--revision' eller '--branch' för att ange föräldrarevisionen för "
"importen"
-#: src/cmd_ws_commit.cc:1914
+#: src/cmd_ws_commit.cc:1942
#, c-format
msgid "choose one with '%s import -r<id>'"
msgstr "välj en med '%s import -r<id>'"
-#: src/cmd_ws_commit.cc:1925
+#: src/cmd_ws_commit.cc:1953
#, c-format
msgid "import directory '%s' doesn't exists"
msgstr "importkatalogen '%s' finns inte"
-#: src/cmd_ws_commit.cc:1926
+#: src/cmd_ws_commit.cc:1954
#, c-format
msgid "import directory '%s' is a file"
msgstr "importkatalogen '%s' är en fil"
-#: src/cmd_ws_commit.cc:1979
+#: src/cmd_ws_commit.cc:2007
msgid "Migrates a workspace directory's metadata to the latest format"
msgstr "Migrerar en arbetskopias metadata till det senaste formatet"
-#: src/cmd_ws_commit.cc:1980
+#: src/cmd_ws_commit.cc:2008
msgid "If no directory is given, defaults to the current workspace."
msgstr "Nuvarande katalog avses om inget annat anges"
-#: src/cmd_ws_commit.cc:2004
+#: src/cmd_ws_commit.cc:2032
msgid "Refreshes the inodeprint cache"
msgstr "Uppdaterar inodeprint-cachen"
-#: src/cmd_ws_commit.cc:2015
+#: src/cmd_ws_commit.cc:2043
msgid "Search revisions to find where a change first appeared"
msgstr "Leta efter revision för att finna var en ändring uppstod"
-#: src/cmd_ws_commit.cc:2016
+#: src/cmd_ws_commit.cc:2044
msgid ""
"These commands subdivide a set of revisions into good, bad and untested "
"subsets and successively narrow the untested set to find the first revision "
@@ -3049,11 +3070,11 @@ msgstr ""
"otestad mängde, och smalnar successivt av den otestade mängden med målet att "
"finna den revision som först introducerade en viss ändring."
-#: src/cmd_ws_commit.cc:2021
+#: src/cmd_ws_commit.cc:2049
msgid "Reset the current bisection search"
msgstr "Avbryt den pågående uppdelningssökningen"
-#: src/cmd_ws_commit.cc:2022
+#: src/cmd_ws_commit.cc:2050
msgid ""
"Update the workspace back to the revision from which the bisection was "
"started and remove all current search information, allowing a new search to "
@@ -3062,24 +3083,24 @@ msgstr ""
"Uppdatera arbetskopian tillbaka till revisionen där uppdelningen började och "
"ta bort all sökningsinformation så att en ny sökning kan påbörjas."
-#: src/cmd_ws_commit.cc:2037 src/cmd_ws_commit.cc:2093
+#: src/cmd_ws_commit.cc:2065 src/cmd_ws_commit.cc:2121
#, c-format
msgid "no bisection in progress"
msgstr "ingen uppdelning pågår"
-#: src/cmd_ws_commit.cc:2052 src/cmd_ws_commit.cc:2280
+#: src/cmd_ws_commit.cc:2080 src/cmd_ws_commit.cc:2308
#, c-format
msgid "this command can only be used in a workspace with no pending changes"
msgstr ""
"detta kommando kan enbart användas i en arbetskopia där alla gjorda "
"ändringar har arkiverats"
-#: src/cmd_ws_commit.cc:2058
+#: src/cmd_ws_commit.cc:2086
#, c-format
msgid "reset back to %s"
msgstr "återställ till %s"
-#: src/cmd_ws_commit.cc:2124
+#: src/cmd_ws_commit.cc:2152
#, c-format
msgid ""
"bisecting revisions; %d good; %d bad; %d skipped; specify good revisions to "
@@ -3088,7 +3109,7 @@ msgstr ""
"delar upp revisioner; %d bra; %d dåliga; %d hoppades över; var god ange bra "
"revisioner för att påbörja sökningen"
-#: src/cmd_ws_commit.cc:2130
+#: src/cmd_ws_commit.cc:2158
#, c-format
msgid ""
"bisecting revisions; %d good; %d bad; %d skipped; specify bad revisions to "
@@ -3097,41 +3118,41 @@ msgstr ""
"delar upp revisioner; %d bra; %d dåliga; %d hoppades över; var god ange "
"dåliga revisioner för att påbörja sökningen"
-#: src/cmd_ws_commit.cc:2193
+#: src/cmd_ws_commit.cc:2221
#, c-format
msgid "bisecting %d revisions; %d good; %d bad; %d skipped; %d remaining"
msgstr "delar upp %d revisioner; %d bra; %d dåliga; %d hoppades över; %d kvar"
-#: src/cmd_ws_commit.cc:2211
+#: src/cmd_ws_commit.cc:2239
#, c-format
msgid "bisection finished at revision %s"
msgstr "uppdelningen slutade på revision %s"
-#: src/cmd_ws_commit.cc:2304
+#: src/cmd_ws_commit.cc:2332
#, c-format
msgid "bisection started at revision %s"
msgstr "uppdelningen började på revision %s"
-#: src/cmd_ws_commit.cc:2320
+#: src/cmd_ws_commit.cc:2348
#, c-format
msgid "ignored redundant bisect %s on revision %s"
msgstr "ignorerade redundant uppdelning %s på revision %s"
-#: src/cmd_ws_commit.cc:2325
+#: src/cmd_ws_commit.cc:2353
#, c-format
msgid "conflicting bisect %s/%s on revision %s"
msgstr "uppdelning %s och %s i konflikt med varandra i revision %s"
-#: src/cmd_ws_commit.cc:2343
+#: src/cmd_ws_commit.cc:2371
#, c-format
msgid "updating to %s"
msgstr "uppdaterar till %s"
-#: src/cmd_ws_commit.cc:2368
+#: src/cmd_ws_commit.cc:2396
msgid "Reports on the current status of the bisection search"
msgstr "Berättar om den nuvarande uppdelningssökningens tillstånd"
-#: src/cmd_ws_commit.cc:2369
+#: src/cmd_ws_commit.cc:2397
msgid ""
"Lists the total number of revisions in the search set, the number of "
"revisions that have been determined to be good or bad, the number of "
@@ -3142,26 +3163,26 @@ msgstr ""
"markerats som bra eller dåliga, antalet revision som har hoppats över och "
"antalet revisioner kvar att testa."
-#: src/cmd_ws_commit.cc:2397
+#: src/cmd_ws_commit.cc:2425
#, c-format
msgid "next revision for bisection testing is %s\n"
msgstr "nästa revision att testa med uppdelning är %s\n"
-#: src/cmd_ws_commit.cc:2398
+#: src/cmd_ws_commit.cc:2426
#, c-format
msgid "however this workspace is currently at %s\n"
msgstr "men denna arbetskopia är för närvarande på %s\n"
-#: src/cmd_ws_commit.cc:2399
+#: src/cmd_ws_commit.cc:2427
#, c-format
msgid "run 'bisect update' to update to this revision before testing"
msgstr "kör 'bisect update' för att uppdatera till denna revision innan test"
-#: src/cmd_ws_commit.cc:2404
+#: src/cmd_ws_commit.cc:2432
msgid "Updates the workspace to the next revision to be tested by bisection"
msgstr "Uppdaterar arbetskopian till nästa revision att testa med uppdelning"
-#: src/cmd_ws_commit.cc:2405
+#: src/cmd_ws_commit.cc:2433
msgid ""
"This command can be used if updates by good, bad or skip commands fail due "
"to blocked paths or other problems."
@@ -3169,11 +3190,11 @@ msgstr ""
"Detta kommando kan användas om uppdatering med kommandona 'good', 'bad' och "
"'skipped' misslyckades på grund av blockerade sökvägar eller andra problem."
-#: src/cmd_ws_commit.cc:2415
+#: src/cmd_ws_commit.cc:2443
msgid "Excludes the current revision or specified revisions from the search"
msgstr "Utestänger nuvarande revision eller angivna revisioner från sökningen"
-#: src/cmd_ws_commit.cc:2416
+#: src/cmd_ws_commit.cc:2444
msgid ""
"Skipped revisions are removed from the set being searched. Revisions that "
"cannot be tested for some reason should be skipped."
@@ -3181,19 +3202,19 @@ msgstr ""
"Revisioner som hoppas över tas bort från mängden som söks igenom. Revisioner "
"som inte kan testas av någon anledning borde hoppas över."
-#: src/cmd_ws_commit.cc:2426
+#: src/cmd_ws_commit.cc:2454
msgid "Marks the current revision or specified revisions as bad"
msgstr "Markerar nuvarande revision eller angivna revisioner som dåliga"
-#: src/cmd_ws_commit.cc:2427
+#: src/cmd_ws_commit.cc:2455
msgid "Known bad revisions are removed from the set being searched."
msgstr "Kända dåliga revisioner tas bort från mängden att söka igenom."
-#: src/cmd_ws_commit.cc:2436
+#: src/cmd_ws_commit.cc:2464
msgid "Marks the current revision or specified revisions as good"
msgstr "Markerar nuvarande revision eller angivna revisioner som bra"
-#: src/cmd_ws_commit.cc:2437
+#: src/cmd_ws_commit.cc:2465
msgid "Known good revisions are removed from the set being searched."
msgstr "Kända bra revisioner tas bort från mängden att söka igenom."
@@ -3636,7 +3657,7 @@ msgstr "rcfilen '%s' finns inte"
msgid "rcfile '%s' does not exist"
msgstr "rcfilen '%s' finns inte"
-#: src/transforms.cc:83
+#: src/transforms.cc:84
#, c-format
msgid ""
"%s\n"
@@ -4456,27 +4477,27 @@ msgstr "revisionen innehåller inkorrekt
msgid "revision contains incorrect manifest_id"
msgstr "revisionen innehåller inkorrekt manifest_id"
-#: src/database.cc:3489
+#: src/database.cc:3487
#, c-format
msgid "failed to get RSA verifying key for %s"
msgstr "misslyckades med att finna signerande RSA-nyckel för %s"
-#: src/database.cc:3628
+#: src/database.cc:3626
#, c-format
msgid "your database contains multiple keys named '%s'"
msgstr "din databas innehåller flera nycklar som heter '%s'"
-#: src/database.cc:3789
+#: src/database.cc:3787
#, c-format
msgid "cert revision %s does not exist in db"
msgstr "certrevision %s finns inte i databasen"
-#: src/database.cc:3791
+#: src/database.cc:3789
#, c-format
msgid "dropping cert"
msgstr "slänger cert"
-#: src/database.cc:3801
+#: src/database.cc:3799
#, c-format
msgid ""
"the branch name\n"
@@ -4499,32 +4520,32 @@ msgstr ""
"kommandot '%s local kill_certs för att ta bort detta särskilda\n"
"gren-certifikat och lägga till en giltig."
-#: src/database.cc:4118
+#: src/database.cc:4116
#, c-format
msgid "ignoring bad signature by '%s' on '%s'"
msgstr "ignorerar felaktig signatur på '%2$s', av '%1$s'"
-#: src/database.cc:4123
+#: src/database.cc:4121
#, c-format
msgid "ignoring unknown signature by '%s' on '%s'"
msgstr "ignorerar okänd signatur på '%2$s', av '%1$s'"
-#: src/database.cc:4125
+#: src/database.cc:4123
#, c-format
msgid "trust function disliked %d signers of '%s' cert on revision %s"
msgstr "tillitsfunktionen ogillar %d signerare av certet '%s' i revisionen %s"
-#: src/database.cc:4813 src/database.cc:4955
+#: src/database.cc:4811 src/database.cc:4953
#, c-format
msgid "no database specified"
msgstr "ingen databas angiven"
-#: src/database.cc:4826
+#: src/database.cc:4824
#, c-format
msgid "database '%s' does not exist"
msgstr "databasen '%s' finns inte"
-#: src/database.cc:4834
+#: src/database.cc:4832
#, c-format
msgid ""
"'%s' is a workspace, not a database\n"
@@ -4533,17 +4554,17 @@ msgstr ""
"'%s' är en katalog, inte en databas\n"
"(menade du '%s'?)"
-#: src/database.cc:4838
+#: src/database.cc:4836
#, c-format
msgid "'%s' is a directory, not a database"
msgstr "'%s' är en katalog, inte en databas"
-#: src/database.cc:4846
+#: src/database.cc:4844
#, c-format
msgid "database '%s' already exists"
msgstr "databasen '%s' finns redan"
-#: src/database.cc:4851
+#: src/database.cc:4849
#, c-format
msgid ""
"existing (possibly stale) journal file '%s' has same stem as new database "
@@ -4554,32 +4575,32 @@ msgstr ""
"databasen '%s'.\n"
"Avbryter skapandet av databasen"
-#: src/database.cc:5013
+#: src/database.cc:5011
#, c-format
msgid "the database alias '%s' has multiple ambiguous expansions:"
msgstr "databasaliaset '%s' har flera motsägelsefulla uttydningar:"
-#: src/database.cc:5036
+#: src/database.cc:5034
#, c-format
msgid "could not query default database alias"
msgstr "kunde inte fråga efter databasens standardalias"
-#: src/database.cc:5038
+#: src/database.cc:5036
#, c-format
msgid "using default database '%s'"
msgstr "använder standarddatabasen '%s'"
-#: src/database.cc:5048
+#: src/database.cc:5046
#, c-format
msgid "invalid database alias '%s': does not start with a colon"
msgstr "ogiltigt databasalias '%s': startar inte med ett kolon"
-#: src/database.cc:5052
+#: src/database.cc:5050
#, c-format
msgid "invalid database alias '%s': must not be empty"
msgstr "ogiltigt databasalias '%s': får inte vara tomt"
-#: src/database.cc:5068
+#: src/database.cc:5066
#, c-format
msgid "invalid database alias '%s': does contain invalid characters"
msgstr "ogiltigt databasalias '%s': innehåller ogiltiga tecken"
@@ -4653,7 +4674,7 @@ msgstr "nyckelparet %s finns inte i kata
msgid "no key pair %s found in key store '%s'"
msgstr "nyckelparet %s finns inte i katalogen '%s'"
-#: src/key_store.cc:620
+#: src/key_store.cc:633
#, c-format
msgid ""
"failed to decrypt old private RSA key, probably incorrect passphrase or "
@@ -4662,49 +4683,49 @@ msgstr ""
"misslyckades med att avkoda den gamla privata RSA-nyckeln, antagligen "
"beroende på inkorrekt lösen eller på att lua-hooken 'get_passphrase' saknas"
-#: src/key_store.cc:633
+#: src/key_store.cc:646
#, c-format
msgid "failed to extract RSA private key from PKCS#8 keypair"
msgstr ""
"misslyckades med att plocka ut den privata RSA-nyckeln från nyckelparet i "
"PKCS#8-format"
-#: src/key_store.cc:673
+#: src/key_store.cc:686
#, c-format
msgid "key '%s' already exists"
msgstr "nyckeln '%s' finns redan"
-#: src/key_store.cc:685
+#: src/key_store.cc:698
#, c-format
msgid "generating key-pair '%s'"
msgstr "skapar nyckelparet '%s'"
-#: src/key_store.cc:733
+#: src/key_store.cc:746
#, c-format
msgid "storing key-pair %s in '%s/'"
msgstr "lagrar nyckelparet %s i '%s/'"
-#: src/key_store.cc:746
+#: src/key_store.cc:759
#, c-format
msgid "storing public key %s in '%s'"
msgstr "lagrar den publika nyckeln %s i '%s'"
-#: src/key_store.cc:762
+#: src/key_store.cc:775
#, c-format
msgid "key '%s' has hash '%s'"
msgstr "nyckeln '%s' har kontrollsumman '%s'"
-#: src/key_store.cc:776
+#: src/key_store.cc:789
#, c-format
msgid "no key pair '%s' found in key store '%s'"
msgstr "nyckelparet '%s' finns inte i katalogen '%s'"
-#: src/key_store.cc:828
+#: src/key_store.cc:845
#, c-format
msgid "Botan error decrypting data: '%s'"
msgstr "Botan genererade ett fel när den avkodade data: '%s'"
-#: src/key_store.cc:851
+#: src/key_store.cc:868
#, c-format
msgid ""
"you have chosen to sign only with ssh-agent but ssh-agent does not seem to "
@@ -4713,12 +4734,12 @@ msgstr ""
"du har valt att enbart signera med hjälp av ssh-agent, men den tycks inte "
"vara igång"
-#: src/key_store.cc:881
+#: src/key_store.cc:898
#, c-format
msgid "you don't seem to have your monotone key imported "
msgstr "du verkar inte ha importerat din monotonenyckel "
-#: src/key_store.cc:935
+#: src/key_store.cc:952
#, c-format
msgid ""
"make_signature: ssh signature (%i) != monotone signature (%i)\n"
@@ -4729,24 +4750,24 @@ msgstr ""
"sshsignatur : %s\n"
"monotonesignatur: %s"
-#: src/key_store.cc:951
+#: src/key_store.cc:968
#, c-format
msgid "make_signature: signature is not valid"
msgstr "make_signature: signaturen är ogiltig"
-#: src/key_store.cc:963
+#: src/key_store.cc:980
#, c-format
msgid "no ssh-agent is available, cannot add key %s"
msgstr "ingen ssh-agent tillgänglig, kunde inte lägga till nyckeln %s"
-#: src/key_store.cc:1060
+#: src/key_store.cc:1087
#, c-format
msgid "failed to decrypt old private RSA key, probably incorrect passphrase"
msgstr ""
"misslyckades med att avkoda den gamla privata RSA-nyckeln, antagligen "
"beroende på inkorrekt lösen"
-#: src/key_store.cc:1097
+#: src/key_store.cc:1124
#, c-format
msgid "public and private keys for %s do not match"
msgstr "publik och privat nyckel för %s stämmer inte överens"
@@ -4887,22 +4908,22 @@ msgstr "otydbart paket: ogiltigt data i
msgid "malformed packet: invalid public key data for '%s': %s"
msgstr "otydbart paket: ogiltigt data i publik nyckel för '%s': %s"
-#: src/packet.cc:187
+#: src/packet.cc:189
#, c-format
msgid "malformed packet: invalid private key data for '%s': %s"
msgstr "otydbart paket: ogiltigt data i privat nyckel för '%s': %s"
-#: src/packet.cc:199
+#: src/packet.cc:205
#, c-format
msgid "malformed packet: invalid cert name"
msgstr "otydbart paket: ogiltigt certnamn"
-#: src/packet.cc:206
+#: src/packet.cc:212
#, c-format
msgid "malformed packet: too many arguments in header"
msgstr "otydbart paket: för många argument i headern"
-#: src/packet.cc:335
+#: src/packet.cc:341
#, c-format
msgid "unknown packet type '%s'"
msgstr "okänd pakettyp '%s'"
@@ -7334,52 +7355,52 @@ msgstr "Hastigetstestar Botans SHA-1"
msgid "Benchmarking botan's SHA-1 core"
msgstr "Hastigetstestar Botans SHA-1"
-#: src/sha1.cc:61
+#: src/sha1.cc:64
#, c-format
msgid "SHA-1 provider '%s': %s MiB/s"
msgstr "SHA-1-leverantör '%s': %s MiB/s"
-#: src/sha1.cc:73
+#: src/sha1.cc:76
#, c-format
msgid "%s MiB/s"
msgstr "%s MiB/s"
-#: src/pcrewrap.cc:219
+#: src/pcrewrap.cc:273
#, c-format
msgid "while compiling regex '%s': %s"
msgstr "medans regexen '%s' kompilerades: %s"
-#: src/pcrewrap.cc:228
+#: src/pcrewrap.cc:282
#, c-format
msgid "error in regex '%s': %s"
msgstr "fel i regexen '%s': %s"
-#: src/pcrewrap.cc:230
+#: src/pcrewrap.cc:284
#, c-format
msgid "error near char %d of regex '%s': %s"
msgstr "fel nära tecken nummer %d i regexen '%s': %s"
-#: src/pcrewrap.cc:245
+#: src/pcrewrap.cc:299
#, c-format
msgid "while studying regex '%s': %s"
msgstr "medans regexen '%s' studerades: %s"
-#: src/pcrewrap.cc:263
+#: src/pcrewrap.cc:317
#, c-format
msgid "backtrack limit exceeded in regular _expression_ matching"
msgstr "bakåtspårningsnivån har nått sin gräns under jämförelse av regex"
-#: src/pcrewrap.cc:267
+#: src/pcrewrap.cc:321
#, c-format
msgid "recursion limit exceeded in regular _expression_ matching"
msgstr "rekursionen har nått sin gräns under jämförelse av regex"
-#: src/pcrewrap.cc:272
+#: src/pcrewrap.cc:326
#, c-format
msgid "invalid UTF-8 sequence found during regular _expression_ matching"
msgstr "ogiltig UTF8-sekvens funnen under jämförelsen av regex"
-#: src/pcrewrap.cc:275
+#: src/pcrewrap.cc:329
#, c-format
msgid "pcre_exec returned %d"
msgstr "pcre_exec gav tillbaka %d"
@@ -8376,31 +8397,51 @@ msgstr "monotone stöder inte Botan 1.7.
msgid "monotone does not support Botan 1.7.14"
msgstr "monotone stöder inte Botan 1.7.14"
-#: src/monotone.cc:161
+#: src/monotone.cc:163
#, c-format
+msgid "monotone does not support Botan 1.9.9"
+msgstr "monotone stöder inte Botan 1.9.9"
+
+#: src/monotone.cc:168
+#, c-format
msgid "this monotone binary requires Botan 1.6.3 or newer"
msgstr "denna monotone kräver Botan version 1.6.3 eller senare"
-#: src/monotone.cc:163
+#: src/monotone.cc:170
#, c-format
-msgid "this monotone binary does not work with Botan newer than 1.7.6"
-msgstr "denna monotone fungerar inte med Botan version 1.7.6 eller senare"
+msgid "this monotone binary does not work with Botan 1.7.7 or newer"
+msgstr "denna monotone fungerar inte med Botan version 1.7.7 eller senare"
-#: src/monotone.cc:166
+#: src/monotone.cc:175
#, c-format
msgid "this monotone binary requires Botan 1.7.7 or newer"
msgstr "denna monotone kräver Botan version 1.7.7 eller senare"
-#: src/monotone.cc:172 src/monotone.cc:177
+#: src/monotone.cc:182 src/monotone.cc:189
#, c-format
-msgid "this monotone binary does not work with Botan 1.9.x"
-msgstr "denna monotone fungerar inte med Botan version 1.9.x"
+msgid "this monotone binary does not work with Botan 1.9.4 or newer"
+msgstr "denna monotone fungerar inte med Botan version 1.9.4 eller senare"
-#: src/monotone.cc:175
+#: src/monotone.cc:187
#, c-format
msgid "this monotone binary requires Botan 1.7.22 or newer"
msgstr "denna monotone kräver Botan version 1.7.22 eller senare"
+#: src/monotone.cc:195
+#, c-format
+msgid "this monotone binary requires Botan 1.9.4 or newer"
+msgstr "denna monotone kräver Botan version 1.9.4 eller senare"
+
+#: src/monotone.cc:197
+#, c-format
+msgid "this monotone binary does not work with Botan 1.9.11 or newer"
+msgstr "denna monotone fungerar inte med Botan version 1.9.11 eller senare"
+
+#: src/monotone.cc:202
+#, c-format
+msgid "this monotone binary requires Botan 1.9.11 or newer"
+msgstr "denna monotone kräver Botan version 1.9.11 eller senare"
+
#: src/std_hooks.lua:56
msgid "Press enter"
msgstr "Tryck på Enter"
@@ -8409,6 +8450,9 @@ msgstr "Tryck [Retur] när underprocesse
msgid "Press enter when the subprocess has completed"
msgstr "Tryck [Retur] när underprocessen är klar"
+#~ msgid "this monotone binary does not work with Botan newer than 1.7.6"
+#~ msgstr "denna monotone fungerar inte med Botan version 1.7.6 eller senare"
+
#~ msgid "Network error: %s"
#~ msgstr "Nätverksfel: %s"
============================================================
--- src/ancestry.cc 8b3388b690a5f4878bd29d752c3e6e073411739e
+++ src/ancestry.cc e673b17a5d2fad2716f7f4efe33c2ca11c7c31f9
@@ -374,6 +374,121 @@ erase_ancestors(database & db, set<revis
erase_ancestors_and_failures(db, revisions, p);
}
+static void
+accumulate_strict_descendants(database & db,
+ revision_id const & start,
+ set<revision_id> & all_descendants,
+ multimap<revision_id, revision_id> const & graph,
+ rev_height const & max_height)
+{
+ typedef multimap<revision_id, revision_id>::const_iterator gi;
+
+ vector<revision_id> frontier;
+ frontier.push_back(start);
+
+ while (!frontier.empty())
+ {
+ revision_id rid = frontier.back();
+ frontier.pop_back();
+ pair<gi, gi> parents = graph.equal_range(rid);
+ for (gi i = parents.first; i != parents.second; ++i)
+ {
+ revision_id const & parent = i->second;
+ if (all_descendants.find(parent) == all_descendants.end())
+ {
+ // prune if we're above max_height
+ rev_height h;
+ db.get_rev_height(parent, h);
+ if (h <= max_height)
+ {
+ all_descendants.insert(parent);
+ frontier.push_back(parent);
+ }
+ }
+ }
+ }
+}
+
+// this call is equivalent to running:
+// erase(remove_if(candidates.begin(), candidates.end(), p));
+// erase_descendants(candidates, db);
+// however, by interleaving the two operations, it can in common cases make
+// many fewer calls to the predicate, which can be a significant speed win.
+
+void
+erase_descendants_and_failures(database & db,
+ std::set<revision_id> & candidates,
+ is_failure & p,
+ multimap<revision_id, revision_id> *graph_cache_ptr)
+{
+ // Load up the ancestry graph
+ multimap<revision_id, revision_id> graph;
+
+ if (candidates.empty())
+ return;
+
+ if (graph_cache_ptr == NULL)
+ graph_cache_ptr = &graph;
+ if (graph_cache_ptr->empty())
+ {
+ db.get_forward_ancestry(*graph_cache_ptr);
+ }
+
+ // Keep a set of all descendants that we've traversed -- to avoid
+ // combinatorial explosion.
+ set<revision_id> all_descendants;
+
+ rev_height max_height;
+ db.get_rev_height(*candidates.begin(), max_height);
+ for (std::set<revision_id>::const_iterator it = candidates.begin(); it != candidates.end(); it++)
+ {
+ rev_height h;
+ db.get_rev_height(*it, h);
+ if (h > max_height)
+ max_height = h;
+ }
+
+ vector<revision_id> todo(candidates.begin(), candidates.end());
+ std::random_shuffle(todo.begin(), todo.end());
+
+ size_t predicates = 0;
+ while (!todo.empty())
+ {
+ revision_id rid = todo.back();
+ todo.pop_back();
+ // check if this one has already been eliminated
+ if (all_descendants.find(rid) != all_descendants.end())
+ continue;
+ // and then whether it actually should stay in the running:
+ ++predicates;
+ if (p(rid))
+ {
+ candidates.erase(rid);
+ continue;
+ }
+ // okay, it is good enough that all its descendants should be
+ // eliminated
+ accumulate_strict_descendants(db, rid, all_descendants, *graph_cache_ptr, max_height);
+ }
+
+ // now go and eliminate the ancestors
+ for (set<revision_id>::const_iterator i = all_descendants.begin();
+ i != all_descendants.end(); ++i)
+ candidates.erase(*i);
+
+ L(FL("called predicate %s times") % predicates);
+}
+
+// This function looks at a set of revisions, and for every pair A, B in that
+// set such that A is an descendant of B, it erases A.
+
+void
+erase_descendants(database & db, set<revision_id> & revisions)
+{
+ no_failures p;
+ erase_descendants_and_failures(db, revisions, p);
+}
+
// This function takes a revision A and a set of revision Bs, calculates the
// ancestry of each, and returns the set of revisions that are in A's ancestry
// but not in the ancestry of any of the Bs. It tells you 'what's new' in A
============================================================
--- src/automate.cc efa4ecceab7f1e31f71778f325da312bf6aefba5
+++ src/automate.cc 919e3df52514d0877aeafc67791aae6a3faa33b4
@@ -240,6 +240,39 @@ CMD_AUTOMATE(erase_ancestors, N_("[REV1
output << *i << '\n';
}
+// Name: erase_descendants
+// Arguments:
+// 0 or more: revision ids
+// Added in: 13.1
+// Purpose: Prints all arguments, except those that are a descendant of some
+// other argument. One way to think about this is that it prints the
+// minimal elements of the given set, under the ordering imposed by the
+// "parent of" relation. Another way to think of it is if the arguments were
+// a branch, then we print the roots of that branch.
+// Output format: A list of revision ids, in hexadecimal, each followed by a
+// newline. Revision ids are printed in alphabetically sorted order.
+// Error conditions: If any of the revisions do not exist, prints nothing to
+// stdout, prints an error message to stderr, and exits with status 1.
+CMD_AUTOMATE(erase_descendants, N_("[REV1 [REV2 [REV3 [...]]]]"),
+ N_("Erases the descendants in a list of revisions"),
+ "",
+ options::opts::none)
+{
+ database db(app);
+
+ set<revision_id> revs;
+ for (args_vector::const_iterator i = args.begin(); i != args.end(); ++i)
+ {
+ revision_id rid(decode_hexenc_as<revision_id>((*i)(), origin::user));
+ E(db.revision_exists(rid), origin::user,
+ F("no revision %s found in database") % rid);
+ revs.insert(rid);
+ }
+ erase_descendants(db, revs);
+ for (set<revision_id>::const_iterator i = revs.begin(); i != revs.end(); ++i)
+ output << *i << '\n';
+}
+
// Name: toposort
// Arguments:
// 0 or more: revision ids
============================================================
--- src/cmd_conflicts.cc ad9dc74c27d4d8c50a74e5825ec9e0a12cdc1b09
+++ src/cmd_conflicts.cc 86bf4eb2e0608a8b9814cef8b416626b4aa0ca90
@@ -1,4 +1,4 @@
-// Copyright (C) 2008 - 2010 Stephen Leake <address@hidden>
+// Copyright (C) 2008 - 2010, 2012 Stephen Leake <address@hidden>
//
// This program is made available under the GNU GPL version 2.0 or
// greater. See the accompanying file COPYING for details.
@@ -291,6 +291,8 @@ set_first_conflict(database & db,
args_vector const & args,
side_t side)
{
+ E(args.size() > 0, origin::user, F("wrong number of arguments"));
+
if (side != neither)
{
for (std::vector<duplicate_name_conflict>::iterator i = conflicts.result.duplicate_name_conflicts.begin();
============================================================
--- src/gzip.hh aff9da63bb22366bccf69c2d75ee7790406d2455
+++ src/gzip.hh 17093f66e365b3730a49ef1910295f622972c36e
@@ -13,10 +13,17 @@ namespace Botan {
namespace Botan {
-#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,4)
-// Only 1.9.4 and newer export the Memory_Exception. Give this gzip
-// implementation something compatible to work with.
-typedef std::bad_alloc Memory_Exhaustion;
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,12) && \
+ BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,4)
+// Botan versions between 1.7.12 and 1.9.3 (including) keep their
+// Memory_Exception private. Give this gzip implementation something
+// compatible to work with.
+class Memory_Exhaustion : public Exception
+{
+public:
+ Memory_Exhaustion() :
+ Exception("Ran out of memory, allocation failed") {}
+};
#endif
namespace GZIP {
============================================================
--- src/rev_output.cc a2c70b893b31296917d1a2b974faa1da46c13f1e
+++ src/rev_output.cc 6b9862bfda95d0d558d8335fb2accfc0180e8fbd
@@ -98,6 +98,23 @@ revision_header(revision_id const rid, r
if (i->name == tag)
out << _("Tag: ") << i->value << '\n';
+ // Output "custom" certs if we have any, under a heading of "Other certs"
+ bool need_to_output_heading = true;
+ for (vector<cert>::const_iterator i = certs.begin(); i != certs.end(); ++i)
+ {
+ if (i->name != author && i->name != branch && i->name != changelog &&
+ i->name != comment && i->name != date && i->name != tag)
+ {
+ if (need_to_output_heading)
+ {
+ out << _("Other certs:") << '\n';
+ need_to_output_heading = false;
+ }
+
+ out << " " << i->name << ": " << i->value << '\n';
+ }
+ }
+
out << "\n";
for (vector<cert>::const_iterator i = certs.begin(); i != certs.end(); ++i)
============================================================
--- src/revision.hh 740c4dd4ee350fcf06af3ba707cef3dadecb46f8
+++ src/revision.hh 8d93883e8a6de779aa199d9b2e1aa58589f0626c
@@ -162,6 +162,15 @@ void
std::multimap<revision_id, revision_id> *inverse_graph_cache_ptr = NULL);
void
+erase_descendants(database & db, std::set<revision_id> & revisions);
+
+void
+erase_descendants_and_failures(database & db,
+ std::set<revision_id> & revisions,
+ is_failure & p,
+ std::multimap<revision_id, revision_id> *inverse_graph_cache_ptr = NULL);
+
+void
ancestry_difference(database & db, revision_id const & a,
std::set<revision_id> const & bs,
std::set<revision_id> & new_stuff);
============================================================
--- src/selectors.cc 3efba0ce3139290b4088cea0d6e82a912565471e
+++ src/selectors.cc 19a82c64f44ab5433354299f84598174cb15f510
@@ -523,6 +523,19 @@ public:
inserter(ret, ret.end()));
return ret;
}
+ else if (name == "not")
+ {
+ diagnose_wrong_arg_count("not", 1, args.size());
+ set<revision_id> lhs;
+ set<revision_id> rhs = args[0]->complete(project);
+
+ project.db.get_revision_ids(lhs);
+ set<revision_id> ret;
+ set_difference(lhs.begin(), lhs.end(),
+ rhs.begin(), rhs.end(),
+ inserter(ret, ret.end()));
+ return ret;
+ }
else if (name == "lca")
{
diagnose_wrong_arg_count("lca", 2, args.size());
@@ -546,6 +559,13 @@ public:
erase_ancestors(project.db, ret);
return ret;
}
+ else if (name == "min")
+ {
+ diagnose_wrong_arg_count("min", 1, args.size());
+ set<revision_id> ret = args[0]->complete(project);
+ erase_descendants(project.db, ret);
+ return ret;
+ }
else if (name == "ancestors")
{
diagnose_wrong_arg_count("ancestors", 1, args.size());
============================================================
--- src/unix/fs.cc d34f7ed4b5cf3655d7920568e4e1a146fa670e13
+++ src/unix/fs.cc f51cae4dbc5589b0add4f7b9b649fde3c83d1220
@@ -1,3 +1,4 @@
+// Copyright (C) 2012 Stephe Leake <address@hidden>
// Copyright (C) 2005 nathaniel smith <address@hidden>
//
// This program is made available under the GNU GPL version 2.0 or
@@ -23,11 +24,13 @@
#include <stdio.h>
#include <fcntl.h>
#include <dirent.h>
+#include <cstdlib>
#include "../sanity.hh"
#include "../platform.hh"
#include "../vector.hh"
+using std::malloc;
using std::string;
using std::vector;
@@ -288,11 +291,74 @@ rename_clobberingly(string const & from,
void
rename_clobberingly(string const & from, string const & to)
{
+ // rename doesn't work across devices, which can happen if part of the
+ // workspace is NFS mounted.
+ //
+ // We only check for that if rename fails, to avoid slowing down normal
+ // workspaces.
+
if (rename(from.c_str(), to.c_str()))
{
- const int err = errno;
- E(false, origin::system,
- F("renaming '%s' to '%s' failed: %s") % from % to % os_strerror(err));
+ // rename failed
+ int err = errno;
+
+ int from_fd = open(from.c_str(), O_RDONLY);
+ int to_fd = open(to.c_str(), O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
+ struct stat from_stat;
+ struct stat to_stat;
+ fstat(from_fd, &from_stat);
+ fstat(to_fd, &to_stat);
+
+ if (from_stat.st_dev != to_stat.st_dev)
+ {
+ // different devices; use cp, rm
+ //
+ // except there isn't a C function that does 'cp', so we read in
+ // the file and write it out again.
+
+ char * buffer = (char * )malloc(from_stat.st_size);
+ char * ptr = buffer;
+ size_t remaining = from_stat.st_size;
+
+ do
+ {
+ ssize_t read_count = read(from_fd, ptr, remaining);
+
+ err = errno;
+
+ E(read_count >= 0, origin::system,
+ F ("error reading file '%s': %s") % from % os_strerror(err));
+
+ remaining -= read_count;
+ ptr += read_count;
+ }
+ while (remaining > 0);
+ close(from_fd);
+
+ ptr = buffer;
+ remaining = from_stat.st_size;
+ do
+ {
+ ssize_t write_count = write(to_fd, ptr, remaining);
+ err = errno;
+ E(write_count >= 0, origin::system,
+ F("error writing file '%s': %s") % to % os_strerror(err));
+
+ remaining -= write_count;
+ ptr += write_count;
+ }
+ while (remaining > 0);
+ close(to_fd);
+
+ free(buffer);
+
+ remove(from.c_str());
+ }
+ else
+ {
+ E(false, origin::system,
+ F("renaming '%s' to '%s' failed: %s") % from % to % os_strerror(err));
+ }
}
}
============================================================
--- /dev/null
+++ test/func/automate_erase_descendants/__driver__.lua 45830e0a1e9f33e9031ca9953689b3648a9eb04e
@@ -0,0 +1,46 @@
+
+mtn_setup()
+
+-- Make sure we fail when given a non-existent revision
+check(mtn("automate", "erase_descendants", "c7539264e83c5d6af4c792f079b5d46e9c128665"), 1, false, false)
+
+-- A
+-- / \
+-- B C
+-- |\
+-- D E
+-- \/
+-- F
+includecommon("automate_ancestry.lua")
+
+revs = make_graph()
+
+-- Now do some checks
+
+-- Empty input gives empty output
+revmap("erase_descendants", {}, {})
+
+-- Single revision input gives the same single revision output
+for _,x in pairs(revs) do
+ revmap("erase_descendants", {x}, {x})
+end
+
+-- Whole revision graph should give roots - A in this case
+revmap("erase_descendants", {revs.a, revs.b, revs.c, revs.d, revs.e, revs.f}, {revs.a})
+
+-- Sibling only inputs should give the same output
+revmap("erase_descendants", {revs.b, revs.c}, {revs.b, revs.c})
+revmap("erase_descendants", {revs.d, revs.e}, {revs.d, revs.e})
+
+-- Siblings with descendants should give just the siblings
+revmap("erase_descendants", {revs.b, revs.c, revs.d, revs.e, revs.f}, {revs.b, revs.c})
+revmap("erase_descendants", {revs.d, revs.e, revs.f}, {revs.d, revs.e})
+
+-- Leaves only input should give the same output
+revmap("erase_descendants", {revs.b, revs.f}, {revs.b, revs.f})
+
+-- Revision with its descendants should give just the revision
+revmap("erase_descendants", {revs.c, revs.d, revs.e, revs.f}, {revs.c})
+revmap("erase_descendants", {revs.e, revs.f}, {revs.e})
+
+
============================================================
--- test/func/extended-selectors/__driver__.lua 435f44fb1b33bdfb53929fe6bd15ba7fa4c2c1d3
+++ test/func/extended-selectors/__driver__.lua e80ed8e831bbc9cc346e7722c9877d32887104ef
@@ -1,7 +1,9 @@
-- selector functions are:
-- difference(a,b)
+-- not(a)
-- lca(a,b)
-- max(a)
+-- min(a)
-- ancestors(a)
-- descendants(a)
-- parents(a)
@@ -78,6 +80,24 @@ expect("b:testbranch|b:otherbranch", roo
expect("b:testbranch/b:otherbranch", lhs)
expect("b:testbranch|b:otherbranch", root, lhs, rhs, m, other, other_2)
+expect("min(*)", root)
+expect("min(b:testbranch)", root)
+expect("min(b:testbranch/a:Anne)", rhs)
+expect("min(b:otherbranch)", lhs)
+expect("min(a:Jim)", other)
+
+-- now do same tests again with a double not - should get same results
+expect("not(not(b:testbranch))", root, lhs, rhs, m)
+expect("not(not(b:otherbranch))", lhs, other, other_2)
+expect("not(not(b:testbranch/b:otherbranch))", lhs)
+expect("not(not(b:testbranch|b:otherbranch))", root, lhs, rhs, m, other, other_2)
+
+expect("not(b:otherbranch)", root, rhs, m)
+expect("not(b:testbranch)", other, other_2)
+expect("not(h:testbranch)", root, lhs, rhs, other, other_2)
+expect("not(lca(h:testbranch;h:otherbranch))", root, rhs, m, other, other_2)
+expect("b:testbranch/not(a:Joe)", rhs, m)
+
expect("lca(h:testbranch;h:otherbranch)", lhs)
expect("max(b:testbranch/a:Joe)", lhs)
expect("max(b:otherbranch/a:Anne)")
============================================================
--- test/func/resolve_conflicts_errors/__driver__.lua 4911dc65645a5af929cd990eef09c97146e60d17
+++ test/func/resolve_conflicts_errors/__driver__.lua 9a130c83d4a7e3545f18d089542603c8d0bb72fa
@@ -51,10 +51,11 @@ check(samefilestd("conflicts-attr-store-
----------
-- use old conflicts file for new merge
--- get rid of attr conflict, add file content conflict
+-- get rid of attr conflict, add half of file content conflict
check(mtn("attr", "set", "simple_file", "foo", "1"), 0, nil, nil)
writefile("simple_file", "simple\ntwo\nthree\nfour\n")
commit("testbranch", "right 2")
+right_2 = base_revision()
-- attempt merge with old conflict file
check(mtn("merge", "--resolve-conflicts"), 1, nil, true)
@@ -62,19 +63,33 @@ check(samefilestd("merge-old-conflicts-f
canonicalize("stdout")
check(samefilestd("merge-old-conflicts-file", "stdout"))
+----------
+-- 'resolve_first' without resolution (issue 202)
+-- other half of file content conflict
+revert_to(left_1)
+writefile("simple_file", "simple\none\nthree\nfour\n")
+commit("testbranch", "left 2")
+left_2 = base_revision()
+
+check(mtn("conflicts", "store", left_2, right_2), 0, nil, true)
+
+check(mtn("conflicts", "resolve_first"), 1, nil, true)
+check(qgrep("wrong number of arguments", "stderr"))
+
----------
-- specify inconsistent left and right resolutions for duplicate_name
+addfile("checkout.sh", "checkout.sh left 1")
+commit("testbranch", "left 3")
+
+revert_to(right_2)
+
addfile("checkout.sh", "checkout.sh right 1")
commit("testbranch", "right 3")
-revert_to(left_1)
-addfile("checkout.sh", "checkout.sh left 1")
-commit("testbranch", "left 2")
-
check(mtn("conflicts", "store"), 0, nil, true)
-check(samelines("stderr", {"mtn: 1 conflict with supported resolutions.",
+check(samelines("stderr", {"mtn: 2 conflicts with supported resolutions.",
"mtn: stored in '_MTN/conflicts'"}))
-- invalid number of params
============================================================
--- test/unit/tests/xdelta.cc 4aff975cfd9a9cf18c26f70118e2895880ed6100
+++ test/unit/tests/xdelta.cc ed5f467ebc4755f7521e74a40833181974b43a8f
@@ -8,11 +8,16 @@
// PURPOSE.
#include "../../../src/base.hh"
+
+// <boost/math/special_functions/detail/lgamma_small.hpp> uses L().
+// This conflicts with a #define in "../../../src/sanity.hh".
+// Workaround: Include BOOST header before "../../../src/xdelta.hh".
+#include <boost/random.hpp>
+
#include "../unit_tests.hh"
#include "../../../src/xdelta.hh"
#include "../../../src/adler32.hh"
-#include <boost/random.hpp>
boost::mt19937 xdelta_prng;
boost::uniform_smallint<char> xdelta_chargen('a', 'z');
============================================================
--- util/audit-includes d5757fcf83ab116fba16c53221da0f832307a113
+++ util/audit-includes 1c6fc8be30ebfafc67ca03980e7860db35e5d2e9
@@ -11,6 +11,7 @@ egrep -H "$(printf '^[ \t]*#[ \t]*includ
# Check all C++ source files to make sure they obey the header file rules.
egrep -H "$(printf '^[ \t]*#[ \t]*include\\>')" "$@" |
+ sed -e "$(printf 's/\r$//')" |
sed -e "$(printf 's/:[ \t]*#[ \t]*include[ \t]*[<\"]/ /')" -e 's/[>"]$//' |
{
current=""
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Monotone-commits-diffs] net.venge.monotone: 53e02eaa302bc05e96a18e3882b0e9843b53cf9a,
code <=