# HG changeset patch # User Pierre-Yves David # Date 1446469245 0 # Node ID e16b1f86e9f604b510d355e6fa29a88eb5654b34 # Parent 58a309e9cf80d74d96e8c56cb95be20a4b130092# Parent 58b7f3e93bbab749ab16c09df12aae5ba7880708 merge with stable diff -r 58a309e9cf80 -r e16b1f86e9f6 .hgsigs --- a/.hgsigs Mon Oct 19 16:49:54 2015 +0200 +++ b/.hgsigs Mon Nov 02 13:00:45 2015 +0000 @@ -113,3 +113,5 @@ 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 diff -r 58a309e9cf80 -r e16b1f86e9f6 .hgtags --- a/.hgtags Mon Oct 19 16:49:54 2015 +0200 +++ b/.hgtags Mon Nov 02 13:00:45 2015 +0000 @@ -126,3 +126,5 @@ 21aa1c313b05b1a85f8ffa1120d51579ddf6bf24 3.5 1a45e49a6bed023deb229102a8903234d18054d3 3.5.1 9a466b9f9792e3ad7ae3fc6c43c3ff2e136b718d 3.5.2 +b66e3ca0b90c3095ea28dfd39aa24247bebf5c20 3.6-rc +47dd34f2e7272be9e3b2a5a83cd0d20be44293f4 3.6 diff -r 58a309e9cf80 -r e16b1f86e9f6 contrib/builddeb --- a/contrib/builddeb Mon Oct 19 16:49:54 2015 +0200 +++ b/contrib/builddeb Mon Nov 02 13:00:45 2015 +0000 @@ -46,6 +46,13 @@ fi gethgversion +debver="$version" +if [ -n "$type" ] ; then + debver="$debver~$type" +fi +if [ -n "$distance" ] ; then + debver="$debver+$distance-$node" +fi control=debian/control changelog=debian/changelog @@ -61,7 +68,7 @@ # This looks like sed -i, but sed -i behaves just differently enough # between BSD and GNU sed that I gave up and did the dumb thing. - sed "s/__VERSION__/$version/" < $changelog > $changelog.tmp + sed "s/__VERSION__/$debver/" < $changelog > $changelog.tmp date=$(date --rfc-2822) sed "s/__DATE__/$date/" < $changelog.tmp > $changelog rm $changelog.tmp @@ -79,6 +86,6 @@ find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \ -type f -newer $control -print0 | \ xargs -Inarf -0 mv narf "$OUTPUTDIR" - echo "Built packages for $version-$release:" + echo "Built packages for $debver:" find "$OUTPUTDIR" -type f -newer $control -name '*.deb' fi diff -r 58a309e9cf80 -r e16b1f86e9f6 contrib/buildrpm --- a/contrib/buildrpm Mon Oct 19 16:49:54 2015 +0200 +++ b/contrib/buildrpm Mon Nov 02 13:00:45 2015 +0000 @@ -49,6 +49,18 @@ gethgversion +# TODO: handle distance/node set, and type set + +if [ -z "$type" ] ; then + release=1 +else + release=0.9_$type +fi + +if [ -n "$distance" ] ; then + release=$release+$distance_$node +fi + if [ "$PYTHONVER" ]; then release=$release+$PYTHONVER RPMPYTHONVER=$PYTHONVER diff -r 58a309e9cf80 -r e16b1f86e9f6 contrib/packagelib.sh --- a/contrib/packagelib.sh Mon Oct 19 16:49:54 2015 +0200 +++ b/contrib/packagelib.sh Mon Nov 02 13:00:45 2015 +0000 @@ -1,3 +1,12 @@ +# Extract version number into 4 parts, some of which may be empty: +# +# version: the numeric part of the most recent tag. Will always look like 1.3. +# +# type: if an rc build, "rc", otherwise empty +# +# distance: the distance from the nearest tag, or empty if built from a tag +# +# node: the node|short hg was built from, or empty if built from a tag gethgversion() { make clean make local || make local PURE=--pure @@ -7,13 +16,20 @@ hgversion=`$HG version | sed -ne 's/.*(version \(.*\))$/\1/p'` + if echo $hgversion | grep + > /dev/null 2>&1 ; then + tmp=`echo $hgversion | cut -d+ -f 2` + hgversion=`echo $hgversion | cut -d+ -f 1` + distance=`echo $tmp | cut -d- -f 1` + node=`echo $tmp | cut -d- -f 2` + else + distance='' + node='' + fi if echo $hgversion | grep -- '-' > /dev/null 2>&1; then - # nightly build case, version is like 1.3.1+250-20b91f91f9ca version=`echo $hgversion | cut -d- -f1` - release=`echo $hgversion | cut -d- -f2 | sed -e 's/+.*//'` + type=`echo $hgversion | cut -d- -f2` else - # official tag, version is like 1.3.1 - version=`echo $hgversion | sed -e 's/+.*//'` - release='0' + version=$hgversion + type='' fi } diff -r 58a309e9cf80 -r e16b1f86e9f6 hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py Mon Oct 19 16:49:54 2015 +0200 +++ b/hgext/largefiles/lfutil.py Mon Nov 02 13:00:45 2015 +0000 @@ -10,7 +10,6 @@ import os import platform -import shutil import stat import copy @@ -207,7 +206,15 @@ util.makedirs(os.path.dirname(repo.wjoin(filename))) # The write may fail before the file is fully written, but we # don't use atomic writes in the working copy. - shutil.copy(path, repo.wjoin(filename)) + dest = repo.wjoin(filename) + with open(path, 'rb') as srcfd: + with open(dest, 'wb') as destfd: + gothash = copyandhash(srcfd, destfd) + if gothash != hash: + repo.ui.warn(_('%s: data corruption in %s with hash %s\n') + % (filename, path, gothash)) + util.unlink(dest) + return False return True def copytostore(repo, rev, file, uploaded=False): @@ -562,8 +569,11 @@ for f in match._files: fstandin = standin(f) - # ignore known largefiles and standins - if f in lfiles or fstandin in standins: + # For largefiles, only one of the normal and standin should be + # committed (except if one of them is a remove). + # Thus, skip plain largefile names but keep the standin. + if (f in lfiles or fstandin in standins) and \ + repo.dirstate[f] != 'r' and repo.dirstate[fstandin] != 'r': continue actualfiles.append(f) diff -r 58a309e9cf80 -r e16b1f86e9f6 hgext/largefiles/proto.py --- a/hgext/largefiles/proto.py Mon Oct 19 16:49:54 2015 +0200 +++ b/hgext/largefiles/proto.py Mon Nov 02 13:00:45 2015 +0000 @@ -86,15 +86,14 @@ # input file-like into a bundle before sending it, so we can't use # it ... if issubclass(self.__class__, httppeer.httppeer): - res = None + res = self._call('putlfile', data=fd, sha=sha, + headers={'content-type':'application/mercurial-0.1'}) try: - res = self._call('putlfile', data=fd, sha=sha, - headers={'content-type':'application/mercurial-0.1'}) d, output = res.split('\n', 1) for l in output.splitlines(True): self.ui.warn(_('remote: '), l) # assume l ends with \n return int(d) - except (ValueError, urllib2.HTTPError): + except ValueError: self.ui.warn(_('unexpected putlfile response: %r\n') % res) return 1 # ... but we can't use sshrepository._call because the data= diff -r 58a309e9cf80 -r e16b1f86e9f6 hgext/mq.py --- a/hgext/mq.py Mon Oct 19 16:49:54 2015 +0200 +++ b/hgext/mq.py Mon Nov 02 13:00:45 2015 +0000 @@ -847,7 +847,6 @@ try: tr.abort() finally: - repo.invalidate() self.invalidate() raise finally: diff -r 58a309e9cf80 -r e16b1f86e9f6 i18n/check-translation.py --- a/i18n/check-translation.py Mon Oct 19 16:49:54 2015 +0200 +++ b/i18n/check-translation.py Mon Nov 02 13:00:45 2015 +0000 @@ -71,12 +71,14 @@ deprecatedpe = None @scanner() def deprecatedsetup(pofile): - pes = [p for p in pofile if p.msgid == 'DEPRECATED'] + pes = [p for p in pofile + if ((p.msgid == 'DEPRECATED' or p.msgid == '(DEPRECATED)') and + p.msgstr)] if len(pes): global deprecatedpe deprecatedpe = pes[0] -@fatalchecker('(DEPRECATED)') +@fatalchecker(r'\(DEPRECATED\)') def deprecated(pe): """Check for DEPRECATED >>> ped = polib.POEntry( @@ -102,9 +104,13 @@ True >>> for e in deprecated(pe): print e msgstr inconsistently translated (DEPRECATED) + >>> pe = polib.POEntry( + ... msgid = 'Something (DEPRECATED, foo bar)', + ... msgstr= 'something (DETACERPED, foo bar)') + >>> match(deprecated, pe) """ if not ('(DEPRECATED)' in pe.msgstr or - (deprecatedpe and deprecatedpe.msgstr and + (deprecatedpe and deprecatedpe.msgstr in pe.msgstr)): yield "msgstr inconsistently translated (DEPRECATED)" diff -r 58a309e9cf80 -r e16b1f86e9f6 i18n/ja.po --- a/i18n/ja.po Mon Oct 19 16:49:54 2015 +0200 +++ b/i18n/ja.po Mon Nov 02 13:00:45 2015 +0000 @@ -161,8 +161,8 @@ msgstr "" "Project-Id-Version: Mercurial\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-08-31 18:01+0900\n" -"PO-Revision-Date: 2015-08-31 23:05+0900\n" +"POT-Creation-Date: 2015-10-30 21:04+0900\n" +"PO-Revision-Date: 2015-11-01 05:05+0900\n" "Last-Translator: Japanese translation team \n" "Language-Team: Japanese\n" "Language: ja\n" @@ -177,7 +177,7 @@ #, python-format msgid " (default: %s)" -msgstr " (既定値: %s)" +msgstr " (デフォルト値: %s)" msgid "Options" msgstr "オプション" @@ -838,8 +838,8 @@ " ( \"()\") が必須です。 バグに対する作業時間を表す、 小数点数に合致する\n" " ```` 名グループも記述可能です。 名前付きグループ記述が無い場合、\n" " 最初の \"()\" グループがバグID群に、 作業時間の更新は無し、\n" -" とみなされます。 デフォルトの正規表現は ``Bug 1234``、 ``Bug no.\n" -" 1234``、 ``Bug number 1234``、 ``Bugs 1234,5678``、 ``Bug 1234 and\n" +" とみなされます。 デフォルトの正規表現は ``Bug 1234``, ``Bug no.\n" +" 1234``, ``Bug number 1234``, ``Bugs 1234,5678``, ``Bug 1234 and\n" " 5678`` および類似の形式に加えて、 前置詞に ``h`` または ``hours``\n" " が付けられた時間数 (例: ``hours 1.5``) が続くものに合致します。\n" " 文字大小は無視されます。" @@ -865,8 +865,8 @@ " ( \"()\") が必須です。 バグに対する作業時間を表す、 小数点数に合致する\n" " ```` 名グループも記述可能です。 名前付きグループ記述が無い場合、\n" " 最初の \"()\" グループがバグID群に、 作業時間の更新は無し、\n" -" とみなされます。 デフォルトの正規表現は、 ``Fixes 1234``、 ``Fixes bug\n" -" 1234``、 ``Fixes bugs 1234,5678``、 ``Fixes 1234 and 5678``\n" +" とみなされます。 デフォルトの正規表現は、 ``Fixes 1234``, ``Fixes bug\n" +" 1234``, ``Fixes bugs 1234,5678``, ``Fixes 1234 and 5678``\n" " および類似の形式に加えて、 前置詞に ``h`` または ``hours``\n" " が付けられた時間数 (例: ``hours 1.5``) が続くものに合致します。\n" " 文字大小は無視されます。" @@ -1094,7 +1094,7 @@ msgstr "" "bugzilla.notify\n" " バグ情報の更新通知を、 Bugzilla にメール送信させるコマンド。\n" -" 3つのキーワード ``bzdir``、 ``id`` (バグ ID) および ``user``\n" +" 3つのキーワード ``bzdir``, ``id`` (バグ ID) および ``user``\n" " (リビジョン作成者の Bugzilla メールアドレス) が、 置換指定可能です。\n" " デフォルト値は MySQL のバージョンに依存しており、 2.18 版以降では、\n" " \"cd %(bzdir)s && perl -T contrib/sendbugmail.pl %(id)s %(user)s\"\n" @@ -1131,7 +1131,7 @@ "with a web interface at ``http://my-project.org/hg``. ::" msgstr "" "以下は XMLRPC 連携の設定例です。 ``http://my-project.org/bugzilla`` の\n" -"Bugzilla と連携し、 ユーザ名 ``bugmail@my-project.org``、 パスワード\n" +"Bugzilla と連携し、 ユーザ名 ``bugmail@my-project.org``, パスワード\n" "``plugh`` でログインします。 URL ``http://my-project.org/hg``\n" "配下でアクセスする、 ``/var/local/hg/repos/`` 配下の複数リポジトリでの、\n" "設定共有を想定しています::" @@ -1174,7 +1174,7 @@ "``bugzilla@my-project.org``. ::" msgstr "" "以下は XMLRPC+email 連携の設定例です。 ``http://my-project.org/bugzilla``\n" -"の Bugzilla と連携し、 ユーザ名 ``bugmail@my-project.org``、 パスワード\n" +"の Bugzilla と連携し、 ユーザ名 ``bugmail@my-project.org``, パスワード\n" "``plugh`` でログインします。 URL ``http://my-project.org/hg``\n" "配下でアクセスする、 ``/var/local/hg/repos/`` 配下の複数リポジトリでの、\n" "設定共有を想定しています。 コメントの追加は、 Bugzilla のメールアドレス\n" @@ -1219,9 +1219,9 @@ "with a web interface at ``http://my-project.org/hg``. ::" msgstr "" "以下は MySQL 連携の設定例です。 ``/opt/bugzilla-3.2`` にインストールされた\n" -"Bugzilla 3.2 を想定しています。 MySQL サーバのホスト名が ``localhost``、\n" -"Bugzilla データベース名が ``bugs``、 MySQL サーバへのアクセスに、\n" -"ユーザ名 ``bugs``、 パスワード ``XYZZY`` を使用します。 URL\n" +"Bugzilla 3.2 を想定しています。 MySQL サーバのホスト名が ``localhost``,\n" +"Bugzilla データベース名が ``bugs``, MySQL サーバへのアクセスに、\n" +"ユーザ名 ``bugs``, パスワード ``XYZZY`` を使用します。 URL\n" "``http://my-project.org/hg``\n" "配下でアクセスする、\n" "``/var/local/hg/repos/`` 配下の複数リポジトリでの、\n" @@ -1383,7 +1383,7 @@ "以下のようなデータの扱いで、 セキュリティ的/法的に必要とされるケースです::" msgid "" -" * Passwords, private keys, crytographic material\n" +" * Passwords, private keys, cryptographic material\n" " * Licensed data/code/libraries for which the license has expired\n" " * Personally Identifiable Information or other private data" msgstr "" @@ -1630,6 +1630,297 @@ msgid "skipping malformed alias: %s\n" msgstr "不正な形式の別名を無視: %s\n" +msgid "advertise pre-generated bundles to seed clones (experimental)" +msgstr "" + +msgid "" +"\"clonebundles\" is a server-side extension used to advertise the existence\n" +"of pre-generated, externally hosted bundle files to clients that are\n" +"cloning so that cloning can be faster, more reliable, and require less\n" +"resources on the server." +msgstr "" + +msgid "" +"Cloning can be a CPU and I/O intensive operation on servers. Traditionally,\n" +"the server, in response to a client's request to clone, dynamically " +"generates\n" +"a bundle containing the entire repository content and sends it to the " +"client.\n" +"There is no caching on the server and the server will have to redundantly\n" +"generate the same outgoing bundle in response to each clone request. For\n" +"servers with large repositories or with high clone volume, the load from\n" +"clones can make scaling the server challenging and costly." +msgstr "" + +msgid "" +"This extension provides server operators the ability to offload potentially\n" +"expensive clone load to an external service. Here's how it works." +msgstr "" + +msgid "" +"1. A server operator establishes a mechanism for making bundle files " +"available\n" +" on a hosting service where Mercurial clients can fetch them.\n" +"2. A manifest file listing available bundle URLs and some optional metadata\n" +" is added to the Mercurial repository on the server.\n" +"3. A client initiates a clone against a clone bundles aware server.\n" +"4. The client sees the server is advertising clone bundles and fetches the\n" +" manifest listing available bundles.\n" +"5. The client filters and sorts the available bundles based on what it\n" +" supports and prefers.\n" +"6. The client downloads and applies an available bundle from the\n" +" server-specified URL.\n" +"7. The client reconnects to the original server and performs the equivalent\n" +" of :hg:`pull` to retrieve all repository data not in the bundle. (The\n" +" repository could have been updated between when the bundle was created\n" +" and when the client started the clone.)" +msgstr "" + +msgid "" +"Instead of the server generating full repository bundles for every clone\n" +"request, it generates full bundles once and they are subsequently reused to\n" +"bootstrap new clones. The server may still transfer data at clone time.\n" +"However, this is only data that has been added/changed since the bundle was\n" +"created. For large, established repositories, this can reduce server load " +"for\n" +"clones to less than 1% of original." +msgstr "" + +msgid "To work, this extension requires the following of server operators:" +msgstr "" + +msgid "" +"* Generating bundle files of repository content (typically periodically,\n" +" such as once per day).\n" +"* A file server that clients have network access to and that Python knows\n" +" how to talk to through its normal URL handling facility (typically a\n" +" HTTP server).\n" +"* A process for keeping the bundles manifest in sync with available bundle\n" +" files." +msgstr "" + +msgid "" +"Strictly speaking, using a static file hosting server isn't required: a " +"server\n" +"operator could use a dynamic service for retrieving bundle data. However,\n" +"static file hosting services are simple and scalable and should be " +"sufficient\n" +"for most needs." +msgstr "" + +msgid "" +"Bundle files can be generated with the :hg:`bundle` comand. Typically\n" +":hg:`bundle --all` is used to produce a bundle of the entire repository." +msgstr "" + +msgid "" +":hg:`debugcreatestreamclonebundle` can be used to produce a special\n" +"*streaming clone bundle*. These are bundle files that are extremely " +"efficient\n" +"to produce and consume (read: fast). However, they are larger than\n" +"traditional bundle formats and require that clients support the exact set\n" +"of repository data store formats in use by the repository that created " +"them.\n" +"Typically, a newer server can serve data that is compatible with older " +"clients.\n" +"However, *streaming clone bundles* don't have this guarantee. **Server\n" +"operators need to be aware that newer versions of Mercurial may produce\n" +"streaming clone bundles incompatible with older Mercurial versions.**" +msgstr "" + +msgid "" +"The list of requirements printed by :hg:`debugcreatestreamclonebundle` " +"should\n" +"be specified in the ``requirements`` parameter of the *bundle specification\n" +"string* for the ``BUNDLESPEC`` manifest property described below. e.g.\n" +"``BUNDLESPEC=none-packed1;requirements%3Drevlogv1``." +msgstr "" + +msgid "" +"A server operator is responsible for creating a ``.hg/clonebundles." +"manifest``\n" +"file containing the list of available bundle files suitable for seeding\n" +"clones. If this file does not exist, the repository will not advertise the\n" +"existence of clone bundles when clients connect." +msgstr "" + +msgid "" +"The manifest file contains a newline (\n" +") delimited list of entries." +msgstr "" + +msgid "" +"Each line in this file defines an available bundle. Lines have the format:" +msgstr "" + +msgid " [=[ =]]" +msgstr "" + +msgid "" +"That is, a URL followed by an optional, space-delimited list of key=value\n" +"pairs describing additional properties of this bundle. Both keys and values\n" +"are URI encoded." +msgstr "" + +msgid "" +"Keys in UPPERCASE are reserved for use by Mercurial and are defined below.\n" +"All non-uppercase keys can be used by site installations. An example use\n" +"for custom properties is to use the *datacenter* attribute to define which\n" +"data center a file is hosted in. Clients could then prefer a server in the\n" +"data center closest to them." +msgstr "" + +msgid "The following reserved keys are currently defined:" +msgstr "" + +msgid "" +"BUNDLESPEC\n" +" A \"bundle specification\" string that describes the type of the bundle." +msgstr "" + +msgid "" +" These are string values that are accepted by the \"--type\" argument of\n" +" :hg:`bundle`." +msgstr "" + +msgid "" +" The values are parsed in strict mode, which means they must be of the\n" +" \"-\" form. See\n" +" mercurial.exchange.parsebundlespec() for more details." +msgstr "" + +msgid "" +" Clients will automatically filter out specifications that are unknown or\n" +" unsupported so they won't attempt to download something that likely " +"won't\n" +" apply." +msgstr "" + +msgid "" +" The actual value doesn't impact client behavior beyond filtering:\n" +" clients will still sniff the bundle type from the header of downloaded\n" +" files." +msgstr "" + +msgid "" +" **Use of this key is highly recommended**, as it allows clients to\n" +" easily skip unsupported bundles." +msgstr "" + +msgid "" +"REQUIRESNI\n" +" Whether Server Name Indication (SNI) is required to connect to the URL.\n" +" SNI allows servers to use multiple certificates on the same IP. It is\n" +" somewhat common in CDNs and other hosting providers. Older Python\n" +" versions do not support SNI. Defining this attribute enables clients\n" +" with older Python versions to filter this entry without experiencing\n" +" an opaque SSL failure at connection time." +msgstr "" + +msgid "" +" If this is defined, it is important to advertise a non-SNI fallback\n" +" URL or clients running old Python releases may not be able to clone\n" +" with the clonebundles facility." +msgstr "" + +msgid " Value should be \"true\"." +msgstr "" + +msgid "" +"Manifests can contain multiple entries. Assuming metadata is defined, " +"clients\n" +"will filter entries from the manifest that they don't support. The " +"remaining\n" +"entries are optionally sorted by client preferences\n" +"(``experimental.clonebundleprefers`` config option). The client then " +"attempts\n" +"to fetch the bundle at the first URL in the remaining list." +msgstr "" + +msgid "" +"**Errors when downloading a bundle will fail the entire clone operation:\n" +"clients do not automatically fall back to a traditional clone.** The reason\n" +"for this is that if a server is using clone bundles, it is probably doing " +"so\n" +"because the feature is necessary to help it scale. In other words, there\n" +"is an assumption that clone load will be offloaded to another service and\n" +"that the Mercurial server isn't responsible for serving this clone load.\n" +"If that other service experiences issues and clients start mass falling back " +"to\n" +"the original Mercurial server, the added clone load could overwhelm the " +"server\n" +"due to unexpected load and effectively take it offline. Not having clients\n" +"automatically fall back to cloning from the original server mitigates this\n" +"scenario." +msgstr "" + +msgid "" +"Because there is no automatic Mercurial server fallback on failure of the\n" +"bundle hosting service, it is important for server operators to view the " +"bundle\n" +"hosting service as an extension of the Mercurial server in terms of\n" +"availability and service level agreements: if the bundle hosting service " +"goes\n" +"down, so does the ability for clients to clone. Note: clients will see a\n" +"message informing them how to bypass the clone bundles facility when a " +"failure\n" +"occurs. So server operators should prepare for some people to follow these\n" +"instructions when a failure occurs, thus driving more load to the original\n" +"Mercurial server when the bundle hosting service fails." +msgstr "" + +msgid "" +"The following config options influence the behavior of the clone bundles\n" +"feature:" +msgstr "" + +msgid "" +"ui.clonebundleadvertise\n" +" Whether the server advertises the existence of the clone bundles feature\n" +" to compatible clients that aren't using it." +msgstr "" + +msgid "" +" When this is enabled (the default), a server will send a message to\n" +" compatible clients performing a traditional clone informing them of the\n" +" available clone bundles feature. Compatible clients are those that " +"support\n" +" bundle2 and are advertising support for the clone bundles feature." +msgstr "" + +msgid "" +"ui.clonebundlefallback\n" +" Whether to automatically fall back to a traditional clone in case of\n" +" clone bundles failure. Defaults to false for reasons described above." +msgstr "" + +msgid "" +"experimental.clonebundles\n" +" Whether the clone bundles feature is enabled on clients. Defaults to true." +msgstr "" + +msgid "" +"experimental.clonebundleprefers\n" +" List of \"key=value\" properties the client prefers in bundles. " +"Downloaded\n" +" bundle manifests will be sorted by the preferences in this list. e.g.\n" +" the value \"BUNDLESPEC=gzip-v1, BUNDLESPEC=bzip2=v1\" will prefer a " +"gzipped\n" +" version 1 bundle type then bzip2 version 1 bundle type." +msgstr "" + +msgid "" +" If not defined, the order in the manifest will be used and the first\n" +" available bundle will be downloaded.\n" +msgstr "" + +msgid "" +"this server supports the experimental \"clone bundles\" feature that should " +"enable faster and more reliable cloning\n" +"help test it by setting the \"experimental.clonebundles\" config flag to " +"\"true\"" +msgstr "" + msgid "colorize output from some commands" msgstr "コマンド出力のカラー化" @@ -1975,8 +2266,8 @@ msgid "import revisions from foreign VCS repositories into Mercurial" msgstr "他の構成管理ツールから Mercurial への履歴取り込み" -msgid "username mapping filename (DEPRECATED, use --authormap instead)" -msgstr "ユーザ名変換ファイルの指定 (非推奨: --authormap を使用してください)" +msgid "username mapping filename (DEPRECATED) (use --authormap instead)" +msgstr "ユーザ名変換ファイルの指定 (非推奨) (--authormap を使用してください)" msgid "source repository type" msgstr "変換元リポジトリ種別" @@ -2469,7 +2760,7 @@ " そちらの内容が格納されます。 ``svn://repo/path/branches``\n" " が存在する場合、 サブディレクトリ群を、 ブランチ一覧候補とみなします。\n" " ``svn://repo/path/tags`` が存在する場合、 変換後リビジョンを指す、\n" -" タグの特定に使用されます。 ``trunk``、 ``branches`` および ``tags``\n" +" タグの特定に使用されます。 ``trunk``, ``branches`` および ``tags``\n" " の参照先は、 以下のオプションで上書き可能です。 これらの指定の際には、\n" " 変換元 URL に対する相対パスか、 空白 (= 自動検出抑止) を指定します。" @@ -2562,6 +2853,15 @@ msgstr "" msgid "" +" :convert.git.skipsubmodules: does not convert root level .gitmodules " +"files\n" +" or files with 160000 mode indicating a submodule. Default is False." +msgstr "" +" :convert.git.skipsubmodules: ルートレベルの .gitmodules ファイル、\n" +" 又は、 モード 160000 によりサブモジュールを意味するファイルの、\n" +" 変換の抑止 (デフォルト値: False)" + +msgid "" " Perforce Source\n" " ###############" msgstr "" @@ -2782,7 +3082,7 @@ msgid "%s.%s symlink has no target" msgstr "%s.%s はシンボリックリンク先がありません" -msgid "convert from cvs do not support --full" +msgid "convert from cvs does not support --full" msgstr "cvs からの変換では --full は未サポートです" #, python-format @@ -2881,6 +3181,9 @@ msgid "spliced in %s as parents of %s\n" msgstr "%s を %s の親として継ぎ合わせ\n" +msgid " and " +msgstr " と " + msgid "scanning source...\n" msgstr "変換元リポジトリの走査中...\n" @@ -3038,7 +3341,7 @@ msgid "failed to detect repository format!" msgstr "リポジトリ形式の判定に失敗!" -msgid "convert from darcs do not support --full" +msgid "convert from darcs does not support --full" msgstr "darcs からの変換では --full は未サポートです" msgid "internal calling inconsistency" @@ -3100,7 +3403,7 @@ msgid "warning: unable to parse .gitmodules in %s\n" msgstr "警告: %s における .gitmodules の解析に失敗\n" -msgid "convert from git do not support --full" +msgid "convert from git does not support --full" msgstr "git からの変換では --full は未サポートです" #, python-format @@ -3127,7 +3430,7 @@ "tree analysis stopped because it points to an unregistered archive %s...\n" msgstr "未登録アーカイブ %s の参照によりツリー解析を中止...\n" -msgid "convert from arch do not support --full" +msgid "convert from arch does not support --full" msgstr "arch からの変換では --full は未サポートです" #, python-format @@ -3158,6 +3461,14 @@ msgid "%s is missing from %s/.hg/shamap\n" msgstr "%s は %s/.hg/shamap 中にはありません\n" +#, python-format +msgid "" +"unable to convert merge commit since target parents do not merge cleanly " +"(file %s, parents %s and %s)" +msgstr "" +"非対話的なマージでは不十分だったため、マージ実施リビジョンを変換できません" +"(ファイル %s を %s と %s でマージ)" + msgid "filtering out empty revision\n" msgstr "空リビジョンの除外中\n" @@ -3175,9 +3486,6 @@ "変換先リポジトリにリビジョン %s がありません(clonebranches=true での検索は未" "実装です)" -msgid "mercurial source does not support specifying multiple revisions" -msgstr "mercurial 形式からの変換では、複数リビジョン指定は未サポートです" - #, python-format msgid "%s is not a valid start revision" msgstr "%s は正しい開始リビジョンではありません" @@ -3221,7 +3529,7 @@ msgid "mtn command '%s' returned %s" msgstr "mtn コマンド '%s' の実行結果: %s" -msgid "convert from monotone do not support --full" +msgid "convert from monotone does not support --full" msgstr "monotone からの変換では --full は未サポートです" #, python-format @@ -3255,7 +3563,7 @@ msgid "cannot find source for copied file: %s@%s\n" msgstr "複製元ファイルが見つかりません: %s@%s\n" -msgid "convert from p4 do not support --full" +msgid "convert from p4 does not support --full" msgstr "p4 からの変換では --full は未サポートです" msgid "debugsvnlog could not load Subversion python bindings" @@ -3425,7 +3733,7 @@ "``native`` is an alias for checking out in the platform's default line\n" "ending: ``LF`` on Unix (including Mac OS X) and ``CRLF`` on\n" "Windows. Note that ``BIN`` (do nothing to line endings) is Mercurial's\n" -"default behaviour; it is only needed if you need to override a later,\n" +"default behavior; it is only needed if you need to override a later,\n" "more general pattern." msgstr "" "``CRLF`` または ``LF`` が指定されたファイルは、 作業領域への取り出しや、\n" @@ -3718,6 +4026,12 @@ msgid "cannot specify --rev and --change at the same time" msgstr "--rev と --change は同時には指定できません" +msgid "--patch cannot be used with --subrepos" +msgstr "--patch と --subrepos は併用できません" + +msgid "--patch requires two revisions" +msgstr "--patch には2つのリビジョン指定が必要です" + msgid "cleaning up temp directory\n" msgstr "一時ディレクトリの破棄中\n" @@ -3739,6 +4053,9 @@ msgid "change made by revision" msgstr "当該リビジョンにおける変更内容の表示" +msgid "compare patches for two revisions" +msgstr "2つのリビジョンに対するパッチの比較" + msgid "hg extdiff [OPT]... [FILE]..." msgstr "hg extdiff [OPT]... [FILE]..." @@ -4369,18 +4686,31 @@ "本エクステンションには、 シンタックスハイライトライブラリの Pygments\n" "が必要です: http://pygments.org/" -msgid "There is a single configuration option::" +msgid "There are the following configuration options::" msgstr "本エクステンションに対しては、以下の設定のみが可能です::" msgid "" " [web]\n" -" pygments_style =