~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzr

Merge register-branch plugin into default plugins directory

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#! /usr/bin/env python
2
2
 
3
 
# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Canonical Ltd
4
 
#
 
3
# Copyright (C) 2005 by Canonical Ltd
 
4
 
5
5
# This program is free software; you can redistribute it and/or modify
6
6
# it under the terms of the GNU General Public License as published by
7
7
# the Free Software Foundation; either version 2 of the License, or
8
8
# (at your option) any later version.
9
 
#
 
9
 
10
10
# This program is distributed in the hope that it will be useful,
11
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
13
# GNU General Public License for more details.
14
 
#
 
14
 
15
15
# You should have received a copy of the GNU General Public License
16
16
# along with this program; if not, write to the Free Software
17
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
 
 
19
 
"""Bazaar -- a free distributed version-control tool"""
20
 
 
21
 
import os
22
 
import sys
23
 
import warnings
24
 
 
25
 
# update this on each release
26
 
_script_version = (2, 2, 0)
27
 
 
 
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
18
"""Bazaar-NG -- a free distributed version-control tool"""
 
19
import os, sys
 
20
if __doc__ is None:
 
21
    print "bzr does not support python -OO."
 
22
    sys.exit(2)
28
23
try:
29
24
    version_info = sys.version_info
30
25
except AttributeError:
32
27
 
33
28
REINVOKE = "__BZR_REINVOKE"
34
29
NEED_VERS = (2, 4)
35
 
KNOWN_PYTHONS = ('python2.4', 'python2.5', 'python2.6')
 
30
KNOWN_PYTHONS = ('python2.4',)
36
31
 
37
32
if version_info < NEED_VERS:
38
33
    if not os.environ.has_key(REINVOKE):
43
38
                os.execvp(python, [python] + sys.argv)
44
39
            except OSError:
45
40
                pass
46
 
    sys.stderr.write("bzr: error: cannot find a suitable python interpreter\n")
47
 
    sys.stderr.write("  (need %d.%d or later)\n" % NEED_VERS)
 
41
    print >>sys.stderr, "bzr: error: cannot find a suitable python interpreter"
 
42
    print >>sys.stderr, "  (need %d.%d or later)" % NEED_VERS
48
43
    sys.exit(1)
49
44
if hasattr(os, "unsetenv"):
50
45
    os.unsetenv(REINVOKE)
51
46
 
52
 
 
53
 
profiling = False
54
 
if '--profile-imports' in sys.argv:
55
 
    sys.argv.remove('--profile-imports')
56
 
    import profile_imports
57
 
    profile_imports.install()
58
 
    profiling = True
59
 
 
60
 
if sys.platform == 'darwin':
61
 
    # jameinel says this hack is to force python to honor the LANG setting,
62
 
    # even on Darwin.  Otherwise it is apparently hardcoded to Mac-Roman,
63
 
    # which is incorrect for the normal Terminal.app which wants UTF-8.
64
 
    #
65
 
    # "It might be that I should be setting the "system locale" somewhere else
66
 
    # on the system, rather than setting LANG=en_US.UTF-8 in .bashrc.
67
 
    # Switching to 'posix' and setting LANG worked for me."
68
 
    #
69
 
    # So we can remove this if someone works out the right way to tell Mac
70
 
    # Python which encoding to use.  -- mbp 20080703
71
 
    sys.platform = 'posix'
72
 
    try:
73
 
        import locale
74
 
    finally:
75
 
        sys.platform = 'darwin'
76
 
else:
77
 
    import locale
78
 
 
79
 
 
80
 
# The python2.6 release includes some libraries that have deprecation warnings
81
 
# against the interpreter - see https://bugs.launchpad.net/bzr/+bug/387139
82
 
warnings.filterwarnings('ignore',
83
 
    r"(struct integer overflow masking is deprecated|"
84
 
    r"'L' format requires 0 <= number <= 4294967295)",
85
 
    DeprecationWarning,
86
 
    'gzip',
87
 
    )
88
 
 
89
 
 
90
 
try:
91
 
    locale.setlocale(locale.LC_ALL, '')
92
 
except locale.Error, e:
93
 
    sys.stderr.write('bzr: warning: %s\n'
94
 
                     '  bzr could not set the application locale.\n'
95
 
                     '  Although this should be no problem for bzr itself,\n'
96
 
                     '  it might cause problems with some plugins.\n'
97
 
                     '  To investigate the issue, look at the output\n'
98
 
                     '  of the locale(1p) tool available on POSIX systems.\n'
99
 
                     % e)
100
 
 
101
 
# instruct bzrlib/__init__.py to install lazy_regex
102
 
sys._bzr_lazy_regex = True
103
47
try:
104
48
    import bzrlib
 
49
    import bzrlib.commands
 
50
    import bzrlib.trace
105
51
except ImportError, e:
106
52
    sys.stderr.write("bzr: ERROR: "
107
 
        "Couldn't import bzrlib and dependencies.\n"
108
 
        "Please check the directory containing bzrlib is on your PYTHONPATH.\n"
109
 
        "\n")
 
53
                     "Couldn't import bzrlib and dependencies.\n"
 
54
                     "Please check bzrlib is on your PYTHONPATH.\n"
 
55
                     "\n")
110
56
    raise
111
57
 
112
 
if bzrlib.version_info[:3] != _script_version:
 
58
if bzrlib.version_info[:3] != (0, 8, 1):
113
59
    sys.stderr.write("bzr: WARNING: bzrlib version doesn't match the bzr program.\n"
114
60
            "This may indicate an installation problem.\n"
115
61
            "bzrlib from %s is version %r\n"
116
62
            % (bzrlib.__path__, bzrlib.version_info))
117
63
 
118
 
import bzrlib.inspect_for_copy
119
 
bzrlib.inspect_for_copy.import_copy_with_hacked_inspect()
120
 
 
121
 
import bzrlib.breakin
122
 
bzrlib.breakin.hook_debugger_to_signal()
123
 
 
124
 
import bzrlib.decorators
125
 
if ('--lsprof' in sys.argv
126
 
    or '--lsprof-file' in sys.argv
127
 
    or '--profile' in sys.argv
128
 
    or '--lsprof-timed' in sys.argv):
129
 
    bzrlib.decorators.use_pretty_decorators()
130
 
else:
131
 
    bzrlib.decorators.use_fast_decorators()
132
 
 
133
 
import bzrlib.commands
134
 
import bzrlib.trace
135
 
 
136
 
 
137
64
if __name__ == '__main__':
138
 
    bzrlib.initialize()
139
 
    exit_val = bzrlib.commands.main()
140
 
 
141
 
    if profiling:
142
 
        profile_imports.log_stack_info(sys.stderr)
143
 
 
144
 
    # By this point we really have completed everything we want to do, and
145
 
    # there's no point doing any additional cleanup.  Abruptly exiting here
146
 
    # stops any background threads getting into trouble as code is unloaded,
147
 
    # and it may also be slightly faster, through avoiding gc of objects that
148
 
    # are just about to be discarded anyhow.  This does mean that atexit hooks
149
 
    # won't run but we don't use them.  Also file buffers won't be flushed,
150
 
    # but our policy is to always close files from a finally block. -- mbp 20070215
151
 
    sys.exitfunc()
152
 
    os._exit(exit_val)
 
65
    bzrlib.trace.enable_default_logging()
 
66
    sys.exit(bzrlib.commands.main(sys.argv))
153
67
else:
154
 
    raise ImportError("The bzr script cannot be imported.")
 
68
    pass    # should this give an error? - it can't be used as a lib