Merge with -crew-stable
authorMatt Mackall <mpm@selenic.com>
Wed, 07 Oct 2009 23:25:41 -0500
changeset 9530 ba8a86d86fd6
parent 9524 effa05849027 (diff)
parent 9529 e61e7b3e46d0 (current diff)
child 9533 e151b66bcf38
Merge with -crew-stable
mercurial/util.py
--- a/hgext/color.py	Tue Oct 06 10:45:23 2009 +0200
+++ b/hgext/color.py	Wed Oct 07 23:25:41 2009 -0500
@@ -162,9 +162,8 @@
     return retval
 
 _patch_effects = { 'applied': ['blue', 'bold', 'underline'],
-                   'missing': ['red', 'bold'],
-                   'unapplied': ['black', 'bold'], }
-
+                    'missing': ['red', 'bold'],
+                    'unapplied': ['black', 'bold'], }
 def colorwrap(orig, s):
     '''wrap ui.write for colored diff output'''
     lines = s.split('\n')
--- a/hgext/convert/subversion.py	Tue Oct 06 10:45:23 2009 +0200
+++ b/hgext/convert/subversion.py	Wed Oct 07 23:25:41 2009 -0500
@@ -153,11 +153,13 @@
 def issvnurl(url):
     try:
         proto, path = url.split('://', 1)
-        path = urllib.url2pathname(path)
+        if proto == 'file':
+            path = urllib.url2pathname(path)
     except ValueError:
         proto = 'file'
         path = os.path.abspath(url)
-    path = path.replace(os.sep, '/')
+    if proto == 'file':
+        path = path.replace(os.sep, '/')
     check = protomap.get(proto, lambda p, p2: False)
     while '/' in path:
         if check(path, proto):
--- a/hgext/extdiff.py	Tue Oct 06 10:45:23 2009 +0200
+++ b/hgext/extdiff.py	Wed Oct 07 23:25:41 2009 -0500
@@ -173,11 +173,11 @@
     that revision is compared to the working directory, and, when no
     revisions are specified, the working directory files are compared
     to its parent.'''
-    program = opts['program'] or 'diff'
-    if opts['program']:
-        option = opts['option']
-    else:
-        option = opts['option'] or ['-Npru']
+    program = opts.get('program')
+    option = opts.get('option')
+    if not program:
+        program = 'diff'
+        option = option or ['-Npru']
     return dodiff(ui, repo, program, option, pats, opts)
 
 cmdtable = {
--- a/i18n/da.po	Tue Oct 06 10:45:23 2009 +0200
+++ b/i18n/da.po	Wed Oct 07 23:25:41 2009 -0500
@@ -17,8 +17,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2009-07-20 23:05+0200\n"
-"PO-Revision-Date: 2009-07-21 00:18+0200\n"
+"POT-Creation-Date: 2009-09-29 00:26+0200\n"
+"PO-Revision-Date: 2009-09-29 00:41+0200\n"
 "Last-Translator:  <mg@lazybytes.net>\n"
 "Language-Team: Danish\n"
 "MIME-Version: 1.0\n"
@@ -1007,7 +1007,8 @@
 #, python-format
 msgid ""
 "unexpected response from CVS server (expected \"Valid-requests\", but got %r)"
-msgstr "uventet svar fra CVS serveren (forventede \"Valid-requests\", men fik %r)"
+msgstr ""
+"uventet svar fra CVS serveren (forventede \"Valid-requests\", men fik %r)"
 
 #, python-format
 msgid "%d bytes missing from remote file"
@@ -1086,6 +1087,10 @@
 msgid "%d changeset entries\n"
 msgstr "%d ændringer\n"
 
+#, python-format
+msgid "darcs version 2.1 or newer needed (found %r)"
+msgstr ""
+
 msgid "Python ElementTree module is not available"
 msgstr "Python ElementTree modulet er ikke tilstede"
 
@@ -1492,10 +1497,6 @@
 msgstr "sammenføjer med %d:%s\n"
 
 #, python-format
-msgid "Automated merge with %s"
-msgstr "Automatisk sammenføjning med %s"
-
-#, python-format
 msgid "new changeset %d:%s merges remote changes with local\n"
 msgstr "ny ændring %d:%s fletter fjernændringer sammen med lokale\n"
 
@@ -1576,10 +1577,6 @@
 "arbejdskopien af .hgsigs er ændret (deponer venligst .hgsigs manuelt eller "
 "brug --force)"
 
-#, python-format
-msgid "Added signature for changeset %s"
-msgstr "Tilføjede underskrift af ændring %s"
-
 msgid "unknown signature version"
 msgstr "ukendt underskrift-version"
 
@@ -2133,7 +2130,9 @@
 msgid ""
 "\n"
 "%s keywords written to %s:\n"
-msgstr "\n%s nøgleord skrevet til %s:\n"
+msgstr ""
+"\n"
+"%s nøgleord skrevet til %s:\n"
 
 msgid "unhooked all commit hooks\n"
 msgstr ""
@@ -3789,22 +3788,22 @@
 msgstr ""
 
 msgid "cannot use both abort and continue"
-msgstr ""
+msgstr "abort og continue kan ikke angives samtidig"
 
 msgid "cannot use collapse with continue or abort"
-msgstr ""
+msgstr "continue eller abort kan ikke angives samtidig med collapse"
 
 msgid "abort and continue do not allow specifying revisions"
-msgstr ""
+msgstr "abort og continue tillader ikke at der angives revisioner"
 
 msgid "cannot specify both a revision and a base"
-msgstr ""
+msgstr "man kan ikke angive både en revision og en basis"
 
 msgid "nothing to rebase\n"
 msgstr ""
 
 msgid "cannot use both keepbranches and extrafn"
-msgstr ""
+msgstr "man kan ikke bruge både keepbranches og extrafn"
 
 msgid "rebase merging completed\n"
 msgstr ""
@@ -3817,7 +3816,7 @@
 
 #, python-format
 msgid "%d revisions have been skipped\n"
-msgstr ""
+msgstr "sprang %d revisioner over\n"
 
 msgid " set parents\n"
 msgstr ""
@@ -4275,7 +4274,7 @@
 msgstr ""
 
 #, python-format
-msgid "[win32mbcs] filename conversion fail with %s encoding\n"
+msgid "[win32mbcs] filename conversion failed with %s encoding\n"
 msgstr ""
 
 msgid "[win32mbcs] cannot activate on this platform.\n"
@@ -4668,12 +4667,27 @@
 "    be expensive.\n"
 "    "
 msgstr ""
+"tilføj alle nye filer, fjern alle manglende filer\n"
+"\n"
+"    Tilføj alle nye filer og fjern alle manglende filer fra depotet.\n"
+"\n"
+"    Nye filer bliver ignoreret hvis de matcher et af mønstrene i\n"
+"    .hgignore. Som ved add, så træder disse ændringer først i kræft\n"
+"    ved næste commit.\n"
+"\n"
+"    Brug -s/--similarity tilvalget for at opdage omdøbte filer. Med en\n"
+"    parameter større end 0 bliver hver fjernet fil sammenlignet med\n"
+"    enhver tilføjet fil og filer der er tilstrækkelig ens bliver\n"
+"    opført som omdøbte. Dette tilvalg tager et procenttal mellem 0\n"
+"    (slået fra) og 100 (filer skal være identiske) som parameter. At\n"
+"    opdage omdøbninger på denne måde kan være dyrt.\n"
+"    "
 
 msgid "similarity must be a number"
-msgstr ""
+msgstr "lighedsgrad skal være et tal"
 
 msgid "similarity must be between 0 and 100"
-msgstr ""
+msgstr "lighedsgrad skal være mellem 0 og 100"
 
 msgid ""
 "show changeset information by line for each file\n"
@@ -4705,10 +4719,10 @@
 "    "
 
 msgid "at least one filename or pattern is required"
-msgstr ""
+msgstr "kræver mindst et filnavn eller mønster"
 
 msgid "at least one of -n/-c is required for -l"
-msgstr ""
+msgstr "brug af -l kræver mindst en af -n/-c"
 
 #, python-format
 msgid "%s: binary file\n"
@@ -4744,10 +4758,10 @@
 msgstr "intet arbejdskatalog: angive venligst en revision"
 
 msgid "repository root cannot be destination"
-msgstr ""
+msgstr "depotets rod kan ikke bruges som destination"
 
 msgid "cannot archive plain files to stdout"
-msgstr ""
+msgstr "flade filer kan ikke arkiveres til standarduddata"
 
 msgid ""
 "reverse effect of earlier changeset\n"
@@ -4806,11 +4820,7 @@
 msgstr "%s er ikke forælder til %s"
 
 msgid "cannot use --parent on non-merge changeset"
-msgstr ""
-
-#, python-format
-msgid "Backed out changeset %s"
-msgstr ""
+msgstr "kan ikke bruge --parent på en ændringer som ikke er en sammenføjning"
 
 #, python-format
 msgid "changeset %s backs out changeset %s\n"
@@ -4824,7 +4834,7 @@
 msgstr ""
 
 msgid "(use \"backout --merge\" if you want to auto-merge)\n"
-msgstr ""
+msgstr "(brug \"backout --merge\" hvis du vil sammenføje automatisk)\n"
 
 msgid ""
 "subdivision search of changesets\n"
@@ -4872,7 +4882,7 @@
 msgstr ""
 
 msgid "(use of 'hg bisect <cmd>' is deprecated)\n"
-msgstr ""
+msgstr "(formen 'hg bisect <kommando>' er forældet)\n"
 
 msgid "incompatible arguments"
 msgstr "inkompatible argumenter"
@@ -4883,7 +4893,7 @@
 
 #, python-format
 msgid "failed to execute %s"
-msgstr ""
+msgstr "kunne ikke køre %s"
 
 #, python-format
 msgid "%s killed"
@@ -4917,10 +4927,27 @@
 "    'hg commit --close-branch' to mark this branch as closed.\n"
 "    "
 msgstr ""
+"angiv eller vis navnet på den aktuelle gren\n"
+"\n"
+"    Uden noget argument vises navnet på den nuværende gren. Med et\n"
+"    argument angives arbejdskatalogets grennavn (grenen eksisterer\n"
+"    ikke i depotet før næste deponering). Det anbefales at den primære\n"
+"    udvikling foretages på 'default' grenen.\n"
+"\n"
+"    Med mindre -f/--force bruges, så vil branch ikke lade dig bruge et\n"
+"    grennavn som allerede eksisterer, selv hvis det er inaktivt.\n"
+"\n"
+"    Brug -C/--clean for at nulstille arbejdskatalogs gren til samme\n"
+"    gren dets forældre-ændring og derved negere end tidligere ændring.\n"
+"\n"
+"    Brug kommandoen 'hg update' for at skifte til en eksisterende\n"
+"    gren. Brug 'hg commit --close-branch' for at markere denne gren\n"
+"    som lukket.\n"
+"    "
 
 #, python-format
 msgid "reset working directory to branch %s\n"
-msgstr ""
+msgstr "nulstil arbejdskataloget til gren %s\n"
 
 msgid "a branch of the same name already exists (use --force to override)"
 msgstr ""
@@ -5003,6 +5030,22 @@
 "    %p   root-relative path name of file being printed\n"
 "    "
 msgstr ""
+"udskriv den aktuelle eller en given revision af filer\n"
+"\n"
+"    Udskriver de angivne filer som de så ud ved den givne revision.\n"
+"    Hvis der ikke angves en revision, så bruges forældre-revisionen\n"
+"    til arbejdskataloget, eller spidsen hvis der ikke er hentet noget\n"
+"    arbejdskatalog.\n"
+"\n"
+"    Output kan gemmes i en fil hvis navn angives med et formatstreng.\n"
+"    Reglerne for formatteringen er de samme som for export-kommandoen\n"
+"    med følgende tilføjelser:\n"
+"\n"
+"    %s   grundnavn for filen som udskrives\n"
+"    %d   katalognavn for filen som blvier udskrevet\n"
+"         eller '.' hvis filen er i katalogets rod\n"
+"    %p   rod-relativ sti for filen som bliver udkrevet\n"
+"    "
 
 msgid ""
 "make a copy of an existing repository\n"
@@ -5525,24 +5568,29 @@
 "\n"
 "    With no arguments, show all repository head changesets.\n"
 "\n"
-"    Repository \"heads\" are changesets that don't have child\n"
-"    changesets. They are where development generally takes place and\n"
-"    are the usual targets for update and merge operations.\n"
+"    Repository \"heads\" are changesets with no child changesets. They are\n"
+"    where development generally takes place and are the usual targets\n"
+"    for update and merge operations.\n"
 "\n"
 "    If one or more REV is given, the \"branch heads\" will be shown for\n"
-"    the named branch associated with that revision. The name of the\n"
-"    branch is called the revision's branch tag.\n"
-"\n"
-"    Branch heads are revisions on a given named branch that do not have\n"
-"    any descendants on the same branch. A branch head could be a true head\n"
-"    or it could be the last changeset on a branch before a new branch\n"
-"    was created. If none of the branch heads are true heads, the branch\n"
-"    is considered inactive. If -c/--closed is specified, also show branch\n"
-"    heads marked closed (see hg commit --close-branch).\n"
-"\n"
-"    If STARTREV is specified only those heads (or branch heads) that\n"
-"    are descendants of STARTREV will be displayed.\n"
-"    "
+"    the named branch associated with the specified changeset(s).\n"
+"\n"
+"    Branch heads are changesets on a named branch with no descendants on\n"
+"    the same branch. A branch head could be a \"true\" (repository) head,\n"
+"    or it could be the last changeset on that branch before it was\n"
+"    merged into another branch, or it could be the last changeset on the\n"
+"    branch before a new branch was created. If none of the branch heads\n"
+"    are true heads, the branch is considered inactive.\n"
+"\n"
+"    If -c/--closed is specified, also show branch heads marked closed\n"
+"    (see hg commit --close-branch).\n"
+"\n"
+"    If STARTREV is specified, only those heads that are descendants of\n"
+"    STARTREV will be displayed.\n"
+"    "
+msgstr ""
+
+msgid "you must specify a branch to use --closed"
 msgstr ""
 
 #, python-format
@@ -6403,17 +6451,9 @@
 msgstr "mærkaten '%s' er ikke en lokal mærkat"
 
 #, python-format
-msgid "Removed tag %s"
-msgstr "Mærke %s er fjernet"
-
-#, python-format
 msgid "tag '%s' already exists (use -f to force)"
 msgstr "mærkaten '%s' eksisterer allerede (brug -f for at gennemtvinge)"
 
-#, python-format
-msgid "Added tag %s for changeset %s"
-msgstr "Tilføjede mærkat %s til ændring %s"
-
 msgid ""
 "list repository tags\n"
 "\n"
@@ -6511,6 +6551,9 @@
 "    Se 'hg help dates' for en liste af gyldige formater til -d/--date.\n"
 "    "
 
+msgid "cannot specify both -c/--check and -C/--clean"
+msgstr "man kan ikke angive både -c/--check og -C/--clean"
+
 msgid "uncommitted local changes"
 msgstr "udeponerede lokale ændringer"
 
@@ -6525,6 +6568,14 @@
 "    integrity of their crosslinks and indices.\n"
 "    "
 msgstr ""
+"verificer depotets integritet\n"
+"\n"
+"    Verificer integreteten af det aktuelle depot.\n"
+"\n"
+"    Dette vil lave en udførlig kontrol af depotets integritet.\n"
+"    Hashværdier og tjeksummer valideres for hver indgang i\n"
+"    historikfilen, manifæstet og fulgte filer. Desuden valideres\n"
+"    integriteten af deres krydslinks og indekser."
 
 msgid "output version and copyright information"
 msgstr "udskriv version- og copyrightinformation"
@@ -6539,6 +6590,11 @@
 "This is free software; see the source for copying conditions. There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
+"\n"
+"Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> og andre\n"
+"Dette er frit programmel; se kildekoden for kopieringsbetingelser. Der\n"
+"gives INGEN GARANTI; ikke engang for SALGBARHED eller EGNETHED FOR\n"
+"NOGET BESTEMT FORMÅL.\n"
 
 msgid "repository root directory or symbolic path name"
 msgstr "depotrodfolder eller symbolsk stinavn"
@@ -6721,10 +6777,10 @@
 msgstr "[-gbsr] [-c KOMMANDO] [REV]"
 
 msgid "set branch name even if it shadows an existing branch"
-msgstr ""
+msgstr "sæt grennavnet selv hvis det overskygger en eksisterende gren"
 
 msgid "reset branch name to parent branch name"
-msgstr ""
+msgstr "nulstil grennavnet til forældre-grennavnet"
 
 msgid "[-fC] [NAME]"
 msgstr "[-fC] [NAVN]"
@@ -6732,8 +6788,8 @@
 msgid "show only branches that have unmerged heads"
 msgstr "vil kun grene som har usammenføjne hoveder"
 
-msgid "show normal and closed heads"
-msgstr "vis normale og lukkede hoveder"
+msgid "show normal and closed branches"
+msgstr "vis normale og lukkede grene"
 
 msgid "[-a]"
 msgstr "[-a]"
@@ -6847,7 +6903,7 @@
 msgstr "[TILVALG]... [-r REV1 [-r REV2]] [FIL]..."
 
 msgid "diff against the second parent"
-msgstr ""
+msgstr "find forskelle i forhold til den anden forældre"
 
 msgid "[OPTION]... [-o OUTFILESPEC] REV..."
 msgstr "[TILVALG]... [-o UDFILSPECIFIKATION] REV..."
@@ -6879,8 +6935,11 @@
 msgid "show only heads which are descendants of REV"
 msgstr "vis kun hoveder som er efterkommere af REV"
 
-msgid "show only the active heads from open branches"
-msgstr "vis kun aktive hoveder fra åbne grene"
+msgid "show only the active branch heads from open branches"
+msgstr "vis kun de aktive grenhoveder fra åbne grene"
+
+msgid "show normal and closed branch heads"
+msgstr "vis normale og lukkede grenhoveder"
 
 msgid "[-r STARTREV] [REV]..."
 msgstr "[-r STARTREV] [REV]..."
@@ -7766,22 +7825,21 @@
 "    Mercurial supports several ways to specify individual revisions.\n"
 "\n"
 "    A plain integer is treated as a revision number. Negative integers\n"
-"    are treated as topological offsets from the tip, with -1 denoting\n"
-"    the tip. As such, negative numbers are only useful if you've\n"
-"    memorized your local tree numbers and want to save typing a single\n"
-"    digit. This editor suggests copy and paste.\n"
+"    are treated as sequential offsets from the tip, with -1 denoting\n"
+"    the tip, -2 denoting the revision prior to the tip, and so forth.\n"
 "\n"
 "    A 40-digit hexadecimal string is treated as a unique revision\n"
 "    identifier.\n"
 "\n"
 "    A hexadecimal string less than 40 characters long is treated as a\n"
-"    unique revision identifier, and referred to as a short-form\n"
+"    unique revision identifier and is referred to as a short-form\n"
 "    identifier. A short-form identifier is only valid if it is the\n"
 "    prefix of exactly one full-length identifier.\n"
 "\n"
-"    Any other string is treated as a tag name, which is a symbolic\n"
-"    name associated with a revision identifier. Tag names may not\n"
-"    contain the \":\" character.\n"
+"    Any other string is treated as a tag or branch name. A tag name is\n"
+"    a symbolic name associated with a revision identifier. A branch\n"
+"    name denotes the tipmost revision of that branch. Tag and branch\n"
+"    names must not contain the \":\" character.\n"
 "\n"
 "    The reserved name \"tip\" is a special tag that always identifies\n"
 "    the most recent revision.\n"
@@ -7943,13 +8001,19 @@
 "    - nonempty: Any text. Returns '(none)' if the string is empty.\n"
 "    - hgdate: Date. Returns the date as a pair of numbers:\n"
 "          \"1157407993 25200\" (Unix timestamp, timezone offset).\n"
-"    - isodate: Date. Returns the date in ISO 8601 format.\n"
+"    - isodate: Date. Returns the date in ISO 8601 format: \"2009-08-18\n"
+"          13:00 +0200\".\n"
+"    - isodatesec: Date. Returns the date in ISO 8601 format, including\n"
+"          seconds: \"2009-08-18 13:00:13 +0200\". See also the\n"
+"          rfc3339date filter.\n"
 "    - localdate: Date. Converts a date to local date.\n"
 "    - obfuscate: Any text. Returns the input text rendered as a\n"
 "          sequence of XML entities.\n"
 "    - person: Any text. Returns the text before an email address.\n"
 "    - rfc822date: Date. Returns a date using the same format used\n"
-"          in email headers.\n"
+"          in email headers: \"Tue, 18 Aug 2009 13:00:13 +0200\".\n"
+"    - rfc3339date: Date. Returns a date using the Internet date format\n"
+"          specified in RFC 3339: \"2009-08-18T13:00:13+02:00\".\n"
 "    - short: Changeset hash. Returns the short form of a changeset\n"
 "          hash, i.e. a 12-byte hexadecimal string.\n"
 "    - shortdate: Date. Returns a date like \"2006-09-18\".\n"
--- a/i18n/pt_BR.po	Tue Oct 06 10:45:23 2009 +0200
+++ b/i18n/pt_BR.po	Wed Oct 07 23:25:41 2009 -0500
@@ -9812,22 +9812,21 @@
 "    Mercurial supports several ways to specify individual revisions.\n"
 "\n"
 "    A plain integer is treated as a revision number. Negative integers\n"
-"    are treated as topological offsets from the tip, with -1 denoting\n"
-"    the tip. As such, negative numbers are only useful if you've\n"
-"    memorized your local tree numbers and want to save typing a single\n"
-"    digit. This editor suggests copy and paste.\n"
+"    are treated as sequential offsets from the tip, with -1 denoting\n"
+"    the tip, -2 denoting the revision prior to the tip, and so forth.\n"
 "\n"
 "    A 40-digit hexadecimal string is treated as a unique revision\n"
 "    identifier.\n"
 "\n"
 "    A hexadecimal string less than 40 characters long is treated as a\n"
-"    unique revision identifier, and referred to as a short-form\n"
+"    unique revision identifier and is referred to as a short-form\n"
 "    identifier. A short-form identifier is only valid if it is the\n"
 "    prefix of exactly one full-length identifier.\n"
 "\n"
-"    Any other string is treated as a tag name, which is a symbolic\n"
-"    name associated with a revision identifier. Tag names may not\n"
-"    contain the \":\" character.\n"
+"    Any other string is treated as a tag or branch name. A tag name is\n"
+"    a symbolic name associated with a revision identifier. A branch\n"
+"    name denotes the tipmost revision of that branch. Tag and branch\n"
+"    names must not contain the \":\" character.\n"
 "\n"
 "    The reserved name \"tip\" is a special tag that always identifies\n"
 "    the most recent revision.\n"
@@ -9846,23 +9845,22 @@
 "    individuais.\n"
 "\n"
 "    Um simples inteiro é tratado como um número de revisão. Inteiros\n"
-"    negativos são tratados como contados topologicamente a partir da\n"
-"    tip, com -1 denotando a tip. Assim, números negativos são úteis\n"
-"    apenas se você memorizou os números de sua árvore local e quiser\n"
-"    evitar digitar um único caractere. Este editor sugere copiar e\n"
-"    colar.\n"
+"    negativos são contados a partir da tip, com -1 denotando a tip,\n"
+"    -2 denotando a revisão anterior à tip, e assim por diante.\n"
 "\n"
 "    Uma string hexadecimal de 40 dígitos é tratada como um\n"
 "    identificador único de revisão.\n"
 "\n"
 "    Uma string hexadecimal de menos de 40 caracteres é tratada como\n"
-"    um identificador único de revisão, e referida como um\n"
-"    identificador curto. Um identificador curto é válido apenas se\n"
-"    for o prefixo de um identificador completo.\n"
-"\n"
-"    Qualquer outra string é tratada como um nome de etiqueta, que é\n"
-"    um nome simbólico associado a um identificador de revisão. Nomes\n"
-"    de etiqueta não podem conter o caractere \":\".\n"
+"    um identificador único de revisão, chamado de identificador\n"
+"    curto. Um identificador curto é válido apenas se for o prefixo\n"
+"    de um identificador completo.\n"
+"\n"
+"    Qualquer outra string é tratada como um nome de etiqueta ou\n"
+"    ramo. Um nome de etiqueta é um nome simbólico associado a um\n"
+"    identificador de revisão. Um nome de ramo denota a revisão mais\n"
+"    recente de tal ramo. Nomes de etiqueta ou de ramo não podem\n"
+"    conter o caractere \":\".\n"
 "\n"
 "    O nome reservado \"tip\" é uma etiqueta especial que sempre\n"
 "    identifica a revisão mais recente.\n"
@@ -10076,13 +10074,19 @@
 "    - nonempty: Any text. Returns '(none)' if the string is empty.\n"
 "    - hgdate: Date. Returns the date as a pair of numbers:\n"
 "          \"1157407993 25200\" (Unix timestamp, timezone offset).\n"
-"    - isodate: Date. Returns the date in ISO 8601 format.\n"
+"    - isodate: Date. Returns the date in ISO 8601 format: \"2009-08-18\n"
+"          13:00 +0200\".\n"
+"    - isodatesec: Date. Returns the date in ISO 8601 format, including\n"
+"          seconds: \"2009-08-18 13:00:13 +0200\". See also the\n"
+"          rfc3339date filter.\n"
 "    - localdate: Date. Converts a date to local date.\n"
 "    - obfuscate: Any text. Returns the input text rendered as a\n"
 "          sequence of XML entities.\n"
 "    - person: Any text. Returns the text before an email address.\n"
 "    - rfc822date: Date. Returns a date using the same format used\n"
-"          in email headers.\n"
+"          in email headers: \"Tue, 18 Aug 2009 13:00:13 +0200\".\n"
+"    - rfc3339date: Date. Returns a date using the Internet date format\n"
+"          specified in RFC 3339: \"2009-08-18T13:00:13+02:00\".\n"
 "    - short: Changeset hash. Returns the short form of a changeset\n"
 "          hash, i.e. a 12-byte hexadecimal string.\n"
 "    - shortdate: Date. Returns a date like \"2006-09-18\".\n"
@@ -10186,14 +10190,17 @@
 "    - nonempty: Qualquer texto. Devolve (none) se o texto for vazio.\n"
 "    - hgdate: Data. Devolve a data como um par de números:\n"
 "          \"1157407993 25200\" (timestamp Unix, defasagem de fuso)\n"
-"    - isodate: Data. Devolve a data em formato ISO 8601.\n"
+"    - isodate: Data. Devolve a data em formato ISO 8601: \"2009-08-18\n"
+"          13:00 +0200\".\n"
 "    - localdate: Data. Converte para data local.\n"
 "    - obfuscate: Qualquer texto. Devolve o texto de entrada\n"
 "          renderizado como uma seqüência de entidades XML.\n"
 "    - person: Qualquer texto. Devolve o texto antes de um endereço\n"
 "          de e-mail.\n"
-"    - rfc822date: Data. Devolve uma data usando o mesmo formato\n"
-"          utilizado em cabeçalhos de e-mail.\n"
+"    - rfc822date: Data. Devolve uma data usando o mesmo formato utilizado\n"
+"          em cabeçalhos de e-mail: \"Tue, 18 Aug 2009 13:00:13 +0200\".\n"
+"    - rfc3339date: Data. Devolve uma data usando o formato de data da\n"
+"          Internet especificado na RFC 3339: \"2009-08-18T13:00:13+02:00\".\n"
 "    - short: Hash do changeset. Devolve a forma curta do hash de\n"
 "          um changeset, ou seja, uma string hexadecimal de 12 bytes.\n"
 "    - shortdate: Data. Devolve uma data como \"2006-09-18\".\n"
--- a/mercurial/commands.py	Tue Oct 06 10:45:23 2009 +0200
+++ b/mercurial/commands.py	Wed Oct 07 23:25:41 2009 -0500
@@ -1356,23 +1356,25 @@
 
     With no arguments, show all repository head changesets.
 
-    Repository "heads" are changesets that don't have child
-    changesets. They are where development generally takes place and
-    are the usual targets for update and merge operations.
+    Repository "heads" are changesets with no child changesets. They are
+    where development generally takes place and are the usual targets
+    for update and merge operations.
 
     If one or more REV is given, the "branch heads" will be shown for
-    the named branch associated with that revision. The name of the
-    branch is called the revision's branch tag.
-
-    Branch heads are revisions on a given named branch that do not have
-    any descendants on the same branch. A branch head could be a true head
-    or it could be the last changeset on a branch before a new branch
-    was created. If none of the branch heads are true heads, the branch
-    is considered inactive. If -c/--closed is specified, also show branch
-    heads marked closed (see hg commit --close-branch).
-
-    If STARTREV is specified only those heads (or branch heads) that
-    are descendants of STARTREV will be displayed.
+    the named branch associated with the specified changeset(s).
+
+    Branch heads are changesets on a named branch with no descendants on
+    the same branch. A branch head could be a "true" (repository) head,
+    or it could be the last changeset on that branch before it was
+    merged into another branch, or it could be the last changeset on the
+    branch before a new branch was created. If none of the branch heads
+    are true heads, the branch is considered inactive.
+
+    If -c/--closed is specified, also show branch heads marked closed
+    (see hg commit --close-branch).
+
+    If STARTREV is specified, only those heads that are descendants of
+    STARTREV will be displayed.
     """
     if opts.get('rev'):
         start = repo.lookup(opts['rev'])
--- a/mercurial/streamclone.py	Tue Oct 06 10:45:23 2009 +0200
+++ b/mercurial/streamclone.py	Wed Oct 07 23:25:41 2009 -0500
@@ -48,8 +48,7 @@
         try:
             repo.ui.debug(_('scanning\n'))
             for name, ename, size in repo.store.walk():
-                # for backwards compat, name was partially encoded
-                entries.append((store.encodedir(name), size))
+                entries.append((name, size))
                 total_bytes += size
         finally:
             lock.release()
@@ -62,6 +61,7 @@
     yield '%d %d\n' % (len(entries), total_bytes)
     for name, size in entries:
         repo.ui.debug(_('sending %s (%d bytes)\n') % (name, size))
-        yield '%s\0%d\n' % (name, size)
+        # partially encode name over the wire for backwards compat
+        yield '%s\0%d\n' % (store.encodedir(name), size)
         for chunk in util.filechunkiter(repo.sopener(name), limit=size):
             yield chunk
--- a/mercurial/subrepo.py	Tue Oct 06 10:45:23 2009 +0200
+++ b/mercurial/subrepo.py	Wed Oct 07 23:25:41 2009 -0500
@@ -168,7 +168,7 @@
         self._repo.ui.note(_('removing subrepo %s\n') % self._path)
         hg.clean(self._repo, node.nullid, False)
 
-    def get(self, state):
+    def _get(self, state):
         source, revision = state
         try:
             self._repo.lookup(revision)
@@ -179,9 +179,13 @@
             other = hg.repository(self._repo.ui, srcurl)
             self._repo.pull(other)
 
+    def get(self, state):
+        self._get(state)
+        source, revision = state
         hg.clean(self._repo, revision, False)
 
     def merge(self, state):
+        self._get(state)
         hg.merge(self._repo, state[1], remind=False)
 
     def push(self, force):
--- a/mercurial/util.py	Tue Oct 06 10:45:23 2009 +0200
+++ b/mercurial/util.py	Wed Oct 07 23:25:41 2009 -0500
@@ -1277,6 +1277,11 @@
                 return array.array('h', arri)[1]
             except ValueError:
                 pass
+            except IOError, e: 
+                if e[0] == errno.EINVAL: 
+                    pass 
+                else: 
+                    raise 
     except ImportError:
         pass
     return 80
--- a/tests/test-http	Tue Oct 06 10:45:23 2009 +0200
+++ b/tests/test-http	Wed Oct 07 23:25:41 2009 -0500
@@ -5,6 +5,11 @@
 hg init test
 cd test
 echo foo>foo
+mkdir foo.d foo.d/bAr.hg.d foo.d/baR.d.hg
+echo foo>foo.d/foo
+echo bar>foo.d/bAr.hg.d/BaR
+echo bar>foo.d/baR.d.hg/bAR
+
 hg commit -A -m 1
 hg --config server.uncompressed=True serve -p $HGPORT -d --pid-file=../hg1.pid
 hg serve -p $HGPORT1 -d --pid-file=../hg2.pid
--- a/tests/test-http.out	Tue Oct 06 10:45:23 2009 +0200
+++ b/tests/test-http.out	Wed Oct 07 23:25:41 2009 -0500
@@ -1,4 +1,7 @@
 adding foo
+adding foo.d/bAr.hg.d/BaR
+adding foo.d/baR.d.hg/bAR
+adding foo.d/foo
 abort: cannot start server at ':20060':
 % clone via stream
 streaming all changes
@@ -10,31 +13,31 @@
 checking manifests
 crosschecking files in changesets and manifests
 checking files
-1 files, 1 changesets, 1 total revisions
+4 files, 1 changesets, 4 total revisions
 % try to clone via stream, should use pull instead
 requesting all changes
 adding changesets
 adding manifests
 adding file changes
-added 1 changesets with 1 changes to 1 files
+added 1 changesets with 4 changes to 4 files
 updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+4 files updated, 0 files merged, 0 files removed, 0 files unresolved
 % clone via pull
 requesting all changes
 adding changesets
 adding manifests
 adding file changes
-added 1 changesets with 1 changes to 1 files
+added 1 changesets with 4 changes to 4 files
 updating working directory
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+4 files updated, 0 files merged, 0 files removed, 0 files unresolved
 checking changesets
 checking manifests
 crosschecking files in changesets and manifests
 checking files
-1 files, 1 changesets, 1 total revisions
+4 files, 1 changesets, 4 total revisions
 adding bar
 % pull
-changegroup hook: HG_NODE=cfbd11a1fa315300a080c3de8fe36b0fc5820acf HG_SOURCE=pull HG_URL=http://localhost/ 
+changegroup hook: HG_NODE=5fed3813f7f5e1824344fdc9cf8f63bb662c292d HG_SOURCE=pull HG_URL=http://localhost/ 
 pulling from http://localhost/
 searching for changes
 adding changesets