Merge lp:~songofacandy/bzr/i18n into lp:bzr

Proposed by methane
Status: Work in progress
Proposed branch: lp:~songofacandy/bzr/i18n
Merge into: lp:bzr
Diff against target: 10619 lines (+10321/-20)
19 files modified
Makefile (+20/-0)
bzrlib/builtins.py (+10/-0)
bzrlib/commands.py (+22/-13)
bzrlib/errors.py (+16/-0)
bzrlib/export_pot.py (+250/-0)
bzrlib/help.py (+4/-2)
bzrlib/help_topics/__init__.py (+2/-1)
bzrlib/help_topics/en/debug-flags.txt (+1/-0)
bzrlib/i18n.py (+129/-0)
bzrlib/option.py (+3/-1)
bzrlib/tests/__init__.py (+2/-0)
bzrlib/tests/test_export_pot.py (+147/-0)
bzrlib/tests/test_utextwrap.py (+192/-0)
bzrlib/trace.py (+5/-1)
bzrlib/utextwrap.py (+243/-0)
po/bzr.pot (+8931/-0)
setup.py (+11/-2)
tools/build_mo.py (+125/-0)
tools/msgfmt.py (+208/-0)
To merge this branch: bzr merge lp:~songofacandy/bzr/i18n
Reviewer Review Type Date Requested Status
Vincent Ladeuil Needs Information
Review via email: mp+59890@code.launchpad.net

Description of the change

i18n implementation for bzr.

To post a comment you must log in.
lp:~songofacandy/bzr/i18n updated
5819. By Canonical.com Patch Queue Manager <email address hidden>

(jelmer) Don't load working tree implementations during 'bzr serve'. (Jelmer
 Vernooij)

5820. By Canonical.com Patch Queue Manager <email address hidden>

(jelmer) Small fixes to developer documentation. (Jonathan Riddell)

Revision history for this message
Vincent Ladeuil (vila) wrote :

Thanks for working on that !

12852 lines, you beat the record :-)

I'm afraid this makes this proposal very hard to review (lp just cut your proposal at 5.000 lines) :-/

Can you find a way to split it into several ones and use the pre-requisite branches in the mps to simplify their reviews ?

You may want to use bzr-pipeline or bzr-loom to simplify the work on your side so you can iterate on each part during the review.

A couple of remarks for the parts I was able to read:
- in bzrlib/utextwrap.py, you have tests protected by if __name == 'main', better put that in a proper file under bzrlib/tests

- in the same file you use width=70, how does that interact with th rest of bzrlib (osutils.terminal_width for example) ?

- you seem to import code from the qbzr project, I think our policy to put these kind of files under bzrlib/util, not bzrlib/extras (I'd also like a second opinion about whether this kind of copy is appropriate, IANAL, etc),

- extras/msgfmt.py doesn't specify a license at all 8-/ There I have no idea about whether we are even allowed to add this to the bzr code...

- extras/polib.py MIT license and the file says the LICENSE file is provided, again no idea about what to do with that :-(

I wonder if we are importing a lot of stuff that may be available in proper packages that we can then only requires as build dependencies.

From a higher level, we should make sure that we can use launchpad and its translation services and focus on the minimal infrastructure we need to provide.

review: Needs Information
Revision history for this message
methane (songofacandy) wrote :

Thank you for reviewing.

>12852 lines, you beat the record :-)

9966 lines of 12852 is bzr.pot and bzr-ja.po.
These files can be ignored before i18n is merged. I'll remove these files.

> I'm afraid this makes this proposal very hard to review (lp just cut your proposal at 5.000 lines) :-/

OK, I'll split this changes to some branches. Should I make merge request for each branch?
Or the Launchpad provides any feature about handling for this situation?

= About bzrlib/utextwrap =
> - in bzrlib/utextwrap.py, you have tests protected by if __name == 'main', better put that in a proper file under bzrlib/tests
> - in the same file you use width=70, how does that interact with th rest of bzrlib (osutils.terminal_width for example) ?
I'll do these soon.

= About license and copyright. =
> - you seem to import code from the qbzr project, I think our policy to put these kind of files under bzrlib/util, not bzrlib/extras (I'd also like a second opinion about whether this kind of copy is appropriate, IANAL, etc),

extras/ directory (not in bzrlib/ directory) contains files only for building pot file.
I think 'tools/' directory is contains 3rd party tools that is required while building.
So I'll move extras/* into tools/, OK?

> - extras/msgfmt.py doesn't specify a license at all 8-/ There I have no idea about whether we are even allowed to add this to the bzr code...
Oh, that file is distributed with Python. So no license spec means it is PSF license. I'll check it and add header.

> - extras/polib.py MIT license and the file says the LICENSE file is provided, again no idea about what to do with that :-(

polib is needed by posplit.
In current workflow, bzrgettext and xgettext extracts docstring and marked strings, then posplit
splits each message into paragraph.
I think messages extracted by xgettext doesn't include long message. So, I'll add splitting feature
to bzrgettext and remove posplit and polib.

> I wonder if we are importing a lot of stuff that may be available in proper packages that we can then only requires as build dependencies.

polib is distributed in PyPI so we may be able to use it as a build dependency. But currently, I'll remove it first.
Another possible 3rd party utility is Babel. It contains many tools for i18n.

> From a higher level, we should make sure that we can use launchpad and its translation services and focus on the minimal infrastructure we need to provide.

qbzr, bzr-explorer and TortoiseBZR uses setup.py import-po command that imports from tar file exported from Launchpad.
Launchpad may be able to put po files into branch directly, but I don't know about the feature much.

lp:~songofacandy/bzr/i18n updated
5821. By methane

Add utextwrap that is same to textwrap but supports double width characters in east asia.

5822. By methane

bzrlib.utextwrap uses bzrlib.osutils.terminal_width() when width is not specified.

5823. By methane

Move tests for utextwrap from the module to bzrlib.tests.

Revision history for this message
methane (songofacandy) wrote :

> > - in bzrlib/utextwrap.py, you have tests protected by if __name == 'main',
> better put that in a proper file under bzrlib/tests
> > - in the same file you use width=70, how does that interact with th rest of
> bzrlib (osutils.terminal_width for example) ?
> I'll do these soon.
>

Done. I've request merge in:
https://code.launchpad.net/~songofacandy/bzr/i18n-utextwrap/+merge/59950

lp:~songofacandy/bzr/i18n updated
5824. By methane

bzr help commands uses utextwrap for wrapping. (Prepare to i18n)

Revision history for this message
Vincent Ladeuil (vila) wrote :
Download full text (3.6 KiB)

> Thank you for reviewing.
>
> >12852 lines, you beat the record :-)
>
> 9966 lines of 12852 is bzr.pot and bzr-ja.po.
> These files can be ignored before i18n is merged. I'll remove these files.

Good, I think we need to find some lp i18n wizard to help us here as I have very little experience there, I think the best guy for that is David Planella, I'll try to drag him there ;)

>
> > I'm afraid this makes this proposal very hard to review (lp just cut your
> proposal at 5.000 lines) :-/
>
> OK, I'll split this changes to some branches. Should I make merge request for
> each branch?

Yup.

> Or the Launchpad provides any feature about handling for this situation?
>

A merge proposal can specify a pre-requisite branch, so building several branches on top of each other and mentioning them as pre-requisite makes the merge proposals display only the patch that each branch is proposing.

>
> = About bzrlib/utextwrap =
> > - in bzrlib/utextwrap.py, you have tests protected by if __name == 'main',
> better put that in a proper file under bzrlib/tests
> > - in the same file you use width=70, how does that interact with th rest of
> bzrlib (osutils.terminal_width for example) ?
> I'll do these soon.

Great, I've reviewed your other branch.

>
>
> = About license and copyright. =
> > - you seem to import code from the qbzr project, I think our policy to put
> these kind of files under bzrlib/util, not bzrlib/extras (I'd also like a
> second opinion about whether this kind of copy is appropriate, IANAL, etc),
>
> extras/ directory (not in bzrlib/ directory) contains files only for building
> pot file.
> I think 'tools/' directory is contains 3rd party tools that is required while
> building.
> So I'll move extras/* into tools/, OK?

Sounds far more appropriate yes, we still need to be careful about the license/copyright but it's a bit less worrying than in bzrlib itself.

>
> > - extras/msgfmt.py doesn't specify a license at all 8-/ There I have no idea
> about whether we are even allowed to add this to the bzr code...
> Oh, that file is distributed with Python. So no license spec means it is PSF
> license. I'll check it and add header.
>
> > - extras/polib.py MIT license and the file says the LICENSE file is
> provided, again no idea about what to do with that :-(
>
> polib is needed by posplit.
> In current workflow, bzrgettext and xgettext extracts docstring and marked
> strings, then posplit
> splits each message into paragraph.
> I think messages extracted by xgettext doesn't include long message. So, I'll
> add splitting feature
> to bzrgettext and remove posplit and polib.
>
> > I wonder if we are importing a lot of stuff that may be available in proper
> packages that we can then only requires as build dependencies.
>
> polib is distributed in PyPI so we may be able to use it as a build
> dependency. But currently, I'll remove it first.

Great. That's exactly the idea with multiple proposals, it makes it easier to separate the issues and progress on the ones that are not controversial while allowing discussion on the others.

> Another possible 3rd party utility is Babel. It contains many tools for i18n.
>
> > From a higher level...

Read more...

lp:~songofacandy/bzr/i18n updated
5825. By methane

Make UTextWrapper support byte string and add tests including Python's
test_textwrap as a regression test.

5826. By methane

Don't fill up terminal width because console may shows extra blank line.

5827. By methane

Add test for fill.

5828. By methane

Add two tests for fill demonstrates complicated cases. The second test fails
so needs more fixing.

5829. By methane

Default width of UTextWrapper is also osutils.terminal_widtth() and
use osutils.default_terminal_width when it returns None.

5830. By methane

utextwrap: Change a way to split between CJK characters.
_split() splits each double width character into a single chunk.
This way is simpler but slower.

5831. By methane

Add some test cases.

Revision history for this message
Alexander Belchenko (bialix) wrote :

INADA Naoki пишет:
> = About license and copyright. =
>> - you seem to import code from the qbzr project, I think our policy to put these kind of files under bzrlib/util, not bzrlib/extras (I'd also like a second opinion about whether this kind of copy is appropriate, IANAL, etc),
>
> extras/ directory (not in bzrlib/ directory) contains files only for building pot file.
> I think 'tools/' directory is contains 3rd party tools that is required while building.
> So I'll move extras/* into tools/, OK?

I think tools is more appropriate for that stuff in bzr.dev

>> From a higher level, we should make sure that we can use launchpad and its translation services and focus on the minimal infrastructure we need to provide.
>
> qbzr, bzr-explorer and TortoiseBZR uses setup.py import-po command that imports from tar file exported from Launchpad.
> Launchpad may be able to put po files into branch directly, but I don't know about the feature much.

As I can say somebody already set up translations imports for
TortoiseBzr. I thought that was you.

I'm a bit lazy to play with automatic imports/exports on LP, although
those are promoted as preferred way now. But in my understanding it's
better to have separate branch for import/export and merge from it
regularly into trunk.

--
All the dude wanted was his rug back

lp:~songofacandy/bzr/i18n updated
5832. By Vincent Ladeuil

Use assert(expected, actual) style and split some tests.

5833. By Vincent Ladeuil

Use a dedicated class for 'fill' tests.

5834. By Vincent Ladeuil

Properly override test symbols in the imported test module so they are restored after the tests are run.

Revision history for this message
David Planella (dpm) wrote :

Hi Inada,

First of all, thanks for the excellent work in making bzr speak everyone's language :)

I've been asked to provide some feedback and answer any questions, so I'll focus on those rather than reviewing the actual code.

Here are a couple of things that caught my eye:

Standard i18n Tools Integration
-------------------------------

It strikes me that you seem to rewrite much of the functionality provided by gettext and other tools already. Is there a reason why you are not using something like intltool and python-distutils-extra (e.g. using the build_i18n command from p-d-e instead of writing extras/build_mo.py), which are used by most OSS Python projects implementing i18n support? Is it because of platform compatibility issues?

Why do you use the gettext() call directly instead of the more usual _()?

Why is extras/bzrgettext needed? The file is very well documented, but I'm not sure I can follow why standard gettext cannot be used. May I ask you to ellaborate on this?

The same with bzrlib/utextwrap.py, what's its purpose?

Note that I'm not arguing that you are doing anything wrong, I'm just wondering if we could make use of more standard practices in the internationalization world.

Integration with Launchpad
--------------------------

It just makes sense to have bzr use all the Launchpad integration features regarding translations. For this, at the code level the only thing that is needed is to:

* Have a tool in the build system that can extract translatable strings from the code and merge them into a bzr.pot template file
* Have the right source tree layout:

po/bzr.pot
po/jp.po
po/de.po
po/pt_BR.po
...

Where translations are in the same directory as the .pot file and are named with iso 639 2-letter or 3-letter codes, with an optional country code name.

The rest can be done at the Launchpad project level and it's up to the bzr project admins:

* Set up the translation focus and permissions: my recommendation would be Restricted or Structured, assigned to the Launchpad Translators group
* Set up automatic translation imports, so that on every commit of the bzr.pot file translations are exposed in Launchpad
* Set up automatic exports, so that translations can be exported to a branch of your choice automatically (currently daily). My recommendation would be to use the same branch for imports and exports, so that the manual intervention in managing translations is reduced to 0 in this aspect.

Revision history for this message
Alexander Belchenko (bialix) wrote :

David Planella пишет:

David, please participate in that discussion too:
https://lists.ubuntu.com/archives/bazaar/2011q2/072452.html

--
All the dude wanted was his rug back

Revision history for this message
Alexander Belchenko (bialix) wrote :
Download full text (3.6 KiB)

David Planella пишет:
> I've been asked to provide some feedback and answer any questions, so I'll focus on those rather than reviewing the actual code.
>
> Here are a couple of things that caught my eye:
>
> Standard i18n Tools Integration
> -------------------------------
>
> It strikes me that you seem to rewrite much of the functionality provided by gettext and other tools already.
 > Is there a reason why you are not using something like intltool

What's intltool? That's one: https://launchpad.net/intltool ?
Is it work on Windows? Mac?

> and python-distutils-extra (e.g. using the build_i18n command from p-d-e instead of writing extras/build_mo.py),
> which are used by most OSS Python projects implementing i18n support? Is it because of platform compatibility issues?

What is restrictions of the build_i18n? Can it be extended/customized?

> Why do you use the gettext() call directly instead of the more usual _()?

Because _ has special meaning in PDB. Why does it matter?

> Why is extras/bzrgettext needed?
 > The file is very well documented, but I'm not sure I can follow
 > why standard gettext cannot be used.

What is standard gettext? xgettext? This one is unable to extract
docstrings without wrapping them into gettext() calls.

> May I ask you to ellaborate on this?
>
> The same with bzrlib/utextwrap.py, what's its purpose?

This is one is required to deal with multibyte characters. Some
(Japanese) unicode characters are actually require 2 positions on the
screen, so if you need to wrap long string using the width of the
terminal then you need to take care of multibyte characters, because
len(string) != len(visible characters).

> Note that I'm not arguing that you are doing anything wrong,
 > I'm just wondering if we could make use of more standard practices
 > in the internationalization world.

Can you provide some guidelines or hints/tips then?

> Integration with Launchpad
> --------------------------
>
> It just makes sense to have bzr use all the Launchpad integration
 > features regarding translations.
 > For this, at the code level the only thing that is needed is to:
>
> * Have a tool in the build system that can extract translatable strings from the code and merge them into a bzr.pot template file
> * Have the right source tree layout:
>
> po/bzr.pot
> po/jp.po
> po/de.po
> po/pt_BR.po
> ...
>
> Where translations are in the same directory as the .pot file and are named with iso 639 2-letter or 3-letter codes, with an optional country code name.
>
> The rest can be done at the Launchpad project level and it's up to the bzr project admins:
>
> * Set up the translation focus and permissions: my recommendation would be Restricted or Structured, assigned to the Launchpad Translators group
> * Set up automatic translation imports, so that on every commit of the bzr.pot file translations are exposed in Launchpad
> * Set up automatic exports, so that translations can be exported to a branch of your choice automatically (currently daily). My recommendation would be to use the same branch for imports and exports, so that the manual intervention in managing translations is reduced to 0 in this aspect.

Can you te...

Read more...

Revision history for this message
methane (songofacandy) wrote :

I'm sorry about misreading.
I'm afraid deleting this merge request deletes discussion. So I leave
this merge request.

My work is split to some branches and this branch is abandoned.

1. TextWrap supporting CJK.
lp:~songofacandy/bzr/i18n-utextwrap
https://code.launchpad.net/~songofacandy/bzr/i18n-utextwrap/+merge/59950

2. message extraction.
lp:~songofacandy/bzr/i18n-msgextract
https://code.launchpad.net/~songofacandy/bzr/i18n-msgextract/+merge/60033

3. Building message object.
lp:~songofacandy/bzr/i18n-msgfmt
(merge request will be issued when message extraction is merged)

And future:
* l10n implementation of command help
* l10n implemen of Error Message

Discussed on ML:
* How to translate help topics.

Please join us and make bzr-2.4 better for non English speakers.

lp:~songofacandy/bzr/i18n updated
5835. By Martin Packman

Cope with lack of TextWrapper.drop_whitespace before Python 2.6

5836. By methane

Split calculating width of char logic into separated function.

5837. By methane

Drop supporting byte string in private functions.

5838. By methane

Add copyright for some function.

5839. By methane

Add keyword parameter 'ambiguous_width' that specifies width for character
when unicodedata.east_asian_width(c)=='A'.

5840. By methane

Stop using utextwrap until i18n is implemented.

5841. By methane

Change default value of ambiguous_width from 2 to 1.

5842. By methane

Add document of some limitations in docstring.

Revision history for this message
David Planella (dpm) wrote :
Download full text (6.3 KiB)

> David Planella пишет:
> > I've been asked to provide some feedback and answer any questions, so I'll
> focus on those rather than reviewing the actual code.
> >
> > Here are a couple of things that caught my eye:
> >
> > Standard i18n Tools Integration
> > -------------------------------
> >
> > It strikes me that you seem to rewrite much of the functionality provided by
> gettext and other tools already.
> > Is there a reason why you are not using something like intltool
>
> What's intltool? That's one: https://launchpad.net/intltool ?
> Is it work on Windows? Mac?
>

Yeah, that's intltool. Intltool is a higher level tool that adds functionality to gettext by allowing the extraction of translatable strings from a variety of file formats, and provides some extra functionality. It is a standard tool used for many translatable projects and a dependency from python-distutils-extra.

It's a perl script, so it should run on any platform where perl can be run.

> > and python-distutils-extra (e.g. using the build_i18n command from p-d-e
> instead of writing extras/build_mo.py),
> > which are used by most OSS Python projects implementing i18n support? Is it
> because of platform compatibility issues?
>
> What is restrictions of the build_i18n? Can it be extended/customized?
>

I'm not sure I understand the question on restrictions, but in any case, here's the code:

http://bazaar.launchpad.net/~python-distutils-extra-hackers/python-distutils-extra/debian/view/head:/DistUtilsExtra/auto.py#L505

> > Why do you use the gettext() call directly instead of the more usual _()?
>
> Because _ has special meaning in PDB. Why does it matter?
>

This is not a real issue, just a cosmetic one.

The feedback I get is that developers prefer writing the shorter _() to a translatable message than the longer and perhaps less readable gettext(). This has been the standard practice for nearly all localizable Open Source projects I've seen. The only exception that I can think of off the top of my head is bzr-gtk, where i18n() is used.

Why is is an issue in bzr but not in all other Python projects that make use of gettext?

> > Why is extras/bzrgettext needed?
> > The file is very well documented, but I'm not sure I can follow
> > why standard gettext cannot be used.
>
> What is standard gettext? xgettext? This one is unable to extract
> docstrings without wrapping them into gettext() calls.
>

Sorry, I should have been a bit clearer. By standard gettext I mean bot the gettext API and the set of developer tools provided by the gettext package. xgettext is part of the gettext package.

Could you tell me more about how are docstrings used in the bzr context and why should they be translatable? (I'm not against this, the more translatable the better, but I'd suggest sticking to standard tools from now and focus on translating the strings that are exposed to users first, e.g. the command line).

> > May I ask you to ellaborate on this?
> >
> > The same with bzrlib/utextwrap.py, what's its purpose?
>
> This is one is required to deal with multibyte characters. Some
> (Japanese) unicode characters are actually require 2 positions on the
> screen, so if you need t...

Read more...

Revision history for this message
John A Meinel (jameinel) wrote :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

...
> This is not a real issue, just a cosmetic one.
>
> The feedback I get is that developers prefer writing the shorter _() to a translatable message than the longer and perhaps less readable gettext(). This has been the standard practice for nearly all localizable Open Source projects I've seen. The only exception that I can think of off the top of my head is bzr-gtk, where i18n() is used.
>
> Why is is an issue in bzr but not in all other Python projects that make use of gettext?

Because developers (such as myself) have a higher tendency to break into
the debugger in the middle of an active session (because we trap SIGQUIT
to do just that), and once you have done so _() breaks all future
running of the program because the builtin _() gets overridden.

Going further, I don't think bzr directly gains by putting i18n around
the code base. We generally *don't* want to be handing around translated
strings. We just want to translate at the point we display to the user
(as much as possible).

Also, why write _() in your code everywhere when there are very
deterministic locations where translatable strings reside. (Such as
Command.__doc__.)

John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk3JJdsACgkQJdeBCYSNAAO4HgCgw+pdJVwBXHySlLUIaPCTSYBt
u8QAn3jS+r2QP7di9ZM+RmTmZX5b7jey
=9APd
-----END PGP SIGNATURE-----

Revision history for this message
Andrew Bennetts (spiv) wrote :

John A Meinel wrote:
[…]
> > This is not a real issue, just a cosmetic one.
> >
> > The feedback I get is that developers prefer writing the shorter _() to a
> > translatable message than the longer and perhaps less readable gettext().
> > This has been the standard practice for nearly all localizable Open Source
> > projects I've seen. The only exception that I can think of off the top of my
> > head is bzr-gtk, where i18n() is used.
> >
> > Why is is an issue in bzr but not in all other Python projects that make use
> > of gettext?
>
>
> Because developers (such as myself) have a higher tendency to break into
> the debugger in the middle of an active session (because we trap SIGQUIT
> to do just that), and once you have done so _() breaks all future
> running of the program because the builtin _() gets overridden.

That's really a bug in pdb, though. It might be possible to monkey-patch

lp:~songofacandy/bzr/i18n updated
5843. By methane

merge i18n-msgextract

5844. By methane

merge i18n-msgfmt

5845. By methane

Add first version of pot

5846. By methane

merge i18n-msgextract.

5847. By methane

Update pot

5848. By methane

merge some files from lp:~songofacandy/bzr/i18n

5849. By methane

Fix import

5850. By methane

Cleanup

5851. By methane

Fix line of command help in pot.

5852. By methane

Fix lineno of error formats in bzr.pot.

5853. By methane

Update pot

5854. By methane

merge i18n-utextwrap

5855. By methane

Enable extracting messages from help topics.

5856. By methane

Update pot file.

5857. By methane

Translate help topics.

5858. By methane

Disable too verbose mutter.

5859. By methane

Don't skip help topics that is not found in bzrlib.help_topics.__init__.
This allows to export help topics registered from plugins.

5860. By methane

Update pot

Unmerged revisions

5860. By methane

Update pot

5859. By methane

Don't skip help topics that is not found in bzrlib.help_topics.__init__.
This allows to export help topics registered from plugins.

5858. By methane

Disable too verbose mutter.

5857. By methane

Translate help topics.

5856. By methane

Update pot file.

5855. By methane

Enable extracting messages from help topics.

5854. By methane

merge i18n-utextwrap

5853. By methane

Update pot

5852. By methane

Fix lineno of error formats in bzr.pot.

5851. By methane

Fix line of command help in pot.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Makefile'
--- Makefile 2011-04-18 00:44:08 +0000
+++ Makefile 2011-05-14 03:14:26 +0000
@@ -420,6 +420,26 @@
420 $(PYTHON) tools/win32/ostools.py remove dist420 $(PYTHON) tools/win32/ostools.py remove dist
421421
422422
423# i18n targets
424
425.PHONY: update-pot po/bzr.pot
426update-pot: po/bzr.pot
427
428TRANSLATABLE_PYFILES:=$(shell find bzrlib -name '*.py' \
429 | grep -v 'bzrlib/tests/' \
430 | grep -v 'bzrlib/doc' \
431 )
432
433po/bzr.pot: $(PYFILES) $(DOCFILES)
434 BZR_PLUGIN_PATH='-site' $(PYTHON) ./bzr export-pot > po/bzr.pot
435 echo $(TRANSLATABLE_PYFILES) | xargs \
436 xgettext --package-name "bzr" \
437 --msgid-bugs-address "<bazaar@canonical.com>" \
438 --copyright-holder "Canonical" \
439 --from-code ISO-8859-1 --join --sort-by-file --add-comments=i18n: \
440 -d bzr -p po -o bzr.pot
441
442
423### Packaging Targets ###443### Packaging Targets ###
424444
425.PHONY: dist check-dist-tarball445.PHONY: dist check-dist-tarball
426446
=== modified file 'bzrlib/builtins.py'
--- bzrlib/builtins.py 2011-05-03 13:53:46 +0000
+++ bzrlib/builtins.py 2011-05-14 03:14:26 +0000
@@ -6154,6 +6154,16 @@
6154 self.outf.write('%s %s\n' % (path, location))6154 self.outf.write('%s %s\n' % (path, location))
61556155
61566156
6157class cmd_export_pot(Command):
6158 __doc__ = """Export command helps and error messages in po format."""
6159
6160 hidden = True
6161
6162 def run(self):
6163 from bzrlib.export_pot import export_pot
6164 export_pot(self.outf)
6165
6166
6157def _register_lazy_builtins():6167def _register_lazy_builtins():
6158 # register lazy builtins from other modules; called at startup and should6168 # register lazy builtins from other modules; called at startup and should
6159 # be only called once.6169 # be only called once.
61606170
=== modified file 'bzrlib/commands.py'
--- bzrlib/commands.py 2011-04-19 04:37:48 +0000
+++ bzrlib/commands.py 2011-05-14 03:14:26 +0000
@@ -41,6 +41,12 @@
41 trace,41 trace,
42 ui,42 ui,
43 )43 )
44from bzrlib.i18n import (
45 gettext,
46 N_,
47 install,
48 install_zzz,
49 )
44""")50""")
4551
46from bzrlib.hooks import Hooks52from bzrlib.hooks import Hooks
@@ -507,11 +513,11 @@
507513
508 # The header is the purpose and usage514 # The header is the purpose and usage
509 result = ""515 result = ""
510 result += ':Purpose: %s\n' % purpose516 result += ':%s: %s\n' % (gettext('Purpose'), purpose)
511 if usage.find('\n') >= 0:517 if usage.find('\n') >= 0:
512 result += ':Usage:\n%s\n' % usage518 result += ':%s:\n%s\n' % (gettext('Usage'), usage)
513 else:519 else:
514 result += ':Usage: %s\n' % usage520 result += ':%s: %s\n' % (gettext('Usage'), usage)
515 result += '\n'521 result += '\n'
516522
517 # Add the options523 # Add the options
@@ -527,11 +533,9 @@
527 # block.533 # block.
528 if not plain and options.find(' --1.9 ') != -1:534 if not plain and options.find(' --1.9 ') != -1:
529 options = options.replace(' format:\n', ' format::\n\n', 1)535 options = options.replace(' format:\n', ' format::\n\n', 1)
530 if options.startswith('Options:'):536 if options.startswith('Options:') or options.startswith('options:'):
531 result += ':' + options537 # Python 2.4 version of optparse uses 'options'.
532 elif options.startswith('options:'):538 result += ':%s:%s' % (gettext('Options'), options[len('options:'):])
533 # Python 2.4 version of optparse
534 result += ':Options:' + options[len('options:'):]
535 else:539 else:
536 result += options540 result += options
537 result += '\n'541 result += '\n'
@@ -542,7 +546,7 @@
542 if sections.has_key(None):546 if sections.has_key(None):
543 text = sections.pop(None)547 text = sections.pop(None)
544 text = '\n '.join(text.splitlines())548 text = '\n '.join(text.splitlines())
545 result += ':%s:\n %s\n\n' % ('Description',text)549 result += ':%s:\n %s\n\n' % (gettext('Description'),text)
546550
547 # Add the custom sections (e.g. Examples). Note that there's no need551 # Add the custom sections (e.g. Examples). Note that there's no need
548 # to indent these as they must be indented already in the source.552 # to indent these as they must be indented already in the source.
@@ -557,7 +561,7 @@
557561
558 # Add the aliases, source (plug-in) and see also links, if any562 # Add the aliases, source (plug-in) and see also links, if any
559 if self.aliases:563 if self.aliases:
560 result += ':Aliases: '564 result += ':%s: ' % gettext('Aliases')
561 result += ', '.join(self.aliases) + '\n'565 result += ', '.join(self.aliases) + '\n'
562 plugin_name = self.plugin_name()566 plugin_name = self.plugin_name()
563 if plugin_name is not None:567 if plugin_name is not None:
@@ -576,7 +580,7 @@
576 link_text = ":doc:`%s <%s-help>`" % (item, item)580 link_text = ":doc:`%s <%s-help>`" % (item, item)
577 see_also_links.append(link_text)581 see_also_links.append(link_text)
578 see_also = see_also_links582 see_also = see_also_links
579 result += ':See also: '583 result += ':%s: ' % gettext('See also')
580 result += ', '.join(see_also) + '\n'584 result += ', '.join(see_also) + '\n'
581585
582 # If this will be rendered as plain text, convert it586 # If this will be rendered as plain text, convert it
@@ -667,7 +671,8 @@
667671
668 # Process the standard options672 # Process the standard options
669 if 'help' in opts: # e.g. bzr add --help673 if 'help' in opts: # e.g. bzr add --help
670 sys.stdout.write(self.get_help_text())674 self._setup_outf()
675 self.outf.write(self.get_help_text())
671 return 0676 return 0
672 if 'usage' in opts: # e.g. bzr add --usage677 if 'usage' in opts: # e.g. bzr add --usage
673 sys.stdout.write(self.get_help_text(verbose=False))678 sys.stdout.write(self.get_help_text(verbose=False))
@@ -755,7 +760,7 @@
755 from inspect import getdoc760 from inspect import getdoc
756 if self.__doc__ is Command.__doc__:761 if self.__doc__ is Command.__doc__:
757 return None762 return None
758 return getdoc(self)763 return gettext(getdoc(self))
759764
760 def name(self):765 def name(self):
761 """Return the canonical name for this command.766 """Return the canonical name for this command.
@@ -1088,6 +1093,10 @@
1088 i += 11093 i += 1
10891094
1090 debug.set_debug_flags_from_config()1095 debug.set_debug_flags_from_config()
1096 if 'i18n' in debug.debug_flags:
1097 install_zzz()
1098 else:
1099 install()
10911100
1092 if not opt_no_plugins:1101 if not opt_no_plugins:
1093 load_plugins()1102 load_plugins()
10941103
=== modified file 'bzrlib/errors.py'
--- bzrlib/errors.py 2011-05-08 12:42:43 +0000
+++ bzrlib/errors.py 2011-05-14 03:14:26 +0000
@@ -18,6 +18,7 @@
18"""18"""
1919
20from bzrlib import (20from bzrlib import (
21 i18n,
21 osutils,22 osutils,
22 symbol_versioning,23 symbol_versioning,
23 )24 )
@@ -93,6 +94,21 @@
93 for key, value in kwds.items():94 for key, value in kwds.items():
94 setattr(self, key, value)95 setattr(self, key, value)
9596
97 def i18n(self):
98 """Returns translated message in user encoding"""
99 try:
100 fmt = self._get_format_string()
101 if fmt:
102 fmt = i18n.gettext(fmt)
103 return fmt % dict(self.__dict__)
104 except (AttributeError, TypeError, NameError, ValueError, KeyError), e:
105 return 'Unprintable exception %s: dict=%r, fmt=%r, error=%r' \
106 % (self.__class__.__name__,
107 self.__dict__,
108 getattr(self, '_fmt', None),
109 e)
110
111
96 def _format(self):112 def _format(self):
97 s = getattr(self, '_preformatted_string', None)113 s = getattr(self, '_preformatted_string', None)
98 if s is not None:114 if s is not None:
99115
=== added file 'bzrlib/export_pot.py'
--- bzrlib/export_pot.py 1970-01-01 00:00:00 +0000
+++ bzrlib/export_pot.py 2011-05-14 03:14:26 +0000
@@ -0,0 +1,250 @@
1# Copyright (C) 2011 Canonical Ltd
2#
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 2 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program; if not, write to the Free Software
15# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
17# The normalize function is taken from pygettext which is distributed
18# with Python under the Python License, which is GPL compatible.
19
20"""Extract docstrings from Bazaar commands.
21"""
22
23import inspect
24import os
25
26from bzrlib import (
27 commands as _mod_commands,
28 errors,
29 help_topics,
30 plugin,
31 )
32from bzrlib.trace import (
33 mutter,
34 note,
35 )
36
37
38def _escape(s):
39 s = (s.replace('\\', '\\\\')
40 .replace('\n', '\\n')
41 .replace('\r', '\\r')
42 .replace('\t', '\\t')
43 .replace('"', '\\"')
44 )
45 return s
46
47def _normalize(s):
48 # This converts the various Python string types into a format that
49 # is appropriate for .po files, namely much closer to C style.
50 lines = s.split('\n')
51 if len(lines) == 1:
52 s = '"' + _escape(s) + '"'
53 else:
54 if not lines[-1]:
55 del lines[-1]
56 lines[-1] = lines[-1] + '\n'
57 lines = map(_escape, lines)
58 lineterm = '\\n"\n"'
59 s = '""\n"' + lineterm.join(lines) + '"'
60 return s
61
62
63_FOUND_MSGID = None # set by entry function.
64
65def _poentry(outf, path, lineno, s, comment=None):
66 if s in _FOUND_MSGID:
67 return
68 _FOUND_MSGID.add(s)
69 if comment is None:
70 comment = ''
71 else:
72 comment = "# %s\n" % comment
73 print >>outf, ('#: %s:%d\n' % (path, lineno) +
74 comment+
75 'msgid %s\n' % _normalize(s) +
76 'msgstr ""\n')
77
78def _poentry_per_paragraph(outf, path, lineno, msgid):
79 # TODO: How to split long help?
80 paragraphs = msgid.split('\n\n')
81 for p in paragraphs:
82 _poentry(outf, path, lineno, p)
83 lineno += p.count('\n') + 2
84
85_LAST_CACHE = _LAST_CACHED_SRC = None
86
87def _offsets_of_literal(src):
88 global _LAST_CACHE, _LAST_CACHED_SRC
89 if src == _LAST_CACHED_SRC:
90 return _LAST_CACHE.copy()
91
92 import ast
93 root = ast.parse(src)
94 offsets = {}
95 for node in ast.walk(root):
96 if not isinstance(node, ast.Str):
97 continue
98 offsets[node.s] = node.lineno - node.s.count('\n')
99
100 _LAST_CACHED_SRC = src
101 _LAST_CACHE = offsets.copy()
102 return offsets
103
104def _standard_options(outf):
105 from bzrlib.option import Option
106 src = inspect.findsource(Option)[0]
107 src = ''.join(src)
108 path = 'bzrlib/option.py'
109 offsets = _offsets_of_literal(src)
110
111 for name in sorted(Option.OPTIONS.keys()):
112 opt = Option.OPTIONS[name]
113 if getattr(opt, 'hidden', False):
114 continue
115 if getattr(opt, 'title', None):
116 lineno = offsets.get(opt.title, 9999)
117 if lineno == 9999:
118 note("%r is not found in bzrlib/option.py" % opt.title)
119 _poentry(outf, path, lineno, opt.title,
120 'title of %r option' % name)
121 if getattr(opt, 'help', None):
122 lineno = offsets.get(opt.help, 9999)
123 if lineno == 9999:
124 note("%r is not found in bzrlib/option.py" % opt.help)
125 _poentry(outf, path, lineno, opt.help,
126 'help of %r option' % name)
127
128def _command_options(outf, path, cmd):
129 src, default_lineno = inspect.findsource(cmd.__class__)
130 offsets = _offsets_of_literal(''.join(src))
131 for opt in cmd.takes_options:
132 if isinstance(opt, str):
133 continue
134 if getattr(opt, 'hidden', False):
135 continue
136 name = opt.name
137 if getattr(opt, 'title', None):
138 lineno = offsets.get(opt.title, default_lineno)
139 _poentry(outf, path, lineno, opt.title,
140 'title of %r option of %r command' % (name, cmd.name()))
141 if getattr(opt, 'help', None):
142 lineno = offsets.get(opt.help, default_lineno)
143 _poentry(outf, path, lineno, opt.help,
144 'help of %r option of %r command' % (name, cmd.name()))
145
146
147def _write_command_help(outf, cmd_name, cmd):
148 path = inspect.getfile(cmd.__class__)
149 if path.endswith('.pyc'):
150 path = path[:-1]
151 path = os.path.relpath(path)
152 src, lineno = inspect.findsource(cmd.__class__)
153 offsets = _offsets_of_literal(''.join(src))
154 lineno = offsets[cmd.__doc__]
155 doc = inspect.getdoc(cmd)
156
157 _poentry_per_paragraph(outf, path, lineno, doc)
158 _command_options(outf, path, cmd)
159
160def _command_helps(outf):
161 """Extract docstrings from path.
162
163 This respects the Bazaar cmdtable/table convention and will
164 only extract docstrings from functions mentioned in these tables.
165 """
166 from glob import glob
167
168 # builtin commands
169 for cmd_name in _mod_commands.builtin_command_names():
170 command = _mod_commands.get_cmd_object(cmd_name, False)
171 if command.hidden:
172 continue
173 note("Exporting messages from builtin command: %s", cmd_name)
174 _write_command_help(outf, cmd_name, command)
175
176 plugin_path = plugin.get_core_plugin_path()
177 core_plugins = glob(plugin_path + '/*/__init__.py')
178 core_plugins = [os.path.basename(os.path.dirname(p))
179 for p in core_plugins]
180 # core plugins
181 for cmd_name in _mod_commands.plugin_command_names():
182 command = _mod_commands.get_cmd_object(cmd_name, False)
183 if command.hidden:
184 continue
185 if command.plugin_name() not in core_plugins:
186 # skip non-core plugins
187 # TODO: Support extracting from third party plugins.
188 continue
189 note("Exporting messages from plugin command: %s in %s",
190 cmd_name, command.plugin_name())
191 _write_command_help(outf, cmd_name, command)
192
193
194def _error_messages(outf):
195 """Extract fmt string from bzrlib.errors."""
196 path = errors.__file__
197 if path.endswith('.pyc'):
198 path = path[:-1]
199 offsets = _offsets_of_literal(open(path).read())
200
201 base_klass = errors.BzrError
202 for name in dir(errors):
203 klass = getattr(errors, name)
204 if not inspect.isclass(klass):
205 continue
206 if not issubclass(klass, base_klass):
207 continue
208 if klass is base_klass:
209 continue
210 if klass.internal_error:
211 continue
212 fmt = getattr(klass, "_fmt", None)
213 if fmt:
214 note("Exporting message from error: %s", name)
215 _poentry(outf, 'bzrlib/errors.py',
216 offsets.get(fmt, 9999), fmt)
217
218def _help_topics(outf):
219 topic_registry = help_topics.topic_registry
220 offsets = _offsets_of_literal(inspect.getsource(help_topics))
221
222 for key in topic_registry.keys():
223 summary = topic_registry.get_summary(key)
224 if summary is not None:
225 lineno = offsets.get(summary, 9999)
226 _poentry(outf, 'bzrlib/help_topics/__init__.py',
227 lineno, summary)
228
229 doc = topic_registry.get(key)
230 if isinstance(doc, basestring):
231 lineno = offsets.get(doc, 9999)
232 _poentry_per_paragraph(
233 outf,
234 'bzrlib/help_topics/__init__.py', lineno,
235 doc)
236 elif doc == help_topics._load_from_file:
237 _poentry_per_paragraph(
238 outf,
239 'bzrlib/help_topics/en/%s.txt' % (key,), 1,
240 topic_registry.get_detail(key)
241 )
242
243
244def export_pot(outf):
245 global _FOUND_MSGID
246 _FOUND_MSGID = set()
247 _standard_options(outf)
248 _command_helps(outf)
249 _error_messages(outf)
250 _help_topics(outf)
0251
=== modified file 'bzrlib/help.py'
--- bzrlib/help.py 2010-05-26 07:19:50 +0000
+++ bzrlib/help.py 2011-05-14 03:14:26 +0000
@@ -22,7 +22,6 @@
22# TODO: `help commands --all` should show hidden commands22# TODO: `help commands --all` should show hidden commands
2323
24import sys24import sys
25import textwrap
2625
27from bzrlib import (26from bzrlib import (
28 commands as _mod_commands,27 commands as _mod_commands,
@@ -30,8 +29,11 @@
30 help_topics,29 help_topics,
31 osutils,30 osutils,
32 plugin,31 plugin,
32 utextwrap,
33 )33 )
3434
35from bzrlib.i18n import gettext
36
3537
36def help(topic=None, outfile=None):38def help(topic=None, outfile=None):
37 """Write the help for the specific topic to outfile"""39 """Write the help for the specific topic to outfile"""
@@ -96,7 +98,7 @@
96 else:98 else:
97 firstline = ''99 firstline = ''
98 helpstring = '%-*s %s%s' % (max_name, cmd_name, firstline, plugin_name)100 helpstring = '%-*s %s%s' % (max_name, cmd_name, firstline, plugin_name)
99 lines = textwrap.wrap(101 lines = utextwrap.wrap(
100 helpstring, subsequent_indent=indent,102 helpstring, subsequent_indent=indent,
101 width=width,103 width=width,
102 break_long_words=False)104 break_long_words=False)
103105
=== modified file 'bzrlib/help_topics/__init__.py'
--- bzrlib/help_topics/__init__.py 2010-11-06 10:55:58 +0000
+++ bzrlib/help_topics/__init__.py 2011-05-14 03:14:26 +0000
@@ -863,7 +863,8 @@
863 :param plain: if False, raw help (reStructuredText) is863 :param plain: if False, raw help (reStructuredText) is
864 returned instead of plain text.864 returned instead of plain text.
865 """865 """
866 result = topic_registry.get_detail(self.topic)866 from bzrlib.i18n import gettext
867 result = gettext(topic_registry.get_detail(self.topic))
867 # there is code duplicated here and in bzrlib/plugin.py's868 # there is code duplicated here and in bzrlib/plugin.py's
868 # matching Topic code. This should probably be factored in869 # matching Topic code. This should probably be factored in
869 # to a helper function and a common base class.870 # to a helper function and a common base class.
870871
=== modified file 'bzrlib/help_topics/en/debug-flags.txt'
--- bzrlib/help_topics/en/debug-flags.txt 2010-10-06 03:20:28 +0000
+++ bzrlib/help_topics/en/debug-flags.txt 2011-05-14 03:14:26 +0000
@@ -21,6 +21,7 @@
21-Dhpssdetail More hpss details.21-Dhpssdetail More hpss details.
22-Dhpssvfs Traceback on vfs access to Remote objects.22-Dhpssvfs Traceback on vfs access to Remote objects.
23-Dhttp Trace http connections, requests and responses.23-Dhttp Trace http connections, requests and responses.
24-Di18n Use "zz{{msg}}" for translated message.
24-Dindex Trace major index operations.25-Dindex Trace major index operations.
25-Dknit Trace knit operations.26-Dknit Trace knit operations.
26-Dlock Trace when lockdir locks are taken or released.27-Dlock Trace when lockdir locks are taken or released.
2728
=== added file 'bzrlib/i18n.py'
--- bzrlib/i18n.py 1970-01-01 00:00:00 +0000
+++ bzrlib/i18n.py 2011-05-14 03:14:26 +0000
@@ -0,0 +1,129 @@
1# -*- coding: utf-8 -*-
2#
3# Copyright (C) 2007 Lukáš Lalinský <lalinsky@gmail.com>
4# Copyright (C) 2007,2009 Alexander Belchenko <bialix@ukr.net>
5# Copyright (C) 2011 Canonical Ltd
6#
7# This program is free software; you can redistribute it and/or
8# modify it under the terms of the GNU General Public License
9# as published by the Free Software Foundation; either version 2
10# of the License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
21# This module is copied from Bazaar Explorer and modified for bzr.
22
23"""i18n and l10n support for Bazaar."""
24
25import gettext as _gettext
26import os
27import sys
28
29_translation = _null_translation = _gettext.NullTranslations()
30
31
32def install():
33 global _translation
34 get_current_locale()
35 _translation = _gettext.translation(
36 'bzr', localedir=_get_locale_dir(), fallback=True)
37
38def uninstall():
39 global _translation
40 _translation = _null_translation
41
42
43def _get_locale_dir():
44 if hasattr(sys, 'frozen'):
45 base = os.path.dirname(
46 unicode(sys.executable, sys.getfilesystemencoding()))
47 return os.path.join(base, u'locale')
48 else:
49 base = os.path.dirname(unicode(__file__, sys.getfilesystemencoding()))
50 return os.path.realpath(os.path.join(base, u'locale'))
51
52
53def _check_win32_locale():
54 for i in ('LANGUAGE','LC_ALL','LC_MESSAGES','LANG'):
55 if os.environ.get(i):
56 break
57 else:
58 lang = None
59 import locale
60 try:
61 import ctypes
62 except ImportError:
63 # use only user's default locale
64 lang = locale.getdefaultlocale()[0]
65 else:
66 # using ctypes to determine all locales
67 lcid_user = ctypes.windll.kernel32.GetUserDefaultLCID()
68 lcid_system = ctypes.windll.kernel32.GetSystemDefaultLCID()
69 if lcid_user != lcid_system:
70 lcid = [lcid_user, lcid_system]
71 else:
72 lcid = [lcid_user]
73 lang = [locale.windows_locale.get(i) for i in lcid]
74 lang = ':'.join([i for i in lang if i])
75 # set lang code for gettext
76 if lang:
77 os.environ['LANGUAGE'] = lang
78
79
80def get_current_locale():
81 if not os.environ.get('LANGUAGE'):
82 from bzrlib import config
83 lang = config.GlobalConfig().get_user_option('language')
84 if lang:
85 os.environ['LANGUAGE'] = lang
86 return lang
87 if sys.platform == 'win32':
88 _check_win32_locale()
89 for i in ('LANGUAGE','LC_ALL','LC_MESSAGES','LANG'):
90 lang = os.environ.get(i)
91 if lang:
92 return lang
93 return None
94
95# special zzz translation for debugging i18n stuff
96class _ZzzTranslations(object):
97
98 def zzz(self, s):
99 return 'zz{{%s}}' % s
100
101 def ugettext(self, s):
102 return self.zzz(_null_translation.ugettext(s))
103
104 def ungettext(self, s, p, n):
105 return self.zzz(_null_translation.ungettext(s, p, n))
106
107def install_zzz():
108 global _translation
109 _translation = _ZzzTranslations()
110
111def gettext(message):
112 """Translate message.
113 Returns translated message as unicode."""
114 paragraphs = message.split(u'\n\n')
115 ugettext = _translation.ugettext
116 # Be careful not to translate the empty string -- it holds the
117 # meta data of the .po file.
118 return u'\n\n'.join([ugettext(p) if p else u'' for p in paragraphs])
119
120def ngettext(s, p, n):
121 return gettext(s if n == 1 else p)
122
123def N_(s):
124 """Pass through function.
125
126 This function is used to mark the string that may be translated later.
127 """
128 return s
129
0130
=== added directory 'bzrlib/locale'
=== modified file 'bzrlib/option.py'
--- bzrlib/option.py 2011-01-14 05:14:04 +0000
+++ bzrlib/option.py 2011-05-14 03:14:26 +0000
@@ -205,13 +205,14 @@
205205
206 def add_option(self, parser, short_name):206 def add_option(self, parser, short_name):
207 """Add this option to an Optparse parser"""207 """Add this option to an Optparse parser"""
208 from bzrlib.i18n import gettext
208 option_strings = ['--%s' % self.name]209 option_strings = ['--%s' % self.name]
209 if short_name is not None:210 if short_name is not None:
210 option_strings.append('-%s' % short_name)211 option_strings.append('-%s' % short_name)
211 if self.hidden:212 if self.hidden:
212 help = optparse.SUPPRESS_HELP213 help = optparse.SUPPRESS_HELP
213 else:214 else:
214 help = self.help215 help = gettext(self.help)
215 optargfn = self.type216 optargfn = self.type
216 if optargfn is None:217 if optargfn is None:
217 parser.add_option(action='callback',218 parser.add_option(action='callback',
@@ -428,6 +429,7 @@
428429
429def get_optparser(options):430def get_optparser(options):
430 """Generate an optparse parser for bzrlib-style options"""431 """Generate an optparse parser for bzrlib-style options"""
432 from bzrlib.i18n import gettext
431433
432 parser = OptionParser()434 parser = OptionParser()
433 parser.remove_option('--help')435 parser.remove_option('--help')
434436
=== modified file 'bzrlib/tests/__init__.py'
--- bzrlib/tests/__init__.py 2011-05-13 12:51:05 +0000
+++ bzrlib/tests/__init__.py 2011-05-14 03:14:26 +0000
@@ -3783,6 +3783,7 @@
3783 'bzrlib.tests.test_eol_filters',3783 'bzrlib.tests.test_eol_filters',
3784 'bzrlib.tests.test_errors',3784 'bzrlib.tests.test_errors',
3785 'bzrlib.tests.test_export',3785 'bzrlib.tests.test_export',
3786 'bzrlib.tests.test_export_pot',
3786 'bzrlib.tests.test_extract',3787 'bzrlib.tests.test_extract',
3787 'bzrlib.tests.test_fetch',3788 'bzrlib.tests.test_fetch',
3788 'bzrlib.tests.test_fixtures',3789 'bzrlib.tests.test_fixtures',
@@ -3899,6 +3900,7 @@
3899 'bzrlib.tests.test_upgrade',3900 'bzrlib.tests.test_upgrade',
3900 'bzrlib.tests.test_upgrade_stacked',3901 'bzrlib.tests.test_upgrade_stacked',
3901 'bzrlib.tests.test_urlutils',3902 'bzrlib.tests.test_urlutils',
3903 'bzrlib.tests.test_utextwrap',
3902 'bzrlib.tests.test_version',3904 'bzrlib.tests.test_version',
3903 'bzrlib.tests.test_version_info',3905 'bzrlib.tests.test_version_info',
3904 'bzrlib.tests.test_versionedfile',3906 'bzrlib.tests.test_versionedfile',
39053907
=== added file 'bzrlib/tests/test_export_pot.py'
--- bzrlib/tests/test_export_pot.py 1970-01-01 00:00:00 +0000
+++ bzrlib/tests/test_export_pot.py 2011-05-14 03:14:26 +0000
@@ -0,0 +1,147 @@
1# Copyright (C) 2011 Canonical Ltd
2#
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 2 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program; if not, write to the Free Software
15# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
17from cStringIO import StringIO
18import textwrap
19
20from bzrlib import (
21 export_pot,
22 tests,
23 )
24
25class TestEscape(tests.TestCase):
26
27 def test_simple_escape(self):
28 self.assertEqual(
29 export_pot._escape('foobar'),
30 'foobar')
31
32 s = '''foo\nbar\r\tbaz\\"spam"'''
33 e = '''foo\\nbar\\r\\tbaz\\\\\\"spam\\"'''
34 self.assertEqual(export_pot._escape(s), e)
35
36 def test_complex_escape(self):
37 s = '''\\r \\\n'''
38 e = '''\\\\r \\\\\\n'''
39 self.assertEqual(export_pot._escape(s), e)
40
41
42class TestNormalize(tests.TestCase):
43
44 def test_single_line(self):
45 s = 'foobar'
46 e = '"foobar"'
47 self.assertEqual(export_pot._normalize(s), e)
48
49 s = 'foo"bar'
50 e = '"foo\\"bar"'
51 self.assertEqual(export_pot._normalize(s), e)
52
53 def test_multi_lines(self):
54 s = 'foo\nbar\n'
55 e = '""\n"foo\\n"\n"bar\\n"'
56 self.assertEqual(export_pot._normalize(s), e)
57
58 s = '\nfoo\nbar\n'
59 e = ('""\n'
60 '"\\n"\n'
61 '"foo\\n"\n'
62 '"bar\\n"')
63 self.assertEqual(export_pot._normalize(s), e)
64
65
66class PoEntryTestCase(tests.TestCase):
67
68 def setUp(self):
69 self.overrideAttr(export_pot, '_FOUND_MSGID', set())
70 self._outf = StringIO()
71 super(PoEntryTestCase, self).setUp()
72
73 def check_output(self, expected):
74 self.assertEqual(
75 self._outf.getvalue(),
76 textwrap.dedent(expected)
77 )
78
79class TestPoEntry(PoEntryTestCase):
80
81 def test_simple(self):
82 export_pot._poentry(self._outf, 'dummy', 1, "spam")
83 export_pot._poentry(self._outf, 'dummy', 2, "ham", 'EGG')
84 self.check_output('''\
85 #: dummy:1
86 msgid "spam"
87 msgstr ""
88
89 #: dummy:2
90 # EGG
91 msgid "ham"
92 msgstr ""
93
94 ''')
95
96 def test_duplicate(self):
97 export_pot._poentry(self._outf, 'dummy', 1, "spam")
98 # This should be ignored.
99 export_pot._poentry(self._outf, 'dummy', 2, "spam", 'EGG')
100
101 self.check_output('''\
102 #: dummy:1
103 msgid "spam"
104 msgstr ""\n
105 ''')
106
107
108class TestPoentryPerPergraph(PoEntryTestCase):
109
110 def test_single(self):
111 export_pot._poentry_per_paragraph(
112 self._outf,
113 'dummy',
114 10,
115 '''foo\nbar\nbaz\n'''
116 )
117 self.check_output('''\
118 #: dummy:10
119 msgid ""
120 "foo\\n"
121 "bar\\n"
122 "baz\\n"
123 msgstr ""\n
124 ''')
125
126 def test_multi(self):
127 export_pot._poentry_per_paragraph(
128 self._outf,
129 'dummy',
130 10,
131 '''spam\nham\negg\n\nSPAM\nHAM\nEGG\n'''
132 )
133 self.check_output('''\
134 #: dummy:10
135 msgid ""
136 "spam\\n"
137 "ham\\n"
138 "egg"
139 msgstr ""
140
141 #: dummy:14
142 msgid ""
143 "SPAM\\n"
144 "HAM\\n"
145 "EGG\\n"
146 msgstr ""\n
147 ''')
0148
=== added file 'bzrlib/tests/test_utextwrap.py'
--- bzrlib/tests/test_utextwrap.py 1970-01-01 00:00:00 +0000
+++ bzrlib/tests/test_utextwrap.py 2011-05-14 03:14:26 +0000
@@ -0,0 +1,192 @@
1# Copyright (C) 2011 Canonical Ltd
2#
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 2 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program; if not, write to the Free Software
15# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16#
17
18"""Tests of the bzrlib.utextwrap."""
19
20from bzrlib import tests, utextwrap
21
22# Japanese "Good morning".
23# Each character have double width. So total 8 width on console.
24_str_D = u'\u304a\u306f\u3088\u3046'
25
26_str_S = u"hello"
27
28# Combine single width characters and double width characters.
29_str_SD = _str_S + _str_D
30_str_DS = _str_D + _str_S
31
32class TestUTextWrap(tests.TestCase):
33
34 def check_width(self, text, expected_width):
35 w = utextwrap.UTextWrapper()
36 self.assertEqual(
37 w._width(text),
38 expected_width,
39 "Width of %r should be %d" % (text, expected_width))
40
41 def test_width(self):
42 self.check_width(_str_D, 8)
43 self.check_width(_str_SD, 13)
44
45 def check_cut(self, text, width, pos):
46 w = utextwrap.UTextWrapper()
47 self.assertEqual((text[:pos], text[pos:]), w._cut(text, width))
48
49 def test_cut(self):
50 s = _str_SD
51 self.check_cut(s, 0, 0)
52 self.check_cut(s, 1, 1)
53 self.check_cut(s, 5, 5)
54 self.check_cut(s, 6, 5)
55 self.check_cut(s, 7, 6)
56 self.check_cut(s, 12, 8)
57 self.check_cut(s, 13, 9)
58 self.check_cut(s, 14, 9)
59 self.check_cut(u'A'*5, 3, 3)
60
61 def test_split(self):
62 w = utextwrap.UTextWrapper()
63 self.assertEqual(list(_str_D), w._split(_str_D))
64 self.assertEqual([_str_S]+list(_str_D), w._split(_str_SD))
65 self.assertEqual(list(_str_D)+[_str_S], w._split(_str_DS))
66
67 def test_wrap(self):
68 self.assertEqual(list(_str_D), utextwrap.wrap(_str_D, 1))
69 self.assertEqual(list(_str_D), utextwrap.wrap(_str_D, 2))
70 self.assertEqual(list(_str_D), utextwrap.wrap(_str_D, 3))
71 self.assertEqual(list(_str_D),
72 utextwrap.wrap(_str_D, 3, break_long_words=False))
73
74class TestUTextFill(tests.TestCase):
75
76 def test_fill_simple(self):
77 # Test only can call fill() because it's just '\n'.join(wrap(text)).
78 self.assertEqual("%s\n%s" % (_str_D[:2], _str_D[2:]),
79 utextwrap.fill(_str_D, 4))
80
81 def test_fill_with_breaks(self):
82 # Demonstrate complicated case.
83 text = u"spam ham egg spamhamegg" + _str_D + u" spam" + _str_D*2
84 self.assertEqual(u'\n'.join(["spam ham",
85 "egg spam",
86 "hamegg" + _str_D[0],
87 _str_D[1:],
88 "spam" + _str_D[:2],
89 _str_D[2:]+_str_D[:2],
90 _str_D[2:]]),
91 utextwrap.fill(text, 8))
92
93 def test_fill_without_breaks(self):
94 text = u"spam ham egg spamhamegg" + _str_D + u" spam" + _str_D*2
95 self.assertEqual(u'\n'.join(["spam ham",
96 "egg",
97 "spamhamegg",
98 # border between single width and double
99 # width.
100 _str_D,
101 "spam" + _str_D[:2],
102 _str_D[2:]+_str_D[:2],
103 _str_D[2:]]),
104 utextwrap.fill(text, 8, break_long_words=False))
105
106 def test_fill_indent_with_breaks(self):
107 w = utextwrap.UTextWrapper(8, initial_indent=' '*4,
108 subsequent_indent=' '*4)
109 self.assertEqual(u'\n'.join([" hell",
110 " o" + _str_D[0],
111 " " + _str_D[1:3],
112 " " + _str_D[3]
113 ]),
114 w.fill(_str_SD))
115
116 def test_fill_indent_without_breaks(self):
117 w = utextwrap.UTextWrapper(8, initial_indent=' '*4,
118 subsequent_indent=' '*4)
119 w.break_long_words = False
120 self.assertEqual(u'\n'.join([" hello",
121 " " + _str_D[:2],
122 " " + _str_D[2:],
123 ]),
124 w.fill(_str_SD))
125
126 def test_fill_indent_without_breaks_with_fixed_width(self):
127 w = utextwrap.UTextWrapper(8, initial_indent=' '*4,
128 subsequent_indent=' '*4)
129 w.break_long_words = False
130 w.width = 3
131 self.assertEqual(u'\n'.join([" hello",
132 " " + _str_D[0],
133 " " + _str_D[1],
134 " " + _str_D[2],
135 " " + _str_D[3],
136 ]),
137 w.fill(_str_SD))
138
139class TestUTextWrapAmbiWidth(tests.TestCase):
140 _cyrill_char = u"\u0410" # east_asian_width() == 'A'
141
142 def test_ambiwidth1(self):
143 w = utextwrap.UTextWrapper(4, ambiguous_width=1)
144 s = self._cyrill_char*8
145 self.assertEqual([self._cyrill_char*4]*2, w.wrap(s))
146
147 def test_ambiwidth2(self):
148 w = utextwrap.UTextWrapper(4, ambiguous_width=2)
149 s = self._cyrill_char*8
150 self.assertEqual([self._cyrill_char*2]*4, w.wrap(s))
151
152
153# Regression test with Python's test_textwrap
154# Note that some distribution including Ubuntu doesn't install
155# Python's test suite.
156try:
157 from test import test_textwrap
158
159 def override_textwrap_symbols(testcase):
160 # Override the symbols imported by test_textwrap so it uses our own
161 # replacements.
162 testcase.overrideAttr(test_textwrap, 'TextWrapper',
163 utextwrap.UTextWrapper)
164 testcase.overrideAttr(test_textwrap, 'wrap', utextwrap.wrap)
165 testcase.overrideAttr(test_textwrap, 'fill', utextwrap.fill)
166
167
168 def setup_both(testcase, base_class, reused_class):
169 super(base_class, testcase).setUp()
170 override_textwrap_symbols(testcase)
171 reused_class.setUp(testcase)
172
173
174 class TestWrap(tests.TestCase, test_textwrap.WrapTestCase):
175
176 def setUp(self):
177 setup_both(self, TestWrap, test_textwrap.WrapTestCase)
178
179
180 class TestLongWord(tests.TestCase, test_textwrap.LongWordTestCase):
181
182 def setUp(self):
183 setup_both(self, TestLongWord, test_textwrap.LongWordTestCase)
184
185
186 class TestIndent(tests.TestCase, test_textwrap.IndentTestCases):
187
188 def setUp(self):
189 setup_both(self, TestIndent, test_textwrap.IndentTestCases)
190
191except ImportError:
192 pass
0193
=== modified file 'bzrlib/trace.py'
--- bzrlib/trace.py 2011-04-07 10:36:24 +0000
+++ bzrlib/trace.py 2011-05-14 03:14:26 +0000
@@ -566,7 +566,11 @@
566 :param advice: Extra advice to the user to be printed following the566 :param advice: Extra advice to the user to be printed following the
567 exception.567 exception.
568 """568 """
569 err_file.write("bzr: ERROR: %s\n" % (exc_info[1],))569 e = exc_info[1]
570 if isinstance(e, errors.BzrError):
571 err_file.write("bzr: ERROR: %s\n" % (e.i18n(),))
572 else:
573 err_file.write("bzr: ERROR: %s\n" % (e,))
570 if advice:574 if advice:
571 err_file.write("%s\n" % (advice,))575 err_file.write("%s\n" % (advice,))
572576
573577
=== added file 'bzrlib/utextwrap.py'
--- bzrlib/utextwrap.py 1970-01-01 00:00:00 +0000
+++ bzrlib/utextwrap.py 2011-05-14 03:14:26 +0000
@@ -0,0 +1,243 @@
1# Copyright (C) 2011 Canonical Ltd
2#
3# UTextWrapper._handle_long_word, UTextWrapper._wrap_chunks,
4# wrap and fill is copied from Python's textwrap module
5# (under PSF license) and modified for support CJK.
6# Original Copyright for these functions:
7#
8# Copyright (C) 1999-2001 Gregory P. Ward.
9# Copyright (C) 2002, 2003 Python Software Foundation.
10#
11# Written by Greg Ward <gward@python.net>
12# This program is free software; you can redistribute it and/or modify
13# it under the terms of the GNU General Public License as published by
14# the Free Software Foundation; either version 2 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20# GNU General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, write to the Free Software
24# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25
26import sys
27import textwrap
28from unicodedata import east_asian_width as _eawidth
29
30from bzrlib import osutils
31
32__all__ = ["UTextWrapper", "fill", "wrap"]
33
34class UTextWrapper(textwrap.TextWrapper):
35 """
36 Extend TextWrapper for Unicode.
37
38 This textwrapper handles east asian double width and split word
39 even if !break_long_words when word contains double width
40 characters.
41
42 :param ambiguous_width: (keyword argument) width for character when
43 unicodedata.east_asian_width(c) == 'A'
44 (default: 1)
45
46 Limitations:
47 * expand_tabs doesn't fixed. It uses len() for calculating width
48 of string on left of TAB.
49 * Handles one codeunit as a single character having 1 or 2 width.
50 This is not correct when there are surrogate pairs, combined
51 characters or zero-width characters.
52 * Treats all asian character are line breakable. But it is not
53 true because line breaking is prohibited around some characters.
54 (For example, breaking before punctation mark is prohibited.)
55 See UAX # 14 "UNICODE LINE BREAKING ALGORITHM"
56 """
57
58 def __init__(self, width=None, **kwargs):
59 if width is None:
60 width = (osutils.terminal_width() or
61 osutils.default_terminal_width) - 1
62
63 ambi_width = kwargs.pop('ambiguous_width', 1)
64 if ambi_width == 1:
65 self._east_asian_doublewidth = 'FW'
66 elif ambi_width == 2:
67 self._east_asian_doublewidth = 'FWA'
68 else:
69 raise ValueError("ambiguous_width should be 1 or 2")
70
71 # No drop_whitespace param before Python 2.6 it was always dropped
72 if sys.version_info < (2, 6):
73 self.drop_whitespace = kwargs.pop("drop_whitespace", True)
74 if not self.drop_whitespace:
75 raise ValueError("TextWrapper version must drop whitespace")
76 textwrap.TextWrapper.__init__(self, width, **kwargs)
77
78 def _unicode_char_width(self, uc):
79 """Return width of character `uc`.
80
81 :param: uc Single unicode character.
82 """
83 # 'A' means width of the character is not be able to determine.
84 # We assume that it's width is 2 because longer wrap may over
85 # terminal width but shorter wrap may be acceptable.
86 return (_eawidth(uc) in self._east_asian_doublewidth and 2) or 1
87
88 def _width(self, s):
89 """Returns width for s.
90
91 When s is unicode, take care of east asian width.
92 When s is bytes, treat all byte is single width character.
93 """
94 charwidth = self._unicode_char_width
95 return sum(charwidth(c) for c in s)
96
97 def _cut(self, s, width):
98 """Returns head and rest of s. (head+rest == s)
99
100 Head is large as long as _width(head) <= width.
101 """
102 w = 0
103 charwidth = self._unicode_char_width
104 for pos, c in enumerate(s):
105 w += charwidth(c)
106 if w > width:
107 return s[:pos], s[pos:]
108 return s, u''
109
110 def _handle_long_word(self, chunks, cur_line, cur_len, width):
111 # Figure out when indent is larger than the specified width, and make
112 # sure at least one character is stripped off on every pass
113 if width < 2:
114 space_left = chunks[-1] and self._width(chunks[-1][0]) or 1
115 else:
116 space_left = width - cur_len
117
118 # If we're allowed to break long words, then do so: put as much
119 # of the next chunk onto the current line as will fit.
120 if self.break_long_words:
121 head, rest = self._cut(chunks[-1], space_left)
122 cur_line.append(head)
123 if rest:
124 chunks[-1] = rest
125 else:
126 del chunks[-1]
127
128 # Otherwise, we have to preserve the long word intact. Only add
129 # it to the current line if there's nothing already there --
130 # that minimizes how much we violate the width constraint.
131 elif not cur_line:
132 cur_line.append(chunks.pop())
133
134 # If we're not allowed to break long words, and there's already
135 # text on the current line, do nothing. Next time through the
136 # main loop of _wrap_chunks(), we'll wind up here again, but
137 # cur_len will be zero, so the next line will be entirely
138 # devoted to the long word that we can't handle right now.
139
140 def _wrap_chunks(self, chunks):
141 lines = []
142 if self.width <= 0:
143 raise ValueError("invalid width %r (must be > 0)" % self.width)
144
145 # Arrange in reverse order so items can be efficiently popped
146 # from a stack of chucks.
147 chunks.reverse()
148
149 while chunks:
150
151 # Start the list of chunks that will make up the current line.
152 # cur_len is just the length of all the chunks in cur_line.
153 cur_line = []
154 cur_len = 0
155
156 # Figure out which static string will prefix this line.
157 if lines:
158 indent = self.subsequent_indent
159 else:
160 indent = self.initial_indent
161
162 # Maximum width for this line.
163 width = self.width - len(indent)
164
165 # First chunk on line is whitespace -- drop it, unless this
166 # is the very beginning of the text (ie. no lines started yet).
167 if self.drop_whitespace and chunks[-1].strip() == '' and lines:
168 del chunks[-1]
169
170 while chunks:
171 # Use _width instead of len for east asian width
172 l = self._width(chunks[-1])
173
174 # Can at least squeeze this chunk onto the current line.
175 if cur_len + l <= width:
176 cur_line.append(chunks.pop())
177 cur_len += l
178
179 # Nope, this line is full.
180 else:
181 break
182
183 # The current line is full, and the next chunk is too big to
184 # fit on *any* line (not just this one).
185 if chunks and self._width(chunks[-1]) > width:
186 self._handle_long_word(chunks, cur_line, cur_len, width)
187
188 # If the last chunk on this line is all whitespace, drop it.
189 if self.drop_whitespace and cur_line and cur_line[-1].strip() == '':
190 del cur_line[-1]
191
192 # Convert current line back to a string and store it in list
193 # of all lines (return value).
194 if cur_line:
195 lines.append(indent + ''.join(cur_line))
196
197 return lines
198
199 def _split(self, text):
200 chunks = textwrap.TextWrapper._split(self, unicode(text))
201 cjk_split_chunks = []
202 for chunk in chunks:
203 assert chunk # TextWrapper._split removes empty chunk
204 prev_pos = 0
205 for pos, char in enumerate(chunk):
206 if _eawidth(char) in 'FWA':
207 if prev_pos < pos:
208 cjk_split_chunks.append(chunk[prev_pos:pos])
209 cjk_split_chunks.append(char)
210 prev_pos = pos+1
211 if prev_pos < len(chunk):
212 cjk_split_chunks.append(chunk[prev_pos:])
213 return cjk_split_chunks
214
215 def wrap(self, text):
216 # ensure text is unicode
217 return textwrap.TextWrapper.wrap(self, unicode(text))
218
219# -- Convenience interface ---------------------------------------------
220
221def wrap(text, width=None, **kwargs):
222 """Wrap a single paragraph of text, returning a list of wrapped lines.
223
224 Reformat the single paragraph in 'text' so it fits in lines of no
225 more than 'width' columns, and return a list of wrapped lines. By
226 default, tabs in 'text' are expanded with string.expandtabs(), and
227 all other whitespace characters (including newline) are converted to
228 space. See TextWrapper class for available keyword args to customize
229 wrapping behaviour.
230 """
231 return UTextWrapper(width=width, **kwargs).wrap(text)
232
233def fill(text, width=None, **kwargs):
234 """Fill a single paragraph of text, returning a new string.
235
236 Reformat the single paragraph in 'text' to fit in lines of no more
237 than 'width' columns, and return a new string containing the entire
238 wrapped paragraph. As with wrap(), tabs are expanded and other
239 whitespace characters converted to space. See TextWrapper class for
240 available keyword args to customize wrapping behaviour.
241 """
242 return UTextWrapper(width=width, **kwargs).fill(text)
243
0244
=== added directory 'po'
=== added file 'po/bzr.pot'
--- po/bzr.pot 1970-01-01 00:00:00 +0000
+++ po/bzr.pot 2011-05-14 03:14:26 +0000
@@ -0,0 +1,8931 @@
1# SOME DESCRIPTIVE TITLE.
2# Copyright (C) YEAR Canonical
3# This file is distributed under the same license as the PACKAGE package.
4# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5#
6#, fuzzy
7msgid ""
8msgstr ""
9"Project-Id-Version: bzr\n"
10"Report-Msgid-Bugs-To: <bazaar@canonical.com>\n"
11"POT-Creation-Date: 2011-05-14 12:05+0900\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
15"Language: \n"
16"MIME-Version: 1.0\n"
17"Content-Type: text/plain; charset=CHARSET\n"
18"Content-Transfer-Encoding: 8bit\n"
19
20#: bzrlib/builtins.py:206
21msgid "Display status summary."
22msgstr ""
23
24#: bzrlib/builtins.py:208
25msgid ""
26"This reports on versioned and unknown files, reporting them\n"
27"grouped by state. Possible states are:"
28msgstr ""
29
30#: bzrlib/builtins.py:211
31msgid ""
32"added\n"
33" Versioned in the working copy but not in the previous revision."
34msgstr ""
35
36#: bzrlib/builtins.py:214
37msgid ""
38"removed\n"
39" Versioned in the previous revision but removed or deleted\n"
40" in the working copy."
41msgstr ""
42
43#: bzrlib/builtins.py:218
44msgid ""
45"renamed\n"
46" Path of this file changed from the previous revision;\n"
47" the text may also have changed. This includes files whose\n"
48" parent directory was renamed."
49msgstr ""
50
51#: bzrlib/builtins.py:223
52msgid ""
53"modified\n"
54" Text has changed since the previous revision."
55msgstr ""
56
57#: bzrlib/builtins.py:226
58msgid ""
59"kind changed\n"
60" File kind has been changed (e.g. from file to directory)."
61msgstr ""
62
63#: bzrlib/builtins.py:229
64msgid ""
65"unknown\n"
66" Not versioned and not matching an ignore pattern."
67msgstr ""
68
69#: bzrlib/builtins.py:232
70msgid ""
71"Additionally for directories, symlinks and files with an executable\n"
72"bit, Bazaar indicates their type using a trailing character: '/', '@'\n"
73"or '*' respectively."
74msgstr ""
75
76#: bzrlib/builtins.py:236
77msgid ""
78"To see ignored files use 'bzr ignored'. For details on the\n"
79"changes to file texts, use 'bzr diff'."
80msgstr ""
81
82#: bzrlib/builtins.py:239
83msgid ""
84"Note that --short or -S gives status flags for each item, similar\n"
85"to Subversion's status command. To get output similar to svn -q,\n"
86"use bzr status -SV."
87msgstr ""
88
89#: bzrlib/builtins.py:243
90msgid ""
91"If no arguments are specified, the status of the entire working\n"
92"directory is shown. Otherwise, only the status of the specified\n"
93"files or directories is reported. If a directory is given, status\n"
94"is reported for everything inside that directory."
95msgstr ""
96
97#: bzrlib/builtins.py:248
98msgid ""
99"Before merges are committed, the pending merge tip revisions are\n"
100"shown. To see all pending merge revisions, use the -v option.\n"
101"To skip the display of pending merge information altogether, use\n"
102"the no-pending option or specify a file/directory."
103msgstr ""
104
105#: bzrlib/builtins.py:253
106msgid ""
107"To compare the working directory to a specific revision, pass a\n"
108"single revision to the revision argument."
109msgstr ""
110
111#: bzrlib/builtins.py:256
112msgid ""
113"To see which files have changed in a specific revision, or between\n"
114"two revisions, pass a revision range to the revision argument.\n"
115"This will produce the same results as calling 'bzr diff --summarize'."
116msgstr ""
117
118# help of 'short' option of 'status' command
119#: bzrlib/builtins.py:265
120msgid "Use short status indicators."
121msgstr ""
122
123# help of 'versioned' option of 'status' command
124#: bzrlib/builtins.py:267
125msgid "Only show versioned files."
126msgstr ""
127
128# help of 'no-pending' option of 'status' command
129#: bzrlib/builtins.py:269
130msgid "Don't show pending merges."
131msgstr ""
132
133#: bzrlib/builtins.py:446
134msgid "Remove the working tree from a given branch/checkout."
135msgstr ""
136
137#: bzrlib/builtins.py:448
138msgid ""
139"Since a lightweight checkout is little more than a working tree\n"
140"this will refuse to run against one."
141msgstr ""
142
143#: bzrlib/builtins.py:451
144msgid "To re-create the working tree, use \"bzr checkout\"."
145msgstr ""
146
147# help of 'force' option of 'remove-tree' command
148#: bzrlib/builtins.py:457
149msgid "Remove the working tree even if it has uncommitted or shelved changes."
150msgstr ""
151
152#: bzrlib/builtins.py:542
153msgid "Show current revision number."
154msgstr ""
155
156#: bzrlib/builtins.py:544
157msgid "This is equal to the number of revisions on this branch."
158msgstr ""
159
160# help of 'tree' option of 'revno' command
161#: bzrlib/builtins.py:585
162msgid "Show revno of working tree"
163msgstr ""
164
165#: bzrlib/builtins.py:633
166msgid "Add specified files or directories."
167msgstr ""
168
169#: bzrlib/builtins.py:635
170msgid ""
171"In non-recursive mode, all the named items are added, regardless\n"
172"of whether they were previously ignored. A warning is given if\n"
173"any of the named files are already versioned."
174msgstr ""
175
176#: bzrlib/builtins.py:639
177msgid ""
178"In recursive mode (the default), files are treated the same way\n"
179"but the behaviour for directories is different. Directories that\n"
180"are already versioned do not give a warning. All directories,\n"
181"whether already versioned or not, are searched for files or\n"
182"subdirectories that are neither versioned or ignored, and these\n"
183"are added. This search proceeds recursively into versioned\n"
184"directories. If no names are given '.' is assumed."
185msgstr ""
186
187#: bzrlib/builtins.py:647
188msgid ""
189"Therefore simply saying 'bzr add' will version all files that\n"
190"are currently unknown."
191msgstr ""
192
193#: bzrlib/builtins.py:650
194msgid ""
195"Adding a file whose parent directory is not versioned will\n"
196"implicitly add the parent, and so on up to the root. This means\n"
197"you should never need to explicitly add a directory, they'll just\n"
198"get added when you add a file in the directory."
199msgstr ""
200
201#: bzrlib/builtins.py:655
202msgid ""
203"--dry-run will show which files would be added, but not actually\n"
204"add them."
205msgstr ""
206
207#: bzrlib/builtins.py:658
208msgid ""
209"--file-ids-from will try to use the file ids from the supplied path.\n"
210"It looks up ids trying to find a matching parent directory with the\n"
211"same filename, and then by pure path. This option is rarely needed\n"
212"but can be useful when adding the same logical file into two\n"
213"branches that will be merged later (without showing the two different\n"
214"adds as a conflict). It is also useful when merging another project\n"
215"into a subdirectory of this one."
216msgstr ""
217
218#: bzrlib/builtins.py:666
219msgid ""
220"Any files matching patterns in the ignore list will not be added\n"
221"unless they are explicitly mentioned."
222msgstr ""
223
224# help of 'no-recurse' option of 'add' command
225#: bzrlib/builtins.py:672
226msgid "Don't recursively add the contents of directories."
227msgstr ""
228
229# help of 'file-ids-from' option of 'add' command
230#: bzrlib/builtins.py:678
231msgid "Lookup file ids from this tree."
232msgstr ""
233
234#: bzrlib/builtins.py:718
235msgid "Create a new versioned directory."
236msgstr ""
237
238#: bzrlib/builtins.py:720
239msgid "This is equivalent to creating the directory and then adding it."
240msgstr ""
241
242#: bzrlib/builtins.py:814
243msgid "Move or rename a file."
244msgstr ""
245
246#: bzrlib/builtins.py:816
247msgid ""
248":Usage:\n"
249" bzr mv OLDNAME NEWNAME"
250msgstr ""
251
252#: bzrlib/builtins.py:819
253msgid " bzr mv SOURCE... DESTINATION"
254msgstr ""
255
256#: bzrlib/builtins.py:821
257msgid ""
258"If the last argument is a versioned directory, all the other names\n"
259"are moved into it. Otherwise, there must be exactly two arguments\n"
260"and the file is changed to a new name."
261msgstr ""
262
263#: bzrlib/builtins.py:825
264msgid ""
265"If OLDNAME does not exist on the filesystem but is versioned and\n"
266"NEWNAME does exist on the filesystem but is not versioned, mv\n"
267"assumes that the file has been manually moved and only updates\n"
268"its internal inventory to reflect that change.\n"
269"The same is valid when moving many SOURCE files to a DESTINATION."
270msgstr ""
271
272#: bzrlib/builtins.py:831
273msgid "Files cannot be moved between branches."
274msgstr ""
275
276# help of 'after' option of 'mv' command
277#: bzrlib/builtins.py:835
278msgid ""
279"Move only the bzr identifier of the file, because the file has already been "
280"moved."
281msgstr ""
282
283# help of 'auto' option of 'mv' command
284#: bzrlib/builtins.py:837
285msgid "Automatically guess renames."
286msgstr ""
287
288# help of 'dry-run' option of 'mv' command
289#: bzrlib/builtins.py:838
290msgid "Avoid making changes when guessing renames."
291msgstr ""
292
293#: bzrlib/builtins.py:950
294msgid "Turn this branch into a mirror of another branch."
295msgstr ""
296
297#: bzrlib/builtins.py:952
298msgid ""
299"By default, this command only works on branches that have not diverged.\n"
300"Branches are considered diverged if the destination branch's most recent \n"
301"commit is one that has not been merged (directly or indirectly) into the \n"
302"parent."
303msgstr ""
304
305#: bzrlib/builtins.py:957
306msgid ""
307"If branches have diverged, you can use 'bzr merge' to integrate the changes\n"
308"from one into the other. Once one branch has merged, the other should\n"
309"be able to pull it again."
310msgstr ""
311
312#: bzrlib/builtins.py:961
313msgid ""
314"If you want to replace your local changes and just want your branch to\n"
315"match the remote one, use pull --overwrite. This will work even if the two\n"
316"branches have diverged."
317msgstr ""
318
319#: bzrlib/builtins.py:965
320msgid ""
321"If there is no default location set, the first pull will set it. After\n"
322"that, you can omit the location to use the default. To change the\n"
323"default, use --remember. The value will only be saved if the remote\n"
324"location can be accessed."
325msgstr ""
326
327#: bzrlib/builtins.py:970
328msgid ""
329"Note: The location can be specified either in the form of a branch,\n"
330"or in the form of a path to a file containing a merge directive generated\n"
331"with bzr send."
332msgstr ""
333
334# help of 'verbose' option of 'pull' command
335#: bzrlib/builtins.py:978
336msgid "Show logs of pulled revisions."
337msgstr ""
338
339# help of 'directory' option of 'pull' command
340#: bzrlib/builtins.py:980
341msgid ""
342"Branch to pull into, rather than the one containing the working directory."
343msgstr ""
344
345# help of 'local' option of 'pull' command
346#: bzrlib/builtins.py:983
347msgid ""
348"Perform a local pull in a bound branch. Local pulls are not applied to the "
349"master branch."
350msgstr ""
351
352#: bzrlib/builtins.py:1082
353msgid "Update a mirror of this branch."
354msgstr ""
355
356#: bzrlib/builtins.py:1084
357msgid ""
358"The target branch will not have its working tree populated because this\n"
359"is both expensive, and is not supported on remote file systems."
360msgstr ""
361
362#: bzrlib/builtins.py:1087
363msgid ""
364"Some smart servers or protocols *may* put the working tree in place in\n"
365"the future."
366msgstr ""
367
368#: bzrlib/builtins.py:1090
369msgid ""
370"This command only works on branches that have not diverged. Branches are\n"
371"considered diverged if the destination branch's most recent commit is one\n"
372"that has not been merged (directly or indirectly) by the source branch."
373msgstr ""
374
375#: bzrlib/builtins.py:1094
376msgid ""
377"If branches have diverged, you can use 'bzr push --overwrite' to replace\n"
378"the other branch completely, discarding its unmerged changes."
379msgstr ""
380
381#: bzrlib/builtins.py:1097
382msgid ""
383"If you want to ensure you have the different changes in the other branch,\n"
384"do a merge (see bzr help merge) from the other branch, and commit that.\n"
385"After that you will be able to do a push without '--overwrite'."
386msgstr ""
387
388#: bzrlib/builtins.py:1101
389msgid ""
390"If there is no default push location set, the first push will set it.\n"
391"After that, you can omit the location to use the default. To change the\n"
392"default, use --remember. The value will only be saved if the remote\n"
393"location can be accessed."
394msgstr ""
395
396# help of 'directory' option of 'push' command
397#: bzrlib/builtins.py:1113
398msgid ""
399"Branch to push from, rather than the one containing the working directory."
400msgstr ""
401
402# help of 'use-existing-dir' option of 'push' command
403#: bzrlib/builtins.py:1116
404msgid ""
405"By default push will fail if the target directory exists, but does not "
406"already have a control directory. This flag will allow push to proceed."
407msgstr ""
408
409# help of 'stacked' option of 'push' command
410#: bzrlib/builtins.py:1121
411msgid ""
412"Create a stacked branch that references the public location of the parent "
413"branch."
414msgstr ""
415
416# help of 'stacked-on' option of 'push' command
417#: bzrlib/builtins.py:1124
418msgid ""
419"Create a stacked branch that refers to another branch for the commit "
420"history. Only the work not present in the referenced branch is included in "
421"the branch created."
422msgstr ""
423
424# help of 'strict' option of 'push' command
425#: bzrlib/builtins.py:1129
426msgid ""
427"Refuse to push if there are uncommitted changes in the working tree, --no-"
428"strict disables the check."
429msgstr ""
430
431# help of 'no-tree' option of 'push' command
432#: bzrlib/builtins.py:1132
433msgid "Don't populate the working tree, even for protocols that support it."
434msgstr ""
435
436#: bzrlib/builtins.py:1197
437msgid "Create a new branch that is a copy of an existing branch."
438msgstr ""
439
440#: bzrlib/builtins.py:1199
441msgid ""
442"If the TO_LOCATION is omitted, the last component of the FROM_LOCATION will\n"
443"be used. In other words, \"branch ../foo/bar\" will attempt to create ./"
444"bar.\n"
445"If the FROM_LOCATION has no / or path separator embedded, the TO_LOCATION\n"
446"is derived from the FROM_LOCATION by stripping a leading scheme or drive\n"
447"identifier, if any. For example, \"branch lp:foo-bar\" will attempt to\n"
448"create ./foo-bar."
449msgstr ""
450
451#: bzrlib/builtins.py:1206
452msgid ""
453"To retrieve the branch as of a particular revision, supply the --revision\n"
454"parameter, as in \"branch foo/bar -r 5\"."
455msgstr ""
456
457#: bzrlib/builtins.py:1209
458msgid "The synonyms 'clone' and 'get' for this command are deprecated."
459msgstr ""
460
461# help of 'no-tree' option of 'branch' command
462#: bzrlib/builtins.py:1219
463msgid "Create a branch without a working-tree."
464msgstr ""
465
466# help of 'switch' option of 'branch' command
467#: bzrlib/builtins.py:1221
468msgid "Switch the checkout in the current directory to the new branch."
469msgstr ""
470
471# help of 'stacked' option of 'branch' command
472#: bzrlib/builtins.py:1224
473msgid ""
474"Create a stacked branch referring to the source branch. The new branch will "
475"depend on the availability of the source branch for all operations."
476msgstr ""
477
478# help of 'standalone' option of 'branch' command
479#: bzrlib/builtins.py:1228
480msgid "Do not use a shared repository, even if available."
481msgstr ""
482
483# help of 'use-existing-dir' option of 'branch' command
484#: bzrlib/builtins.py:1230
485msgid ""
486"By default branch will fail if the target directory exists, but does not "
487"already have a control directory. This flag will allow branch to proceed."
488msgstr ""
489
490# help of 'bind' option of 'branch' command
491#: bzrlib/builtins.py:1235
492msgid "Bind new branch to from location."
493msgstr ""
494
495#: bzrlib/builtins.py:1327
496msgid "Create a new checkout of an existing branch."
497msgstr ""
498
499#: bzrlib/builtins.py:1329
500msgid ""
501"If BRANCH_LOCATION is omitted, checkout will reconstitute a working tree "
502"for\n"
503"the branch found in '.'. This is useful if you have removed the working "
504"tree\n"
505"or if it was never created - i.e. if you pushed the branch to its current\n"
506"location using SFTP."
507msgstr ""
508
509#: bzrlib/builtins.py:1334
510msgid ""
511"If the TO_LOCATION is omitted, the last component of the BRANCH_LOCATION "
512"will\n"
513"be used. In other words, \"checkout ../foo/bar\" will attempt to create ./"
514"bar.\n"
515"If the BRANCH_LOCATION has no / or path separator embedded, the TO_LOCATION\n"
516"is derived from the BRANCH_LOCATION by stripping a leading scheme or drive\n"
517"identifier, if any. For example, \"checkout lp:foo-bar\" will attempt to\n"
518"create ./foo-bar."
519msgstr ""
520
521#: bzrlib/builtins.py:1341
522msgid ""
523"To retrieve the branch as of a particular revision, supply the --revision\n"
524"parameter, as in \"checkout foo/bar -r 5\". Note that this will be "
525"immediately\n"
526"out of date [so you cannot commit] but it may be useful (i.e. to examine "
527"old\n"
528"code.)"
529msgstr ""
530
531# help of 'lightweight' option of 'checkout' command
532#: bzrlib/builtins.py:1351
533msgid ""
534"Perform a lightweight checkout. Lightweight checkouts depend on access to "
535"the branch for every operation. Normal checkouts can perform common "
536"operations like diff and status without such access, and also support local "
537"commits."
538msgstr ""
539
540# help of 'files-from' option of 'branch' command
541#: bzrlib/builtins.py:1358
542msgid "Get file contents from this tree."
543msgstr ""
544
545# help of 'hardlink' option of 'branch' command
546#: bzrlib/builtins.py:1360
547msgid "Hard-link working tree files where possible."
548msgstr ""
549
550#: bzrlib/builtins.py:1401
551msgid ""
552"Show list of renamed files.\n"
553" "
554msgstr ""
555
556#: bzrlib/builtins.py:1431
557msgid "Update a tree to have the latest code committed to its branch."
558msgstr ""
559
560#: bzrlib/builtins.py:1433
561msgid ""
562"This will perform a merge into the working tree, and may generate\n"
563"conflicts. If you have any local changes, you will still\n"
564"need to commit them after the update for the update to be complete."
565msgstr ""
566
567#: bzrlib/builtins.py:1437
568msgid ""
569"If you want to discard your local changes, you can just do a\n"
570"'bzr revert' instead of 'bzr commit' after the update."
571msgstr ""
572
573#: bzrlib/builtins.py:1440
574msgid ""
575"If you want to restore a file that has been removed locally, use\n"
576"'bzr revert' instead of 'bzr update'."
577msgstr ""
578
579#: bzrlib/builtins.py:1443
580msgid ""
581"If the tree's branch is bound to a master branch, it will also update\n"
582"the branch from the master."
583msgstr ""
584
585#: bzrlib/builtins.py:1524
586msgid "Show information about a working tree, branch or repository."
587msgstr ""
588
589#: bzrlib/builtins.py:1526
590msgid ""
591"This command will show all known locations and formats associated to the\n"
592"tree, branch or repository."
593msgstr ""
594
595#: bzrlib/builtins.py:1529
596msgid ""
597"In verbose mode, statistical information is included with each report.\n"
598"To see extended statistic information, use a verbosity level of 2 or\n"
599"higher by specifying the verbose option multiple times, e.g. -vv."
600msgstr ""
601
602#: bzrlib/builtins.py:1533
603msgid "Branches and working trees will also report any missing revisions."
604msgstr ""
605
606#: bzrlib/builtins.py:1537
607msgid " Display information on the format and related locations:"
608msgstr ""
609
610#: bzrlib/builtins.py:1539
611msgid " bzr info"
612msgstr ""
613
614#: bzrlib/builtins.py:1541
615msgid ""
616" Display the above together with extended format information and\n"
617" basic statistics (like the number of files in the working tree and\n"
618" number of revisions in the branch and repository):"
619msgstr ""
620
621#: bzrlib/builtins.py:1545
622msgid " bzr info -v"
623msgstr ""
624
625#: bzrlib/builtins.py:1547
626msgid " Display the above together with number of committers to the branch:"
627msgstr ""
628
629#: bzrlib/builtins.py:1549
630msgid " bzr info -vv"
631msgstr ""
632
633#: bzrlib/builtins.py:1568
634msgid "Remove files or directories."
635msgstr ""
636
637#: bzrlib/builtins.py:1570
638msgid ""
639"This makes Bazaar stop tracking changes to the specified files. Bazaar will\n"
640"delete them if they can easily be recovered using revert otherwise they\n"
641"will be backed up (adding an extention of the form .~#~). If no options or\n"
642"parameters are given Bazaar will scan for files that are being tracked by\n"
643"Bazaar but missing in your tree and stop tracking them for you."
644msgstr ""
645
646# help of 'new' option of 'remove' command
647#: bzrlib/builtins.py:1578
648msgid "Only remove files that have never been committed."
649msgstr ""
650
651# help of 'file-deletion-strategy' option of 'remove' command
652#: bzrlib/builtins.py:1580
653msgid "The file deletion mode to be used."
654msgstr ""
655
656# title of 'file-deletion-strategy' option of 'remove' command
657#: bzrlib/builtins.py:1581
658msgid "Deletion Strategy"
659msgstr ""
660
661#: bzrlib/builtins.py:1672
662msgid "Reconcile bzr metadata in a branch."
663msgstr ""
664
665#: bzrlib/builtins.py:1674
666msgid ""
667"This can correct data mismatches that may have been caused by\n"
668"previous ghost operations or bzr upgrades. You should only\n"
669"need to run this command if 'bzr check' or a bzr developer\n"
670"advises you to run it."
671msgstr ""
672
673#: bzrlib/builtins.py:1679
674msgid ""
675"If a second branch is provided, cross-branch reconciliation is\n"
676"also attempted, which will check that data like the tree root\n"
677"id which was not present in very early bzr versions is represented\n"
678"correctly in both branches."
679msgstr ""
680
681#: bzrlib/builtins.py:1684
682msgid ""
683"At the same time it is run it may recompress data resulting in\n"
684"a potential saving in disk space or performance gain."
685msgstr ""
686
687#: bzrlib/builtins.py:1687
688msgid "The branch *MUST* be on a listable system such as local disk or sftp."
689msgstr ""
690
691#: bzrlib/builtins.py:1747
692msgid "Make a directory into a versioned branch."
693msgstr ""
694
695#: bzrlib/builtins.py:1749
696msgid ""
697"Use this to create an empty branch, or before importing an\n"
698"existing project."
699msgstr ""
700
701#: bzrlib/builtins.py:1752
702msgid ""
703"If there is a repository in a parent directory of the location, then\n"
704"the history of the branch will be stored in the repository. Otherwise\n"
705"init creates a standalone branch which carries its own history\n"
706"in the .bzr directory."
707msgstr ""
708
709#: bzrlib/builtins.py:1757
710msgid ""
711"If there is already a branch at the location but it has no working tree,\n"
712"the tree can be populated with 'bzr checkout'."
713msgstr ""
714
715#: bzrlib/builtins.py:1760
716msgid "Recipe for importing a tree of files::"
717msgstr ""
718
719#: bzrlib/builtins.py:1762
720msgid ""
721" cd ~/project\n"
722" bzr init\n"
723" bzr add .\n"
724" bzr status\n"
725" bzr commit -m \"imported project\""
726msgstr ""
727
728# help of 'create-prefix' option of 'init' command
729#: bzrlib/builtins.py:1773
730msgid "Create the path leading up to the branch if it does not already exist."
731msgstr ""
732
733# help of 'format' option of 'init' command
734#: bzrlib/builtins.py:1776
735msgid "Specify a format for this branch. See \"help formats\"."
736msgstr ""
737
738# help of 'append-revisions-only' option of 'init' command
739#: bzrlib/builtins.py:1784
740msgid "Never change revnos or the existing log. Append revisions to it only."
741msgstr ""
742
743# help of 'no-tree' option of 'init' command
744#: bzrlib/builtins.py:1787
745msgid "Create a branch without a working tree."
746msgstr ""
747
748#: bzrlib/builtins.py:1864
749msgid "Create a shared repository for branches to share storage space."
750msgstr ""
751
752#: bzrlib/builtins.py:1866
753msgid ""
754"New branches created under the repository directory will store their\n"
755"revisions in the repository, not in the branch directory. For branches\n"
756"with shared history, this reduces the amount of storage needed and \n"
757"speeds up the creation of new branches."
758msgstr ""
759
760#: bzrlib/builtins.py:1871
761msgid ""
762"If the --no-trees option is given then the branches in the repository\n"
763"will not have working trees by default. They will still exist as \n"
764"directories on disk, but they will not have separate copies of the \n"
765"files at a certain revision. This can be useful for repositories that\n"
766"store branches which are interacted with through checkouts or remote\n"
767"branches, such as on a server."
768msgstr ""
769
770#: bzrlib/builtins.py:1878
771msgid ""
772":Examples:\n"
773" Create a shared repository holding just branches::"
774msgstr ""
775
776#: bzrlib/builtins.py:1881
777msgid ""
778" bzr init-repo --no-trees repo\n"
779" bzr init repo/trunk"
780msgstr ""
781
782#: bzrlib/builtins.py:1884
783msgid " Make a lightweight checkout elsewhere::"
784msgstr ""
785
786#: bzrlib/builtins.py:1886
787msgid ""
788" bzr checkout --lightweight repo/trunk trunk-checkout\n"
789" cd trunk-checkout\n"
790" (add files here)"
791msgstr ""
792
793# help of 'format' option of 'init-repository' command
794#: bzrlib/builtins.py:1894
795msgid ""
796"Specify a format for this repository. See \"bzr help formats\" for details."
797msgstr ""
798
799# title of 'format' option of 'init-repository' command
800#: bzrlib/builtins.py:1898
801msgid "Repository format"
802msgstr ""
803
804# help of 'no-trees' option of 'init-repository' command
805#: bzrlib/builtins.py:1900
806msgid "Branches in the repository will default to not having a working tree."
807msgstr ""
808
809#: bzrlib/builtins.py:1924
810msgid "Show differences in the working tree, between revisions or branches."
811msgstr ""
812
813#: bzrlib/builtins.py:1926
814msgid ""
815"If no arguments are given, all changes for the current tree are listed.\n"
816"If files are given, only the changes in those files are listed.\n"
817"Remote and multiple branches can be compared by using the --old and\n"
818"--new options. If not provided, the default for both is derived from\n"
819"the first argument, if any, or the current tree if no arguments are\n"
820"given."
821msgstr ""
822
823#: bzrlib/builtins.py:1933
824msgid ""
825"\"bzr diff -p1\" is equivalent to \"bzr diff --prefix old/:new/\", and\n"
826"produces patches suitable for \"patch -p1\"."
827msgstr ""
828
829#: bzrlib/builtins.py:1936
830msgid ""
831"Note that when using the -r argument with a range of revisions, the\n"
832"differences are computed between the two specified revisions. That\n"
833"is, the command does not show the changes introduced by the first \n"
834"revision in the range. This differs from the interpretation of \n"
835"revision ranges used by \"bzr log\" which includes the first revision\n"
836"in the range."
837msgstr ""
838
839#: bzrlib/builtins.py:1943
840msgid ""
841":Exit values:\n"
842" 1 - changed\n"
843" 2 - unrepresentable changes\n"
844" 3 - error\n"
845" 0 - no change"
846msgstr ""
847
848#: bzrlib/builtins.py:1949
849msgid ""
850":Examples:\n"
851" Shows the difference in the working tree versus the last commit::"
852msgstr ""
853
854#: bzrlib/builtins.py:1952
855msgid " bzr diff"
856msgstr ""
857
858#: bzrlib/builtins.py:1954
859msgid " Difference between the working tree and revision 1::"
860msgstr ""
861
862#: bzrlib/builtins.py:1956
863msgid " bzr diff -r1"
864msgstr ""
865
866#: bzrlib/builtins.py:1958
867msgid " Difference between revision 3 and revision 1::"
868msgstr ""
869
870#: bzrlib/builtins.py:1960
871msgid " bzr diff -r1..3"
872msgstr ""
873
874#: bzrlib/builtins.py:1962
875msgid " Difference between revision 3 and revision 1 for branch xxx::"
876msgstr ""
877
878#: bzrlib/builtins.py:1964
879msgid " bzr diff -r1..3 xxx"
880msgstr ""
881
882#: bzrlib/builtins.py:1966
883msgid " The changes introduced by revision 2 (equivalent to -r1..2)::"
884msgstr ""
885
886#: bzrlib/builtins.py:1968
887msgid " bzr diff -c2"
888msgstr ""
889
890#: bzrlib/builtins.py:1970
891msgid ""
892" To see the changes introduced by revision X::\n"
893" \n"
894" bzr diff -cX"
895msgstr ""
896
897#: bzrlib/builtins.py:1974
898msgid ""
899" Note that in the case of a merge, the -c option shows the changes\n"
900" compared to the left hand parent. To see the changes against\n"
901" another parent, use::"
902msgstr ""
903
904#: bzrlib/builtins.py:1978
905msgid " bzr diff -r<chosen_parent>..X"
906msgstr ""
907
908#: bzrlib/builtins.py:1980
909msgid ""
910" The changes between the current revision and the previous revision\n"
911" (equivalent to -c-1 and -r-2..-1)"
912msgstr ""
913
914#: bzrlib/builtins.py:1983
915msgid " bzr diff -r-2.."
916msgstr ""
917
918#: bzrlib/builtins.py:1985
919msgid " Show just the differences for file NEWS::"
920msgstr ""
921
922#: bzrlib/builtins.py:1987
923msgid " bzr diff NEWS"
924msgstr ""
925
926#: bzrlib/builtins.py:1989
927msgid " Show the differences in working tree xxx for file NEWS::"
928msgstr ""
929
930#: bzrlib/builtins.py:1991
931msgid " bzr diff xxx/NEWS"
932msgstr ""
933
934#: bzrlib/builtins.py:1993
935msgid " Show the differences from branch xxx to this working tree:"
936msgstr ""
937
938#: bzrlib/builtins.py:1995
939msgid " bzr diff --old xxx"
940msgstr ""
941
942#: bzrlib/builtins.py:1997
943msgid " Show the differences between two branches for file NEWS::"
944msgstr ""
945
946#: bzrlib/builtins.py:1999
947msgid " bzr diff --old xxx --new yyy NEWS"
948msgstr ""
949
950#: bzrlib/builtins.py:2001
951msgid " Same as 'bzr diff' but prefix paths with old/ and new/::"
952msgstr ""
953
954#: bzrlib/builtins.py:2003
955msgid ""
956" bzr diff --prefix old/:new/\n"
957" \n"
958" Show the differences using a custom diff program with options::\n"
959" \n"
960" bzr diff --using /usr/bin/diff --diff-options -wu"
961msgstr ""
962
963# help of 'diff-options' option of 'diff' command
964#: bzrlib/builtins.py:2013
965msgid "Pass these options to the external diff program."
966msgstr ""
967
968# help of 'prefix' option of 'diff' command
969#: bzrlib/builtins.py:2016
970msgid ""
971"Set prefixes added to old and new filenames, as two values separated by a "
972"colon. (eg \"old/:new/\")."
973msgstr ""
974
975# help of 'old' option of 'diff' command
976#: bzrlib/builtins.py:2019
977msgid "Branch/tree to compare from."
978msgstr ""
979
980# help of 'new' option of 'diff' command
981#: bzrlib/builtins.py:2023
982msgid "Branch/tree to compare to."
983msgstr ""
984
985# help of 'using' option of 'diff' command
986#: bzrlib/builtins.py:2029
987msgid "Use this command to compare files."
988msgstr ""
989
990# help of 'format' option of 'diff' command
991#: bzrlib/builtins.py:2034
992msgid "Diff format to use."
993msgstr ""
994
995# title of 'format' option of 'diff' command
996#: bzrlib/builtins.py:2036
997msgid "Diff format"
998msgstr ""
999
1000#: bzrlib/builtins.py:2086
1001msgid ""
1002"List files deleted in the working tree.\n"
1003" "
1004msgstr ""
1005
1006#: bzrlib/builtins.py:2164
1007msgid "Show the tree root directory."
1008msgstr ""
1009
1010#: bzrlib/builtins.py:2166
1011msgid ""
1012"The root is the nearest enclosing directory with a .bzr control\n"
1013"directory."
1014msgstr ""
1015
1016#: bzrlib/builtins.py:2194
1017msgid "Show historical log for a branch or subset of a branch."
1018msgstr ""
1019
1020#: bzrlib/builtins.py:2196
1021msgid ""
1022"log is bzr's default tool for exploring the history of a branch.\n"
1023"The branch to use is taken from the first parameter. If no parameters\n"
1024"are given, the branch containing the working directory is logged.\n"
1025"Here are some simple examples::"
1026msgstr ""
1027
1028#: bzrlib/builtins.py:2201
1029msgid ""
1030" bzr log log the current branch\n"
1031" bzr log foo.py log a file in its branch\n"
1032" bzr log http://server/branch log a branch on a server"
1033msgstr ""
1034
1035#: bzrlib/builtins.py:2205
1036msgid ""
1037"The filtering, ordering and information shown for each revision can\n"
1038"be controlled as explained below. By default, all revisions are\n"
1039"shown sorted (topologically) so that newer revisions appear before\n"
1040"older ones and descendants always appear before ancestors. If displayed,\n"
1041"merged revisions are shown indented under the revision in which they\n"
1042"were merged."
1043msgstr ""
1044
1045#: bzrlib/builtins.py:2212
1046msgid ":Output control:"
1047msgstr ""
1048
1049#: bzrlib/builtins.py:2214
1050msgid ""
1051" The log format controls how information about each revision is\n"
1052" displayed. The standard log formats are called ``long``, ``short``\n"
1053" and ``line``. The default is long. See ``bzr help log-formats``\n"
1054" for more details on log formats."
1055msgstr ""
1056
1057#: bzrlib/builtins.py:2219
1058msgid ""
1059" The following options can be used to control what information is\n"
1060" displayed::"
1061msgstr ""
1062
1063#: bzrlib/builtins.py:2222
1064msgid ""
1065" -l N display a maximum of N revisions\n"
1066" -n N display N levels of revisions (0 for all, 1 for collapsed)\n"
1067" -v display a status summary (delta) for each revision\n"
1068" -p display a diff (patch) for each revision\n"
1069" --show-ids display revision-ids (and file-ids), not just revnos"
1070msgstr ""
1071
1072#: bzrlib/builtins.py:2228
1073msgid ""
1074" Note that the default number of levels to display is a function of the\n"
1075" log format. If the -n option is not used, the standard log formats show\n"
1076" just the top level (mainline)."
1077msgstr ""
1078
1079#: bzrlib/builtins.py:2232
1080msgid ""
1081" Status summaries are shown using status flags like A, M, etc. To see\n"
1082" the changes explained using words like ``added`` and ``modified``\n"
1083" instead, use the -vv option."
1084msgstr ""
1085
1086#: bzrlib/builtins.py:2236
1087msgid ":Ordering control:"
1088msgstr ""
1089
1090#: bzrlib/builtins.py:2238
1091msgid ""
1092" To display revisions from oldest to newest, use the --forward option.\n"
1093" In most cases, using this option will have little impact on the total\n"
1094" time taken to produce a log, though --forward does not incrementally\n"
1095" display revisions like --reverse does when it can."
1096msgstr ""
1097
1098#: bzrlib/builtins.py:2243
1099msgid ":Revision filtering:"
1100msgstr ""
1101
1102#: bzrlib/builtins.py:2245
1103msgid ""
1104" The -r option can be used to specify what revision or range of revisions\n"
1105" to filter against. The various forms are shown below::"
1106msgstr ""
1107
1108#: bzrlib/builtins.py:2248
1109msgid ""
1110" -rX display revision X\n"
1111" -rX.. display revision X and later\n"
1112" -r..Y display up to and including revision Y\n"
1113" -rX..Y display from X to Y inclusive"
1114msgstr ""
1115
1116#: bzrlib/builtins.py:2253
1117msgid ""
1118" See ``bzr help revisionspec`` for details on how to specify X and Y.\n"
1119" Some common examples are given below::"
1120msgstr ""
1121
1122#: bzrlib/builtins.py:2256
1123msgid ""
1124" -r-1 show just the tip\n"
1125" -r-10.. show the last 10 mainline revisions\n"
1126" -rsubmit:.. show what's new on this branch\n"
1127" -rancestor:path.. show changes since the common ancestor of this\n"
1128" branch and the one at location path\n"
1129" -rdate:yesterday.. show changes since yesterday"
1130msgstr ""
1131
1132#: bzrlib/builtins.py:2263
1133msgid ""
1134" When logging a range of revisions using -rX..Y, log starts at\n"
1135" revision Y and searches back in history through the primary\n"
1136" (\"left-hand\") parents until it finds X. When logging just the\n"
1137" top level (using -n1), an error is reported if X is not found\n"
1138" along the way. If multi-level logging is used (-n0), X may be\n"
1139" a nested merge revision and the log will be truncated accordingly."
1140msgstr ""
1141
1142#: bzrlib/builtins.py:2270
1143msgid ":Path filtering:"
1144msgstr ""
1145
1146#: bzrlib/builtins.py:2272
1147msgid ""
1148" If parameters are given and the first one is not a branch, the log\n"
1149" will be filtered to show only those revisions that changed the\n"
1150" nominated files or directories."
1151msgstr ""
1152
1153#: bzrlib/builtins.py:2276
1154msgid ""
1155" Filenames are interpreted within their historical context. To log a\n"
1156" deleted file, specify a revision range so that the file existed at\n"
1157" the end or start of the range."
1158msgstr ""
1159
1160#: bzrlib/builtins.py:2280
1161msgid ""
1162" Historical context is also important when interpreting pathnames of\n"
1163" renamed files/directories. Consider the following example:"
1164msgstr ""
1165
1166#: bzrlib/builtins.py:2283
1167msgid ""
1168" * revision 1: add tutorial.txt\n"
1169" * revision 2: modify tutorial.txt\n"
1170" * revision 3: rename tutorial.txt to guide.txt; add tutorial.txt"
1171msgstr ""
1172
1173#: bzrlib/builtins.py:2287
1174msgid " In this case:"
1175msgstr ""
1176
1177#: bzrlib/builtins.py:2289
1178msgid " * ``bzr log guide.txt`` will log the file added in revision 1"
1179msgstr ""
1180
1181#: bzrlib/builtins.py:2291
1182msgid " * ``bzr log tutorial.txt`` will log the new file added in revision 3"
1183msgstr ""
1184
1185#: bzrlib/builtins.py:2293
1186msgid ""
1187" * ``bzr log -r2 -p tutorial.txt`` will show the changes made to\n"
1188" the original file in revision 2."
1189msgstr ""
1190
1191#: bzrlib/builtins.py:2296
1192msgid ""
1193" * ``bzr log -r2 -p guide.txt`` will display an error message as there\n"
1194" was no file called guide.txt in revision 2."
1195msgstr ""
1196
1197#: bzrlib/builtins.py:2299
1198msgid ""
1199" Renames are always followed by log. By design, there is no need to\n"
1200" explicitly ask for this (and no way to stop logging a file back\n"
1201" until it was last renamed)."
1202msgstr ""
1203
1204#: bzrlib/builtins.py:2303
1205msgid ":Other filtering:"
1206msgstr ""
1207
1208#: bzrlib/builtins.py:2305
1209msgid ""
1210" The --message option can be used for finding revisions that match a\n"
1211" regular expression in a commit message."
1212msgstr ""
1213
1214#: bzrlib/builtins.py:2308
1215msgid ":Tips & tricks:"
1216msgstr ""
1217
1218#: bzrlib/builtins.py:2310
1219msgid ""
1220" GUI tools and IDEs are often better at exploring history than command\n"
1221" line tools: you may prefer qlog or viz from qbzr or bzr-gtk, the\n"
1222" bzr-explorer shell, or the Loggerhead web interface. See the Plugin\n"
1223" Guide <http://doc.bazaar.canonical.com/plugins/en/> and\n"
1224" <http://wiki.bazaar.canonical.com/IDEIntegration>. "
1225msgstr ""
1226
1227#: bzrlib/builtins.py:2316
1228msgid " You may find it useful to add the aliases below to ``bazaar.conf``::"
1229msgstr ""
1230
1231#: bzrlib/builtins.py:2318
1232msgid ""
1233" [ALIASES]\n"
1234" tip = log -r-1\n"
1235" top = log -l10 --line\n"
1236" show = log -v -p"
1237msgstr ""
1238
1239#: bzrlib/builtins.py:2323
1240msgid ""
1241" ``bzr tip`` will then show the latest revision while ``bzr top``\n"
1242" will show the last 10 mainline revisions. To see the details of a\n"
1243" particular revision X, ``bzr show -rX``."
1244msgstr ""
1245
1246#: bzrlib/builtins.py:2327
1247msgid ""
1248" If you are interested in looking deeper into a particular merge X,\n"
1249" use ``bzr log -n0 -rX``."
1250msgstr ""
1251
1252#: bzrlib/builtins.py:2330
1253msgid ""
1254" ``bzr log -v`` on a branch with lots of history is currently\n"
1255" very slow. A fix for this issue is currently under development.\n"
1256" With or without that fix, it is recommended that a revision range\n"
1257" be given when using the -v option."
1258msgstr ""
1259
1260#: bzrlib/builtins.py:2335
1261msgid ""
1262" bzr has a generic full-text matching plugin, bzr-search, that can be\n"
1263" used to find revisions matching user names, commit messages, etc.\n"
1264" Among other features, this plugin can find all revisions containing\n"
1265" a list of words but not others."
1266msgstr ""
1267
1268#: bzrlib/builtins.py:2340
1269msgid ""
1270" When exploring non-mainline history on large projects with deep\n"
1271" history, the performance of log can be greatly improved by installing\n"
1272" the historycache plugin. This plugin buffers historical information\n"
1273" trading disk space for faster speed."
1274msgstr ""
1275
1276# help of 'forward' option of 'log' command
1277#: bzrlib/builtins.py:2349
1278msgid "Show from oldest to newest."
1279msgstr ""
1280
1281# help of 'verbose' option of 'log' command
1282#: bzrlib/builtins.py:2352
1283msgid "Show files changed in each revision."
1284msgstr ""
1285
1286# help of 'change' option of 'log' command
1287#: bzrlib/builtins.py:2358
1288msgid "Show just the specified revision. See also \"help revisionspec\"."
1289msgstr ""
1290
1291# help of 'authors' option of 'log' command
1292#: bzrlib/builtins.py:2362
1293msgid "What names to list as authors - first, all or committer."
1294msgstr ""
1295
1296# title of 'authors' option of 'log' command
1297#: bzrlib/builtins.py:2363
1298msgid "Authors"
1299msgstr ""
1300
1301# help of 'levels' option of 'log' command
1302#: bzrlib/builtins.py:2368
1303msgid "Number of levels to display - 0 for all, 1 for flat."
1304msgstr ""
1305
1306# help of 'message' option of 'log' command
1307#: bzrlib/builtins.py:2373
1308msgid "Show revisions whose message matches this regular expression."
1309msgstr ""
1310
1311# help of 'limit' option of 'log' command
1312#: bzrlib/builtins.py:2378
1313msgid "Limit the output to the first N revisions."
1314msgstr ""
1315
1316# help of 'show-diff' option of 'log' command
1317#: bzrlib/builtins.py:2383
1318msgid "Show changes made in each revision as a patch."
1319msgstr ""
1320
1321# help of 'include-merges' option of 'log' command
1322#: bzrlib/builtins.py:2385
1323msgid "Show merged revisions like --levels 0 does."
1324msgstr ""
1325
1326# help of 'exclude-common-ancestry' option of 'log' command
1327#: bzrlib/builtins.py:2387
1328msgid ""
1329"Display only the revisions that are not part of both ancestries (require -"
1330"rX..Y)"
1331msgstr ""
1332
1333#: bzrlib/builtins.py:2602
1334msgid ""
1335"List files in a tree.\n"
1336" "
1337msgstr ""
1338
1339# help of 'recursive' option of 'ls' command
1340#: bzrlib/builtins.py:2611
1341msgid "Recurse into subdirectories."
1342msgstr ""
1343
1344# help of 'from-root' option of 'ls' command
1345#: bzrlib/builtins.py:2613
1346msgid "Print paths relative to the root of the branch."
1347msgstr ""
1348
1349# help of 'unknown' option of 'ls' command
1350#: bzrlib/builtins.py:2615
1351msgid "Print unknown files."
1352msgstr ""
1353
1354# help of 'versioned' option of 'ls' command
1355#: bzrlib/builtins.py:2616
1356msgid "Print versioned files."
1357msgstr ""
1358
1359# help of 'ignored' option of 'ls' command
1360#: bzrlib/builtins.py:2619
1361msgid "Print ignored files."
1362msgstr ""
1363
1364# help of 'kind' option of 'ls' command
1365#: bzrlib/builtins.py:2621
1366msgid "List entries of a particular kind: file, directory, symlink."
1367msgstr ""
1368
1369#: bzrlib/builtins.py:2733
1370msgid "Ignore specified files or patterns."
1371msgstr ""
1372
1373#: bzrlib/builtins.py:2735
1374msgid "See ``bzr help patterns`` for details on the syntax of patterns."
1375msgstr ""
1376
1377#: bzrlib/builtins.py:2737
1378msgid ""
1379"If a .bzrignore file does not exist, the ignore command\n"
1380"will create one and add the specified files or patterns to the newly\n"
1381"created file. The ignore command will also automatically add the \n"
1382".bzrignore file to be versioned. Creating a .bzrignore file without\n"
1383"the use of the ignore command will require an explicit add command."
1384msgstr ""
1385
1386#: bzrlib/builtins.py:2743
1387msgid ""
1388"To remove patterns from the ignore list, edit the .bzrignore file.\n"
1389"After adding, editing or deleting that file either indirectly by\n"
1390"using this command or directly by using an editor, be sure to commit\n"
1391"it."
1392msgstr ""
1393
1394#: bzrlib/builtins.py:2748
1395msgid ""
1396"Bazaar also supports a global ignore file ~/.bazaar/ignore. On Windows\n"
1397"the global ignore file can be found in the application data directory as\n"
1398"C:\\Documents and Settings\\<user>\\Application Data\\Bazaar\\2.0\\ignore.\n"
1399"Global ignores are not touched by this command. The global ignore file\n"
1400"can be edited directly using an editor."
1401msgstr ""
1402
1403#: bzrlib/builtins.py:2754
1404msgid ""
1405"Patterns prefixed with '!' are exceptions to ignore patterns and take\n"
1406"precedence over regular ignores. Such exceptions are used to specify\n"
1407"files that should be versioned which would otherwise be ignored."
1408msgstr ""
1409
1410#: bzrlib/builtins.py:2758
1411msgid ""
1412"Patterns prefixed with '!!' act as regular ignore patterns, but have\n"
1413"precedence over the '!' exception patterns."
1414msgstr ""
1415
1416#: bzrlib/builtins.py:2761
1417msgid ""
1418":Notes: \n"
1419" \n"
1420"* Ignore patterns containing shell wildcards must be quoted from\n"
1421" the shell on Unix."
1422msgstr ""
1423
1424#: bzrlib/builtins.py:2766
1425msgid ""
1426"* Ignore patterns starting with \"#\" act as comments in the ignore file.\n"
1427" To ignore patterns that begin with that character, use the \"RE:\" prefix."
1428msgstr ""
1429
1430#: bzrlib/builtins.py:2769
1431msgid ""
1432":Examples:\n"
1433" Ignore the top level Makefile::"
1434msgstr ""
1435
1436#: bzrlib/builtins.py:2772
1437msgid " bzr ignore ./Makefile"
1438msgstr ""
1439
1440#: bzrlib/builtins.py:2774
1441msgid " Ignore .class files in all directories...::"
1442msgstr ""
1443
1444#: bzrlib/builtins.py:2776
1445msgid " bzr ignore \"*.class\""
1446msgstr ""
1447
1448#: bzrlib/builtins.py:2778
1449msgid " ...but do not ignore \"special.class\"::"
1450msgstr ""
1451
1452#: bzrlib/builtins.py:2780
1453msgid " bzr ignore \"!special.class\""
1454msgstr ""
1455
1456#: bzrlib/builtins.py:2782
1457msgid " Ignore files whose name begins with the \"#\" character::"
1458msgstr ""
1459
1460#: bzrlib/builtins.py:2784
1461msgid " bzr ignore \"RE:^#\""
1462msgstr ""
1463
1464#: bzrlib/builtins.py:2786
1465msgid " Ignore .o files under the lib directory::"
1466msgstr ""
1467
1468#: bzrlib/builtins.py:2788
1469msgid " bzr ignore \"lib/**/*.o\""
1470msgstr ""
1471
1472#: bzrlib/builtins.py:2792
1473msgid " bzr ignore \"RE:lib/.*\\.o\""
1474msgstr ""
1475
1476#: bzrlib/builtins.py:2794
1477msgid " Ignore everything but the \"debian\" toplevel directory::"
1478msgstr ""
1479
1480#: bzrlib/builtins.py:2796
1481msgid ""
1482" bzr ignore \"RE:(?!debian/).*\"\n"
1483" \n"
1484" Ignore everything except the \"local\" toplevel directory,\n"
1485" but always ignore autosave files ending in ~, even under local/::\n"
1486" \n"
1487" bzr ignore \"*\"\n"
1488" bzr ignore \"!./local\"\n"
1489" bzr ignore \"!!*~\""
1490msgstr ""
1491
1492# help of 'default-rules' option of 'ignore' command
1493#: bzrlib/builtins.py:2810
1494msgid "Display the default ignore rules that bzr uses."
1495msgstr ""
1496
1497#: bzrlib/builtins.py:2858
1498msgid "List ignored files and the patterns that matched them."
1499msgstr ""
1500
1501#: bzrlib/builtins.py:2860
1502msgid ""
1503"List all the ignored files and the ignore pattern that caused the file to\n"
1504"be ignored."
1505msgstr ""
1506
1507#: bzrlib/builtins.py:2863
1508msgid "Alternatively, to list just the files::"
1509msgstr ""
1510
1511#: bzrlib/builtins.py:2865
1512msgid " bzr ls --ignored"
1513msgstr ""
1514
1515#: bzrlib/builtins.py:2906
1516msgid "Export current or past revision to a destination directory or archive."
1517msgstr ""
1518
1519#: bzrlib/builtins.py:2908
1520msgid "If no revision is specified this exports the last committed revision."
1521msgstr ""
1522
1523#: bzrlib/builtins.py:2910
1524msgid ""
1525"Format may be an \"exporter\" name, such as tar, tgz, tbz2. If none is\n"
1526"given, try to find the format with the extension. If no extension\n"
1527"is found exports to a directory (equivalent to --format=dir)."
1528msgstr ""
1529
1530#: bzrlib/builtins.py:2914
1531msgid ""
1532"If root is supplied, it will be used as the root directory inside\n"
1533"container formats (tar, zip, etc). If it is not supplied it will default\n"
1534"to the exported filename. The root option has no effect for 'dir' format."
1535msgstr ""
1536
1537#: bzrlib/builtins.py:2918
1538msgid ""
1539"If branch is omitted then the branch containing the current working\n"
1540"directory will be used."
1541msgstr ""
1542
1543#: bzrlib/builtins.py:2921
1544msgid "Note: Export of tree with non-ASCII filenames to zip is not supported."
1545msgstr ""
1546
1547#: bzrlib/builtins.py:2923
1548msgid ""
1549" ================= =========================\n"
1550" Supported formats Autodetected by extension\n"
1551" ================= =========================\n"
1552" dir (none)\n"
1553" tar .tar\n"
1554" tbz2 .tar.bz2, .tbz2\n"
1555" tgz .tar.gz, .tgz\n"
1556" zip .zip\n"
1557" ================= ========================="
1558msgstr ""
1559
1560# help of 'format' option of 'export' command
1561#: bzrlib/builtins.py:2937
1562msgid "Type of file to export to."
1563msgstr ""
1564
1565# help of 'filters' option of 'export' command
1566#: bzrlib/builtins.py:2940
1567msgid "Apply content filters to export the convenient form."
1568msgstr ""
1569
1570# help of 'root' option of 'export' command
1571#: bzrlib/builtins.py:2944
1572msgid "Name of the root directory inside the exported file."
1573msgstr ""
1574
1575# help of 'per-file-timestamps' option of 'export' command
1576#: bzrlib/builtins.py:2946
1577msgid ""
1578"Set modification time of files to that of the last revision in which it was "
1579"changed."
1580msgstr ""
1581
1582#: bzrlib/builtins.py:2970
1583msgid "Write the contents of a file as of a given revision to standard output."
1584msgstr ""
1585
1586#: bzrlib/builtins.py:2972
1587msgid "If no revision is nominated, the last revision is used."
1588msgstr ""
1589
1590#: bzrlib/builtins.py:2974
1591msgid ""
1592"Note: Take care to redirect standard output when using this command on a\n"
1593"binary file."
1594msgstr ""
1595
1596# help of 'filters' option of 'cat' command
1597#: bzrlib/builtins.py:2981
1598msgid "Apply content filters to display the convenience form."
1599msgstr ""
1600
1601#: bzrlib/builtins.py:3063
1602msgid "Commit changes into a new revision."
1603msgstr ""
1604
1605#: bzrlib/builtins.py:3065
1606msgid ""
1607"An explanatory message needs to be given for each commit. This is\n"
1608"often done by using the --message option (getting the message from the\n"
1609"command line) or by using the --file option (getting the message from\n"
1610"a file). If neither of these options is given, an editor is opened for\n"
1611"the user to enter the message. To see the changed files in the\n"
1612"boilerplate text loaded into the editor, use the --show-diff option."
1613msgstr ""
1614
1615#: bzrlib/builtins.py:3072
1616msgid ""
1617"By default, the entire tree is committed and the person doing the\n"
1618"commit is assumed to be the author. These defaults can be overridden\n"
1619"as explained below."
1620msgstr ""
1621
1622#: bzrlib/builtins.py:3076
1623msgid ":Selective commits:"
1624msgstr ""
1625
1626#: bzrlib/builtins.py:3078
1627msgid ""
1628" If selected files are specified, only changes to those files are\n"
1629" committed. If a directory is specified then the directory and\n"
1630" everything within it is committed."
1631msgstr ""
1632
1633#: bzrlib/builtins.py:3082
1634msgid ""
1635" When excludes are given, they take precedence over selected files.\n"
1636" For example, to commit only changes within foo, but not changes\n"
1637" within foo/bar::"
1638msgstr ""
1639
1640#: bzrlib/builtins.py:3086
1641msgid " bzr commit foo -x foo/bar"
1642msgstr ""
1643
1644#: bzrlib/builtins.py:3088
1645msgid " A selective commit after a merge is not yet supported."
1646msgstr ""
1647
1648#: bzrlib/builtins.py:3090
1649msgid ":Custom authors:"
1650msgstr ""
1651
1652#: bzrlib/builtins.py:3092
1653msgid ""
1654" If the author of the change is not the same person as the committer,\n"
1655" you can specify the author's name using the --author option. The\n"
1656" name should be in the same format as a committer-id, e.g.\n"
1657" \"John Doe <jdoe@example.com>\". If there is more than one author of\n"
1658" the change you can specify the option multiple times, once for each\n"
1659" author."
1660msgstr ""
1661
1662#: bzrlib/builtins.py:3099
1663msgid ":Checks:"
1664msgstr ""
1665
1666#: bzrlib/builtins.py:3101
1667msgid ""
1668" A common mistake is to forget to add a new file or directory before\n"
1669" running the commit command. The --strict option checks for unknown\n"
1670" files and aborts the commit if any are found. More advanced pre-commit\n"
1671" checks can be implemented by defining hooks. See ``bzr help hooks``\n"
1672" for details."
1673msgstr ""
1674
1675#: bzrlib/builtins.py:3107
1676msgid ":Things to note:"
1677msgstr ""
1678
1679#: bzrlib/builtins.py:3109
1680msgid ""
1681" If you accidentially commit the wrong changes or make a spelling\n"
1682" mistake in the commit message say, you can use the uncommit command\n"
1683" to undo it. See ``bzr help uncommit`` for details."
1684msgstr ""
1685
1686#: bzrlib/builtins.py:3113
1687msgid ""
1688" Hooks can also be configured to run after a commit. This allows you\n"
1689" to trigger updates to external systems like bug trackers. The --fixes\n"
1690" option can be used to record the association between a revision and\n"
1691" one or more bugs. See ``bzr help bugs`` for details."
1692msgstr ""
1693
1694# help of 'exclude' option of 'commit' command
1695#: bzrlib/builtins.py:3123
1696msgid "Do not consider changes made to a given path."
1697msgstr ""
1698
1699# help of 'message' option of 'commit' command
1700#: bzrlib/builtins.py:3126
1701msgid "Description of the new revision."
1702msgstr ""
1703
1704# help of 'unchanged' option of 'commit' command
1705#: bzrlib/builtins.py:3129
1706msgid "Commit even if nothing has changed."
1707msgstr ""
1708
1709# help of 'file' option of 'commit' command
1710#: bzrlib/builtins.py:3133
1711msgid "Take commit message from this file."
1712msgstr ""
1713
1714# help of 'strict' option of 'commit' command
1715#: bzrlib/builtins.py:3135
1716msgid "Refuse to commit if there are unknown files in the working tree."
1717msgstr ""
1718
1719# help of 'commit-time' option of 'commit' command
1720#: bzrlib/builtins.py:3138
1721msgid ""
1722"Manually set a commit time using commit date format, e.g. '2009-10-10 "
1723"08:00:00 +0100'."
1724msgstr ""
1725
1726# help of 'fixes' option of 'commit' command
1727#: bzrlib/builtins.py:3141
1728msgid "Mark a bug as being fixed by this revision (see \"bzr help bugs\")."
1729msgstr ""
1730
1731# help of 'author' option of 'commit' command
1732#: bzrlib/builtins.py:3144
1733msgid "Set the author's name, if it's different from the committer."
1734msgstr ""
1735
1736# help of 'local' option of 'commit' command
1737#: bzrlib/builtins.py:3147
1738msgid ""
1739"Perform a local commit in a bound branch. Local commits are not pushed to "
1740"the master branch until a normal commit is performed."
1741msgstr ""
1742
1743# help of 'show-diff' option of 'commit' command
1744#: bzrlib/builtins.py:3153
1745msgid ""
1746"When no message is supplied, show the diff along with the status summary in "
1747"the message editor."
1748msgstr ""
1749
1750# help of 'lossy' option of 'commit' command
1751#: bzrlib/builtins.py:3156
1752msgid ""
1753"When committing to a foreign version control system do not push data that "
1754"can not be natively represented."
1755msgstr ""
1756
1757#: bzrlib/builtins.py:3308
1758msgid ""
1759"Validate working tree structure, branch consistency and repository history."
1760msgstr ""
1761
1762#: bzrlib/builtins.py:3310
1763msgid ""
1764"This command checks various invariants about branch and repository storage\n"
1765"to detect data corruption or bzr bugs."
1766msgstr ""
1767
1768#: bzrlib/builtins.py:3313
1769msgid ""
1770"The working tree and branch checks will only give output if a problem is\n"
1771"detected. The output fields of the repository check are:"
1772msgstr ""
1773
1774#: bzrlib/builtins.py:3316
1775msgid ""
1776"revisions\n"
1777" This is just the number of revisions checked. It doesn't\n"
1778" indicate a problem."
1779msgstr ""
1780
1781#: bzrlib/builtins.py:3320
1782msgid ""
1783"versionedfiles\n"
1784" This is just the number of versionedfiles checked. It\n"
1785" doesn't indicate a problem."
1786msgstr ""
1787
1788#: bzrlib/builtins.py:3324
1789msgid ""
1790"unreferenced ancestors\n"
1791" Texts that are ancestors of other texts, but\n"
1792" are not properly referenced by the revision ancestry. This is a\n"
1793" subtle problem that Bazaar can work around."
1794msgstr ""
1795
1796#: bzrlib/builtins.py:3329
1797msgid ""
1798"unique file texts\n"
1799" This is the total number of unique file contents\n"
1800" seen in the checked revisions. It does not indicate a problem."
1801msgstr ""
1802
1803#: bzrlib/builtins.py:3333
1804msgid ""
1805"repeated file texts\n"
1806" This is the total number of repeated texts seen\n"
1807" in the checked revisions. Texts can be repeated when their file\n"
1808" entries are modified, but the file contents are not. It does not\n"
1809" indicate a problem."
1810msgstr ""
1811
1812#: bzrlib/builtins.py:3339
1813msgid ""
1814"If no restrictions are specified, all Bazaar data that is found at the "
1815"given\n"
1816"location will be checked."
1817msgstr ""
1818
1819#: bzrlib/builtins.py:3342
1820msgid ":Examples:"
1821msgstr ""
1822
1823#: bzrlib/builtins.py:3344
1824msgid " Check the tree and branch at 'foo'::"
1825msgstr ""
1826
1827#: bzrlib/builtins.py:3346
1828msgid " bzr check --tree --branch foo"
1829msgstr ""
1830
1831#: bzrlib/builtins.py:3348
1832msgid " Check only the repository at 'bar'::"
1833msgstr ""
1834
1835#: bzrlib/builtins.py:3350
1836msgid " bzr check --repo bar"
1837msgstr ""
1838
1839#: bzrlib/builtins.py:3352
1840msgid " Check everything at 'baz'::"
1841msgstr ""
1842
1843#: bzrlib/builtins.py:3354
1844msgid " bzr check baz"
1845msgstr ""
1846
1847# help of 'branch' option of 'check' command
1848#: bzrlib/builtins.py:3360
1849msgid "Check the branch related to the current directory."
1850msgstr ""
1851
1852# help of 'repo' option of 'check' command
1853#: bzrlib/builtins.py:3362
1854msgid "Check the repository related to the current directory."
1855msgstr ""
1856
1857# help of 'tree' option of 'check' command
1858#: bzrlib/builtins.py:3364
1859msgid "Check the working tree related to the current directory."
1860msgstr ""
1861
1862#: bzrlib/builtins.py:3378
1863msgid "Upgrade a repository, branch or working tree to a newer format."
1864msgstr ""
1865
1866#: bzrlib/builtins.py:3380
1867msgid ""
1868"When the default format has changed after a major new release of\n"
1869"Bazaar, you may be informed during certain operations that you\n"
1870"should upgrade. Upgrading to a newer format may improve performance\n"
1871"or make new features available. It may however limit interoperability\n"
1872"with older repositories or with older versions of Bazaar."
1873msgstr ""
1874
1875#: bzrlib/builtins.py:3386
1876msgid ""
1877"If you wish to upgrade to a particular format rather than the\n"
1878"current default, that can be specified using the --format option.\n"
1879"As a consequence, you can use the upgrade command this way to\n"
1880"\"downgrade\" to an earlier format, though some conversions are\n"
1881"a one way process (e.g. changing from the 1.x default to the\n"
1882"2.x default) so downgrading is not always possible."
1883msgstr ""
1884
1885#: bzrlib/builtins.py:3393
1886msgid ""
1887"A backup.bzr.~#~ directory is created at the start of the conversion\n"
1888"process (where # is a number). By default, this is left there on\n"
1889"completion. If the conversion fails, delete the new .bzr directory\n"
1890"and rename this one back in its place. Use the --clean option to ask\n"
1891"for the backup.bzr directory to be removed on successful conversion.\n"
1892"Alternatively, you can delete it by hand if everything looks good\n"
1893"afterwards."
1894msgstr ""
1895
1896#: bzrlib/builtins.py:3401
1897msgid ""
1898"If the location given is a shared repository, dependent branches\n"
1899"are also converted provided the repository converts successfully.\n"
1900"If the conversion of a branch fails, remaining branches are still\n"
1901"tried."
1902msgstr ""
1903
1904#: bzrlib/builtins.py:3406
1905msgid ""
1906"For more information on upgrades, see the Bazaar Upgrade Guide,\n"
1907"http://doc.bazaar.canonical.com/latest/en/upgrade-guide/."
1908msgstr ""
1909
1910# help of 'format' option of 'upgrade' command
1911#: bzrlib/builtins.py:3414
1912msgid "Upgrade to a specific format. See \"bzr help formats\" for details."
1913msgstr ""
1914
1915# title of 'format' option of 'init' command
1916#: bzrlib/builtins.py:3418
1917msgid "Branch format"
1918msgstr ""
1919
1920# help of 'clean' option of 'upgrade' command
1921#: bzrlib/builtins.py:3420
1922msgid "Remove the backup.bzr directory if successful."
1923msgstr ""
1924
1925#: bzrlib/builtins.py:3437
1926msgid "Show or set bzr user id."
1927msgstr ""
1928
1929#: bzrlib/builtins.py:3439
1930msgid ""
1931":Examples:\n"
1932" Show the email of the current user::"
1933msgstr ""
1934
1935#: bzrlib/builtins.py:3442
1936msgid " bzr whoami --email"
1937msgstr ""
1938
1939#: bzrlib/builtins.py:3444
1940msgid " Set the current user::"
1941msgstr ""
1942
1943#: bzrlib/builtins.py:3446
1944msgid " bzr whoami \"Frank Chu <fchu@example.com>\""
1945msgstr ""
1946
1947# help of 'email' option of 'whoami' command
1948#: bzrlib/builtins.py:3450
1949msgid "Display email address only."
1950msgstr ""
1951
1952# help of 'branch' option of 'whoami' command
1953#: bzrlib/builtins.py:3452
1954msgid "Set identity for the current branch instead of globally."
1955msgstr ""
1956
1957#: bzrlib/builtins.py:3498
1958msgid "Print or set the branch nickname."
1959msgstr ""
1960
1961#: bzrlib/builtins.py:3500
1962msgid ""
1963"If unset, the tree root directory name is used as the nickname.\n"
1964"To print the current nickname, execute with no argument."
1965msgstr ""
1966
1967#: bzrlib/builtins.py:3503
1968msgid ""
1969"Bound branches use the nickname of its master branch unless it is set\n"
1970"locally."
1971msgstr ""
1972
1973#: bzrlib/builtins.py:3523
1974msgid "Set/unset and display aliases."
1975msgstr ""
1976
1977#: bzrlib/builtins.py:3525
1978msgid ""
1979":Examples:\n"
1980" Show the current aliases::"
1981msgstr ""
1982
1983#: bzrlib/builtins.py:3528
1984msgid " bzr alias"
1985msgstr ""
1986
1987#: bzrlib/builtins.py:3530
1988msgid " Show the alias specified for 'll'::"
1989msgstr ""
1990
1991#: bzrlib/builtins.py:3532
1992msgid " bzr alias ll"
1993msgstr ""
1994
1995#: bzrlib/builtins.py:3534
1996msgid " Set an alias for 'll'::"
1997msgstr ""
1998
1999#: bzrlib/builtins.py:3536
2000msgid " bzr alias ll=\"log --line -r-10..-1\""
2001msgstr ""
2002
2003#: bzrlib/builtins.py:3538
2004msgid " To remove an alias for 'll'::"
2005msgstr ""
2006
2007#: bzrlib/builtins.py:3540
2008msgid " bzr alias --remove ll"
2009msgstr ""
2010
2011# help of 'remove' option of 'alias' command
2012#: bzrlib/builtins.py:3545
2013msgid "Remove the alias."
2014msgstr ""
2015
2016#: bzrlib/builtins.py:3780
2017msgid "Show version of bzr."
2018msgstr ""
2019
2020# help of 'short' option of 'version' command
2021#: bzrlib/builtins.py:3784
2022msgid "Print just the version number."
2023msgstr ""
2024
2025#: bzrlib/builtins.py:3831
2026msgid "Perform a three-way merge."
2027msgstr ""
2028
2029#: bzrlib/builtins.py:3833
2030msgid ""
2031"The source of the merge can be specified either in the form of a branch,\n"
2032"or in the form of a path to a file containing a merge directive generated\n"
2033"with bzr send. If neither is specified, the default is the upstream branch\n"
2034"or the branch most recently merged using --remember."
2035msgstr ""
2036
2037#: bzrlib/builtins.py:3838
2038msgid ""
2039"When merging from a branch, by default bzr will try to merge in all new\n"
2040"work from the other branch, automatically determining an appropriate base\n"
2041"revision. If this fails, you may need to give an explicit base."
2042msgstr ""
2043
2044#: bzrlib/builtins.py:3842
2045msgid ""
2046"To pick a different ending revision, pass \"--revision OTHER\". bzr will\n"
2047"try to merge in all new work up to and including revision OTHER."
2048msgstr ""
2049
2050#: bzrlib/builtins.py:3845
2051msgid ""
2052"If you specify two values, \"--revision BASE..OTHER\", only revisions BASE\n"
2053"through OTHER, excluding BASE but including OTHER, will be merged. If this\n"
2054"causes some revisions to be skipped, i.e. if the destination branch does\n"
2055"not already contain revision BASE, such a merge is commonly referred to as\n"
2056"a \"cherrypick\"."
2057msgstr ""
2058
2059#: bzrlib/builtins.py:3851
2060msgid "Revision numbers are always relative to the source branch."
2061msgstr ""
2062
2063#: bzrlib/builtins.py:3858
2064msgid "Use bzr resolve when you have fixed a problem. See also bzr conflicts."
2065msgstr ""
2066
2067#: bzrlib/builtins.py:3860
2068msgid ""
2069"If there is no default branch set, the first merge will set it. After\n"
2070"that, you can omit the branch to use the default. To change the\n"
2071"default, use --remember. The value will only be saved if the remote\n"
2072"location can be accessed."
2073msgstr ""
2074
2075#: bzrlib/builtins.py:3865
2076msgid ""
2077"The results of the merge are placed into the destination working\n"
2078"directory, where they can be reviewed (with bzr diff), tested, and then\n"
2079"committed to record the result of the merge."
2080msgstr ""
2081
2082#: bzrlib/builtins.py:3869
2083msgid ""
2084"merge refuses to run if there are any uncommitted changes, unless\n"
2085"--force is given. The --force option can also be used to create a\n"
2086"merge revision which has more than two parents."
2087msgstr ""
2088
2089#: bzrlib/builtins.py:3873
2090msgid ""
2091"If one would like to merge changes from the working tree of the other\n"
2092"branch without merging any committed revisions, the --uncommitted option\n"
2093"can be given."
2094msgstr ""
2095
2096#: bzrlib/builtins.py:3877
2097msgid ""
2098"To select only some changes to merge, use \"merge -i\", which will prompt\n"
2099"you to apply each diff hunk and file change, similar to \"shelve\"."
2100msgstr ""
2101
2102#: bzrlib/builtins.py:3880
2103msgid ""
2104":Examples:\n"
2105" To merge all new revisions from bzr.dev::"
2106msgstr ""
2107
2108#: bzrlib/builtins.py:3883
2109msgid " bzr merge ../bzr.dev"
2110msgstr ""
2111
2112#: bzrlib/builtins.py:3885
2113msgid " To merge changes up to and including revision 82 from bzr.dev::"
2114msgstr ""
2115
2116#: bzrlib/builtins.py:3887
2117msgid " bzr merge -r 82 ../bzr.dev"
2118msgstr ""
2119
2120#: bzrlib/builtins.py:3889
2121msgid " To merge the changes introduced by 82, without previous changes::"
2122msgstr ""
2123
2124#: bzrlib/builtins.py:3891
2125msgid " bzr merge -r 81..82 ../bzr.dev"
2126msgstr ""
2127
2128#: bzrlib/builtins.py:3893
2129msgid " To apply a merge directive contained in /tmp/merge::"
2130msgstr ""
2131
2132#: bzrlib/builtins.py:3895
2133msgid " bzr merge /tmp/merge"
2134msgstr ""
2135
2136#: bzrlib/builtins.py:3897
2137msgid ""
2138" To create a merge revision with three parents from two branches\n"
2139" feature1a and feature1b:"
2140msgstr ""
2141
2142#: bzrlib/builtins.py:3900
2143msgid ""
2144" bzr merge ../feature1a\n"
2145" bzr merge ../feature1b --force\n"
2146" bzr commit -m 'revision with three parents'"
2147msgstr ""
2148
2149# help of 'force' option of 'merge' command
2150#: bzrlib/builtins.py:3912
2151msgid "Merge even if the destination tree has uncommitted changes."
2152msgstr ""
2153
2154# help of 'uncommitted' option of 'merge' command
2155#: bzrlib/builtins.py:3918
2156msgid ""
2157"Apply uncommitted changes from a working copy, instead of branch changes."
2158msgstr ""
2159
2160# help of 'pull' option of 'merge' command
2161#: bzrlib/builtins.py:3920
2162msgid ""
2163"If the destination is already completely merged into the source, pull from "
2164"the source rather than merging. When this happens, you do not need to "
2165"commit the result."
2166msgstr ""
2167
2168# help of 'directory' option of 'merge' command
2169#: bzrlib/builtins.py:3925
2170msgid ""
2171"Branch to merge into, rather than the one containing the working directory."
2172msgstr ""
2173
2174# help of 'preview' option of 'merge' command
2175#: bzrlib/builtins.py:3927
2176msgid "Instead of merging, show a diff of the merge."
2177msgstr ""
2178
2179# help of 'interactive' option of 'merge' command
2180#: bzrlib/builtins.py:3929
2181msgid "Select changes interactively."
2182msgstr ""
2183
2184#: bzrlib/builtins.py:4196
2185msgid "Redo a merge."
2186msgstr ""
2187
2188#: bzrlib/builtins.py:4198
2189msgid ""
2190"Use this if you want to try a different merge technique while resolving\n"
2191"conflicts. Some merge techniques are better than others, and remerge\n"
2192"lets you try different ones on different files."
2193msgstr ""
2194
2195#: bzrlib/builtins.py:4202
2196msgid ""
2197"The options for remerge have the same meaning and defaults as the ones for\n"
2198"merge. The difference is that remerge can (only) be run when there is a\n"
2199"pending merge, and it lets you specify particular files."
2200msgstr ""
2201
2202#: bzrlib/builtins.py:4206
2203msgid ""
2204":Examples:\n"
2205" Re-do the merge of all conflicted files, and show the base text in\n"
2206" conflict regions, in addition to the usual THIS and OTHER texts::"
2207msgstr ""
2208
2209#: bzrlib/builtins.py:4210
2210msgid " bzr remerge --show-base"
2211msgstr ""
2212
2213#: bzrlib/builtins.py:4212
2214msgid ""
2215" Re-do the merge of \"foobar\", using the weave merge algorithm, with\n"
2216" additional processing to reduce the size of conflict regions::"
2217msgstr ""
2218
2219#: bzrlib/builtins.py:4215
2220msgid " bzr remerge --merge-type weave --reprocess foobar"
2221msgstr ""
2222
2223# help of 'show-base' option of 'merge' command
2224#: bzrlib/builtins.py:4222
2225msgid "Show base revision text in conflicts."
2226msgstr ""
2227
2228#: bzrlib/builtins.py:4290
2229msgid "Revert files to a previous revision."
2230msgstr ""
2231
2232#: bzrlib/builtins.py:4292
2233msgid ""
2234"Giving a list of files will revert only those files. Otherwise, all files\n"
2235"will be reverted. If the revision is not specified with '--revision', the\n"
2236"last committed revision is used."
2237msgstr ""
2238
2239#: bzrlib/builtins.py:4296
2240msgid ""
2241"To remove only some changes, without reverting to a prior version, use\n"
2242"merge instead. For example, \"merge . -r -2..-3\" (don't forget the \".\")\n"
2243"will remove the changes introduced by the second last commit (-2), without\n"
2244"affecting the changes introduced by the last commit (-1). To remove\n"
2245"certain changes on a hunk-by-hunk basis, see the shelve command."
2246msgstr ""
2247
2248#: bzrlib/builtins.py:4302
2249msgid ""
2250"By default, any files that have been manually changed will be backed up\n"
2251"first. (Files changed only by merge are not backed up.) Backup files have\n"
2252"'.~#~' appended to their name, where # is a number."
2253msgstr ""
2254
2255#: bzrlib/builtins.py:4306
2256msgid ""
2257"When you provide files, you can use their current pathname or the pathname\n"
2258"from the target revision. So you can use revert to \"undelete\" a file by\n"
2259"name. If you name a directory, all the contents of that directory will be\n"
2260"reverted."
2261msgstr ""
2262
2263#: bzrlib/builtins.py:4311
2264msgid ""
2265"If you have newly added files since the target revision, they will be\n"
2266"removed. If the files to be removed have been changed, backups will be\n"
2267"created as above. Directories containing unknown files will not be\n"
2268"deleted."
2269msgstr ""
2270
2271#: bzrlib/builtins.py:4316
2272msgid ""
2273"The working tree contains a list of revisions that have been merged but\n"
2274"not yet committed. These revisions will be included as additional parents\n"
2275"of the next commit. Normally, using revert clears that list as well as\n"
2276"reverting the files. If any files are specified, revert leaves the list\n"
2277"of uncommitted merges alone and reverts only the files. Use ``bzr revert\n"
2278".`` in the tree root to revert all files but keep the recorded merges,\n"
2279"and ``bzr revert --forget-merges`` to clear the pending merge list without\n"
2280"reverting any files."
2281msgstr ""
2282
2283#: bzrlib/builtins.py:4325
2284msgid ""
2285"Using \"bzr revert --forget-merges\", it is possible to apply all of the\n"
2286"changes from a branch in a single revision. To do this, perform the merge\n"
2287"as desired. Then doing revert with the \"--forget-merges\" option will "
2288"keep\n"
2289"the content of the tree as it was, but it will clear the list of pending\n"
2290"merges. The next commit will then contain all of the changes that are\n"
2291"present in the other branch, but without any other parent revisions.\n"
2292"Because this technique forgets where these changes originated, it may\n"
2293"cause additional conflicts on later merges involving the same source and\n"
2294"target branches."
2295msgstr ""
2296
2297# help of 'no-backup' option of 'revert' command
2298#: bzrlib/builtins.py:4339
2299msgid "Do not save backups of reverted files."
2300msgstr ""
2301
2302# help of 'forget-merges' option of 'revert' command
2303#: bzrlib/builtins.py:4341
2304msgid "Remove pending merge marker, without changing any files."
2305msgstr ""
2306
2307#: bzrlib/builtins.py:4372
2308msgid ""
2309"Show help on a command or other topic.\n"
2310" "
2311msgstr ""
2312
2313# help of 'long' option of 'help' command
2314#: bzrlib/builtins.py:4377
2315msgid "Show help on all commands."
2316msgstr ""
2317
2318#: bzrlib/builtins.py:4406
2319msgid "Show unmerged/unpulled revisions between two branches."
2320msgstr ""
2321
2322#: bzrlib/builtins.py:4408
2323msgid "OTHER_BRANCH may be local or remote."
2324msgstr ""
2325
2326#: bzrlib/builtins.py:4410
2327msgid ""
2328"To filter on a range of revisions, you can use the command -r begin..end\n"
2329"-r revision requests a specific revision, -r ..end or -r begin.. are\n"
2330"also valid.\n"
2331" \n"
2332":Exit values:\n"
2333" 1 - some missing revisions\n"
2334" 0 - no missing revisions"
2335msgstr ""
2336
2337#: bzrlib/builtins.py:4420
2338msgid ""
2339" Determine the missing revisions between this and the branch at the\n"
2340" remembered pull location::"
2341msgstr ""
2342
2343#: bzrlib/builtins.py:4423
2344msgid " bzr missing"
2345msgstr ""
2346
2347#: bzrlib/builtins.py:4425
2348msgid " Determine the missing revisions between this and another branch::"
2349msgstr ""
2350
2351#: bzrlib/builtins.py:4427
2352msgid " bzr missing http://server/branch"
2353msgstr ""
2354
2355#: bzrlib/builtins.py:4429
2356msgid ""
2357" Determine the missing revisions up to a specific revision on the other\n"
2358" branch::"
2359msgstr ""
2360
2361#: bzrlib/builtins.py:4432
2362msgid " bzr missing -r ..-10"
2363msgstr ""
2364
2365#: bzrlib/builtins.py:4434
2366msgid ""
2367" Determine the missing revisions up to a specific revision on this\n"
2368" branch::"
2369msgstr ""
2370
2371#: bzrlib/builtins.py:4437
2372msgid " bzr missing --my-revision ..-10"
2373msgstr ""
2374
2375# help of 'reverse' option of 'missing' command
2376#: bzrlib/builtins.py:4444
2377msgid "Reverse the order of revisions."
2378msgstr ""
2379
2380# help of 'mine-only' option of 'missing' command
2381#: bzrlib/builtins.py:4446
2382msgid "Display changes in the local branch only."
2383msgstr ""
2384
2385# help of 'this' option of 'missing' command
2386#: bzrlib/builtins.py:4447
2387msgid "Same as --mine-only."
2388msgstr ""
2389
2390# help of 'theirs-only' option of 'missing' command
2391#: bzrlib/builtins.py:4449
2392msgid "Display changes in the remote branch only."
2393msgstr ""
2394
2395# help of 'other' option of 'missing' command
2396#: bzrlib/builtins.py:4450
2397msgid "Same as --theirs-only."
2398msgstr ""
2399
2400# help of 'revision' option of 'missing' command
2401#: bzrlib/builtins.py:4455
2402msgid ""
2403"Filter on other branch revisions (inclusive). See \"help revisionspec\" for "
2404"details."
2405msgstr ""
2406
2407# help of 'my-revision' option of 'missing' command
2408#: bzrlib/builtins.py:4459
2409msgid ""
2410"Filter on local branch revisions (inclusive). See \"help revisionspec\" for "
2411"details."
2412msgstr ""
2413
2414# help of 'include-merges' option of 'missing' command
2415#: bzrlib/builtins.py:4462
2416msgid "Show all revisions in addition to the mainline ones."
2417msgstr ""
2418
2419#: bzrlib/builtins.py:4578
2420msgid "Compress the data within a repository."
2421msgstr ""
2422
2423#: bzrlib/builtins.py:4580
2424msgid ""
2425"This operation compresses the data within a bazaar repository. As\n"
2426"bazaar supports automatic packing of repository, this operation is\n"
2427"normally not required to be done manually."
2428msgstr ""
2429
2430#: bzrlib/builtins.py:4584
2431msgid ""
2432"During the pack operation, bazaar takes a backup of existing repository\n"
2433"data, i.e. pack files. This backup is eventually removed by bazaar\n"
2434"automatically when it is safe to do so. To save disk space by removing\n"
2435"the backed up pack files, the --clean-obsolete-packs option may be\n"
2436"used."
2437msgstr ""
2438
2439#: bzrlib/builtins.py:4590
2440msgid ""
2441"Warning: If you use --clean-obsolete-packs and your machine crashes\n"
2442"during or immediately after repacking, you may be left with a state\n"
2443"where the deletion has been written to disk but the new packs have not\n"
2444"been. In this case the repository may be unusable."
2445msgstr ""
2446
2447# help of 'clean-obsolete-packs' option of 'pack' command
2448#: bzrlib/builtins.py:4599
2449msgid "Delete obsolete packs to save disk space."
2450msgstr ""
2451
2452#: bzrlib/builtins.py:4613
2453msgid "List the installed plugins."
2454msgstr ""
2455
2456#: bzrlib/builtins.py:4615
2457msgid ""
2458"This command displays the list of installed plugins including\n"
2459"version of plugin and a short description of each."
2460msgstr ""
2461
2462#: bzrlib/builtins.py:4618
2463msgid "--verbose shows the path where each plugin is located."
2464msgstr ""
2465
2466#: bzrlib/builtins.py:4620
2467msgid ""
2468"A plugin is an external component for Bazaar that extends the\n"
2469"revision control system, by adding or replacing code in Bazaar.\n"
2470"Plugins can do a variety of things, including overriding commands,\n"
2471"adding new commands, providing additional network transports and\n"
2472"customizing log output."
2473msgstr ""
2474
2475#: bzrlib/builtins.py:4626
2476msgid ""
2477"See the Bazaar Plugin Guide <http://doc.bazaar.canonical.com/plugins/en/>\n"
2478"for further information on plugins including where to find them and how to\n"
2479"install them. Instructions are also provided there on how to write new\n"
2480"plugins using the Python programming language."
2481msgstr ""
2482
2483#: bzrlib/builtins.py:4641
2484msgid "Show testament (signing-form) of a revision."
2485msgstr ""
2486
2487# help of 'long' option of 'testament' command
2488#: bzrlib/builtins.py:4644
2489msgid "Produce long-format testament."
2490msgstr ""
2491
2492# help of 'strict' option of 'testament' command
2493#: bzrlib/builtins.py:4646
2494msgid "Produce a strict-format testament."
2495msgstr ""
2496
2497#: bzrlib/builtins.py:4672
2498msgid "Show the origin of each line in a file."
2499msgstr ""
2500
2501#: bzrlib/builtins.py:4674
2502msgid ""
2503"This prints out the given file with an annotation on the left side\n"
2504"indicating which revision, author and date introduced the change."
2505msgstr ""
2506
2507#: bzrlib/builtins.py:4677
2508msgid ""
2509"If the origin is the same for a run of consecutive lines, it is\n"
2510"shown only at the top, unless the --all option is given."
2511msgstr ""
2512
2513# help of 'all' option of 'annotate' command
2514#: bzrlib/builtins.py:4685
2515msgid "Show annotations on all lines."
2516msgstr ""
2517
2518# help of 'long' option of 'annotate' command
2519#: bzrlib/builtins.py:4686
2520msgid "Show commit date in annotations."
2521msgstr ""
2522
2523#: bzrlib/builtins.py:4789
2524msgid ""
2525"Convert the current branch into a checkout of the supplied branch.\n"
2526"If no branch is supplied, rebind to the last bound location."
2527msgstr ""
2528
2529#: bzrlib/builtins.py:4792
2530msgid ""
2531"Once converted into a checkout, commits must succeed on the master branch\n"
2532"before they will be applied to the local branch."
2533msgstr ""
2534
2535#: bzrlib/builtins.py:4795
2536msgid ""
2537"Bound branches use the nickname of its master branch unless it is set\n"
2538"locally, in which case binding will update the local nickname to be\n"
2539"that of the master."
2540msgstr ""
2541
2542#: bzrlib/builtins.py:4830
2543msgid "Convert the current checkout into a regular branch."
2544msgstr ""
2545
2546#: bzrlib/builtins.py:4832
2547msgid ""
2548"After unbinding, the local branch is considered independent and subsequent\n"
2549"commits will be local only."
2550msgstr ""
2551
2552#: bzrlib/builtins.py:4847
2553msgid "Remove the last committed revision."
2554msgstr ""
2555
2556#: bzrlib/builtins.py:4849
2557msgid ""
2558"--verbose will print out what is being removed.\n"
2559"--dry-run will go through all the motions, but not actually\n"
2560"remove anything."
2561msgstr ""
2562
2563#: bzrlib/builtins.py:4853
2564msgid ""
2565"If --revision is specified, uncommit revisions to leave the branch at the\n"
2566"specified revision. For example, \"bzr uncommit -r 15\" will leave the\n"
2567"branch at revision 15."
2568msgstr ""
2569
2570#: bzrlib/builtins.py:4857
2571msgid ""
2572"Uncommit leaves the working tree ready for a new commit. The only change\n"
2573"it may make is to restore any pending merges that were present before\n"
2574"the commit."
2575msgstr ""
2576
2577# help of 'dry-run' option of 'uncommit' command
2578#: bzrlib/builtins.py:4868
2579msgid "Don't actually make changes."
2580msgstr ""
2581
2582# help of 'force' option of 'uncommit' command
2583#: bzrlib/builtins.py:4869
2584msgid "Say yes to all questions."
2585msgstr ""
2586
2587# help of 'local' option of 'uncommit' command
2588#: bzrlib/builtins.py:4871
2589msgid "Only remove the commits from the local branch when in a checkout."
2590msgstr ""
2591
2592#: bzrlib/builtins.py:4956
2593msgid "Break a dead lock."
2594msgstr ""
2595
2596#: bzrlib/builtins.py:4958
2597msgid ""
2598"This command breaks a lock on a repository, branch, working directory or\n"
2599"config file."
2600msgstr ""
2601
2602#: bzrlib/builtins.py:4961
2603msgid ""
2604"CAUTION: Locks should only be broken when you are sure that the process\n"
2605"holding the lock has been stopped."
2606msgstr ""
2607
2608#: bzrlib/builtins.py:4964
2609msgid ""
2610"You can get information on what locks are open via the 'bzr info\n"
2611"[location]' command."
2612msgstr ""
2613
2614#: bzrlib/builtins.py:4967
2615msgid ""
2616":Examples:\n"
2617" bzr break-lock\n"
2618" bzr break-lock bzr+ssh://example.com/bzr/foo\n"
2619" bzr break-lock --conf ~/.bazaar"
2620msgstr ""
2621
2622# help of 'config' option of 'break-lock' command
2623#: bzrlib/builtins.py:4976
2624msgid "LOCATION is the directory where the config lock is."
2625msgstr ""
2626
2627# help of 'force' option of 'break-lock' command
2628#: bzrlib/builtins.py:4978
2629msgid "Do not ask for confirmation before breaking the lock."
2630msgstr ""
2631
2632#: bzrlib/builtins.py:5014
2633msgid "Run the bzr server."
2634msgstr ""
2635
2636# help of 'inet' option of 'serve' command
2637#: bzrlib/builtins.py:5020
2638msgid "Serve on stdin/out for use from inetd or sshd."
2639msgstr ""
2640
2641# title of 'protocol' option of 'serve' command
2642#: bzrlib/builtins.py:5021
2643msgid "protocol"
2644msgstr ""
2645
2646# help of 'protocol' option of 'serve' command
2647#: bzrlib/builtins.py:5022
2648msgid "Protocol to serve."
2649msgstr ""
2650
2651# help of 'port' option of 'serve' command
2652#: bzrlib/builtins.py:5026
2653msgid ""
2654"Listen for connections on nominated port of the form [hostname:]portnumber. "
2655"Passing 0 as the port number will result in a dynamically allocated port. "
2656"The default port depends on the protocol."
2657msgstr ""
2658
2659# help of 'directory' option of 'serve' command
2660#: bzrlib/builtins.py:5032
2661msgid "Serve contents of this directory."
2662msgstr ""
2663
2664# help of 'allow-writes' option of 'serve' command
2665#: bzrlib/builtins.py:5034
2666msgid ""
2667"By default the server is a readonly server. Supplying --allow-writes "
2668"enables write access to the contents of the served directory and below. "
2669"Note that ``bzr serve`` does not perform authentication, so unless some form "
2670"of external authentication is arranged supplying this option leads to global "
2671"uncontrolled write access to your file system."
2672msgstr ""
2673
2674#: bzrlib/builtins.py:5079
2675msgid "Combine a tree into its containing tree."
2676msgstr ""
2677
2678#: bzrlib/builtins.py:5081
2679msgid "This command requires the target tree to be in a rich-root format."
2680msgstr ""
2681
2682#: bzrlib/builtins.py:5083
2683msgid ""
2684"The TREE argument should be an independent tree, inside another tree, but\n"
2685"not part of it. (Such trees can be produced by \"bzr split\", but also by\n"
2686"running \"bzr branch\" with the target inside a tree.)"
2687msgstr ""
2688
2689#: bzrlib/builtins.py:5087
2690msgid ""
2691"The result is a combined tree, with the subtree no longer an independent\n"
2692"part. This is marked as a merge of the subtree into the containing tree,\n"
2693"and all history is preserved."
2694msgstr ""
2695
2696#: bzrlib/builtins.py:5125
2697msgid "Split a subdirectory of a tree into a separate tree."
2698msgstr ""
2699
2700#: bzrlib/builtins.py:5127
2701msgid ""
2702"This command will produce a target tree in a format that supports\n"
2703"rich roots, like 'rich-root' or 'rich-root-pack'. These formats cannot be\n"
2704"converted into earlier formats like 'dirstate-tags'."
2705msgstr ""
2706
2707#: bzrlib/builtins.py:5131
2708msgid ""
2709"The TREE argument should be a subdirectory of a working tree. That\n"
2710"subdirectory will be converted into an independent tree, with its own\n"
2711"branch. Commits in the top-level tree will not apply to the new subtree."
2712msgstr ""
2713
2714#: bzrlib/builtins.py:5252
2715msgid "Mail or create a merge-directive for submitting changes."
2716msgstr ""
2717
2718#: bzrlib/builtins.py:5254
2719msgid "A merge directive provides many things needed for requesting merges:"
2720msgstr ""
2721
2722#: bzrlib/builtins.py:5256
2723msgid "* A machine-readable description of the merge to perform"
2724msgstr ""
2725
2726#: bzrlib/builtins.py:5258
2727msgid "* An optional patch that is a preview of the changes requested"
2728msgstr ""
2729
2730#: bzrlib/builtins.py:5260
2731msgid ""
2732"* An optional bundle of revision data, so that the changes can be applied\n"
2733" directly from the merge directive, without retrieving data from a\n"
2734" branch."
2735msgstr ""
2736
2737#: bzrlib/builtins.py:5264
2738msgid ""
2739"`bzr send` creates a compact data set that, when applied using bzr\n"
2740"merge, has the same effect as merging from the source branch. "
2741msgstr ""
2742
2743#: bzrlib/builtins.py:5267
2744msgid ""
2745"By default the merge directive is self-contained and can be applied to any\n"
2746"branch containing submit_branch in its ancestory without needing access to\n"
2747"the source branch."
2748msgstr ""
2749
2750#: bzrlib/builtins.py:5271
2751msgid ""
2752"If --no-bundle is specified, then Bazaar doesn't send the contents of the\n"
2753"revisions, but only a structured request to merge from the\n"
2754"public_location. In that case the public_branch is needed and it must be\n"
2755"up-to-date and accessible to the recipient. The public_branch is always\n"
2756"included if known, so that people can check it later."
2757msgstr ""
2758
2759#: bzrlib/builtins.py:5277
2760msgid ""
2761"The submit branch defaults to the parent of the source branch, but can be\n"
2762"overridden. Both submit branch and public branch will be remembered in\n"
2763"branch.conf the first time they are used for a particular branch. The\n"
2764"source branch defaults to that containing the working directory, but can\n"
2765"be changed using --from."
2766msgstr ""
2767
2768#: bzrlib/builtins.py:5283
2769msgid ""
2770"In order to calculate those changes, bzr must analyse the submit branch.\n"
2771"Therefore it is most efficient for the submit branch to be a local mirror.\n"
2772"If a public location is known for the submit_branch, that location is used\n"
2773"in the merge directive."
2774msgstr ""
2775
2776#: bzrlib/builtins.py:5288
2777msgid ""
2778"The default behaviour is to send the merge directive by mail, unless -o is\n"
2779"given, in which case it is sent to a file."
2780msgstr ""
2781
2782#: bzrlib/builtins.py:5291
2783msgid ""
2784"Mail is sent using your preferred mail program. This should be transparent\n"
2785"on Windows (it uses MAPI). On Unix, it requires the xdg-email utility.\n"
2786"If the preferred client can't be found (or used), your editor will be used."
2787msgstr ""
2788
2789#: bzrlib/builtins.py:5295
2790msgid ""
2791"To use a specific mail program, set the mail_client configuration option.\n"
2792"(For Thunderbird 1.5, this works around some bugs.) Supported values for\n"
2793"specific clients are \"claws\", \"evolution\", \"kmail\", \"mail.app"
2794"\" (MacOS X's\n"
2795"Mail.app), \"mutt\", and \"thunderbird\"; generic options are \"default\",\n"
2796"\"editor\", \"emacsclient\", \"mapi\", and \"xdg-email\". Plugins may also "
2797"add\n"
2798"supported clients."
2799msgstr ""
2800
2801#: bzrlib/builtins.py:5302
2802msgid ""
2803"If mail is being sent, a to address is required. This can be supplied\n"
2804"either on the commandline, by setting the submit_to configuration\n"
2805"option in the branch itself or the child_submit_to configuration option\n"
2806"in the submit branch."
2807msgstr ""
2808
2809#: bzrlib/builtins.py:5307
2810msgid ""
2811"Two formats are currently supported: \"4\" uses revision bundle format 4 "
2812"and\n"
2813"merge directive format 2. It is significantly faster and smaller than\n"
2814"older formats. It is compatible with Bazaar 0.19 and later. It is the\n"
2815"default. \"0.9\" uses revision bundle format 0.9 and merge directive\n"
2816"format 1. It is compatible with Bazaar 0.12 - 0.18."
2817msgstr ""
2818
2819#: bzrlib/builtins.py:5313
2820msgid ""
2821"The merge directives created by bzr send may be applied using bzr merge or\n"
2822"bzr pull by specifying a file containing a merge directive as the location."
2823msgstr ""
2824
2825#: bzrlib/builtins.py:5316
2826msgid ""
2827"bzr send makes extensive use of public locations to map local locations "
2828"into\n"
2829"URLs that can be used by other people. See `bzr help configuration` to\n"
2830"set them, and use `bzr info` to display them."
2831msgstr ""
2832
2833# help of 'output' option of 'send' command
2834#: bzrlib/builtins.py:5340
2835msgid "Write merge directive to this file or directory; use - for stdout."
2836msgstr ""
2837
2838# help of 'strict' option of 'send' command
2839#: bzrlib/builtins.py:5344
2840msgid ""
2841"Refuse to send if there are uncommitted changes in the working tree, --no-"
2842"strict disables the check."
2843msgstr ""
2844
2845# help of 'mail-to' option of 'send' command
2846#: bzrlib/builtins.py:5346
2847msgid "Mail the request to this address."
2848msgstr ""
2849
2850# help of 'body' option of 'send' command
2851#: bzrlib/builtins.py:5350
2852msgid "Body for the email."
2853msgstr ""
2854
2855# help of 'no-bundle' option of 'send' command
2856#: bzrlib/builtins.py:5403
2857msgid "Do not include a bundle in the merge directive."
2858msgstr ""
2859
2860# help of 'no-patch' option of 'send' command
2861#: bzrlib/builtins.py:5404
2862msgid "Do not include a preview patch in the merge directive."
2863msgstr ""
2864
2865# help of 'remember' option of 'send' command
2866#: bzrlib/builtins.py:5407
2867msgid "Remember submit and public branch."
2868msgstr ""
2869
2870# help of 'from' option of 'send' command
2871#: bzrlib/builtins.py:5409
2872msgid ""
2873"Branch to generate the submission from, rather than the one containing the "
2874"working directory."
2875msgstr ""
2876
2877# title of 'format' option of 'send' command
2878#: bzrlib/builtins.py:5419
2879msgid "format"
2880msgstr ""
2881
2882# help of 'format' option of 'send' command
2883#: bzrlib/builtins.py:5420
2884msgid "Use the specified output format."
2885msgstr ""
2886
2887#: bzrlib/builtins.py:5442
2888msgid "Create, remove or modify a tag naming a revision."
2889msgstr ""
2890
2891#: bzrlib/builtins.py:5444
2892msgid ""
2893"Tags give human-meaningful names to revisions. Commands that take a -r\n"
2894"(--revision) option can be given -rtag:X, where X is any previously\n"
2895"created tag."
2896msgstr ""
2897
2898#: bzrlib/builtins.py:5448
2899msgid ""
2900"Tags are stored in the branch. Tags are copied from one branch to another\n"
2901"along when you branch, push, pull or merge."
2902msgstr ""
2903
2904#: bzrlib/builtins.py:5451
2905msgid ""
2906"It is an error to give a tag name that already exists unless you pass\n"
2907"--force, in which case the tag is moved to point to the new revision."
2908msgstr ""
2909
2910#: bzrlib/builtins.py:5454
2911msgid ""
2912"To rename a tag (change the name but keep it on the same revsion), run "
2913"``bzr\n"
2914"tag new-name -r tag:old-name`` and then ``bzr tag --delete oldname``."
2915msgstr ""
2916
2917#: bzrlib/builtins.py:5457
2918msgid ""
2919"If no tag name is specified it will be determined through the \n"
2920"'automatic_tag_name' hook. This can e.g. be used to automatically tag\n"
2921"upstream releases by reading configure.ac. See ``bzr help hooks`` for\n"
2922"details."
2923msgstr ""
2924
2925# help of 'delete' option of 'tag' command
2926#: bzrlib/builtins.py:5467
2927msgid "Delete this tag rather than placing it."
2928msgstr ""
2929
2930# help of 'directory' option of 'tag' command
2931#: bzrlib/builtins.py:5470
2932msgid "Branch in which to place the tag."
2933msgstr ""
2934
2935# help of 'force' option of 'tag' command
2936#: bzrlib/builtins.py:5472
2937msgid "Replace existing tags."
2938msgstr ""
2939
2940#: bzrlib/builtins.py:5511
2941msgid "List tags."
2942msgstr ""
2943
2944#: bzrlib/builtins.py:5513
2945msgid ""
2946"This command shows a table of tag names and the revisions they reference."
2947msgstr ""
2948
2949# help of 'directory' option of 'tags' command
2950#: bzrlib/builtins.py:5519
2951msgid "Branch whose tags should be displayed."
2952msgstr ""
2953
2954# help of 'sort' option of 'tags' command
2955#: bzrlib/builtins.py:5521
2956msgid "Sort tags by different criteria."
2957msgstr ""
2958
2959# title of 'sort' option of 'tags' command
2960#: bzrlib/builtins.py:5521
2961msgid "Sorting"
2962msgstr ""
2963
2964#: bzrlib/builtins.py:5566
2965msgid "Reconfigure the type of a bzr directory."
2966msgstr ""
2967
2968#: bzrlib/builtins.py:5568
2969msgid "A target configuration must be specified."
2970msgstr ""
2971
2972#: bzrlib/builtins.py:5570
2973msgid ""
2974"For checkouts, the bind-to location will be auto-detected if not specified.\n"
2975"The order of preference is\n"
2976"1. For a lightweight checkout, the current bound location.\n"
2977"2. For branches that used to be checkouts, the previously-bound location.\n"
2978"3. The push location.\n"
2979"4. The parent location.\n"
2980"If none of these is available, --bind-to must be specified."
2981msgstr ""
2982
2983# title of 'target_type' option of 'reconfigure' command
2984#: bzrlib/builtins.py:5584
2985msgid "Target type"
2986msgstr ""
2987
2988# help of 'target_type' option of 'reconfigure' command
2989#: bzrlib/builtins.py:5585
2990msgid "The type to reconfigure the directory to."
2991msgstr ""
2992
2993# help of 'bind-to' option of 'reconfigure' command
2994#: bzrlib/builtins.py:5600
2995msgid "Branch to bind checkout to."
2996msgstr ""
2997
2998# help of 'force' option of 'reconfigure' command
2999#: bzrlib/builtins.py:5602
3000msgid "Perform reconfiguration even if local changes will be lost."
3001msgstr ""
3002
3003# help of 'stacked-on' option of 'reconfigure' command
3004#: bzrlib/builtins.py:5605
3005msgid "Reconfigure a branch to be stacked on another branch."
3006msgstr ""
3007
3008# help of 'unstacked' option of 'reconfigure' command
3009#: bzrlib/builtins.py:5609
3010msgid ""
3011"Reconfigure a branch to be unstacked. This may require copying substantial "
3012"data into it."
3013msgstr ""
3014
3015#: bzrlib/builtins.py:5657
3016msgid "Set the branch of a checkout and update."
3017msgstr ""
3018
3019#: bzrlib/builtins.py:5659
3020msgid ""
3021"For lightweight checkouts, this changes the branch being referenced.\n"
3022"For heavyweight checkouts, this checks that there are no local commits\n"
3023"versus the current bound branch, then it makes the local branch a mirror\n"
3024"of the new location and binds to it."
3025msgstr ""
3026
3027#: bzrlib/builtins.py:5664
3028msgid ""
3029"In both cases, the working tree is updated and uncommitted changes\n"
3030"are merged. The user can commit or revert these as they desire."
3031msgstr ""
3032
3033#: bzrlib/builtins.py:5667
3034msgid "Pending merges need to be committed or reverted before using switch."
3035msgstr ""
3036
3037#: bzrlib/builtins.py:5669
3038msgid ""
3039"The path to the branch to switch to can be specified relative to the parent\n"
3040"directory of the current branch. For example, if you are currently in a\n"
3041"checkout of /path/to/branch, specifying 'newbranch' will find a branch at\n"
3042"/path/to/newbranch."
3043msgstr ""
3044
3045#: bzrlib/builtins.py:5674
3046msgid ""
3047"Bound branches use the nickname of its master branch unless it is set\n"
3048"locally, in which case switching will update the local nickname to be\n"
3049"that of the master."
3050msgstr ""
3051
3052# help of 'force' option of 'switch' command
3053#: bzrlib/builtins.py:5682
3054msgid "Switch even if local commits will be lost."
3055msgstr ""
3056
3057# help of 'create-branch' option of 'switch' command
3058#: bzrlib/builtins.py:5685
3059msgid "Create the target branch from this one before switching to it."
3060msgstr ""
3061
3062#: bzrlib/builtins.py:5754
3063msgid "Manage filtered views."
3064msgstr ""
3065
3066#: bzrlib/builtins.py:5756
3067msgid ""
3068"Views provide a mask over the tree so that users can focus on\n"
3069"a subset of a tree when doing their work. After creating a view,\n"
3070"commands that support a list of files - status, diff, commit, etc -\n"
3071"effectively have that list of files implicitly given each time.\n"
3072"An explicit list of files can still be given but those files\n"
3073"must be within the current view."
3074msgstr ""
3075
3076#: bzrlib/builtins.py:5763
3077msgid ""
3078"In most cases, a view has a short life-span: it is created to make\n"
3079"a selected change and is deleted once that change is committed.\n"
3080"At other times, you may wish to create one or more named views\n"
3081"and switch between them."
3082msgstr ""
3083
3084#: bzrlib/builtins.py:5768
3085msgid ""
3086"To disable the current view without deleting it, you can switch to\n"
3087"the pseudo view called ``off``. This can be useful when you need\n"
3088"to see the whole tree for an operation or two (e.g. merge) but\n"
3089"want to switch back to your view after that."
3090msgstr ""
3091
3092#: bzrlib/builtins.py:5773
3093msgid ""
3094":Examples:\n"
3095" To define the current view::"
3096msgstr ""
3097
3098#: bzrlib/builtins.py:5776
3099msgid " bzr view file1 dir1 ..."
3100msgstr ""
3101
3102#: bzrlib/builtins.py:5778
3103msgid " To list the current view::"
3104msgstr ""
3105
3106#: bzrlib/builtins.py:5780
3107msgid " bzr view"
3108msgstr ""
3109
3110#: bzrlib/builtins.py:5782
3111msgid " To delete the current view::"
3112msgstr ""
3113
3114#: bzrlib/builtins.py:5784
3115msgid " bzr view --delete"
3116msgstr ""
3117
3118#: bzrlib/builtins.py:5786
3119msgid " To disable the current view without deleting it::"
3120msgstr ""
3121
3122#: bzrlib/builtins.py:5788
3123msgid " bzr view --switch off"
3124msgstr ""
3125
3126#: bzrlib/builtins.py:5790
3127msgid " To define a named view and switch to it::"
3128msgstr ""
3129
3130#: bzrlib/builtins.py:5792
3131msgid " bzr view --name view-name file1 dir1 ..."
3132msgstr ""
3133
3134#: bzrlib/builtins.py:5794
3135msgid " To list a named view::"
3136msgstr ""
3137
3138#: bzrlib/builtins.py:5796
3139msgid " bzr view --name view-name"
3140msgstr ""
3141
3142#: bzrlib/builtins.py:5798
3143msgid " To delete a named view::"
3144msgstr ""
3145
3146#: bzrlib/builtins.py:5800
3147msgid " bzr view --name view-name --delete"
3148msgstr ""
3149
3150#: bzrlib/builtins.py:5802
3151msgid " To switch to a named view::"
3152msgstr ""
3153
3154#: bzrlib/builtins.py:5804
3155msgid " bzr view --switch view-name"
3156msgstr ""
3157
3158#: bzrlib/builtins.py:5806
3159msgid " To list all views defined::"
3160msgstr ""
3161
3162#: bzrlib/builtins.py:5808
3163msgid " bzr view --all"
3164msgstr ""
3165
3166#: bzrlib/builtins.py:5810
3167msgid " To delete all views::"
3168msgstr ""
3169
3170#: bzrlib/builtins.py:5812
3171msgid " bzr view --delete --all"
3172msgstr ""
3173
3174# help of 'all' option of 'view' command
3175#: bzrlib/builtins.py:5819
3176msgid "Apply list or delete action to all views."
3177msgstr ""
3178
3179# help of 'delete' option of 'view' command
3180#: bzrlib/builtins.py:5822
3181msgid "Delete the view."
3182msgstr ""
3183
3184# help of 'name' option of 'view' command
3185#: bzrlib/builtins.py:5825
3186msgid "Name of the view to define, list or delete."
3187msgstr ""
3188
3189# help of 'switch' option of 'view' command
3190#: bzrlib/builtins.py:5829
3191msgid "Name of the view to switch to."
3192msgstr ""
3193
3194#: bzrlib/builtins.py:5929
3195msgid "Remove a branch."
3196msgstr ""
3197
3198#: bzrlib/builtins.py:5931
3199msgid ""
3200"This will remove the branch from the specified location but \n"
3201"will keep any working tree or repository in place."
3202msgstr ""
3203
3204#: bzrlib/builtins.py:5936
3205msgid " Remove the branch at repo/trunk::"
3206msgstr ""
3207
3208#: bzrlib/builtins.py:5938
3209msgid " bzr remove-branch repo/trunk"
3210msgstr ""
3211
3212#: bzrlib/builtins.py:5954
3213msgid "Temporarily set aside some changes from the current tree."
3214msgstr ""
3215
3216#: bzrlib/builtins.py:5956
3217msgid ""
3218"Shelve allows you to temporarily put changes you've made \"on the shelf\",\n"
3219"ie. out of the way, until a later time when you can bring them back from\n"
3220"the shelf with the 'unshelve' command. The changes are stored alongside\n"
3221"your working tree, and so they aren't propagated along with your branch nor\n"
3222"will they survive its deletion."
3223msgstr ""
3224
3225#: bzrlib/builtins.py:5962
3226msgid "If shelve --list is specified, previously-shelved changes are listed."
3227msgstr ""
3228
3229#: bzrlib/builtins.py:5964
3230msgid ""
3231"Shelve is intended to help separate several sets of changes that have\n"
3232"been inappropriately mingled. If you just want to get rid of all changes\n"
3233"and you don't need to restore them later, use revert. If you want to\n"
3234"shelve all text changes at once, use shelve --all."
3235msgstr ""
3236
3237#: bzrlib/builtins.py:5969
3238msgid ""
3239"If filenames are specified, only the changes to those files will be\n"
3240"shelved. Other files will be left untouched."
3241msgstr ""
3242
3243#: bzrlib/builtins.py:5972
3244msgid ""
3245"If a revision is specified, changes since that revision will be shelved."
3246msgstr ""
3247
3248#: bzrlib/builtins.py:5974
3249msgid ""
3250"You can put multiple items on the shelf, and by default, 'unshelve' will\n"
3251"restore the most recently shelved changes."
3252msgstr ""
3253
3254#: bzrlib/builtins.py:5977
3255msgid ""
3256"For complicated changes, it is possible to edit the changes in a separate\n"
3257"editor program to decide what the file remaining in the working copy\n"
3258"should look like. To do this, add the configuration option"
3259msgstr ""
3260
3261#: bzrlib/builtins.py:5981
3262msgid " change_editor = PROGRAM @new_path @old_path"
3263msgstr ""
3264
3265#: bzrlib/builtins.py:5983
3266msgid ""
3267"where @new_path is replaced with the path of the new version of the \n"
3268"file and @old_path is replaced with the path of the old version of \n"
3269"the file. The PROGRAM should save the new file with the desired \n"
3270"contents of the file in the working tree.\n"
3271" "
3272msgstr ""
3273
3274# help of 'all' option of 'shelve' command
3275#: bzrlib/builtins.py:5995
3276msgid "Shelve all changes."
3277msgstr ""
3278
3279# help of 'writer' option of 'shelve' command
3280#: bzrlib/builtins.py:5997
3281msgid "Method to use for writing diffs."
3282msgstr ""
3283
3284# title of 'writer' option of 'shelve' command
3285#: bzrlib/builtins.py:5997
3286msgid "writer"
3287msgstr ""
3288
3289# help of 'list' option of 'shelve' command
3290#: bzrlib/builtins.py:6001
3291msgid "List shelved changes."
3292msgstr ""
3293
3294# help of 'destroy' option of 'shelve' command
3295#: bzrlib/builtins.py:6003
3296msgid "Destroy removed changes instead of shelving them."
3297msgstr ""
3298
3299#: bzrlib/builtins.py:6043
3300msgid "Restore shelved changes."
3301msgstr ""
3302
3303#: bzrlib/builtins.py:6045
3304msgid ""
3305"By default, the most recently shelved changes are restored. However if you\n"
3306"specify a shelf by id those changes will be restored instead. This works\n"
3307"best when the changes don't depend on each other."
3308msgstr ""
3309
3310# help of 'action' option of 'unshelve' command
3311#: bzrlib/builtins.py:6054
3312msgid "The action to perform."
3313msgstr ""
3314
3315#: bzrlib/builtins.py:6076
3316msgid "Remove unwanted files from working tree."
3317msgstr ""
3318
3319#: bzrlib/builtins.py:6078
3320msgid ""
3321"By default, only unknown files, not ignored files, are deleted. Versioned\n"
3322"files are never deleted."
3323msgstr ""
3324
3325#: bzrlib/builtins.py:6081
3326msgid ""
3327"Another class is 'detritus', which includes files emitted by bzr during\n"
3328"normal operations and selftests. (The value of these files decreases with\n"
3329"time.)"
3330msgstr ""
3331
3332#: bzrlib/builtins.py:6085
3333msgid ""
3334"If no options are specified, unknown files are deleted. Otherwise, option\n"
3335"flags are respected, and may be combined."
3336msgstr ""
3337
3338#: bzrlib/builtins.py:6088
3339msgid "To check what clean-tree will do, use --dry-run."
3340msgstr ""
3341
3342# help of 'ignored' option of 'clean-tree' command
3343#: bzrlib/builtins.py:6091
3344msgid "Delete all ignored files."
3345msgstr ""
3346
3347# help of 'detritus' option of 'clean-tree' command
3348#: bzrlib/builtins.py:6092
3349msgid ""
3350"Delete conflict files, merge and revert backups, and failed selftest dirs."
3351msgstr ""
3352
3353# help of 'unknown' option of 'clean-tree' command
3354#: bzrlib/builtins.py:6095
3355msgid "Delete files unknown to bzr (default)."
3356msgstr ""
3357
3358# help of 'dry-run' option of 'clean-tree' command
3359#: bzrlib/builtins.py:6096
3360msgid "Show files to delete instead of deleting them."
3361msgstr ""
3362
3363# help of 'force' option of 'clean-tree' command
3364#: bzrlib/builtins.py:6098
3365msgid "Do not prompt before deleting."
3366msgstr ""
3367
3368#: bzrlib/cmd_version_info.py:50
3369msgid "Show version information about this tree."
3370msgstr ""
3371
3372#: bzrlib/cmd_version_info.py:52
3373msgid ""
3374"You can use this command to add information about version into\n"
3375"source code of an application. The output can be in one of the\n"
3376"supported formats or in a custom format based on a template."
3377msgstr ""
3378
3379#: bzrlib/cmd_version_info.py:56
3380msgid "For example::"
3381msgstr ""
3382
3383#: bzrlib/cmd_version_info.py:58
3384msgid ""
3385" bzr version-info --custom \\\n"
3386" --template=\"#define VERSION_INFO \\\"Project 1.2.3 (r{revno})\\\"\\n\""
3387msgstr ""
3388
3389#: bzrlib/cmd_version_info.py:61
3390msgid ""
3391"will produce a C header file with formatted string containing the\n"
3392"current revision number. Other supported variables in templates are:"
3393msgstr ""
3394
3395#: bzrlib/cmd_version_info.py:64
3396msgid ""
3397" * {date} - date of the last revision\n"
3398" * {build_date} - current date\n"
3399" * {revno} - revision number\n"
3400" * {revision_id} - revision id\n"
3401" * {branch_nick} - branch nickname\n"
3402" * {clean} - 0 if the source tree contains uncommitted changes,\n"
3403" otherwise 1"
3404msgstr ""
3405
3406# help of 'format' option of 'version-info' command
3407#: bzrlib/cmd_version_info.py:74
3408msgid "Select the output format."
3409msgstr ""
3410
3411# help of 'all' option of 'version-info' command
3412#: bzrlib/cmd_version_info.py:78
3413msgid "Include all possible information."
3414msgstr ""
3415
3416# help of 'check-clean' option of 'version-info' command
3417#: bzrlib/cmd_version_info.py:79
3418msgid "Check if tree is clean."
3419msgstr ""
3420
3421# help of 'include-history' option of 'version-info' command
3422#: bzrlib/cmd_version_info.py:81
3423msgid "Include the revision-history."
3424msgstr ""
3425
3426# help of 'include-file-revisions' option of 'version-info' command
3427#: bzrlib/cmd_version_info.py:83
3428msgid "Include the last revision for each file."
3429msgstr ""
3430
3431# help of 'template' option of 'version-info' command
3432#: bzrlib/cmd_version_info.py:84
3433msgid "Template for the output."
3434msgstr ""
3435
3436#: bzrlib/commands.py:516
3437msgid "Purpose"
3438msgstr ""
3439
3440#: bzrlib/commands.py:518 bzrlib/commands.py:520
3441msgid "Usage"
3442msgstr ""
3443
3444#: bzrlib/commands.py:538
3445msgid "Options"
3446msgstr ""
3447
3448#: bzrlib/commands.py:549
3449msgid "Description"
3450msgstr ""
3451
3452#: bzrlib/commands.py:564
3453msgid "Aliases"
3454msgstr ""
3455
3456#: bzrlib/commands.py:583
3457msgid "See also"
3458msgstr ""
3459
3460#: bzrlib/config.py:2098
3461msgid "Display, set or remove a configuration option."
3462msgstr ""
3463
3464#: bzrlib/config.py:2100
3465msgid "Display the active value for a given option."
3466msgstr ""
3467
3468#: bzrlib/config.py:2102
3469msgid ""
3470"If --all is specified, NAME is interpreted as a regular expression and all\n"
3471"matching options are displayed mentioning their scope. The active value\n"
3472"that bzr will take into account is the first one displayed for each option."
3473msgstr ""
3474
3475#: bzrlib/config.py:2106
3476msgid "If no NAME is given, --all .* is implied."
3477msgstr ""
3478
3479#: bzrlib/config.py:2108
3480msgid ""
3481"Setting a value is achieved by using name=value without spaces. The value\n"
3482"is set in the most relevant scope and can be checked by displaying the\n"
3483"option again."
3484msgstr ""
3485
3486# help of 'scope' option of 'config' command
3487#: bzrlib/config.py:2119
3488msgid "Reduce the scope to the specified configuration file"
3489msgstr ""
3490
3491# help of 'all' option of 'config' command
3492#: bzrlib/config.py:2123
3493msgid "Display all the defined values for the matching options."
3494msgstr ""
3495
3496# help of 'remove' option of 'config' command
3497#: bzrlib/config.py:2125
3498msgid "Remove the option from the configuration file"
3499msgstr ""
3500
3501#: bzrlib/conflicts.py:47
3502msgid "List files with conflicts."
3503msgstr ""
3504
3505#: bzrlib/conflicts.py:49
3506msgid ""
3507"Merge will do its best to combine the changes in two branches, but there\n"
3508"are some kinds of problems only a human can fix. When it encounters those,\n"
3509"it will mark a conflict. A conflict means that you need to fix something,\n"
3510"before you should commit."
3511msgstr ""
3512
3513#: bzrlib/conflicts.py:54
3514msgid ""
3515"Conflicts normally are listed as short, human-readable messages. If --text\n"
3516"is supplied, the pathnames of files with text conflicts are listed,\n"
3517"instead. (This is useful for editing all files with text conflicts.)"
3518msgstr ""
3519
3520#: bzrlib/conflicts.py:58
3521msgid "Use bzr resolve when you have fixed a problem."
3522msgstr ""
3523
3524# help of 'text' option of 'conflicts' command
3525#: bzrlib/conflicts.py:63
3526msgid "List paths of files with text conflicts."
3527msgstr ""
3528
3529# help of 'action' option of 'resolve' command
3530#: bzrlib/conflicts.py:95
3531msgid "How to resolve the conflict."
3532msgstr ""
3533
3534#: bzrlib/conflicts.py:101
3535msgid "Mark a conflict as resolved."
3536msgstr ""
3537
3538#: bzrlib/conflicts.py:108
3539msgid ""
3540"Once you have fixed a problem, use \"bzr resolve\" to automatically mark\n"
3541"text conflicts as fixed, \"bzr resolve FILE\" to mark a specific conflict "
3542"as\n"
3543"resolved, or \"bzr resolve --all\" to mark all conflicts as resolved."
3544msgstr ""
3545
3546# help of 'all' option of 'resolve' command
3547#: bzrlib/conflicts.py:116
3548msgid "Resolve all conflicts in this tree."
3549msgstr ""
3550
3551# title of 'action' option of 'resolve' command
3552#: bzrlib/conflicts.py:678
3553msgid "action"
3554msgstr ""
3555
3556#: bzrlib/errors.py:224
3557msgid "The tree builder is already building a tree."
3558msgstr ""
3559
3560#: bzrlib/errors.py:245
3561msgid "The dirstate file (%(state)s) appears to be corrupt: %(msg)s"
3562msgstr ""
3563
3564#: bzrlib/errors.py:264
3565msgid ""
3566"The API for \"%(api)s\" is not compatible with \"%(wanted)s\". It supports "
3567"versions \"%(minimum)s\" to \"%(current)s\"."
3568msgstr ""
3569
3570#: bzrlib/errors.py:276
3571msgid "The transport '%(transport)s' is only accessible within this process."
3572msgstr ""
3573
3574#: bzrlib/errors.py:294
3575msgid "Invalid revision number %(revno)s"
3576msgstr ""
3577
3578#: bzrlib/errors.py:303
3579msgid "Invalid revision-id {%(revision_id)s} in %(branch)s"
3580msgstr ""
3581
3582#: bzrlib/errors.py:314
3583msgid "Reserved revision-id {%(revision_id)s}"
3584msgstr ""
3585
3586#: bzrlib/errors.py:328
3587msgid "There is no public branch set for \"%(branch_url)s\"."
3588msgstr ""
3589
3590#: bzrlib/errors.py:338
3591msgid ""
3592"No help could be found for '%(topic)s'. Please use 'bzr help topics' to "
3593"obtain a list of topics."
3594msgstr ""
3595
3596#: bzrlib/errors.py:347
3597msgid "The file id \"%(file_id)s\" is not present in the tree %(tree)s."
3598msgstr ""
3599
3600#: bzrlib/errors.py:357
3601msgid ""
3602"The file id \"%(file_id)s\" is not present in the repository %(repository)r"
3603msgstr ""
3604
3605#: bzrlib/errors.py:366
3606msgid "The branch '%(branch)s' is not stacked."
3607msgstr ""
3608
3609#: bzrlib/errors.py:380
3610msgid "No WorkingTree exists for \"%(base)s\"."
3611msgstr ""
3612
3613#: bzrlib/errors.py:389
3614msgid "Not currently building a tree."
3615msgstr ""
3616
3617#: bzrlib/errors.py:394
3618msgid "%(url)s is not a local path."
3619msgstr ""
3620
3621#: bzrlib/errors.py:422
3622msgid "%(not_locked)r is not write locked but needs to be."
3623msgstr ""
3624
3625#: bzrlib/errors.py:430
3626msgid "Error in command line options"
3627msgstr ""
3628
3629#: bzrlib/errors.py:435
3630msgid "%(value)s is not an index of type %(_type)s."
3631msgstr ""
3632
3633#: bzrlib/errors.py:445
3634msgid "Error in data for index %(value)s."
3635msgstr ""
3636
3637#: bzrlib/errors.py:454
3638msgid "The key '%(key)s' is already in index '%(index)s'."
3639msgstr ""
3640
3641#: bzrlib/errors.py:464
3642msgid "The key '%(key)s' is not a valid key."
3643msgstr ""
3644
3645#: bzrlib/errors.py:473
3646msgid "Could not parse options for index %(value)s."
3647msgstr ""
3648
3649#: bzrlib/errors.py:482
3650msgid "The value '%(value)s' is not a valid value."
3651msgstr ""
3652
3653#: bzrlib/errors.py:491
3654msgid "Bad value \"%(value)s\" for option \"%(name)s\"."
3655msgstr ""
3656
3657#: bzrlib/errors.py:510
3658msgid "Generic path error: %(path)r%(extra)s)"
3659msgstr ""
3660
3661#: bzrlib/errors.py:523
3662msgid "No such file: %(path)r%(extra)s"
3663msgstr ""
3664
3665#: bzrlib/errors.py:528
3666msgid "File exists: %(path)r%(extra)s"
3667msgstr ""
3668
3669#: bzrlib/errors.py:534
3670msgid ""
3671"Could not rename %(source)s => %(dest)s because both files exist. (Use --"
3672"after to tell bzr about a rename that has already happened)%(extra)s"
3673msgstr ""
3674
3675#: bzrlib/errors.py:550
3676msgid "\"%(path)s\" is not a directory %(extra)s"
3677msgstr ""
3678
3679#: bzrlib/errors.py:555
3680msgid "\"%(path)s\" is not in the working directory %(extra)s"
3681msgstr ""
3682
3683#: bzrlib/errors.py:560
3684msgid "Directory not empty: \"%(path)s\"%(extra)s"
3685msgstr ""
3686
3687#: bzrlib/errors.py:565
3688msgid "Hard-linking \"%(path)s\" is not supported"
3689msgstr ""
3690
3691#: bzrlib/errors.py:580
3692msgid "Device or resource busy: \"%(path)s\"%(extra)s"
3693msgstr ""
3694
The diff has been truncated for viewing.