/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to olive/backend/init.py

  • Committer: Szilveszter Farkas (Phanatic)
  • Date: 2006-08-20 13:02:35 UTC
  • mto: (0.14.1 main) (93.1.1 win32.bialix)
  • mto: This revision was merged to the branch mainline in revision 83.
  • Revision ID: Szilveszter.Farkas@gmail.com-20060820130235-62c9c5753f5d8774
Gettext support added.

2006-08-20  Szilveszter Farkas <Szilveszter.Farkas@gmail.com>

    * po/hu.po: added Hungarian traslation
    * Added gettext support to all files.
    * genpot.sh: added olive-gtk.pot generator script

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
 
2
# Some parts of the code are:
 
3
# Copyright (C) 2005, 2006 by Canonical Ltd
 
4
 
 
5
# This program is free software; you can redistribute it and/or modify
 
6
# it under the terms of the GNU General Public License as published by
 
7
# the Free Software Foundation; either version 2 of the License, or
 
8
# (at your option) any later version.
 
9
 
 
10
# This program is distributed in the hope that it will be useful,
 
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
# GNU General Public License for more details.
 
14
 
 
15
# You should have received a copy of the GNU General Public License
 
16
# along with this program; if not, write to the Free Software
 
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
18
 
 
19
import errno
 
20
import os
 
21
 
 
22
import bzrlib
 
23
import bzrlib.bzrdir as bzrdir
 
24
import bzrlib.errors as errors
 
25
 
 
26
from bzrlib.branch import Branch
 
27
 
 
28
from errors import (AlreadyBranchError, BranchExistsWithoutWorkingTree,
 
29
                    NonExistingParent, NonExistingRevision,
 
30
                    NonExistingSource, NotBranchError, TargetAlreadyExists)
 
31
 
 
32
def branch(from_location, to_location, revision=None):
 
33
    """ Create a branch from a local/remote location.
 
34
    
 
35
    :param from_location: the original location of the branch
 
36
    
 
37
    :param to_location: the directory where the branch should be created
 
38
    
 
39
    :param revision: if specified, the given revision will be branched
 
40
    
 
41
    :return: number of revisions branched
 
42
    """
 
43
    from bzrlib.transport import get_transport
 
44
 
 
45
    try:
 
46
        br_from = Branch.open(from_location)
 
47
    except OSError, e:
 
48
        if e.errno == errno.ENOENT:
 
49
            raise NonExistingSource(from_location)
 
50
        else:
 
51
            raise
 
52
    except errors.NotBranchError:
 
53
        raise NotBranchError(from_location)
 
54
 
 
55
    br_from.lock_read()
 
56
 
 
57
    try:
 
58
        basis_dir = None
 
59
        if revision is not None:
 
60
            revision_id = br_from.get_rev_id(revision)
 
61
        else:
 
62
            revision_id = None
 
63
 
 
64
        to_location = to_location + '/' + os.path.basename(from_location.rstrip("/\\"))
 
65
        name = None
 
66
        to_transport = get_transport(to_location)
 
67
 
 
68
        try:
 
69
            to_transport.mkdir('.')
 
70
        except errors.FileExists:
 
71
            raise TargetAlreadyExists(to_location)
 
72
        except errors.NoSuchFile:
 
73
            raise NonExistingParent(to_location)
 
74
 
 
75
        try:
 
76
            dir = br_from.bzrdir.sprout(to_transport.base, revision_id, basis_dir)
 
77
            branch = dir.open_branch()
 
78
        except errors.NoSuchRevision:
 
79
            to_transport.delete_tree('.')
 
80
            raise NonExistingRevision(from_location, revision[0])
 
81
 
 
82
        if name:
 
83
            branch.control_files.put_utf8('branch-name', name)
 
84
    finally:
 
85
        br_from.unlock()
 
86
        
 
87
    return branch.revno()
 
88
 
 
89
def checkout(branch_location, to_location, revision=None, lightweight=False):
 
90
    """ Create a new checkout of an existing branch.
 
91
    
 
92
    :param branch_location: the location of the branch you'd like to checkout
 
93
    
 
94
    :param to_location: the directory where the checkout should be created
 
95
    
 
96
    :param revision: the given revision will be checkout'ed (be aware!)
 
97
    
 
98
    :param lightweight: perform a lightweight checkout (be aware!)
 
99
    """
 
100
    try:
 
101
        source = Branch.open(branch_location)
 
102
    except errors.NotBranchError:
 
103
        raise NotBranchError(branch_location)
 
104
    
 
105
    if revision is not None:
 
106
        revision_id = source.get_rev_id(revision)
 
107
    else:
 
108
        revision_id = None
 
109
 
 
110
    # if the source and to_location are the same, 
 
111
    # and there is no working tree,
 
112
    # then reconstitute a branch
 
113
    if (bzrlib.osutils.abspath(to_location) ==
 
114
        bzrlib.osutils.abspath(branch_location)):
 
115
        try:
 
116
            source.bzrdir.open_workingtree()
 
117
        except errors.NoWorkingTree:
 
118
            source.bzrdir.create_workingtree()
 
119
            return
 
120
 
 
121
    to_location = to_location + '/' + os.path.basename(branch_location.rstrip("/\\"))
 
122
    
 
123
    try:
 
124
        os.mkdir(to_location)
 
125
    except OSError, e:
 
126
        if e.errno == errno.EEXIST:
 
127
            raise TargetAlreadyExists(to_location)
 
128
        if e.errno == errno.ENOENT:
 
129
            raise NonExistingParent(to_location)
 
130
        else:
 
131
            raise
 
132
 
 
133
    old_format = bzrlib.bzrdir.BzrDirFormat.get_default_format()
 
134
    bzrlib.bzrdir.BzrDirFormat.set_default_format(bzrdir.BzrDirMetaFormat1())
 
135
 
 
136
    try:
 
137
        if lightweight:
 
138
            checkout = bzrdir.BzrDirMetaFormat1().initialize(to_location)
 
139
            bzrlib.branch.BranchReferenceFormat().initialize(checkout, source)
 
140
        else:
 
141
            checkout_branch = bzrlib.bzrdir.BzrDir.create_branch_convenience(
 
142
                to_location, force_new_tree=False)
 
143
            checkout = checkout_branch.bzrdir
 
144
            checkout_branch.bind(source)
 
145
            if revision_id is not None:
 
146
                rh = checkout_branch.revision_history()
 
147
                checkout_branch.set_revision_history(rh[:rh.index(revision_id) + 1])
 
148
 
 
149
        checkout.create_workingtree(revision_id)
 
150
    finally:
 
151
        bzrlib.bzrdir.BzrDirFormat.set_default_format(old_format)
 
152
 
 
153
def init(location):
 
154
    """ Initialize a directory.
 
155
    
 
156
    :param location: full path to the directory you want to be versioned
 
157
    """
 
158
    from bzrlib.builtins import get_format_type
 
159
 
 
160
    format = get_format_type('default')
 
161
 
 
162
    if not os.path.exists(location):
 
163
        os.mkdir(location)
 
164
 
 
165
    try:
 
166
        existing_bzrdir = bzrdir.BzrDir.open(location)
 
167
    except errors.NotBranchError:
 
168
        bzrdir.BzrDir.create_branch_convenience(location, format=format)
 
169
    else:
 
170
        if existing_bzrdir.has_branch():
 
171
            if existing_bzrdir.has_workingtree():
 
172
                raise AlreadyBranchError(location)
 
173
            else:
 
174
                raise BranchExistsWithoutWorkingTree(location)
 
175
        else:
 
176
            existing_bzrdir.create_branch()
 
177
            existing_bzrdir.create_workingtree()