[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Monotone-commits-diffs] net.venge.monotone: 7338faf653922c1c9ce0eb944f8
From: |
code |
Subject: |
[Monotone-commits-diffs] net.venge.monotone: 7338faf653922c1c9ce0eb944f8c7c00f5e54bfd |
Date: |
Thu, 26 Apr 2012 22:38:22 +0200 (CEST) |
revision: 7338faf653922c1c9ce0eb944f8c7c00f5e54bfd
date: 2012-04-26T19:14:42
author: address@hidden
branch: net.venge.monotone
changelog:
explicit merge of '7f35bea8a325edba1786625efa7f237311e1ec5d'
and 'd238d73a0c7bce35c65d1dd4612d8eae104612e9'
manifest:
format_version "1"
new_manifest [88a367357bf6d15b7e7ab5ee33b18ab1622a548b]
old_revision [7f35bea8a325edba1786625efa7f237311e1ec5d]
patch "NEWS"
from [ed0d68331a7ba1efb4877f7a65628a1c9f7d791c]
to [5514332f7c16430d0c46d3fbac01b0c8a96bc412]
patch "doc/monotone.texi"
from [5d233f3ae943361cf83d586209e6ff04c083c9de]
to [e0b88a30f08867f9e0f593e5004789ca17753a94]
patch "extra/mtn-hooks/monotone-buildbot.lua"
from [41d82aee6613c5d1775fd8ebf97ffd0c29ea807c]
to [d1439935004ff6fb523dfa6b2c5fd5c8641339ab]
patch "innosetup/README.txt"
from [a42923bdd0fcc96ba589bf5e3b4e229fc98ae598]
to [2d4c16c9b1fc3da9d98e3d4806911490f876ef62]
patch "po/de.po"
from [bd824479fb3a72bb048845d858e3a76b96f32c9b]
to [4b2a04bf9575d35175f08c9ed53cca82d5050e4f]
patch "po/sv.po"
from [f84b0093c5af0e103e0857bcf809fe78487e803b]
to [fb60bb1b5c18bbb5c2025f33bed340b7647b7e3c]
patch "src/database.cc"
from [4c259f963c440fc95564dfec99b2f832f0bad643]
to [87efeeff2d3263ba98af684a4022f1897434ed2d]
patch "src/gzip.cc"
from [e7c19bee910e3d421fd073933810ec52092b1d9b]
to [9da41f6820cdf39707b22c716e3682e0fa0fd745]
patch "src/gzip.hh"
from [649dfc0b250954f39c0f73870f8bec3f32f7fa43]
to [17093f66e365b3730a49ef1910295f622972c36e]
patch "src/key_packet.cc"
from [d1306df89dd684badac02c03744cd446381c07d3]
to [c97262d161b23c9640972188979669b3e95afe7b]
patch "src/key_store.cc"
from [64c4c4bed1fadc26b51207b9f61343f9dd7d3c6e]
to [b7859345f7c665914d16357409bdff24a48b7996]
patch "src/monotone.cc"
from [a25ecdd170a601db798b63a60add7681609a34c4]
to [764bc9ca406b41d21efd552a0d810bc2849e0588]
patch "src/netxx/serverbase.cxx"
from [7a9b465ce4b0b02cb8ff126acf86d3896b4eb456]
to [156f2090341d2a36bdb718e7c69df58f9251983e]
patch "src/packet.cc"
from [f61360ed2524fdf53411bd24d022a2a3c9e6e9c7]
to [571ff6eae1d269a146da74f2730b70376957d3bb]
patch "src/packet.hh"
from [0a224e6e92f244e2c3e9a5cdb935eb8613d7e85b]
to [9c43d30145f0292d6ceda5e717e366fdead5a4d6]
patch "src/rev_output.cc"
from [a2c70b893b31296917d1a2b974faa1da46c13f1e]
to [6b9862bfda95d0d558d8335fb2accfc0180e8fbd]
patch "src/selectors.cc"
from [3efba0ce3139290b4088cea0d6e82a912565471e]
to [588c6b5fd3ded29f5f778a78e707352564acbc02]
patch "src/sha1.cc"
from [5e1aa972d7c7d66e06320b039989652b830dcd75]
to [42e48b22fd88b25e0d38d4f91e1f13f8a83c7120]
patch "src/ssh_agent.cc"
from [6d188e7012a0b82f782563b09bbd7adf3f70cf75]
to [4a0dcab873559e934e41c5f220b5434d35600d9b]
patch "src/transforms.cc"
from [cdfb6854ef4992faba21074145f3c8269b845b11]
to [b99278ffe95c0081bf4986bc74d3699c37a52948]
patch "test/func/attr_mtn_execute/__driver__.lua"
from [ac0c1f7ecf54690607e55d5aa43544c023e3700c]
to [b5bfcf8f4fdb98c59f95da35b93e7d97d08b99e7]
patch "test/func/branch_leaves_sync_bug/__driver__.lua"
from [6b227867aeb3692dba4e68efdfe5c59ff5c15919]
to [943c3f2d7c3294e5da221d44911c08511058acb2]
patch "test/func/clone_aborts_on_branch_pattern_in_uri/__driver__.lua"
from [bf16d8dcec86e4ae012d1c6078082f9d13a9fd80]
to [e75946886b2b0b4ee301016860238e6315c22a59]
patch "test/func/clone_branch_no_dir/__driver__.lua"
from [b490cd593cefd9aa0b4dec9ab177eb72c3fb8058]
to [1ab33d8f6d1bdc38d3804d8fcd41b6c2f65a6e61]
patch "test/func/clone_creates__MTN_log/__driver__.lua"
from [5a8fe703d56ea39db22dcfbe6183294c1eb3f01b]
to [b412d2f37df048846fc1f76ab62572d4c39b0796]
patch "test/func/clone_creates_right__MTN_options/__driver__.lua"
from [12e86831366aa0f5573d1ec511872b6f9034aeb2]
to [9891e77e30b8830f8040bcb817a0db26a433c9dd]
patch "test/func/clone_validates_target_directory/__driver__.lua"
from [1286723ee00ea9ea6831e12575ba7ac32a066645]
to [0c6f70282431ed62359ad0b4a827575406889f4b]
patch "test/func/clone_warning_with_multiple_heads/__driver__.lua"
from [4333c6de0518517ff9bc04b4baef0d2d5ff08914]
to [18e8670ea08dcb9602425ebdb97a786b20945ff6]
patch "test/func/clone_weird_branch_names/__driver__.lua"
from [205c20a2809513b93ee9ab6c1affb24070f284a2]
to [0afc1816afa8d3e4b2dfb9fd016500f224432f0a]
patch "test/func/extended-selectors/__driver__.lua"
from [435f44fb1b33bdfb53929fe6bd15ba7fa4c2c1d3]
to [cab379ef6f3439ab7f5a4424202ebf9097171c4c]
patch "test/func/imp_test_filesync_confdir/__driver__.lua"
from [5262dae96bcf38a2a27cea3d17523e08ad3e03aa]
to [19822aa249d9300dc8695f41adbd12cbce5a9234]
patch "test/func/netsync_over_pipes/__driver__.lua"
from [e4ee774912c36ca34a2bfe897daecac570f626a7]
to [e769e909c59f15351c957a47d98bd7be5868e9f7]
patch "test/func/serve-automate/__driver__.lua"
from [ae4b03baf16d8401f31a32c8377021f879788d01]
to [1343490c3b79e3d936a5b72ba7561055239235f8]
patch "test/func/serve-automate-single-run/__driver__.lua"
from [01013ad10150f9056bee7609338cb09b47d8c677]
to [7a75e9ff02a15ebc62a44c1c596ed39e3fdae0a0]
patch "test/func/syntax_errors_in_.mtn-ignore/mtn-ignore"
from [c46ecd3b4771b7b0af41b6caff2074df0427fbfa]
to [55bfcaa55ef14ee091aa6279251af51121f910b9]
patch "test/func/util_mtnopt/__driver__.lua"
from [84307ea94ec302c6d9bbe163955e8f5e86973ce0]
to [6981b9fe1aa7800aaaf76bd18f0ddbb73b0e6046]
patch "test/src/testlib.lua"
from [6d2a308918594226fa6549ed0268ccaea3921038]
to [f236da6fce62c15acac578b42756b552e0453d99]
old_revision [d238d73a0c7bce35c65d1dd4612d8eae104612e9]
patch "src/unix/fs.cc"
from [030ebb81f78bc138de3cf89e3ace8e9dcde2309c]
to [d34f7ed4b5cf3655d7920568e4e1a146fa670e13]
============================================================
--- NEWS ed0d68331a7ba1efb4877f7a65628a1c9f7d791c
+++ NEWS 5514332f7c16430d0c46d3fbac01b0c8a96bc412
@@ -10,17 +10,37 @@ XXX XXX XX XX:XX:XX UTC 201X
and returns the attributes for a specific file from the
revision's manifest
+ - 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
+ the testing releases in 1.9.y).
+
+ - Struct file_handle got renamed to avoid clash with newer glibc's
+ fcntl.h.
+
+ - Monotone now compiles just fine with gcc's option
+ "-Werror=format-security."
+
+ - Fixed recursive file removal on Solaris.
+
Internal
- - The performance and memory usage of regular expressions has
- been improved throughout. This affects any use of the
- ".mtn-ignore" file such as "mtn ls unknown" and "mtn add",
- and any calls to "regex.search" in Lua hooks.
+ - The performance and memory usage of regular expressions has
+ been improved throughout. This affects any use of the
+ ".mtn-ignore" file such as "mtn ls unknown" and "mtn add",
+ and any calls to "regex.search" in Lua hooks.
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 5d233f3ae943361cf83d586209e6ff04c083c9de
+++ doc/monotone.texi e0b88a30f08867f9e0f593e5004789ca17753a94
@@ -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))},
@@ -4799,7 +4807,9 @@ @subsection Global Options
@item --xargs <arg>
@itemx -@@ <arg>
-Insert command line arguments taken from the given file.
+Insert command line arguments taken from the given file. A '-'
+can be used to read the arguments from standard input.
+e.g. @code{--xargs=-}
@end ftable
@node Common Options, , Global Options, Global and Common Options
============================================================
--- extra/mtn-hooks/monotone-buildbot.lua 41d82aee6613c5d1775fd8ebf97ffd0c29ea807c
+++ extra/mtn-hooks/monotone-buildbot.lua d1439935004ff6fb523dfa6b2c5fd5c8641339ab
@@ -10,6 +10,8 @@
-- - initial version
-- 0.2 (2011-03-11) Richard Levitte <address@hidden>
-- - updated to have things more protected
+-- 0.3 (2012-04-10) Markus Wanner <address@hidden>
+-- - adapt to buildbot 0.8.3 and newer
--
-- License: GPL
--
@@ -58,17 +60,21 @@ do
end
end
+ -- Note: for buildbot versions before 0.8.3, you need to give a
+ -- 'username' argument instead of 'auth' and 'who'.
print("monotone-buildbot-notification: Running script:",
buildbot_bin, "sendchange",
"--master", buildbot_master,
- "--username", "'"..author.."'",
+ "--auth", "change:changepw",
+ "--who", "'"..author.."'",
"--revision", rev_id,
"--comments", "'"..changelog.."'",
"--branch", branch,
touched_files)
execute(buildbot_bin, "sendchange",
"--master", buildbot_master,
- "--username", author,
+ "--auth", "change:changepw",
+ "--who", "'"..author.."'",
"--revision", rev_id,
"--comments", changelog,
"--branch", branch,
============================================================
--- innosetup/README.txt a42923bdd0fcc96ba589bf5e3b4e229fc98ae598
+++ innosetup/README.txt 2d4c16c9b1fc3da9d98e3d4806911490f876ef62
@@ -15,7 +15,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> monotone-<version>
+mtn -d /path/to/monotone.db checkout -r t:monotone-<version> --branch net.venge.monotone monotone-<version>
Build the release. See the last instruction in ../INSTALL_windows_native.txt
Then build the installer:
============================================================
--- 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/database.cc 4c259f963c440fc95564dfec99b2f832f0bad643
+++ src/database.cc 87efeeff2d3263ba98af684a4022f1897434ed2d
@@ -3425,9 +3425,8 @@ database::encrypt_rsa(key_id const & pub
rsa_pub_key pub;
get_key(pub_id, pub);
- SecureVector<Botan::byte> pub_block;
- pub_block.set(reinterpret_cast<Botan::byte const *>(pub().data()),
- pub().size());
+ SecureVector<Botan::byte> pub_block
+ (reinterpret_cast<Botan::byte const *>(pub().data()), pub().size());
shared_ptr<X509_PublicKey> x509_key(Botan::X509::load_key(pub_block));
shared_ptr<RSA_PublicKey> pub_key
@@ -3471,14 +3470,13 @@ database::check_signature(key_id const &
else
{
rsa_pub_key pub;
- SecureVector<Botan::byte> pub_block;
if (!public_key_exists(id))
return cert_unknown;
get_key(id, pub);
- pub_block.set(reinterpret_cast<Botan::byte const *>(pub().data()),
- pub().size());
+ SecureVector<Botan::byte> pub_block
+ (reinterpret_cast<Botan::byte const *>(pub().data()), pub().size());
L(FL("building verifier for %d-byte pub key") % pub_block.size());
shared_ptr<X509_PublicKey> x509_key(Botan::X509::load_key(pub_block));
============================================================
--- src/gzip.cc e7c19bee910e3d421fd073933810ec52092b1d9b
+++ src/gzip.cc 9da41f6820cdf39707b22c716e3682e0fa0fd745
@@ -110,7 +110,7 @@ Gzip_Compression::Gzip_Compression(u32bi
if(deflateInit2(&(zlib->stream), level, Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY) != Z_OK)
{
delete zlib; zlib = 0;
- throw Exception("Gzip_Compression: Memory allocation error");
+ throw Memory_Exhaustion();
}
}
@@ -137,7 +137,7 @@ void Gzip_Compression::start_msg()
/*************************************************
* Compress Input with Gzip *
*************************************************/
-void Gzip_Compression::write(const byte input[], u32bit length)
+void Gzip_Compression::write(const byte input[], filter_length_t length)
{
count += length;
@@ -152,7 +152,7 @@ void Gzip_Compression::write(const byte
zlib->stream.avail_out = buffer.size();
int rc = deflate(&(zlib->stream), Z_NO_FLUSH);
if (rc != Z_OK && rc != Z_STREAM_END)
- throw Exception("Internal error in Gzip_Compression deflate.");
+ throw Invalid_State("Internal error in Gzip_Compression deflate.");
send(buffer.begin(), buffer.size() - zlib->stream.avail_out);
}
}
@@ -172,7 +172,7 @@ void Gzip_Compression::end_msg()
zlib->stream.avail_out = buffer.size();
rc = deflate(&(zlib->stream), Z_FINISH);
if (rc != Z_OK && rc != Z_STREAM_END)
- throw Exception("Internal error in Gzip_Compression finishing deflate.");
+ throw Invalid_State("Internal error in Gzip_Compression finishing deflate.");
send(buffer.begin(), buffer.size() - zlib->stream.avail_out);
}
@@ -228,7 +228,7 @@ Gzip_Decompression::Gzip_Decompression()
no_writes(true), pipe(new Hash_Filter("CRC32")), footer(0)
{
if (DEFAULT_BUFFERSIZE < sizeof(GZIP::GZIP_HEADER))
- throw Exception("DEFAULT_BUFFERSIZE is too small");
+ throw Decoding_Error("DEFAULT_BUFFERSIZE is too small");
zlib = new Zlib_Stream;
@@ -237,7 +237,7 @@ Gzip_Decompression::Gzip_Decompression()
if(inflateInit2(&(zlib->stream), -15) != Z_OK)
{
delete zlib; zlib = 0;
- throw Exception("Gzip_Decompression: Memory allocation error");
+ throw Memory_Exhaustion();
}
}
@@ -256,7 +256,7 @@ void Gzip_Decompression::start_msg()
void Gzip_Decompression::start_msg()
{
if (!no_writes)
- throw Exception("Gzip_Decompression: start_msg after already writing");
+ throw Decoding_Error("Gzip_Decompression: start_msg after already writing");
pipe.start_msg();
datacount = 0;
@@ -267,7 +267,7 @@ void Gzip_Decompression::start_msg()
/*************************************************
* Decompress Input with Gzip *
*************************************************/
-void Gzip_Decompression::write(const byte input[], u32bit length)
+void Gzip_Decompression::write(const byte input[], filter_length_t length)
{
if(length) no_writes = false;
@@ -277,15 +277,16 @@ void Gzip_Decompression::write(const byt
u32bit eat_len = eat_footer(input, length);
input += eat_len;
length -= eat_len;
- if (length == 0)
- return;
}
+ if (length == 0)
+ return;
+
// Check the gzip header
if (pos < sizeof(GZIP::GZIP_HEADER))
{
- u32bit len = std::min((u32bit)sizeof(GZIP::GZIP_HEADER)-pos, length);
- u32bit cmplen = len;
+ filter_length_t len = std::min((filter_length_t)sizeof(GZIP::GZIP_HEADER)-pos, length);
+ filter_length_t cmplen = len;
// The last byte is the OS flag - we don't care about that
if (pos + len - 1 >= GZIP::HEADER_POS_OS)
cmplen--;
@@ -317,8 +318,8 @@ void Gzip_Decompression::write(const byt
if(rc == Z_NEED_DICT)
throw Decoding_Error("Gzip_Decompression: Need preset dictionary");
if(rc == Z_MEM_ERROR)
- throw Exception("Gzip_Decompression: Memory allocation error");
- throw Exception("Gzip_Decompression: Unknown decompress error");
+ throw Memory_Exhaustion();
+ throw Decoding_Error("Gzip_Decompression: Unknown decompress error");
}
send(buffer.begin(), buffer.size() - zlib->stream.avail_out);
pipe.write(buffer.begin(), buffer.size() - zlib->stream.avail_out);
@@ -346,8 +347,14 @@ u32bit Gzip_Decompression::eat_footer(co
if (footer.size() >= GZIP::FOOTER_LENGTH)
throw Decoding_Error("Gzip_Decompression: Data integrity error in footer");
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+ size_t eat_len = std::min(GZIP::FOOTER_LENGTH-footer.size(),
+ static_cast<size_t>(length));
+ footer += std::make_pair(input, eat_len);
+#else
u32bit eat_len = std::min(GZIP::FOOTER_LENGTH-footer.size(), length);
footer.append(input, eat_len);
+#endif
if (footer.size() == GZIP::FOOTER_LENGTH)
{
@@ -364,7 +371,7 @@ void Gzip_Decompression::check_footer()
void Gzip_Decompression::check_footer()
{
if (footer.size() != GZIP::FOOTER_LENGTH)
- throw Exception("Gzip_Decompression: Error finalizing decompression");
+ throw Decoding_Error("Gzip_Decompression: Error finalizing decompression");
pipe.end_msg();
@@ -377,7 +384,12 @@ void Gzip_Decompression::check_footer()
for (int i = 0; i < 4; i++)
buf[3-i] = tmpbuf[i];
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+ tmpbuf.resize(4);
+ tmpbuf.copy(footer.begin(), 4);
+#else
tmpbuf.set(footer.begin(), 4);
+#endif
if (buf != tmpbuf)
throw Decoding_Error("Gzip_Decompression: Data integrity error - CRC32 error");
@@ -400,7 +412,7 @@ void Gzip_Decompression::end_msg()
// read, clear() will reset no_writes
if(no_writes) return;
- throw Exception("Gzip_Decompression: didn't find footer");
+ throw Decoding_Error("Gzip_Decompression: didn't find footer");
}
@@ -412,7 +424,11 @@ void Gzip_Decompression::clear()
no_writes = true;
inflateReset(&(zlib->stream));
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+ footer.clear();
+#else
footer.destroy();
+#endif
pos = 0;
datacount = 0;
}
============================================================
--- src/gzip.hh 649dfc0b250954f39c0f73870f8bec3f32f7fa43
+++ src/gzip.hh 17093f66e365b3730a49ef1910295f622972c36e
@@ -7,11 +7,25 @@
#ifndef BOTAN_EXT_GZIP_H__
#define BOTAN_EXT_GZIP_H__
+#include <botan/version.h>
#include <botan/filter.h>
#include <botan/pipe.h>
namespace Botan {
+#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 {
/* A basic header - we only need to set the IDs and compression method */
@@ -30,13 +44,19 @@ namespace GZIP {
}
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+typedef size_t filter_length_t;
+#else
+typedef u32bit filter_length_t;
+#endif
+
/*************************************************
* Gzip Compression Filter *
*************************************************/
class Gzip_Compression : public Filter
{
public:
- void write(const byte input[], u32bit length);
+ void write(const byte input[], filter_length_t length);
void start_msg();
void end_msg();
std::string name() const { return "Gzip_Compression"; }
@@ -60,7 +80,7 @@ class Gzip_Decompression : public Filter
class Gzip_Decompression : public Filter
{
public:
- void write(const byte input[], u32bit length);
+ void write(const byte input[], filter_length_t length);
void start_msg();
void end_msg();
std::string name() const { return "Gzip_Decompression"; }
============================================================
--- src/key_packet.cc d1306df89dd684badac02c03744cd446381c07d3
+++ src/key_packet.cc c97262d161b23c9640972188979669b3e95afe7b
@@ -106,8 +106,8 @@ namespace
void validate_public_key_data(string const & name, string const & keydata) const
{
string decoded = decode_base64_as<string>(keydata, origin::user);
- Botan::SecureVector<Botan::byte> key_block;
- key_block.set(reinterpret_cast<Botan::byte const *>(decoded.c_str()), decoded.size());
+ Botan::SecureVector<Botan::byte> key_block
+ (reinterpret_cast<Botan::byte const *>(decoded.c_str()), decoded.size());
try
{
Botan::X509::load_key(key_block);
============================================================
--- src/key_store.cc 64c4c4bed1fadc26b51207b9f61343f9dd7d3c6e
+++ src/key_store.cc b7859345f7c665914d16357409bdff24a48b7996
@@ -572,13 +572,21 @@ key_store_state::decrypt_private_key(key
try // with empty passphrase
{
Botan::DataSource_Memory ds(kp.priv());
-#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7)
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+ pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), Dummy_UI()));
+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7)
pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), ""));
#else
pkcs8_key.reset(Botan::PKCS8::load_key(ds, ""));
#endif
}
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+ catch (Passphrase_Required & e)
+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4)
+ catch (Botan::Invalid_Argument & e)
+#else
catch (Botan::Exception & e)
+#endif
{
L(FL("failed to load key with no passphrase: %s") % e.what());
@@ -605,13 +613,18 @@ key_store_state::decrypt_private_key(key
{
Botan::DataSource_Memory ds(kp.priv());
#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7)
- pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(), phrase()));
+ pkcs8_key.reset(Botan::PKCS8::load_key(ds, lazy_rng::get(),
+ phrase()));
#else
pkcs8_key.reset(Botan::PKCS8::load_key(ds, phrase()));
#endif
break;
}
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4)
+ catch (Botan::Invalid_Argument)
+#else
catch (Botan::Exception & e)
+#endif
{
cycles++;
L(FL("decrypt_private_key: failure %d to load encrypted key: %s")
@@ -822,10 +835,14 @@ key_store::decrypt_rsa(key_id const & id
plaintext = string(reinterpret_cast<char const*>(plain.begin()),
plain.size());
}
- catch (Botan::Exception & ex)
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4)
+ catch (std::exception & e)
+#else
+ catch (Botan::Exception & e)
+#endif
{
E(false, ciphertext.made_from,
- F("Botan error decrypting data: '%s'") % ex.what());
+ F("Botan error decrypting data: '%s'") % e.what());
}
}
@@ -856,9 +873,9 @@ key_store::make_signature(database & db,
{
if (agent.connected()) {
//grab the monotone public key as an RSA_PublicKey
- SecureVector<Botan::byte> pub_block;
- pub_block.set(reinterpret_cast<Botan::byte const *>(key.pub().data()),
- key.pub().size());
+ SecureVector<Botan::byte> pub_block
+ (reinterpret_cast<Botan::byte const *>(key.pub().data()),
+ key.pub().size());
L(FL("make_signature: building %d-byte pub key") % pub_block.size());
shared_ptr<X509_PublicKey> x509_key =
shared_ptr<X509_PublicKey>(Botan::X509::load_key(pub_block));
@@ -1031,8 +1048,14 @@ key_store_state::migrate_old_key_pair
for (;;)
try
{
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+ arc4_key.resize(phrase().size());
+ arc4_key.copy(reinterpret_cast<Botan::byte const *>(phrase().data()),
+ phrase().size());
+#else
arc4_key.set(reinterpret_cast<Botan::byte const *>(phrase().data()),
phrase().size());
+#endif
Pipe arc4_decryptor(get_cipher("ARC4", arc4_key, Botan::DECRYPTION));
@@ -1051,7 +1074,11 @@ key_store_state::migrate_old_key_pair
#endif
break;
}
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,4)
+ catch (Botan::Invalid_Argument & e)
+#else
catch (Botan::Exception & e)
+#endif
{
L(FL("migrate_old_key_pair: failure %d to load old private key: %s")
% cycles % e.what());
============================================================
--- src/monotone.cc a25ecdd170a601db798b63a60add7681609a34c4
+++ src/monotone.cc 764bc9ca406b41d21efd552a0d810bc2849e0588
@@ -156,27 +156,53 @@ cpp_main(int argc, char ** argv)
E(linked_botan_version != BOTAN_VERSION_CODE_FOR(1,7,14), origin::system,
F("monotone does not support Botan 1.7.14"));
-#if BOTAN_VERSION_CODE <= BOTAN_VERSION_CODE_FOR(1,7,6)
+ // In Botan 1.9.9, the DataSink_Stream cannot be instantiated per
+ // se. As 1.10.1 is already out, let's simply disable support for
+ // that specific (testing) version of botan.
+ E(linked_botan_version != BOTAN_VERSION_CODE_FOR(1,9,9), origin::system,
+ F("monotone does not support Botan 1.9.9"));
+
+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,7,7)
+ // motonote binary compiled against botan younger than 1.7.7
E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,6,3), origin::system,
F("this monotone binary requires Botan 1.6.3 or newer"));
- E(linked_botan_version <= BOTAN_VERSION_CODE_FOR(1,7,6), origin::system,
- F("this monotone binary does not work with Botan newer than 1.7.6"));
-#elif BOTAN_VERSION_CODE <= BOTAN_VERSION_CODE_FOR(1,7,22)
- E(linked_botan_version > BOTAN_VERSION_CODE_FOR(1,7,6), origin::system,
+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,7,7), origin::system,
+ F("this monotone binary does not work with Botan 1.7.7 or newer"));
+
+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,7,22)
+ // motonote binary compiled against botan 1.7.7 - 1.7.21
+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,7,7), origin::system,
F("this monotone binary requires Botan 1.7.7 or newer"));
- // While compiling against 1.7.22 or newer is recommended, because
- // it enables new features of Botan, the monotone binary compiled
- // against Botan 1.7.21 and before should still work with newer Botan
- // versions, including all of the stable branch 1.8.x.
- E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,0), origin::system,
- F("this monotone binary does not work with Botan 1.9.x"));
-#else
- E(linked_botan_version > BOTAN_VERSION_CODE_FOR(1,7,22), origin::system,
+ // While compiling against 1.7.22 or newer is recommended, because it
+ // enables new features of Botan, the monotone binary compiled against
+ // Botan 1.7.21 and before should still work with newer Botan version,
+ // including all of the stable branch 1.8.x, up to and including
+ // 1.9.3.
+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,4), origin::system,
+ F("this monotone binary does not work with Botan 1.9.4 or newer"));
+
+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,4)
+ // motonote binary compiled against botan 1.7.22 - 1.9.3
+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,7,22), origin::system,
F("this monotone binary requires Botan 1.7.22 or newer"));
- E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,0), origin::system,
- F("this monotone binary does not work with Botan 1.9.x"));
+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,4), origin::system,
+ F("this monotone binary does not work with Botan 1.9.4 or newer"));
+
+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,11)
+ // motonote binary compiled against botan 1.9.4 - 1.9.10
+#pragma message ( "The resulting monotone binary won't be able to run with any stable release of botan." )
+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,9,4), origin::system,
+ F("this monotone binary requires Botan 1.9.4 or newer"));
+ E(linked_botan_version < BOTAN_VERSION_CODE_FOR(1,9,11), origin::system,
+ F("this monotone binary does not work with Botan 1.9.11 or newer"));
+
+#else
+ // motonote binary compiled against botan 1.9.11 and newer
+ E(linked_botan_version >= BOTAN_VERSION_CODE_FOR(1,9,11), origin::system,
+ F("this monotone binary requires Botan 1.9.11 or newer"));
#endif
+
app_state app;
try
{
============================================================
--- src/netxx/serverbase.cxx 7a9b465ce4b0b02cb8ff126acf86d3896b4eb456
+++ src/netxx/serverbase.cxx 156f2090341d2a36bdb718e7c69df58f9251983e
@@ -44,6 +44,8 @@
#include "probeinfo.h"
#include "socket.h"
+#include <cerrno>
+
// standard includes
#include <map>
#include <vector>
@@ -167,13 +169,26 @@ void Netxx::ServerBase::bind_to(const Ad
if (saun->sun_path[0] == '/') {
files_.push_back(saun->sun_path);
} else {
- char buffer[MAXPATHLEN];
+ // BIG FAT WARNING: THIS CODE HAS NOT BEEN TESTED!
+ // The original code is non-dynamic, depending on
+ // the value of MAXPATHLEN. Since that macro isn't
+ // guaranteed to exist, a more dynamic use if getcwd()
+ // was written. However, since monotone doesn't use
+ // AF_LOCAL sockets, this code will not be reached.
+ int e = ERANGE;
+ int n = 4096;
- if (getcwd(buffer, sizeof(buffer))) {
- std::string fullpath = buffer; fullpath += '/'; fullpath += saun->sun_path;
- files_.push_back(fullpath);
- } else {
- files_.push_back(saun->sun_path);
+ while (e == ERANGE) {
+ char buffer[n];
+ e = 0;
+ n += 4096;
+
+ if (getcwd(buffer, n)) {
+ std::string fullpath = buffer; fullpath += '/'; fullpath += saun->sun_path;
+ files_.push_back(fullpath);
+ } else if ((e = errno) != ERANGE) {
+ files_.push_back(saun->sun_path);
+ }
}
}
}
============================================================
--- src/packet.cc f61360ed2524fdf53411bd24d022a2a3c9e6e9c7
+++ src/packet.cc 571ff6eae1d269a146da74f2730b70376957d3bb
@@ -156,8 +156,8 @@ namespace
void validate_public_key_data(string const & name, string const & keydata) const
{
string decoded = decode_base64_as<string>(keydata, origin::user);
- Botan::SecureVector<Botan::byte> key_block;
- key_block.set(reinterpret_cast<Botan::byte const *>(decoded.c_str()), decoded.size());
+ Botan::SecureVector<Botan::byte> key_block
+ (reinterpret_cast<Botan::byte const *>(decoded.c_str()), decoded.size());
try
{
Botan::X509::load_key(key_block);
@@ -175,7 +175,9 @@ namespace
Botan::DataSource_Memory ds(decoded);
try
{
-#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7)
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+ Botan::PKCS8::load_key(ds, lazy_rng::get(), Dummy_UI());
+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,7,7)
Botan::PKCS8::load_key(ds, lazy_rng::get(), string());
#else
Botan::PKCS8::load_key(ds, string());
@@ -189,7 +191,11 @@ namespace
}
// since we do not want to prompt for a password to decode it finally,
// we ignore all other exceptions
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+ catch (Passphrase_Required) {}
+#else
catch (Botan::Invalid_Argument) {}
+#endif
}
void validate_certname(string const & cn) const
{
@@ -460,8 +466,16 @@ read_packets(istream & in, packet_consum
return count;
}
+// Dummy User_Interface implementation for Botan
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+std::string
+Dummy_UI::get_passphrase(const std::string &, const std::string &,
+ Botan::User_Interface::UI_Result&) const
+{
+ throw Passphrase_Required("Passphrase required");
+}
+#endif
-
// Local Variables:
// mode: C++
// fill-column: 76
============================================================
--- src/packet.hh 0a224e6e92f244e2c3e9a5cdb935eb8613d7e85b
+++ src/packet.hh 9c43d30145f0292d6ceda5e717e366fdead5a4d6
@@ -10,6 +10,10 @@
#ifndef __PACKET_HH__
#define __PACKET_HH__
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+#include <botan/ui.h>
+#endif
+
#include "vocab.hh"
struct cert;
@@ -84,8 +88,23 @@ size_t read_packets(std::istream & in, p
size_t read_packets(std::istream & in, packet_consumer & cons);
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,9,11)
+// A helper class implementing Botan::User_Interface - which doesn't really
+// interface with the user, but provides the necessary plumbing for Botan.
+//
+// See Botan commit 2d09d7d0cd4bd0e7155d001dd65a4f29103b158c
+typedef std::runtime_error Passphrase_Required;
+
+class Dummy_UI : public Botan::User_Interface
+{
+public:
+ virtual std::string get_passphrase(const std::string &, const std::string &,
+ Botan::User_Interface::UI_Result &) const;
+};
#endif
+#endif
+
// Local Variables:
// mode: C++
// fill-column: 76
============================================================
--- 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/selectors.cc 3efba0ce3139290b4088cea0d6e82a912565471e
+++ src/selectors.cc 588c6b5fd3ded29f5f778a78e707352564acbc02
@@ -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());
============================================================
--- src/sha1.cc 5e1aa972d7c7d66e06320b039989652b830dcd75
+++ src/sha1.cc 42e48b22fd88b25e0d38d4f91e1f13f8a83c7120
@@ -50,9 +50,12 @@ CMD_HIDDEN(benchmark_sha1, "benchmark_sh
Botan::Default_Benchmark_Timer timer;
std::map<std::string, double> results =
Botan::algorithm_benchmark("SHA-1", milliseconds, timer, rng, af);
+#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,11)
+ std::map<std::string, double> results =
+ Botan::algorithm_benchmark("SHA-1", milliseconds, rng, af);
#else
std::map<std::string, double> results =
- Botan::algorithm_benchmark("SHA-1", milliseconds, rng, af);
+ Botan::algorithm_benchmark("SHA-1", af, rng, milliseconds, 16);
#endif
for(std::map<std::string, double>::const_iterator i = results.begin();
============================================================
--- src/ssh_agent.cc 6d188e7012a0b82f782563b09bbd7adf3f70cf75
+++ src/ssh_agent.cc 4a0dcab873559e934e41c5f220b5434d35600d9b
@@ -385,9 +385,9 @@ ssh_agent::has_key(const keypair & key)
ssh_agent::has_key(const keypair & key)
{
//grab the monotone public key as an RSA_PublicKey
- SecureVector<Botan::byte> pub_block;
- pub_block.set(reinterpret_cast<Botan::byte const *>((key.pub)().data()),
- (key.pub)().size());
+ SecureVector<Botan::byte> pub_block
+ (reinterpret_cast<Botan::byte const *>((key.pub)().data()),
+ (key.pub)().size());
L(FL("has_key: building %d-byte pub key") % pub_block.size());
shared_ptr<X509_PublicKey> x509_key =
shared_ptr<X509_PublicKey>(Botan::X509::load_key(pub_block));
============================================================
--- src/transforms.cc cdfb6854ef4992faba21074145f3c8269b845b11
+++ src/transforms.cc b99278ffe95c0081bf4986bc74d3699c37a52948
@@ -53,15 +53,16 @@ using Botan::Hash_Filter;
// paradigm "must" be used. this program is intended for source code
// control and I make no bones about it.
-NORETURN(static inline void error_in_transform(Botan::Exception & e));
+NORETURN(static inline void error_in_transform(std::exception & e));
static inline void
-error_in_transform(Botan::Exception & e, origin::type caused_by)
+error_in_transform(std::exception & e, origin::type caused_by)
{
// these classes can all indicate data corruption
if (typeid(e) == typeid(Botan::Encoding_Error)
|| typeid(e) == typeid(Botan::Decoding_Error)
|| typeid(e) == typeid(Botan::Stream_IO_Error)
+ || typeid(e) == typeid(Botan::Invalid_Argument)
|| typeid(e) == typeid(Botan::Integrity_Failure))
{
// clean up the what() string a little: throw away the
@@ -107,7 +108,7 @@ error_in_transform(Botan::Exception & e,
pipe->process_msg(in); \
out = pipe->read_all_as_string(Pipe::LAST_MESSAGE); \
} \
- catch (Botan::Exception & e) \
+ catch (std::exception & e) \
{ \
pipe.reset(new Pipe(new T(carg))); \
error_in_transform(e, made_from); \
@@ -173,7 +174,7 @@ template<> string xform<Botan::Hex_Decod
{
throw Botan::Decoding_Error(string("invalid hex character '") + (char)c + "'");
}
- catch(Botan::Exception & e)
+ catch(std::exception & e)
{
error_in_transform(e, made_from);
}
@@ -219,7 +220,7 @@ void pack(T const & in, base64< gzip<T>
tmp = pipe->read_all_as_string(Pipe::LAST_MESSAGE);
out = base64< gzip<T> >(tmp, in.made_from);
}
- catch (Botan::Exception & e)
+ catch (std::exception & e)
{
pipe.reset(new Pipe(new Gzip_Compression,
new Base64_Encoder));
@@ -237,7 +238,7 @@ void unpack(base64< gzip<T> > const & in
pipe->process_msg(in());
out = T(pipe->read_all_as_string(Pipe::LAST_MESSAGE), in.made_from);
}
- catch (Botan::Exception & e)
+ catch (std::exception & e)
{
pipe.reset(new Pipe(new Base64_Decoder,
new Gzip_Decompression));
@@ -264,7 +265,7 @@ calculate_ident(data const & dat,
p->process_msg(dat());
ident = id(p->read_all_as_string(Pipe::LAST_MESSAGE), dat.made_from);
}
- catch (Botan::Exception & e)
+ catch (std::exception & e)
{
p.reset(new Pipe(new Hash_Filter("SHA-160")));
error_in_transform(e, dat.made_from);
============================================================
--- test/func/attr_mtn_execute/__driver__.lua ac0c1f7ecf54690607e55d5aa43544c023e3700c
+++ test/func/attr_mtn_execute/__driver__.lua b5bfcf8f4fdb98c59f95da35b93e7d97d08b99e7
@@ -30,7 +30,7 @@ copy("test.db", "test-clone.db")
-- test clone with mtn:execute
copy("test.db", "test-clone.db")
-testURI="file://" .. test.root .. "/test-clone.db?testbranch"
+test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
-check(nodb_mtn("clone", testURI, "clone"), 0, false, true)
+check(nodb_mtn("clone", test_uri, "clone"), 0, false, true)
check(indir("clone", {"test", "-x","foo"}, 0, false, false))
============================================================
--- test/func/branch_leaves_sync_bug/__driver__.lua 6b227867aeb3692dba4e68efdfe5c59ff5c15919
+++ test/func/branch_leaves_sync_bug/__driver__.lua 943c3f2d7c3294e5da221d44911c08511058acb2
@@ -46,7 +46,9 @@ chdir(test.root)
-- Create Beth's workspace via checkout, so 'update' works
chdir(test.root)
-check(abe_mtn("sync", "file://" .. test.root .. "/beth.db?*"), 0, false, false)
+
+test_uri="file://" .. url_encode_path(test.root .. "/beth.db") .. "?*"
+check(abe_mtn("sync", test_uri), 0, false, false)
check(beth_mtn("checkout", "--branch", "testbranch", "Beth"), 0, false, false)
chdir("Beth")
check(beth_mtn("genkey", "address@hidden"), 0, false, false, string.rep("address@hidden", 2))
@@ -64,7 +66,7 @@ rev_b = base_revision()
rev_b = base_revision()
-- Sync dbs
-check(abe_mtn("sync", "file://" .. test.root .. "/beth.db?*"), 0, false, false)
+check(abe_mtn("sync", test_uri), 0, false, false)
-- Abe merges
chdir("Abe")
@@ -80,7 +82,8 @@ rev_d = base_revision()
rev_d = base_revision()
-- Sync dbs (not clear if direction of sync matters)
-check(beth_mtn("sync", "file://" .. test.root .. "/abe.db?*"), 0, false, false)
+test_uri="file://" .. url_encode_path(test.root .. "/abe.db") .. "?*"
+check(beth_mtn("sync", test_uri), 0, false, false)
-- bug; rev_d and rev_c are both heads according to branch_leaves table.
check(beth_mtn("db", "check"), 0, false, false)
============================================================
--- test/func/clone_aborts_on_branch_pattern_in_uri/__driver__.lua bf16d8dcec86e4ae012d1c6078082f9d13a9fd80
+++ test/func/clone_aborts_on_branch_pattern_in_uri/__driver__.lua e75946886b2b0b4ee301016860238e6315c22a59
@@ -6,9 +6,9 @@ copy("test.db", "test-clone.db")
commit("mybranch")
copy("test.db", "test-clone.db")
-testURI="file://" .. test.root .. "/test-clone.db?mybranch*"
-check(nodb_mtn("clone", testURI), 1, false, true)
+test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?mybranch*"
+check(nodb_mtn("clone", test_uri), 1, false, true)
check(qgrep("you must specify an unambiguous branch to clone", "stderr"))
-- the branch option is invalid in non-URI mode
@@ -16,7 +16,7 @@ check(qgrep("the '--branch' option is on
check(qgrep("the '--branch' option is only valid with an URI to clone", "stderr"))
-- finally, this should succeed
-check(nodb_mtn("clone", testURI, "--branch=mybranch"), 0, false, false)
+check(nodb_mtn("clone", test_uri, "--branch=mybranch"), 0, false, false)
check(exists("mybranch"))
check(readfile("foo") == readfile("mybranch/foo"))
============================================================
--- test/func/clone_branch_no_dir/__driver__.lua b490cd593cefd9aa0b4dec9ab177eb72c3fb8058
+++ test/func/clone_branch_no_dir/__driver__.lua 1ab33d8f6d1bdc38d3804d8fcd41b6c2f65a6e61
@@ -6,18 +6,18 @@ copy("test.db", "test-clone.db")
commit("mybranch")
copy("test.db", "test-clone.db")
-testURI="file://" .. test.root .. "/test-clone.db?mybranch"
-check(nodb_mtn("clone", testURI), 0, false, false)
+test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?mybranch"
+check(nodb_mtn("clone", test_uri), 0, false, false)
check(exists("mybranch"))
check(readfile("foo") == readfile("mybranch/foo"))
-- but now that that directory exists, this clone should fail
-check(nodb_mtn("clone", testURI), 1, false, false)
+check(nodb_mtn("clone", test_uri), 1, false, false)
-- but succeed if given a specific dir
-check(nodb_mtn("clone", testURI, "otherdir"), 0, false, false)
+check(nodb_mtn("clone", test_uri, "otherdir"), 0, false, false)
-- clone into . should not fail, like checkout
mkdir("test4")
-check(indir("test4", nodb_mtn("clone", testURI, ".")), 0, false, false)
+check(indir("test4", nodb_mtn("clone", test_uri, ".")), 0, false, false)
============================================================
--- test/func/clone_creates__MTN_log/__driver__.lua 5a8fe703d56ea39db22dcfbe6183294c1eb3f01b
+++ test/func/clone_creates__MTN_log/__driver__.lua b412d2f37df048846fc1f76ab62572d4c39b0796
@@ -13,9 +13,9 @@ copy("test.db", "test-clone.db")
check(mtn("--branch=testbranch", "--rcfile=commit_log.lua", "commit"), 0, false, false)
copy("test.db", "test-clone.db")
-testURI="file://" .. test.root .. "/test-clone.db?testbranch"
-check(nodb_mtn("clone", testURI, "testbranch"), 0, false, true)
+test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
+check(nodb_mtn("clone", test_uri, "testbranch"), 0, false, true)
check(exists("testbranch/_MTN/log"))
check(fsize("_MTN/log") == 0)
============================================================
--- test/func/clone_creates_right__MTN_options/__driver__.lua 12e86831366aa0f5573d1ec511872b6f9034aeb2
+++ test/func/clone_creates_right__MTN_options/__driver__.lua 9891e77e30b8830f8040bcb817a0db26a433c9dd
@@ -10,7 +10,7 @@ commit()
writefile("testfile", "blah")
commit()
-testURI="file://" .. test.root .. "/test-clone.db?testbranch"
+test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
-- We use RAW_MTN because it used to be that passing --db= (as
-- MTN does) would hide a bug in this functionality...
@@ -18,16 +18,17 @@ testURI="file://" .. test.root .. "/test
-- all of these inherit options settings from the current _MTN dir
-- unless they override them on the command line
-check(nodb_mtn("clone", testURI, "test_dir1"), 0, false, false)
-check(nodb_mtn("clone", "--revision", rev, testURI, "test_dir2"), 0, false, false)
-check(nodb_mtn("--db=" .. test.root .. "/test-new.db", "clone", testURI, "test_dir3"), 0, false, false)
-check(nodb_mtn("--db=" .. test.root .. "/test-new.db", "clone", testURI, "--revision", rev, "test_dir4"), 0, false, false)
+check(nodb_mtn("clone", test_uri, "test_dir1"), 0, false, false)
+check(nodb_mtn("clone", "--revision", rev, test_uri, "test_dir2"), 0, false, false)
+check(nodb_mtn("--db=" .. test.root .. "/test-new.db", "clone", test_uri, "test_dir3"), 0, false, false)
+check(nodb_mtn("--db=" .. test.root .. "/test-new.db", "clone", test_uri, "--revision", rev, "test_dir4"), 0, false, false)
-- checkout fails if the specified revision is not a member of the specified branch
-testURI="file://" .. test.root .. "/test-clone.db?foobar"
-check(nodb_mtn("clone", testURI, "--revision", rev, "test_dir5"), 1, false, false)
+test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?foobar"
+
+check(nodb_mtn("clone", test_uri, "--revision", rev, "test_dir5"), 1, false, false)
check(nodb_mtn("cert", rev, "branch", "foobar", "-d", "test-clone.db"), 0, false, false)
-check(nodb_mtn("clone", testURI, "--revision", rev, "test_dir6"), 0, false, false)
+check(nodb_mtn("clone", test_uri, "--revision", rev, "test_dir6"), 0, false, false)
for i = 1,2 do
============================================================
--- test/func/clone_validates_target_directory/__driver__.lua 1286723ee00ea9ea6831e12575ba7ac32a066645
+++ test/func/clone_validates_target_directory/__driver__.lua 0c6f70282431ed62359ad0b4a827575406889f4b
@@ -6,15 +6,15 @@ copy("test.db", "test-clone.db")
commit()
copy("test.db", "test-clone.db")
-testURI="file://" .. test.root .. "/test-clone.db?testbranch"
-check(nodb_mtn("clone", testURI, "test_dir1"), 0, false, false)
+test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
+check(nodb_mtn("clone", test_uri, "test_dir1"), 0, false, false)
writefile("test_dir2")
-check(nodb_mtn("clone", testURI, "test_dir2"), 1, false, false)
+check(nodb_mtn("clone", test_uri, "test_dir2"), 1, false, false)
mkdir("test_dir3")
-check(nodb_mtn("clone", testURI, "test_dir3"), 1, false, false)
+check(nodb_mtn("clone", test_uri, "test_dir3"), 1, false, false)
if existsonpath("chmod") and existsonpath("test") then
-- skip this part if run as root (hi Gentoo!)
@@ -27,9 +27,9 @@ if existsonpath("chmod") and existsonpat
else
mkdir("test_dir4")
check({"chmod", "444", "test_dir4"}, 0, false)
- check(nodb_mtn("clone", testURI, "test_dir4"),
+ check(nodb_mtn("clone", test_uri, "test_dir4"),
1, false, false)
- check(nodb_mtn("clone", testURI, "test_dir4/subdir"),
+ check(nodb_mtn("clone", test_uri, "test_dir4/subdir"),
1, false, false)
-- Reset the permissions so Autotest can correctly clean up our
-- temporary directory.
============================================================
--- test/func/clone_warning_with_multiple_heads/__driver__.lua 4333c6de0518517ff9bc04b4baef0d2d5ff08914
+++ test/func/clone_warning_with_multiple_heads/__driver__.lua 18e8670ea08dcb9602425ebdb97a786b20945ff6
@@ -16,9 +16,9 @@ copy("test.db", "test-clone.db")
REV3=base_revision()
copy("test.db", "test-clone.db")
-testURI="file://" .. test.root .. "/test-clone.db?testbranch"
-check(nodb_mtn("clone", testURI, "test_dirA"),
+test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") .. "?testbranch"
+check(nodb_mtn("clone", test_uri, "test_dirA"),
1, false, true)
check(qgrep(REV2, "stderr"))
check(qgrep(REV3, "stderr"))
============================================================
--- test/func/clone_weird_branch_names/__driver__.lua 205c20a2809513b93ee9ab6c1affb24070f284a2
+++ test/func/clone_weird_branch_names/__driver__.lua 0afc1816afa8d3e4b2dfb9fd016500f224432f0a
@@ -6,10 +6,11 @@ copy("test.db", "test-clone.db")
commit("my-branch[1,2]-1^3")
copy("test.db", "test-clone.db")
+
-- some of the special chars need to get double-escaped to get "through"
-testURI="file://" .. test.root .. "/test-clone.db?my-branch\\\[1,2\\\]-1^3"
-
-check(nodb_mtn("clone", testURI), 0, false, false)
+test_uri="file://" .. url_encode_path(test.root .. "/test-clone.db") ..
+ "?" .. 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/extended-selectors/__driver__.lua 435f44fb1b33bdfb53929fe6bd15ba7fa4c2c1d3
+++ test/func/extended-selectors/__driver__.lua cab379ef6f3439ab7f5a4424202ebf9097171c4c
@@ -1,5 +1,6 @@
-- selector functions are:
-- difference(a,b)
+-- not(a)
-- lca(a,b)
-- max(a)
-- ancestors(a)
@@ -78,6 +79,18 @@ expect("b:testbranch|b:otherbranch", roo
expect("b:testbranch/b:otherbranch", lhs)
expect("b:testbranch|b:otherbranch", root, lhs, rhs, m, other, other_2)
+-- 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/imp_test_filesync_confdir/__driver__.lua 5262dae96bcf38a2a27cea3d17523e08ad3e03aa
+++ test/func/imp_test_filesync_confdir/__driver__.lua 19822aa249d9300dc8695f41adbd12cbce5a9234
@@ -18,7 +18,8 @@ end
rcfile:close()
end
-check(mtn("sync", "file://" .. test.root .. "/test2.db?testbranch"), 0, true, false)
+test_uri="file://" .. url_encode_path(test.root .. "/test2.db") .. "?testbranch"
+check(mtn("sync", test_uri), 0, true, false)
n = 0
============================================================
--- test/func/netsync_over_pipes/__driver__.lua e4ee774912c36ca34a2bfe897daecac570f626a7
+++ test/func/netsync_over_pipes/__driver__.lua e769e909c59f15351c957a47d98bd7be5868e9f7
@@ -7,6 +7,7 @@ commit()
addfile("testfile", "foo")
commit()
-check(mtn("sync", "file://" .. test.root .. "/test2.db?testbranch"), 0, false, true)
+test_uri="file://" .. url_encode_path(test.root .. "/test2.db") .. "?testbranch"
+check(mtn("sync", test_uri), 0, false, true)
check(not qgrep("error", "stderr"))
check_same_db_contents("test.db", "test2.db")
============================================================
--- test/func/serve-automate/__driver__.lua ae4b03baf16d8401f31a32c8377021f879788d01
+++ test/func/serve-automate/__driver__.lua 1343490c3b79e3d936a5b72ba7561055239235f8
@@ -56,7 +56,8 @@ if ostype ~= "Windows" then
if ostype ~= "Windows" then
-- 'file:' not supported on Windows
-check(mtn2("automate", "remote_stdio", "file://" .. test.root .. "/test.db"),
+test_uri="file://" .. url_encode_path(test.root .. "/test.db")
+check(mtn2("automate", "remote_stdio", test_uri),
0, true, false, "l17:interface_versione")
check(parse_stdio(readfile("stdout"), 0, 0, "m") ~= nil)
end
============================================================
--- test/func/serve-automate-single-run/__driver__.lua 01013ad10150f9056bee7609338cb09b47d8c677
+++ test/func/serve-automate-single-run/__driver__.lua 7a75e9ff02a15ebc62a44c1c596ed39e3fdae0a0
@@ -60,8 +60,9 @@ copy("allow-automate.lua", "custom_test_
-- 'file:' not supported on Windows
copy("allow-automate.lua", "custom_test_hooks.lua")
+test_uri="file://" .. url_encode_path(test.root .. "/test.db")
check(mtn2("automate", "remote", "--remote-stdio-host",
- "file://"..test.root.."/test.db",
+ test_uri,
"get_file_of", "--", "-r".. R1, "foo"), 0, true, false)
check(qgrep("bar", "stdout"))
end
============================================================
--- test/func/syntax_errors_in_.mtn-ignore/mtn-ignore c46ecd3b4771b7b0af41b6caff2074df0427fbfa
+++ test/func/syntax_errors_in_.mtn-ignore/mtn-ignore 55bfcaa55ef14ee091aa6279251af51121f910b9
@@ -21,7 +21,6 @@ abc\3
[[:fnord:]]
\\x{123456}
(?(0))
-(?<=\C)
\l
(?C256)
(?C1
============================================================
--- test/func/util_mtnopt/__driver__.lua 84307ea94ec302c6d9bbe163955e8f5e86973ce0
+++ test/func/util_mtnopt/__driver__.lua 6981b9fe1aa7800aaaf76bd18f0ddbb73b0e6046
@@ -6,6 +6,11 @@ normalized_testroot = normalize_path (te
normalized_testroot = normalize_path (test.root)
+-- Escape regexp special characters to form a proper regexp that correctly
+-- checks for the given path.
+escaped_testroot = string.gsub(normalized_testroot, "([*+.()[\\^$|?])",
+ function (x) return "\\" .. x end)
+
-- check default operation
-- MinGW does not process the shebang in mtnopt; must invoke sh directly
@@ -13,7 +18,7 @@ check({"sh", "./mtnopt"}, 0, true)
-- Don't pass the full /bin/sh path, it looks like that doesn't always
-- work under mingw.
check({"sh", "./mtnopt"}, 0, true)
-check(qgrep('^MTN_database="' .. normalized_testroot .. '/test.db";$', "stdout"))
+check(qgrep('^MTN_database="' .. escaped_testroot .. '/test.db";$', "stdout"))
check(qgrep('^MTN_branch="testbranch";$', "stdout"))
-- check operation with a specific key and just returning the value
============================================================
--- test/src/testlib.lua 6d2a308918594226fa6549ed0268ccaea3921038
+++ test/src/testlib.lua f236da6fce62c15acac578b42756b552e0453d99
@@ -144,6 +144,22 @@ end
return n
end
+-- encodes a query by percent escaping reserved characters (as defined
+-- in RFC 3986) - except for the directory separator ('/').
+function url_encode_path(path)
+ path = string.gsub(path, "([!*'();:@&=+$,?#[%]])",
+ function (x) return string.format("%%%02X", string.byte(x)) end)
+ return string.gsub(path, " ", "+")
+end
+
+-- encodes a query by percent escaping reserved characters (as defined
+-- in RFC 3986) - except for the ampersand and equal sign ('&', '=')
+function url_encode_query(path)
+ path = string.gsub(path, "([!*'();:@+$,/?#[%]])",
+ function (x) return string.format("%%%02X", string.byte(x)) end)
+ return string.gsub(path, " ", "+")
+end
+
function open_or_err(filename, mode, depth)
local file, e = io.open(filename, mode)
if file == nil then
============================================================
--- src/unix/fs.cc 030ebb81f78bc138de3cf89e3ace8e9dcde2309c
+++ src/unix/fs.cc d34f7ed4b5cf3655d7920568e4e1a146fa670e13
@@ -1,4 +1,3 @@
-// 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
@@ -29,7 +28,6 @@
#include "../platform.hh"
#include "../vector.hh"
-using std::malloc;
using std::string;
using std::vector;
@@ -290,74 +288,11 @@ 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()))
{
- // 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);
- 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));
- }
+ const int err = errno;
+ E(false, origin::system,
+ F("renaming '%s' to '%s' failed: %s") % from % to % os_strerror(err));
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Monotone-commits-diffs] net.venge.monotone: 7338faf653922c1c9ce0eb944f8c7c00f5e54bfd,
code <=