changeset 7920:9ea05fbfa7ab

merge with backout
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Mon, 30 Mar 2009 01:23:12 +0200
parents 62f11ef0df5b (diff) 3e6206967570 (current diff)
children 06bf76009249
files
diffstat 19 files changed, 532 insertions(+), 291 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/python-hook-examples.py	Mon Mar 30 01:23:12 2009 +0200
@@ -0,0 +1,22 @@
+'''
+Examples of useful python hooks for Mercurial.
+'''
+from mercurial import patch, util
+
+def diffstat(ui, repo, **kwargs):
+    '''Example usage:
+
+    [hooks]
+    commit.diffstat = python:/path/to/this/file.py:diffstat
+    changegroup.diffstat = python:/path/to/this/file.py:diffstat
+    '''
+    if kwargs.get('parent2'):
+        return
+    node = kwargs['node']
+    first = repo[node].parents()[0].node()
+    if 'url' in kwargs:
+        last = repo['tip'].node()
+    else:
+        last = node
+    diff = patch.diff(repo, first, last)
+    ui.write(patch.diffstat(util.iterlines(diff)))
--- a/doc/hgrc.5.txt	Mon Mar 30 01:23:01 2009 +0200
+++ b/doc/hgrc.5.txt	Mon Mar 30 01:23:12 2009 +0200
@@ -475,6 +475,7 @@
   The syntax for Python hooks is as follows:
 
     hookname = python:modulename.submodule.callable
+    hookname = python:/path/to/python/module.py:callable
 
   Python hooks are run within the Mercurial process. Each hook is
   called with at least three keyword arguments: a ui object (keyword
--- a/hgext/convert/p4.py	Mon Mar 30 01:23:01 2009 +0200
+++ b/hgext/convert/p4.py	Mon Mar 30 01:23:12 2009 +0200
@@ -28,7 +28,7 @@
     def __init__(self, ui, path, rev=None):
         super(p4_source, self).__init__(ui, path, rev=rev)
 
-        checktool('p4')
+        checktool('p4', abort=False)
 
         self.p4changes = {}
         self.heads = {}
--- a/hgext/record.py	Mon Mar 30 01:23:01 2009 +0200
+++ b/hgext/record.py	Mon Mar 30 01:23:12 2009 +0200
@@ -302,6 +302,7 @@
             elif r == _('q'):
                 raise util.Abort(_('user quit'))
             return r
+    pos, total = 0, len(chunks) - 1
     while chunks:
         chunk = chunks.pop()
         if isinstance(chunk, header):
@@ -327,8 +328,10 @@
             # new hunk
             if resp_file[0] is None and resp_all[0] is None:
                 chunk.pretty(ui)
-            r = prompt(_('record this change to %r?') %
-                       chunk.filename())
+            r = total == 1 and prompt(_('record this change to %r?') %
+                                      chunk.filename()) \
+                           or  prompt(_('record change %d/%d to %r?') %
+                                      (pos, total, chunk.filename()))
             if r == _('y'):
                 if fixoffset:
                     chunk = copy.copy(chunk)
@@ -336,6 +339,7 @@
                 applied[chunk.filename()].append(chunk)
             else:
                 fixoffset += chunk.removed - chunk.added
+        pos = pos + 1
     return reduce(operator.add, [h for h in applied.itervalues()
                                  if h[0].special() or len(h) > 1], [])
 
--- a/i18n/de.po	Mon Mar 30 01:23:01 2009 +0200
+++ b/i18n/de.po	Mon Mar 30 01:23:12 2009 +0200
@@ -13,17 +13,17 @@
 # commit (v)	übertragen
 # deprecated	veraltet
 # hook		Aktion
-# merge		zusammmenführen
+# merge		zusammenführen
 # notation	Schreibweise
 # repository	Projektarchiv
 #
-# Die Koordination der Übersetzung erfolgt auf http://bitbucket.org/tobidope/i18n-german-translation
+# Die Koordination der Übersetzung erfolgt auf http://bitbucket.org/tobidope/mercurial-german-translation
 msgid ""
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-03-24 07:33+0100\n"
-"PO-Revision-Date: 2009-03-24 07:37+0100\n"
+"POT-Creation-Date: 2009-03-29 13:09+0200\n"
+"PO-Revision-Date: 2009-03-29 13:41+0200\n"
 "Last-Translator: Tobias Bell <tobias.bell@gmail.com>\n"
 "Language-Team: German (Tobias Bell, Fabian Kreutz, Lutz Horn)\n"
 "MIME-Version: 1.0\n"
@@ -126,6 +126,7 @@
 msgid "*** [alias] %s: no definition\n"
 msgstr "*** [alias] %s: nicht definiert\n"
 
+# Nicht übersetzen
 msgid ""
 "mercurial bookmarks\n"
 "\n"
@@ -148,29 +149,8 @@
 "and\n"
 "just updates it. This is similar to git's approach of branching.\n"
 msgstr ""
-"Mercurial bookmarks\n"
-"\n"
-"Mercurial Lesezeichen sind lokale mitwandernde Verweise auf changesets. "
-"Jedes\n"
-"Lesezeichen verweist auf ein changeset identifiziert durch seinen hash. Wenn "
-"du ein changeset\n"
-"commitest, dass auf einem changeset mit Lesezeichen basiert,  wird dieses "
-"Lesezeichen\n"
-"auf das neue changeset angehoben.\n"
-"\n"
-"Die Namen von Lesezeichen können bei jedem Verweis auf Revisionen genutzt "
-"werden (z.B. hg\n"
-"merge, hg update).\n"
-"\n"
-"Die Lesezeichen Erweiterung ermöglicht eine git-ähnliche Nutzung\n"
-"durch Zufügen folgender Konfigurationseinträge in deiner .hgrc:\n"
-"\n"
-"[bookmarks]\n"
-"track.current = True\n"
-"\n"
-"Dies veranlasst bookmarks das aktuelle Lesezeichen nachzuverfolgen, und\n"
-"nur dieses zu aktualisieren. Dies ähnelt gits Umgang mit branches.\n"
-
+
+# Nicht übersetzen
 msgid ""
 "Parse .hg/bookmarks file and return a dictionary\n"
 "\n"
@@ -182,6 +162,7 @@
 "    "
 msgstr ""
 
+# Nicht übersetzen
 msgid ""
 "Write bookmarks\n"
 "\n"
@@ -193,6 +174,7 @@
 "    "
 msgstr ""
 
+# Nicht übersetzen
 msgid ""
 "Get the current bookmark\n"
 "\n"
@@ -202,6 +184,7 @@
 "    "
 msgstr ""
 
+# Nicht übersetzen
 msgid ""
 "Set the name of the bookmark that we are currently on\n"
 "\n"
@@ -224,6 +207,21 @@
 "    that revision.\n"
 "    "
 msgstr ""
+"mercurial bookmarks (Lesezeichen)\n"
+"\n"
+"    Lesezeichen sind Zeiger auf bestimmte Versionen, die mitwandern,\n"
+"    wenn eine neuen Version erzeugt wird. Lesezeichen sind nur lokal.\n"
+"    Sie können umbenannt, kopiert und gelöscht werden. Es ist möglich\n"
+"    Lesezeichen bei 'hg merge' und 'hg update' zu nutzen, um auf das\n"
+"    angegebene Lesezeichen zu aktualisieren.\n"
+"\n"
+"    Du kannst 'hg bookmark NAME' aufrufen, um ein Lesezeichen mit dem\n"
+"    angegeben Namen auf der aktuellen Spitze (tip) zu setzen. Bei Angabe "
+"einer\n"
+"    Revision mit -r REV (REV kann ein vorhandenes Lesezeichen sein) wird "
+"das\n"
+"    Lesezeichen auf dieser Revision gesetzt.\n"
+"    "
 
 msgid "a bookmark of this name does not exist"
 msgstr "Es existiert kein Lesezeichen mit diesem Namen"
@@ -244,20 +242,24 @@
 msgstr ""
 "Ein Lesezeichen darf nicht denselben Namen wie ein existierender Zweig haben"
 
+# Nicht übersetzen
 msgid ""
 "Strip bookmarks if revisions are stripped using\n"
 "    the mercurial.strip method. This usually happens during\n"
 "    qpush and qpop"
 msgstr ""
 
+# Nicht übersetzen
 msgid ""
 "Add a revision to the repository and\n"
 "            move the bookmark"
 msgstr ""
 
+# Nicht übersetzen
 msgid "Merge bookmarks with normal tags"
 msgstr ""
 
+# Nicht übersetzen
 msgid ""
 "Set the current bookmark\n"
 "\n"
@@ -556,16 +558,16 @@
 "    Wenn eine Revision durch --rev angegeben wird, werden die Kinder dieser\n"
 "    Revision angezeigt. Wenn eine Datei als Argument angegeben wird, zeige "
 "die\n"
-"    Revision an, in der die Datei zuletzt geändert wurde (nachfolgend der "
-"Revison des\n"
-"    Arbeitsverzeichnisses oder wenn angegeben dem Argument von --rev).\n"
+"    Revision an, in der die Datei zuletzt geändert wurde (nachfolgend der\n"
+"    Revision des Arbeitsverzeichnisses oder wenn angegeben dem Argument von\n"
+"    --rev).\n"
 "    "
 
 msgid "show children of the specified rev"
-msgstr "Zeige die Kinder der übergebenen Revision"
+msgstr "Zeigt die Kinder der übergebenen Revision"
 
 msgid "hg children [-r REV] [FILE]"
-msgstr ""
+msgstr "hg children [-r REV] [DATEI]"
 
 msgid "command to show certain statistics about revision history"
 msgstr ""
@@ -3880,6 +3882,9 @@
 msgid "send changes not in target as a binary bundle"
 msgstr ""
 
+msgid "file name of the bundle attachment"
+msgstr ""
+
 msgid "a revision to send"
 msgstr ""
 
@@ -3950,6 +3955,7 @@
 msgid "hg purge [OPTION]... [DIR]..."
 msgstr ""
 
+# Nicht übersetzen
 msgid ""
 "move sets of revisions to a different ancestor\n"
 "\n"
@@ -3960,11 +3966,12 @@
 "http://www.selenic.com/mercurial/wiki/index.cgi/RebaseProject\n"
 msgstr ""
 
+# Nicht übersetzen
 msgid "return the correct ancestor"
 msgstr ""
 
 msgid "first revision, do not change ancestor\n"
-msgstr ""
+msgstr "Erste Revision, ändere den Vorgänger nicht\n"
 
 msgid ""
 "move changeset (and descendants) to a different branch\n"
@@ -3980,38 +3987,51 @@
 "    with --continue or aborted with --abort.\n"
 "    "
 msgstr ""
+"Verschiebt Versionen (und ihre Nachfolger) auf einen abweichenden Zweig\n"
+"\n"
+"    Rebase nutzt wiederholtes Zusammenführen um Versionen von einem Teil "
+"der\n"
+"    Versionshistorie auf einen anderen zu pfropfen. Dies ist nützlich, um\n"
+"    lokale Änderungen abhängig von einem Hauptentwicklunszweig zu\n"
+"    linearisieren.\n"
+"\n"
+"    Sollte ein Rebase unterbrochen werden, um manuell eine Zusammenführung\n"
+"    auszuführen, kann er mit --continue wieder aufgenommen oder mit --abort\n"
+"    abgebrochen werden.\n"
+"    "
 
 msgid "cannot use both keepbranches and extrafn"
-msgstr ""
+msgstr "keepbranches und extrafn können nicht gleichzeitig genutzt werden"
 
 msgid "cannot use both abort and continue"
-msgstr ""
+msgstr "abort und continue können nicht gleichzeitig genutzt werden"
 
 msgid "cannot use collapse with continue or abort"
-msgstr ""
+msgstr "collapse kann nicht mit continue oder abort genutzt werden"
 
 msgid "abort and continue do not allow specifying revisions"
-msgstr ""
+msgstr "abort und continue erlauben die Angabe einer Revision nicht"
 
 msgid "cannot specify both a revision and a base"
-msgstr ""
+msgstr "Es können nicht revision und base gleichzeitig angegeben werden"
 
 msgid "nothing to rebase\n"
-msgstr ""
+msgstr "Kein Rebase nötig\n"
 
 msgid "rebase merging completed\n"
-msgstr ""
+msgstr "Zusammenführungen des Rebase abgeschlossen\n"
 
 msgid "warning: new changesets detected on source branch, not stripping\n"
-msgstr ""
+msgstr "Warnung: Neue Änderungssätze auf Quellzweig gefunden, lösche nicht\n"
 
 msgid "rebase completed\n"
-msgstr ""
+msgstr "Rebase abgeschlossen\n"
 
 #, python-format
 msgid "%d revisions have been skipped\n"
-msgstr ""
-
+msgstr "%d Revisionen wurden übersprungen\n"
+
+# Nicht übersetzen
 msgid ""
 "Skip commit if collapsing has been required and rev is not the last\n"
 "    revision, commit otherwise\n"
@@ -4019,149 +4039,164 @@
 msgstr ""
 
 msgid " set parents\n"
-msgstr ""
-
+msgstr " setzt die Vorgänger\n"
+
+# Nicht übersetzen
 msgid "Rebase a single revision"
-msgstr ""
+msgstr "Rebase einer einzigen Revision"
 
 #, python-format
 msgid "rebasing %d:%s\n"
-msgstr ""
+msgstr "Rebase von %d:%s\n"
 
 #, python-format
 msgid " future parents are %d and %d\n"
-msgstr ""
+msgstr " die zukünftigen Vorgänger sind %d und %d\n"
 
 #, python-format
 msgid " update to %d:%s\n"
-msgstr ""
+msgstr " aktualisiert auf %d:%s\n"
 
 msgid " already in target\n"
-msgstr ""
+msgstr " bereits auf Ziel\n"
 
 #, python-format
 msgid " merge against %d:%s\n"
-msgstr ""
+msgstr " Zusammenführung zwischen %d:%s\n"
 
 msgid "fix unresolved conflicts with hg resolve then run hg rebase --continue"
 msgstr ""
+"Behebe ungelöste Konflikte mit hg resolve, dann führe hg rebase --continue "
+"aus"
 
 msgid "resuming interrupted rebase\n"
-msgstr ""
+msgstr "Nehme unterbrochenen Rebase wieder auf\n"
 
 #, python-format
 msgid "no changes, revision %d skipped\n"
-msgstr ""
+msgstr "keine Änderungen, Revision %d übersprungen\n"
 
 #, python-format
 msgid "next revision set to %s\n"
-msgstr ""
-
+msgstr "nächste Revision auf %s gesetzt\n"
+
+# Nicht übersetzen
 msgid "Return the new parent relationship of the revision that will be rebased"
 msgstr ""
 
 #, python-format
 msgid "cannot use revision %d as base, result would have 3 parents"
 msgstr ""
-
+"Revision %d kann nicht als Basis genutzt werden, das Ergebnis hätte 3 "
+"Vorgänger"
+
+# Nicht übersetzen
 msgid "Update rebased mq patches - finalize and then import them"
 msgstr ""
 
 #, python-format
 msgid "revision %d is an mq patch (%s), finalize it.\n"
-msgstr ""
+msgstr "Revision %d ist ein MQ-Patch (%s) und muss finalisiert werden.\n"
 
 #, python-format
 msgid "import mq patch %d (%s)\n"
-msgstr ""
-
+msgstr "Importiere MQ Patch %d (%s)\n"
+
+# Nicht übersetzen
 msgid "Store the current status to allow recovery"
 msgstr ""
 
 msgid "rebase status stored\n"
-msgstr ""
-
+msgstr "Rebase-Zustand gesichert\n"
+
+# Nicht übersetzen
 msgid "Remove the status files"
 msgstr ""
 
+# Nicht übersetzen
 msgid "Restore a previously stored status"
 msgstr ""
 
 msgid "rebase status resumed\n"
-msgstr ""
+msgstr "Rebase-Zustand wieder aufgenommen\n"
 
 msgid "no rebase in progress"
-msgstr ""
-
+msgstr "Kein vorheriger Rebase zur Wiederaufnahme"
+
+# Nicht übersetzen
 msgid "Restore the repository to its original state"
 msgstr ""
 
 msgid "warning: new changesets detected on target branch, not stripping\n"
-msgstr ""
+msgstr "Warnung: Neue Änderungssätze auf Zielzweig gefunden, lösche nicht\n"
 
 msgid "rebase aborted\n"
-msgstr ""
-
+msgstr "Rebase abgebrochen\n"
+
+# Nicht übersetzen
 msgid "Define which revisions are going to be rebased and where"
 msgstr ""
 
 msgid "cannot rebase onto an applied mq patch"
-msgstr ""
+msgstr "Rebase kann auf einem angewandten MQ-Patch nicht aufsetzen"
 
 msgid "cannot rebase an ancestor"
-msgstr ""
+msgstr "Kann Rebase nicht auf einem Vorläufer ausführen"
 
 msgid "cannot rebase a descendant"
-msgstr ""
+msgstr "Kann Rebase nicht auf einem Nachfolger ausführen"
 
 msgid "already working on current\n"
-msgstr ""
+msgstr "Arbeite bereits auf der aktuellen Version\n"
 
 msgid "already working on the current branch\n"
-msgstr ""
+msgstr "Arbeite bereits auf dem aktuellen Zweig\n"
 
 #, python-format
 msgid "rebase onto %d starting from %d\n"
-msgstr ""
+msgstr "Rebase auf %d beginnend bei %d\n"
 
 msgid "unable to collapse, there is more than one external parent"
 msgstr ""
-
+"Zusammenfalten nicht möglich, es gibt mehr als einen externen Vorgänger"
+
+# Nicht übersetzen
 msgid "Call rebase after pull if the latter has been invoked with --rebase"
 msgstr ""
 
 msgid "--update and --rebase are not compatible, ignoring the update flag\n"
-msgstr ""
-
+msgstr "--update und --rebase sind nicht kompatibel, ignoriere --update\n"
+
+# Nicht übersetzen
 msgid "Replace pull with a decorator to provide --rebase option"
 msgstr ""
 
 msgid "rebase working directory to branch head"
-msgstr "Führt 'rebase' zu einem Zweigkopf auf dem Arbeitsverzeichnis aus"
+msgstr "Führt Rebase zu einem Zweigkopf auf dem Arbeitsverzeichnis aus"
 
 msgid "keep original revisions"
-msgstr ""
+msgstr "Behält die ursprünglichen Revisionen"
 
 msgid "keep original branches"
-msgstr ""
+msgstr "Behält die ursprünglichen Zweige"
 
 msgid "rebase from a given revision"
-msgstr ""
+msgstr "Rebase ab einer angegebenen Revision"
 
 msgid "rebase from the base of a given revision"
-msgstr ""
+msgstr "Rebase ab der Basis einer angegebenen Revision"
 
 msgid "rebase onto a given revision"
-msgstr ""
+msgstr "Rebase der angegebene Revision"
 
 msgid "collapse the rebased revisions"
-msgstr ""
+msgstr "Faltet die erzeugten Revisionen nach dem Rebase zusammen"
 
 msgid "continue an interrupted rebase"
-msgstr ""
+msgstr "Führt einen unterbrochenen Rebase fort"
 
 msgid "abort an interrupted rebase"
-msgstr ""
+msgstr "Bricht einen unterbrochenen Rebase ab"
 
 msgid ""
 "hg rebase [-s rev | -b rev] [-d rev] [--collapse] | [-c] | [-a] | [--keep]"
@@ -4278,6 +4313,10 @@
 msgid "record this change to %r?"
 msgstr ""
 
+#, python-format
+msgid "record change %d/%d to %r?"
+msgstr ""
+
 msgid ""
 "interactively select changes to commit\n"
 "\n"
@@ -4735,10 +4774,13 @@
 msgid "%s: cannot copy - %s\n"
 msgstr "%s: kann nicht kopiert werden - %s\n"
 
-# Nicht übersetzen solange Argumente des Formatstring nicht übersetzbar sind
-#, python-format
-msgid "%s %s to %s\n"
-msgstr ""
+#, python-format
+msgid "moving %s to %s\n"
+msgstr "Verschiebe %s nach %s\n"
+
+#, python-format
+msgid "copying %s to %s\n"
+msgstr "Kopiere %s nach %s\n"
 
 #, python-format
 msgid "%s has not been committed yet, so no copy data will be stored for %s.\n"
@@ -5451,21 +5493,18 @@
 "    See 'hg help dates' for a list of formats valid for -d/--date.\n"
 "    "
 msgstr ""
-"Erzeugt eine neue Version der angegebenen Dateien oder aller ausstehenden "
-"Änderungen\n"
-"\n"
-"    Erzeugt eine neue Version der angegebenen, geänderten Dateien im "
+"Übernimmt die vorgemerkten Änderungen und erzeugt eine neue Revision\n"
+"\n"
+"    Erzeugt eine neue Revision mit allen (von \"hg status\" angezeigten) "
+"oder\n"
+"    den angegegebenen geänderten Dateien des Arbeitsverzeichnisses im "
 "Archiv.\n"
 "\n"
-"    Wenn keine Liste von Dateien angegeben wird, wird eine neue Version aus\n"
-"    allen Änderungen, die 'hg status' anzeigt, erzeugt.\n"
-"\n"
-"    Bei Übertragung der Ergebnisse einer Zusammenführung ins Archiv, dürfen\n"
+"    Wenn das Ergebnis einer Zusammenführung übernommen werden soll, dürfen\n"
 "    keine Dateinamen oder -I/-X Filter angegeben werden.\n"
 "\n"
-"    Wenn keine Versionsmeldung angegeben wird, wird der konfigurierte "
-"Editor\n"
-"    gestartet und fordert eine Meldung an.\n"
+"    Wenn keine Versionsmeldung mit der Option -m angegeben wird, wird der\n"
+"    konfigurierte Editor für eine interaktive Eingabe gestartet.\n"
 "\n"
 "    Siehe 'hg help dates' für eine Liste aller gültigen Formate für -d/--"
 "date.\n"
@@ -5493,17 +5532,27 @@
 "    before that, see hg revert.\n"
 "    "
 msgstr ""
-"Markiert Dateien als kopiert für die nächste Version\n"
-"\n"
-"    Markiert das Ziel als Kopie der Quelldateien. Wenn das Ziel ein\n"
-"    Verzeichnis ist, werden Kopien in diesem Verzeichnis abgelegt.\n"
-"    Wenn das Ziel eine Datei ist, muss auch die Quelle eine Datei sein.\n"
-"\n"
-"    Normalerweise kopiert dieser Befehl den Inhalt der Dateien, wie\n"
-"    er im Arbeitsverzeichnis vorliegt. Wenn aber der Aufruf mit --after\n"
-"    erfolgt, wird die Operation aufgezeichnet aber keine Kopie ausgeführt.n\n"
-"    Dieser Befehl wirkt sich erst beim nächsten 'hg commit' aus. Um eine\n"
-"    Kopie vorher rückgängig zu machen, siehe hg revert.\n"
+"Markiert Dateien als Kopien bereits übernommener Dateien\n"
+"\n"
+"    Markiert das Ziel als Kopie der Quelle. so dass es die Versionshistorie "
+"der\n"
+"    Quelle bis zu diesem Zeitpunkt teilt. Wenn mehrere Quellen angegeben "
+"sind,\n"
+"    muss das Ziel ein Verzeichnis sein.\n"
+"\n"
+"    Normalerweise kopiert dieser Befehl auch den Inhalt der Datei(en) wie "
+"sie\n"
+"    im Arbeitsverzeichnis vorliegt. Existiert das Ziel jedoch schon, so "
+"kann\n"
+"    dieses durch Angabe der Option --after/-A als Kopie nachträglich "
+"markiert\n"
+"    werden.\n"
+"\n"
+"    Die neue Datei wird wie üblich nicht sofort übernommen, sondern "
+"existiert\n"
+"    als lokale  Änderung im Arbeitsverzeichnis. Sie kann durch \"hg revert"
+"\"\n"
+"    rückgängig gemacht werden.\n"
 "    "
 
 msgid "find the ancestor revision of two revisions in a given index"
@@ -5516,32 +5565,41 @@
 msgstr "Entweder zwei oder drei Parameter angeben"
 
 msgid "returns the completion list associated with the given command"
-msgstr ""
+msgstr "Listet mögliche Kommandos zu gegebener Abkürzung auf"
 
 msgid "rebuild the dirstate as it would look like for the given revision"
 msgstr ""
+"Markiert aktuellen Status als Änderungen seit gegebener Revision\n"
+"\n"
+"    Interpretiert das Arbeitsverzeichnis als lokale Änderung seit der "
+"gegebenen\n"
+"    Revision. Die Vorgängerversion ist die gegebene und die Änderungen "
+"aller\n"
+"    Versionen seit dem (oder bis dahin) sind vorgemerkt und können als neue\n"
+"    Revision (und Kopf) übernommen werden.\n"
+"    "
 
 msgid "validate the correctness of the current dirstate"
-msgstr ""
+msgstr "Prüft die Richtigkeit der bisher vorgemerkten Änderungen"
 
 #, python-format
 msgid "%s in state %s, but not in manifest1\n"
-msgstr ""
+msgstr "%s ist in Status %s, aber nicht in Manifest 1\n"
 
 #, python-format
 msgid "%s in state %s, but also in manifest1\n"
-msgstr ""
+msgstr "%s ist in Status %s, aber auch in Manifest 1\n"
 
 #, python-format
 msgid "%s in state %s, but not in either manifest\n"
-msgstr ""
+msgstr "%s ist in Status %s, aber in keinem Manifest\n"
 
 #, python-format
 msgid "%s in manifest1, but listed as state %s"
-msgstr ""
+msgstr "%s im Manifest 1, aber aufgeführt im Status %s"
 
 msgid ".hg/dirstate inconsistent with current parent's manifest"
-msgstr ""
+msgstr ".hg/dirstate inkonsistent mit dem Manifest des aktuellen Vorgängers"
 
 msgid ""
 "show combined config settings from all hgrc files\n"
@@ -5575,9 +5633,16 @@
 "    be used with care.\n"
 "    "
 msgstr ""
+"Setzt die Vorgängerversionen des Arbeitsverzeichnisses manuell\n"
+"\n"
+"    Die kann für externe Konversionswerkzeuge nützlich sein, sollte aber "
+"mit\n"
+"    großer Vorsicht angewendet werden.\n"
+"    "
 
 msgid "show the contents of the current dirstate"
 msgstr ""
+"Zeigt die interne Repräsentation der aktuellen Änderungen (dirstate) an"
 
 #, python-format
 msgid "copy: %s -> %s\n"
@@ -5591,7 +5656,7 @@
 msgstr ""
 
 msgid "parse and display a date"
-msgstr ""
+msgstr "Liest ein Datum ein und gibt es wieder aus"
 
 msgid "dump the contents of an index file"
 msgstr ""
@@ -5600,88 +5665,92 @@
 msgstr ""
 
 msgid "test Mercurial installation"
-msgstr ""
+msgstr "Tested die Mercurial Installation"
 
 #, python-format
 msgid "Checking encoding (%s)...\n"
-msgstr ""
+msgstr "Prüfe Kodierung (%s)...\n"
 
 msgid " (check that your locale is properly set)\n"
-msgstr ""
+msgstr " (Stelle sicher, dass locale richtig gesetzt ist!)\n"
 
 msgid "Checking extensions...\n"
-msgstr ""
+msgstr "Prüfe Erweiterungen...\n"
 
 msgid " One or more extensions could not be found"
-msgstr ""
+msgstr " Eine oder mehere Erweiterungen nicht gefunden"
 
 msgid " (check that you compiled the extensions)\n"
-msgstr ""
+msgstr " (Stelle sicher, dass die Erweiterungen compiliert wurden!)\n"
 
 msgid "Checking templates...\n"
-msgstr ""
+msgstr "Prüfe Vorlagen...\n"
 
 msgid " (templates seem to have been installed incorrectly)\n"
-msgstr ""
+msgstr "(Vorlagen scheinen falsch installiert worden zu sein)\n"
 
 msgid "Checking patch...\n"
-msgstr ""
+msgstr "Prüfe patch...\n"
 
 msgid " patch call failed:\n"
-msgstr ""
+msgstr " Aufruf von patch gescheitert:\n"
 
 msgid " unexpected patch output!\n"
-msgstr ""
+msgstr " Unerwartete Ausgabe von patch\n"
 
 msgid " patch test failed!\n"
-msgstr ""
+msgstr " patch Test gescheitert\n"
 
 msgid ""
 " (Current patch tool may be incompatible with patch, or misconfigured. "
 "Please check your .hgrc file)\n"
 msgstr ""
+" (Aktuelles patch Werkzeug könnte mit patch inkompatibel or fehlkonfiguriert "
+"sein. Prüfe die .hgrc Datei!)\n"
 
 msgid ""
 " Internal patcher failure, please report this error to http://www.selenic."
 "com/mercurial/bts\n"
 msgstr ""
+"Fehlschlag des internen patch Werkzeugs. Bitte melden Sie diesen Fehler bei "
+"http://www.selenic.com/mercurial/bts\n"
 
 msgid "Checking commit editor...\n"
-msgstr ""
+msgstr "Prüfe Editor für Versionsmeldungen...\n"
 
 msgid " No commit editor set and can't find vi in PATH\n"
-msgstr ""
+msgstr " Kein Editor für Versionsmeldungen angegeben und vi nicht im PATH\n"
 
 msgid " (specify a commit editor in your .hgrc file)\n"
-msgstr ""
+msgstr " (Gib einen Editor in der .hgrc Datei an!)\n"
 
 #, python-format
 msgid " Can't find editor '%s' in PATH\n"
-msgstr ""
+msgstr " Kann Editor '%s' nicht im PATH finden\n"
 
 msgid "Checking username...\n"
-msgstr ""
+msgstr "Prüfe Benutzernamen...\n"
 
 msgid " (specify a username in your .hgrc file)\n"
-msgstr ""
+msgstr " (Gib einen Benutzernamen in der .hgrc Datei an!)\n"
 
 msgid "No problems detected\n"
-msgstr ""
+msgstr "Keine Probleme gefunden\n"
 
 #, python-format
 msgid "%s problems detected, please check your install!\n"
-msgstr ""
+msgstr "%s Probleme gefunden. Erwäge die obigen Lösungsvorschläge!\n"
 
 msgid "dump rename information"
 msgstr ""
 
 #, python-format
 msgid "%s renamed from %s:%s\n"
-msgstr ""
+msgstr "%s umbenannt von %s:%s\n"
 
 #, python-format
 msgid "%s not renamed\n"
-msgstr ""
+msgstr "%s ist nicht unbenannt\n"
 
 msgid "show how files match on given patterns"
 msgstr ""
@@ -5711,17 +5780,15 @@
 "    format. For more information, read hg help diffs.\n"
 "    "
 msgstr ""
-"Vergleicht das Projektarchiv (oder angegebene Dateien)\n"
-"\n"
-"    Zeigt die Unterschiede zwischen Revisionen der angegebenen Dateien.\n"
-"\n"
-"    Unterschiede zwischen Dateien werden im unified-diff-Format angezeigt.\n"
-"\n"
-"    HINWEISE: diff kann bei Zusammenführungen unerwartete Resultate "
+"Zeigt Änderungen des Projektarchiv oder angegebener Dateien an\n"
+"\n"
+"    Zeigt Unterschiede von Dateien zwischen Revisionen im unified-diff-\n"
+"    Format an.\n"
+"\n"
+"    HINWEIS: diff kann bei Zusammenführungen unerwartete Resultate "
 "anzeigen,\n"
-"    da es standardmäßig das Arbeitsverzeichnis mit der ersten "
-"Vorgängerversion\n"
-"    vergleicht, wenn keine Revisionen angeben werden.\n"
+"    da es nur mit einer (der ersten wenn keine Revision angegeben ist)\n"
+"    Vorgängerversion vergleicht.\n"
 "\n"
 "    Bei Angabe zweier Revisionen als Parameter werden Unterschiede\n"
 "    zwischen diesen beiden angezeigt. Wenn nur eine Revision angegeben\n"
@@ -5729,14 +5796,14 @@
 "    Revision angegeben worden sein, wird das Arbeitsverzeichnis mit der\n"
 "    Vorgängerversion verglichen.\n"
 "\n"
-"    Ohne die Option -a vermeidet diff den Vergleich von Dateien, die es\n"
-"    binär erkannt hat. Mit -a wird auf jeden Fall ein Vergleich "
-"durchgeführt,\n"
-"    wahrscheinlich mit ungewünschtem Resultat.\n"
-"\n"
-"    Nutze die Option --git um Vergleiche im git-erweiterten\n"
-"    diff-Format zu erzeugen. Zur weiteren Information ist \n"
-"    hg help diff aufschlussreich.\n"
+"    Ohne die Option -a vermeidet export den Vergleich von binären Dateien.\n"
+"    Mit -a wird der Vergleich in jedem Fall durchgeführt, wahrscheinlich "
+"mit\n"
+"    unerwünschtem Resultat.\n"
+"\n"
+"    Nutze die Option --git um Vergleiche im git-erweiterten diff-Format zu\n"
+"    erzeugen. Zur weiteren Information ist \"hg help diff\" "
+"aufschlussreich.\n"
 "    "
 
 msgid ""
@@ -5773,45 +5840,39 @@
 "    parent. It can be useful to review a merge.\n"
 "    "
 msgstr ""
-"Gibt die Kopfzeilen und Diffs einer oder mehrerer Versionen aus\n"
-"\n"
-"    Gibt die Kopfzeilen und Diffs einer oder mehrere Versionen aus.\n"
+"Gibt Kopfzeilen und Änderungsverlauf einer oder mehrerer Versionen aus\n"
 "\n"
 "    Die angezeigten Daten in den Kopfzeilen sind: Autor,\n"
 "    Änderungssatz-Prüfsumme, Vorgängerversion und Versionsmeldung.\n"
 "\n"
-"    HINWEISE: export kann bei Zusammenführungen unerwartete Resultate "
+"    HINWEIS: export kann bei Zusammenführungen unerwartete Resultate "
 "anzeigen,\n"
-"    da es standardmäßig das Arbeitsverzeichnis mit der ersten "
-"Vorgängerversion\n"
-"    vergleicht.\n"
-"\n"
-"    Die Ausgabe kann in eine Datei erfolgen. In diesem Fall wird der Name\n"
-"    der Datei mit einem Formatstring vorgegeben. Die Formatierungsregeln "
-"sind:\n"
+"    da es nur mit einer (der ersten es sei denn --switch-parent ist "
+"angegeben)\n"
+"    Vorgängerversion vergleicht.\n"
+"\n"
+"    Die Ausgabe kann in eine Datei erfolgen (Option -o). In diesem Fall "
+"wird\n"
+"    der Name für jede ausgegebene Revision anhand einer Formatangabe "
+"erzeugt:\n"
 "\n"
 "    %%   literales \"%\" Zeichen\n"
 "    %H   Prüfsumme des Änderungssatzes (40 Byte hexadezimal)\n"
 "    %N   Anzahl der generierten Patches\n"
 "    %R   Revisionnummer des Änderungssatzes\n"
 "    %b   Basisname des exportierten Archivs\n"
-"    %h   Kurzform der Prüfsumme des Änderungssatzes\n"
-"         (12 Byte hexadezimal)\n"
+"    %h   Kurzform der Prüfsumme des Änderungssatzes (12 Byte hexadezimal)\n"
 "    %n   laufende Nummer mit führenden Nullen, beginnend bei 1\n"
 "    %r   Revisionsnummer mit führenden Nullen\n"
 "\n"
-"    Ohne die Option -a vermeidet export den Vergleich von Dateien, die es\n"
-"    binär erkannt hat. Mit -a wird auf jeden Fall ein Vergleich "
-"durchgeführt,\n"
-"    wahrscheinlich mit ungewünschtem Resultat.\n"
-"\n"
-"    Nutze die Option --git um Vergleiche im git-erweiterten\n"
-"    diff-Format zu erzeugen. Zur weiteren Information ist \n"
-"    hg help diff aufschlussreich.\n"
-"\n"
-"    Mit  der --switch-parent Option wird der Vergleich gegen die zweite\n"
-"    Vorgängerversion ausgeführt. Dies kann nützlich zur Überprüfung einer\n"
-"    Zusammenführungen sein.\n"
+"    Ohne die Option -a vermeidet export den Vergleich von binären Dateien.\n"
+"    Mit -a wird der Vergleich in jedem Fall durchgeführt, wahrscheinlich "
+"mit\n"
+"    unerwünschtem Resultat.\n"
+"\n"
+"    Nutze die Option --git um Vergleiche im git-erweiterten diff-Format zu\n"
+"    erzeugen. Zur weiteren Information ist \"hg help diff\" "
+"aufschlussreich.\n"
 "    "
 
 msgid "export requires at least one changeset"
@@ -5878,17 +5939,17 @@
 "\n"
 "    Köpfe von Zweigen sind Versionen mit einem Zweignamen, die aber\n"
 "    keine Folgeversionen dieses Namens haben. Hier findet typischerweise\n"
-"    dies Entwicklung dieses Zweiges statt.\n"
+"    die Entwicklung dieses Zweiges statt.\n"
 "    "
 
 #, python-format
 msgid "no changes on branch %s containing %s are reachable from %s\n"
 msgstr ""
-"Keine Änderungen auf dem Zweig %s, die %s enthalten, sind erreichbar von %s\n"
+"Keine Änderungen auf dem Zweig %s, die %s enthalten, sind von %s erreichbar\n"
 
 #, python-format
 msgid "no changes on branch %s are reachable from %s\n"
-msgstr "Keine Änderungen auf dem Zweig %s sind erreichbar von %s\n"
+msgstr "Keine Änderungen auf dem Zweig %s sind von %s erreichbar\n"
 
 msgid ""
 "show help for a given topic or a help overview\n"
@@ -5897,23 +5958,22 @@
 "\n"
 "    Given a topic, extension, or command name, print help for that topic."
 msgstr ""
-"Zeigt die Hilfe für ein übergebenes Thema oder eine Hilfsübersicht\n"
+"Zeigt die Hilfe für ein gegebenes Thema oder eine Hilfsübersicht\n"
 "\n"
 "    Ohne Parameter wird eine Liste aller Befehle mit Kurzhilfe angezeigt.\n"
 "\n"
-"    Bei Angabe eines Themas, einer Erweiterung oder eines Befehls, wird\n"
-"    die Hilfe dieses Themas angezeigt."
+"    Bei Angabe eines Themas, einer Erweiterung oder eines Befehls wird\n"
+"    detaillierte Hilfe zu diesem Thema angezeigt."
 
 msgid "global options:"
 msgstr "Globale Optionen:"
 
 msgid "use \"hg help\" for the full list of commands"
-msgstr "Nutze \"hg help\" für die gesamte Liste der Befehle"
+msgstr "Nutze \"hg help\" für eine Liste aller Befehle"
 
 msgid "use \"hg help\" for the full list of commands or \"hg -v\" for details"
 msgstr ""
-"Nutze \"hg help\" für die gesamte Liste der Befehle oder \"hg -v\" für "
-"Details"
+"Nutze \"hg help\" für eine Liste aller Befehle oder \"hg -v\" für Details"
 
 #, python-format
 msgid "use \"hg -v help%s\" to show aliases and global options"
@@ -5958,7 +6018,7 @@
 
 #, python-format
 msgid " %s   %s\n"
-msgstr " %s   %s\n"
+msgstr ""
 
 msgid "no help text available"
 msgstr "keine Hilfe verfügbar"
@@ -6002,7 +6062,7 @@
 "Beschreibt die Arbeitskopie oder die angegebene Revision\n"
 "\n"
 "    Ohne Revision wird eine Zusammenfassung des aktuellen Status des\n"
-"    Projektarchivs angezeigt\n"
+"    Projektarchivs angezeigt.\n"
 "\n"
 "    Mit einem Pfad wird eine Abfrage auf ein anderes Archiv ausgeführt.\n"
 "\n"
@@ -6046,6 +6106,42 @@
 "    See 'hg help dates' for a list of formats valid for -d/--date.\n"
 "    "
 msgstr ""
+"Importiert eine Liste von Patches\n"
+"\n"
+"    Wendet die angegebenen Patches nacheinander an und übernimmt die "
+"Änderungen\n"
+"    ins Archiv (es sei denn die Option --no-commit ist angegeben).\n"
+"\n"
+"    Falls aktuell lokale Änderungen im Arbeitsverzeichnis vorliegen, bricht\n"
+"    der Befehl ohne die Option -f/--force ab.\n"
+"\n"
+"    Patches können direkt aus Emails importiert werden, sogar wenn sie in\n"
+"    einem Anhang (Mime Typ text/plain oder text/x-patch) vorliegen. Die\n"
+"    Absender- und Betreffszeile, sowie alle text/plain Abschnitte vor dem "
+"Patch\n"
+"    werden als Benutzername bzw. Versionsmeldung bei der Übernahme "
+"verwendet.\n"
+"\n"
+"    Falls der einzulesende Patch von \"hg export\" erzeugt wurde, werden\n"
+"    Benutzername und Versionsmeldung aus dem Patch und nicht aus der Email\n"
+"    verwendet. Die Optionen -m und -u überschreiben aber auch diese "
+"Angaben.\n"
+"\n"
+"    Mit der Option --exact wird das Arbeitsverzeichnis vor jedem Patch auf\n"
+"    dessen Vorgängerversion gebracht. Nach Anwendung wird geprüft, ob der\n"
+"    neue Änderungssatz die gleiche Prüfsumme aufweist, wie der Patch. Falls\n"
+"    dies nicht so ist (im Falle von inkompatiblen Zeichensätzen oder "
+"anderen\n"
+"    Problemen mit dem Patch Format), wird die Operation abgebrochen.\n"
+"\n"
+"    Mit der Option --similarity werden Umbenennungen und Kopien auf gleiche\n"
+"    Weise wie mit dem Befehl \"hg addremove\" erkannt.\n"
+"\n"
+"    Um einen Patch von der Standardeingabe zu lesen, kann der Dateiname \"-"
+"\"\n"
+"    verwendet werden. Siehe 'hg help dates' für eine Liste aller gültigen\n"
+"    Formate für -d/--date.\n"
+"    "
 
 msgid "applying patch from stdin\n"
 msgstr "Wende Patch von der Standardeingabe an\n"
@@ -6065,7 +6161,7 @@
 msgstr "Kein Mercurial Patch"
 
 msgid "patch is damaged or loses information"
-msgstr ""
+msgstr "Prüfsumme stimmt nicht überein: Patch korrumpiert"
 
 msgid ""
 "show new changesets found in source\n"
@@ -6080,6 +6176,17 @@
 "    See pull for valid source format details.\n"
 "    "
 msgstr ""
+"Zeigt neue Revisionen in einer externen Quelle an\n"
+"\n"
+"    Zeigt alle neuen Änderungen an, die durch ein \"hg pull\" von der ange-\n"
+"    gebenen oder Standardquelle geholt werden würden.\n"
+"\n"
+"    Für entfernte Archive sorgt die Option --bundle dafür, dass die "
+"Änderungen\n"
+"    bei einem folgenden \"hg pull\" nicht ein zweites Mal geholt werden.\n"
+"\n"
+"    Siehe \"hg help pull\" für gültige Angaben für die Quelle.\n"
+"    "
 
 msgid ""
 "create a new repository in the given directory\n"
@@ -6098,9 +6205,9 @@
 "    Initialisiert ein neues Archiv im angegebenen Verzeichnis. Sollte das\n"
 "    angegebene Verzeichnis nicht existieren, wird es angelegt.\n"
 "\n"
-"    Sollte keine Verzeichnis angegeben werden, wird das aktuelle genutzt.\n"
-"\n"
-"    Es ist möglich ssh:// URLs als Ziel anzugeben.\n"
+"    Ist kein Zielverzeichnis angegeben, wird das aktuelle genutzt.\n"
+"\n"
+"    Es ist möglich eine ssh:// URL als Ziel anzugeben.\n"
 "    Siehe 'hg help urls' für mehr Informationen.\n"
 "    "
 
@@ -6123,6 +6230,23 @@
 "    that contain white space as multiple filenames.\n"
 "    "
 msgstr ""
+"Suche Dateien mit bestimmtem Namen\n"
+"\n"
+"    Gibt alle Dateien im Projektarchiv aus, deren Namen auf ein angegebenes\n"
+"    Muster passen.\n"
+"\n"
+"    Standardmäßig wird das gesamte Archiv durchsucht. Um die Suche auf das\n"
+"    aktuelle Verzeichnis und Unterverzeichnisse zu begrenzen, verwende\n"
+"    \"--include .\".\n"
+"\n"
+"    Ohne angegebenes Suchmuster werden alle Dateinamen ausgegeben.\n"
+"\n"
+"    Um die Ausgabe besser in Verbindung mit \"xargs\" verwenden zu können,\n"
+"    sollte die Option \"-0\" (Null) in beiden Kommandos angegeben werden.\n"
+"    Dadurch werden die Dateinamen mit einem Null-Byte getrennt, was "
+"Probleme\n"
+"    mit Leerzeichen in Dateinamen vermeidet.\n"
+"    "
 
 msgid ""
 "show revision history of entire repository or files\n"
@@ -6154,7 +6278,7 @@
 "\n"
 "    "
 msgstr ""
-"Zeigt die Revisionshistorie eines Archives oder von Dateien an\n"
+"Zeigt die Revisionshistorie des Archivs oder von Dateien an\n"
 "\n"
 "    Gibt die Revisionshistorie der angegeben Dateien oder des ganzen\n"
 "    Projektes aus.\n"
@@ -6211,6 +6335,18 @@
 "    --debug flag, print file revision hashes.\n"
 "    "
 msgstr ""
+"Gibt das Manifest der angegebenen oder aktuellen Revision aus.\n"
+"\n"
+"    Das Manifest enthält die Liste aller Dateien under Versionskontrolle.\n"
+"    Wenn keine Revision angegeben ist, wird die Vorgängerversion des "
+"Arbeits-\n"
+"    verzeichnisses (bzw. die Spitze, falls dies leer ist) verwendet.\n"
+"\n"
+"    Mit dem Schalter -v werden zusätzlich zum Dateinamen auch die Rechte "
+"und\n"
+"    der Dateityp (Verknüpfung/ausführbar) ausgegeben. Mit --debug auch noch\n"
+"    die Prüfsumme.\n"
+"    "
 
 msgid ""
 "merge working directory with another revision\n"
@@ -6228,18 +6364,21 @@
 msgstr ""
 "Führt das Arbeitsverzeichnis mit einer anderen Revision zusammen\n"
 "\n"
-"    Führt die Inhalte des aktuellen Arbeitsverzeichnis und der\n"
-"    gewünschten Revision zusammen. Dateien, die in einer der beiden\n"
-"    Revisionen geändert wurden, werden als verändert gekennzeichnet\n"
-"    für die nächste Version. Es muss eine neue Version mit 'hg commit'\n"
-"    erstellt werden bevor weitere Änderungen zugelassen werden.\n"
-"\n"
-"    Sollte keine Revision angegeben werden, die Version des Arbeits-\n"
-"    verzeichnisses ist eine Kopfversion und der aktuelle Zweig enthält "
-"genau\n"
-"    eine andere Kopfversion, wird standardmäßig die Zusammenführung mit der\n"
-"    anderen Kopfversion durchgeführt. Anderenfalls muss eine explizite\n"
-"    Revision angegeben werden.\n"
+"    Wendet die Änderungen der angegebenen Revision (seit einem gemeinsamen\n"
+"    Vorfahr) im Arbeitsverzeichnis an. Diese müssen mit \"hg commit\" "
+"zunächst\n"
+"    übernommen werden, bevor weitere Änderungen (add, delete, merge) zuge-\n"
+"    lassen werden.\n"
+"\n"
+"    Nach dem Übernehmen hat die neue Revision zwei Vorfahren.\n"
+"\n"
+"    Wenn keine Revision angegeben wird und der Vorgänger des Arbeits-\n"
+"    verzeichnisses eine Kopfversion eines Zweiges mit genau zwei Köpfen "
+"ist,\n"
+"    dann wird der andere Kopf für die Zusammenführung verwendet.\n"
+"    Bei mehr oder weniger als zwei Köpfen im Zweig muss eine andere "
+"Revision\n"
+"    explizit angegeben werden.\n"
 "    "
 
 #, python-format
@@ -6261,8 +6400,8 @@
 "working dir not at a head rev - use \"hg update\" or merge with an explicit "
 "rev"
 msgstr ""
-"Arbeitsverzeichnis ist keine Kopfversion - Nutze \"hg update\" oder gebe "
-"eine explizite Revision an"
+"Arbeitsverzeichnis ist keine Kopfversion - Nutze \"hg update\" oder gib eine "
+"explizite Revision an"
 
 msgid ""
 "show changesets not found in destination\n"
@@ -6894,6 +7033,23 @@
 "    integrity of their crosslinks and indices.\n"
 "    "
 msgstr ""
+"Sucht ein Muster in angegebenen Dateien und Revisionen\n"
+"\n"
+"    Durchsucht Dateien in der Versionshistorie nach einem gegebenen Muster.\n"
+"\n"
+"    Dieses Kommando unterscheidet sich von Unix grep, da es Reguläre "
+"Ausdrücke\n"
+"    in Python/Perl Format erwartet und ausserdem nur die übernommenen "
+"Revisionen\n"
+"    im Archiv durchsucht, nicht jedoch das Arbeitsverzeichnis.\n"
+"\n"
+"    Standardmäßig gibt grep den Dateinamen und die jüngste Revision einer "
+"Datei\n"
+"    aus, die das Suchmuster enthält. Mit der Option --all werden "
+"stattdessen\n"
+"    alle Revisionen ausgegeben, in der das Muster hinzugefügt (\"+\") oder\n"
+"    entfernt (\"-\") wurde.\n"
+"    "
 
 msgid "output version and copyright information"
 msgstr ""
@@ -8074,8 +8230,8 @@
 "    from the current repository is read.\n"
 "\n"
 "    For each element in HGRCPATH:\n"
-"    * if it's a directory, all directories ending with .rc are added\n"
-"    * otherwise, the directory itself will be added\n"
+"    * if it's a directory, all files ending with .rc are added\n"
+"    * otherwise, the file itself will be added\n"
 "\n"
 "HGUSER::\n"
 "    This is the string used as the author of a commit. If not set,\n"
@@ -8121,7 +8277,7 @@
 "    revisions.\n"
 "\n"
 "    A plain integer is treated as a revision number. Negative\n"
-"    integers are treated as toplogical offsets from the tip, with\n"
+"    integers are treated as topological offsets from the tip, with\n"
 "    -1 denoting the tip. As such, negative numbers are only useful\n"
 "    if you've memorized your local tree numbers and want to save\n"
 "    typing a single digit. This editor suggests copy and paste.\n"
@@ -8150,6 +8306,42 @@
 "    the first parent.\n"
 "    "
 msgstr ""
+"\n"
+"    Mercurial unterstützt mehrere Arten individuelle Revisionen anzugeben\n"
+"\n"
+"    Eine einfache Ganzzahl wird als Revisionsnummer behandelt. Negative\n"
+"    Zahlen beschreiben den topologischen Abstand von der Spitze (tip), "
+"wobei\n"
+"    -1 die Spitze selbst ist. Daher sind negative Zahlen nur dann nützlich,\n"
+"    wenn man sich die lokalen Revisionsnummern einprägt und das Tippen "
+"einer\n"
+"    Zahl sparen möchte. Der Verfasser empfiehlt 'copy and paste'.\n"
+"\n"
+"    Eine 40-stellige Hexadezimalzahl gilt als eindeutiger Identifikator\n"
+"    einer Revision.\n"
+"\n"
+"    Eine Hexadezimalzahl mit weniger als 40 Zeichen gilt als eindeutiger\n"
+"    Identifikator und wird als Kurzform des Identifikators bezeichnet.\n"
+"    Die Kurzform ist nur dann gültig, wenn sie Präfix exakt einer Langform\n"
+"    eines Identifikators ist.\n"
+"\n"
+"    Jede andere Zeichenfolge wird als Name einer Marke (tag) behandelt.\n"
+"    Dieser symbolische Name verweist auf einen Revisionsidentifikator. "
+"Namen\n"
+"    von Marken dürfen das Zeichen \":\" nicht enthalten.\n"
+"\n"
+"    Der reservierte Name \"tip\" ist eine spezielle Marke die immer auf die\n"
+"    jüngste Revision verweist.\n"
+"\n"
+"    Der reservierte Name \"null\" bezeichnet die null-Revision. Sie ist die\n"
+"    Revision eines leeren Projektarchivs und der Vorgänger der Version 0.\n"
+"\n"
+"    Der reservierte Name \".\" bezeichnete die Vorgängerversion des\n"
+"    Arbeitsverzeichnisses. Falls kein Check-Out des Arbeitsverzeichnisses\n"
+"    vorliegt ist er äquivalent zu null. Falls eine nicht versionierte\n"
+"    Zusammenführung in Bearbeitung ist, bezeichnet \".\" die Revision des\n"
+"    ersten Vorgängers.\n"
+"    "
 
 msgid "Specifying Multiple Revisions"
 msgstr "Angabe Mehrerer Revisionen"
@@ -9046,10 +9238,6 @@
 msgstr ""
 
 #, python-format
-msgid "moving %s to %s\n"
-msgstr ""
-
-#, python-format
 msgid "getting %s to %s\n"
 msgstr ""
 
@@ -9158,6 +9346,21 @@
 msgstr ""
 
 #, python-format
+msgid "exited with status %d"
+msgstr ""
+
+#, python-format
+msgid "killed by signal %d"
+msgstr ""
+
+#, python-format
+msgid "stopped by signal %d"
+msgstr ""
+
+msgid "invalid exit code"
+msgstr ""
+
+#, python-format
 msgid "saving bundle to %s\n"
 msgstr ""
 
@@ -9401,24 +9604,6 @@
 msgid "Hardlinks not supported"
 msgstr ""
 
-msgid "user name not available - set USERNAME environment variable"
-msgstr ""
-
-#, python-format
-msgid "exited with status %d"
-msgstr ""
-
-#, python-format
-msgid "killed by signal %d"
-msgstr ""
-
-#, python-format
-msgid "stopped by signal %d"
-msgstr ""
-
-msgid "invalid exit code"
-msgstr ""
-
 #, python-format
 msgid "could not symlink to %r: %s"
 msgstr ""
@@ -9624,3 +9809,6 @@
 #, python-format
 msgid "(first damaged changeset appears to be %d)\n"
 msgstr ""
+
+msgid "user name not available - set USERNAME environment variable"
+msgstr ""
--- a/mercurial/extensions.py	Mon Mar 30 01:23:01 2009 +0200
+++ b/mercurial/extensions.py	Mon Mar 30 01:23:12 2009 +0200
@@ -28,6 +28,17 @@
                 return v
         raise KeyError(name)
 
+def loadpath(path, module_name):
+    module_name = module_name.replace('.', '_')
+    path = os.path.expanduser(path)
+    if os.path.isdir(path):
+        # module/__init__.py style
+        d, f = os.path.split(path)
+        fd, fpath, desc = imp.find_module(f, [d])
+        return imp.load_module(module_name, fd, fpath, desc)
+    else:
+        return imp.load_source(module_name, path)
+
 def load(ui, name, path):
     if name.startswith('hgext.') or name.startswith('hgext/'):
         shortname = name[6:]
@@ -40,14 +51,7 @@
         # the module will be loaded in sys.modules
         # choose an unique name so that it doesn't
         # conflicts with other modules
-        module_name = "hgext_%s" % name.replace('.', '_')
-        if os.path.isdir(path):
-            # module/__init__.py style
-            d, f = os.path.split(path)
-            fd, fpath, desc = imp.find_module(f, [d])
-            mod = imp.load_module(module_name, fd, fpath, desc)
-        else:
-            mod = imp.load_source(module_name, path)
+        mod = loadpath(path, 'hgext.%s' % name)
     else:
         def importh(name):
             mod = __import__(name)
@@ -72,7 +76,6 @@
         if path:
             if path[0] == '!':
                 continue
-            path = os.path.expanduser(path)
         try:
             load(ui, name, path)
         except KeyboardInterrupt:
--- a/mercurial/help.py	Mon Mar 30 01:23:01 2009 +0200
+++ b/mercurial/help.py	Mon Mar 30 01:23:12 2009 +0200
@@ -135,8 +135,8 @@
     from the current repository is read.
 
     For each element in HGRCPATH:
-    * if it's a directory, all directories ending with .rc are added
-    * otherwise, the directory itself will be added
+    * if it's a directory, all files ending with .rc are added
+    * otherwise, the file itself will be added
 
 HGUSER::
     This is the string used as the author of a commit. If not set,
--- a/mercurial/hook.py	Mon Mar 30 01:23:01 2009 +0200
+++ b/mercurial/hook.py	Mon Mar 30 01:23:12 2009 +0200
@@ -7,6 +7,7 @@
 
 from i18n import _
 import util, os, sys
+from mercurial import extensions
 
 def _pythonhook(ui, repo, name, hname, funcname, args, throw):
     '''call python hook. hook is callable object, looked up as
@@ -109,8 +110,13 @@
             if callable(cmd):
                 r = _pythonhook(ui, repo, name, hname, cmd, args, throw) or r
             elif cmd.startswith('python:'):
-                r = _pythonhook(ui, repo, name, hname, cmd[7:].strip(),
-                                args, throw) or r
+                if cmd.count(':') == 2:
+                    path, cmd = cmd[7:].split(':')
+                    mod = extensions.loadpath(path, 'hgkook.%s' % hname)
+                    hookfn = getattr(mod, cmd)
+                else:
+                    hookfn = cmd[7:].strip()
+                r = _pythonhook(ui, repo, name, hname, hookfn, args, throw) or r
             else:
                 r = _exthook(ui, repo, hname, cmd, args, throw) or r
     finally:
--- a/mercurial/posix.py	Mon Mar 30 01:23:01 2009 +0200
+++ b/mercurial/posix.py	Mon Mar 30 01:23:12 2009 +0200
@@ -9,7 +9,7 @@
 """
 
 from i18n import _
-import os, sys, osutil, errno, stat, getpass
+import os, sys, osutil, errno, stat, getpass, pwd, grp
 
 posixfile = file
 nulldev = '/dev/null'
--- a/mercurial/util.py	Mon Mar 30 01:23:01 2009 +0200
+++ b/mercurial/util.py	Mon Mar 30 01:23:12 2009 +0200
@@ -844,6 +844,19 @@
 
 if os.name == 'nt':
     from windows import *
+    def expand_glob(pats):
+        '''On Windows, expand the implicit globs in a list of patterns'''
+        ret = []
+        for p in pats:
+            kind, name = patkind(p, None)
+            if kind is None:
+                globbed = glob.glob(name)
+                if globbed:
+                    ret.extend(globbed)
+                    continue
+                # if we couldn't expand the glob, just keep it around
+            ret.append(p)
+        return ret
 else:
     from posix import *
 
--- a/mercurial/windows.py	Mon Mar 30 01:23:01 2009 +0200
+++ b/mercurial/windows.py	Mon Mar 30 01:23:12 2009 +0200
@@ -8,7 +8,8 @@
 reference.
 """
 
-import msvcrt, sys, os
+from i18n import _
+import errno, msvcrt, os, osutil, re, sys
 nulldev = 'NUL:'
 
 umask = 002
@@ -229,20 +230,6 @@
     raise Abort(_('user name not available - set USERNAME '
                   'environment variable'))
 
-def expand_glob(pats):
-    '''On Windows, expand the implicit globs in a list of patterns'''
-    ret = []
-    for p in pats:
-        kind, name = patkind(p, None)
-        if kind is None:
-            globbed = glob.glob(name)
-            if globbed:
-                ret.extend(globbed)
-                continue
-            # if we couldn't expand the glob, just keep it around
-        ret.append(p)
-    return ret
-
 def username(uid=None):
     """Return the name of the user with the given uid.
 
--- a/templates/paper/error.tmpl	Mon Mar 30 01:23:01 2009 +0200
+++ b/templates/paper/error.tmpl	Mon Mar 30 01:23:12 2009 +0200
@@ -7,7 +7,7 @@
 <div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
-<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
 <li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
--- a/templates/paper/index.tmpl	Mon Mar 30 01:23:01 2009 +0200
+++ b/templates/paper/index.tmpl	Mon Mar 30 01:23:12 2009 +0200
@@ -6,7 +6,7 @@
 <div class="container">
 <div class="menu">
 <a href="http://www.selenic.com/mercurial/">
-<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <div class="main">
 <h2>Mercurial Repositories</h2>
--- a/tests/test-convert	Mon Mar 30 01:23:01 2009 +0200
+++ b/tests/test-convert	Mon Mar 30 01:23:12 2009 +0200
@@ -44,3 +44,7 @@
 echo 'include b' > filemap
 hg convert --debug --filemap filemap a partialb | \
     grep 'run hg'
+
+echo % converting empty dir should fail "nicely"
+mkdir emptydir
+PATH=$BINDIR hg convert emptydir 2>&1 | sed 's,file://.*/emptydir,.../emptydir,g'
--- a/tests/test-convert.out	Mon Mar 30 01:23:01 2009 +0200
+++ b/tests/test-convert.out	Mon Mar 30 01:23:12 2009 +0200
@@ -226,3 +226,16 @@
 run hg sink pre-conversion action
 run hg sink post-conversion action
 run hg source post-conversion action
+% converting empty dir should fail nicely
+assuming destination emptydir-hg
+initializing destination emptydir-hg repository
+emptydir does not look like a CVS checkout
+emptydir does not look like a Git repo
+.../emptydir does not look like a Subversion repo
+emptydir is not a local Mercurial repo
+emptydir does not look like a darcs repo
+cannot find required "mtn" tool
+emptydir does not look like a GNU Arch repo
+emptydir does not look like a Bazaar repo
+cannot find required "p4" tool
+abort: emptydir: missing or unsupported repository
--- a/tests/test-hgweb-filelog.out	Mon Mar 30 01:23:01 2009 +0200
+++ b/tests/test-hgweb-filelog.out	Mon Mar 30 01:23:12 2009 +0200
@@ -421,7 +421,7 @@
 <div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
 <li><a href="/shortlog">log</a></li>
--- a/tests/test-hgweb.out	Mon Mar 30 01:23:01 2009 +0200
+++ b/tests/test-hgweb.out	Mon Mar 30 01:23:12 2009 +0200
@@ -36,7 +36,7 @@
 <div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
 <li><a href="/shortlog">log</a></li>
@@ -105,7 +105,7 @@
 <div class="menu">
 <div class="logo">
 <a href="http://www.selenic.com/mercurial/">
-<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+<img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
 </div>
 <ul>
 <li><a href="/shortlog">log</a></li>
--- a/tests/test-qrecord.out	Mon Mar 30 01:23:01 2009 +0200
+++ b/tests/test-qrecord.out	Mon Mar 30 01:23:12 2009 +0200
@@ -84,12 +84,12 @@
 -2
 +2 2
  3
-record this change to '1.txt'? [Ynsfdaq?]  @@ -3,3 +3,3 @@
+record change 1/6 to '1.txt'? [Ynsfdaq?]  @@ -3,3 +3,3 @@
  3
 -4
 +4 4
  5
-record this change to '1.txt'? [Ynsfdaq?]  diff --git a/2.txt b/2.txt
+record change 2/6 to '1.txt'? [Ynsfdaq?]  diff --git a/2.txt b/2.txt
 1 hunks, 2 lines changed
 examine changes to '2.txt'? [Ynsfdaq?]  @@ -1,5 +1,5 @@
  a
@@ -98,7 +98,7 @@
  c
  d
  e
-record this change to '2.txt'? [Ynsfdaq?]  diff --git a/dir/a.txt b/dir/a.txt
+record change 4/6 to '2.txt'? [Ynsfdaq?]  diff --git a/dir/a.txt b/dir/a.txt
 1 hunks, 2 lines changed
 examine changes to 'dir/a.txt'? [Ynsfdaq?]  
 % after qrecord a.patch 'tip'
@@ -163,7 +163,7 @@
 -4
 +4 4
  5
-record this change to '1.txt'? [Ynsfdaq?]  diff --git a/dir/a.txt b/dir/a.txt
+record change 1/3 to '1.txt'? [Ynsfdaq?]  diff --git a/dir/a.txt b/dir/a.txt
 1 hunks, 2 lines changed
 examine changes to 'dir/a.txt'? [Ynsfdaq?]  @@ -1,4 +1,4 @@
 -hello world
@@ -171,7 +171,7 @@
  
  someone
  up
-record this change to 'dir/a.txt'? [Ynsfdaq?]  
+record change 3/3 to 'dir/a.txt'? [Ynsfdaq?]  
 % after qrecord b.patch 'tip'
 changeset:   2:b056198bf878
 tag:         qtip
--- a/tests/test-record.out	Mon Mar 30 01:23:01 2009 +0200
+++ b/tests/test-record.out	Mon Mar 30 01:23:12 2009 +0200
@@ -215,13 +215,13 @@
  2
  3
  4
-record this change to 'plain'? [Ynsfdaq?]  @@ -8,5 +8,3 @@
+record change 1/2 to 'plain'? [Ynsfdaq?]  @@ -8,5 +8,3 @@
  8
  9
  10
 -11
 -cf81a2760718a74d44c0c2eecb72f659e63a69c5
-record this change to 'plain'? [Ynsfdaq?]  
+record change 2/2 to 'plain'? [Ynsfdaq?]  
 changeset:   11:d09ab1967dab
 tag:         tip
 user:        test
@@ -258,7 +258,7 @@
  7
  8
  9
-record this change to 'plain'? [Ynsfdaq?]  @@ -4,7 +1,7 @@
+record change 1/2 to 'plain'? [Ynsfdaq?]  @@ -4,7 +1,7 @@
  4
  5
  6
@@ -267,7 +267,7 @@
  9
 -10
 +10.new
-record this change to 'plain'? [Ynsfdaq?]  
+record change 2/2 to 'plain'? [Ynsfdaq?]  
 changeset:   12:44516c9708ae
 tag:         tip
 user:        test
@@ -326,7 +326,7 @@
  7
  8
  9
-record this change to 'plain'? [Ynsfdaq?]  @@ -1,7 +4,6 @@
+record change 1/2 to 'plain'? [Ynsfdaq?]  @@ -1,7 +4,6 @@
  4
  5
  6
@@ -334,7 +334,7 @@
  8
  9
 -10.new
-record this change to 'plain'? [Ynsfdaq?]  % add to beginning, middle, end
+record change 2/2 to 'plain'? [Ynsfdaq?]  % add to beginning, middle, end
 % record beginning, middle
 diff --git a/plain b/plain
 3 hunks, 7 lines changed
@@ -344,7 +344,7 @@
 +3
  4
  5
-record this change to 'plain'? [Ynsfdaq?]  @@ -1,6 +4,8 @@
+record change 1/3 to 'plain'? [Ynsfdaq?]  @@ -1,6 +4,8 @@
  4
  5
 +5.new
@@ -353,14 +353,14 @@
  7
  8
  9
-record this change to 'plain'? [Ynsfdaq?]  @@ -3,4 +8,6 @@
+record change 2/3 to 'plain'? [Ynsfdaq?]  @@ -3,4 +8,6 @@
  6
  7
  8
  9
 +10
 +11
-record this change to 'plain'? [Ynsfdaq?]  
+record change 3/3 to 'plain'? [Ynsfdaq?]  
 changeset:   15:c1c639d8b268
 tag:         tip
 user:        test