/stdhome

To get this branch, use:
bzr branch http://bzr.ed.am/stdhome

« back to all changes in this revision

Viewing changes to lib/stdhome/vcs/bzr.py

  • Committer: Tim Marston
  • Date: 2021-07-05 21:01:29 UTC
  • Revision ID: tim@ed.am-20210705210129-gc746mez1vhzobz7
add stage-status command; add common stage notice to helps

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# brz.py
 
1
# bzr.py
2
2
#
3
3
# Copyright (C) 2014 Tim Marston <tim@edm.am>
4
4
#
60
60
                # the directory shouldn't exist
61
61
                os.mkdir( self.dir )
62
62
 
63
 
                # brz init
 
63
                # bzr init
64
64
                try:
65
 
                        self.run( [ 'brz', 'init', '.' ] )
 
65
                        self.run( [ 'bzr', 'init', '.' ] )
66
66
                except self.VcsError as e:
67
67
 
68
68
                        # attempt to clean-up dir
83
83
                # the directory shouldn't exist
84
84
                os.mkdir( self.dir )
85
85
 
86
 
                # brz co
 
86
                # bzr co
87
87
                try:
88
 
                        self.run( [ 'brz', 'checkout', url, '.' ] )
 
88
                        self.run( [ 'bzr', 'checkout', url, '.' ] )
89
89
                except self.VcsError as e:
90
90
 
91
91
                        # attempt to clean-up dir
101
101
                """Obtain some sort of revision identifier
102
102
                """
103
103
 
104
 
                # brz revno
105
 
                output = self.run( [ 'brz', 'revno', '--tree' ] )
 
104
                # bzr revno
 
105
                output = self.run( [ 'bzr', 'revno', '--tree' ] )
106
106
 
107
107
                # parse revno
108
108
                buf = io.StringIO( output )
115
115
                revision.
116
116
                """
117
117
 
118
 
                # brz st
119
 
                output = self.run( [ 'brz', 'status' ] )
 
118
                # bzr st
 
119
                output = self.run( [ 'bzr', 'status' ] )
120
120
                files = self.parse_file_blocks( output )
121
121
 
122
 
                # remove kind changed files (or they can cause `brz revert` to break in
 
122
                # remove kind changed files (or they can cause `bzr revert` to break in
123
123
                # strange situations, like when a directory has been replaced with a
124
124
                # symlink to a non-existant file)
125
125
                if 'kind changed' in files:
127
127
                                matches = re.search( '^(.+?)[/@+]? \([^)]+\)$', file )
128
128
                                if not matches:
129
129
                                        raise RunTimeError(
130
 
                                                'failed to parse brz kind change: %s' % file )
 
130
                                                'failed to parse bzr kind change: %s' % file )
131
131
                                file = matches.group( 1 )
132
132
                                if the.verbose >= 2: print("removing (kind changed): " + file)
133
133
                                full_file = os.path.join( self.dir, file )
138
138
                                else:
139
139
                                        raise RuntimeError( 'exotic file in repo: %s' % file )
140
140
 
141
 
                # brz revert
142
 
                self.run( [ 'brz', 'revert', '--no-backup' ] )
 
141
                # bzr revert
 
142
                self.run( [ 'bzr', 'revert', '--no-backup' ] )
143
143
 
144
 
                # brz st
145
 
                output = self.run( [ 'brz', 'status' ] )
 
144
                # bzr st
 
145
                output = self.run( [ 'bzr', 'status' ] )
146
146
                files = self.parse_file_blocks( output )
147
147
 
148
148
                # remove unknown files
151
151
                                matches = re.search( r'^(.+?)[/@+]?$', file )
152
152
                                if not matches:
153
153
                                        raise RunTimeError(
154
 
                                                'failed to parse brz unknowns: %s' % file )
 
154
                                                'failed to parse bzr unknowns: %s' % file )
155
155
                                file = matches.group( 1 )
156
156
                                if the.verbose >= 2: print("removing (unknown): " + file)
157
157
                                full_file = os.path.join( self.dir, file )
165
165
                # if a revision identifier has been given, ensure we're updated to that
166
166
                if revno is not None and self.get_revno() != revno:
167
167
 
168
 
                        # brz update
169
 
                        self.run( [ 'brz', 'update', '-r', revno ] )
 
168
                        # bzr update
 
169
                        self.run( [ 'bzr', 'update', '-r', revno ] )
170
170
 
171
171
 
172
172
        def update( self ):
175
175
                operation.
176
176
                """
177
177
 
178
 
#               WARNING: the following might cause brz to ask for your ssh password more than
 
178
#               WARNING: the following might cause bzr to ask for your ssh password more than
179
179
#               once during an update!!!
180
180
#
181
181
#               # get revno
182
182
#               revno = self.get_revno()
183
183
#
184
184
#               # update to current revision (pull in history without updating tree)
185
 
#               self.run( [ 'brz', 'update', '-r', revno ] )
 
185
#               self.run( [ 'bzr', 'update', '-r', revno ] )
186
186
#
187
187
#               # get log output
188
188
#               next_revno = str( int( revno ) + 1 )
189
 
#               output = self.run( [ 'brz', 'log', '-r', next_revno + '..' ] )
 
189
#               output = self.run( [ 'bzr', 'log', '-r', next_revno + '..' ] )
190
190
#
191
191
#               # parse output
192
192
#               keep_files = list()
214
214
#                                                       rename_from = rename_files[ rename_from ]
215
215
#                                               rename_files[ line[ 4 : ] ] = rename_from
216
216
 
217
 
                # brz update properly
218
 
                output = self.run( [ 'brz', 'update' ] )
 
217
                # bzr update properly
 
218
                output = self.run( [ 'bzr', 'update' ] )
219
219
 
220
220
                # parse output (see logic in report() in bzrlib/delta.py)
221
221
                files = list()
244
244
                                continue
245
245
 
246
246
                        raise RuntimeError(
247
 
                                'failed to parse brz update output line:\n%s' % line )
 
247
                                'failed to parse bzr update output line:\n%s' % line )
248
248
 
249
249
                return files
250
250
 
266
266
                """Check if the branch has any local modifications.
267
267
                """
268
268
 
269
 
                # brz status
270
 
                output = self.run( [ 'brz', 'status', '--no-pending' ] )
 
269
                # bzr status
 
270
                output = self.run( [ 'bzr', 'status', '--no-pending' ] )
271
271
 
272
272
                # parse output
273
273
                files = self.parse_file_blocks( output )
278
278
                """Return a list of files that have conflicts.
279
279
                """
280
280
 
281
 
                # brz status
282
 
                output = self.run( [ 'brz', 'status', '--no-pending' ] )
 
281
                # bzr status
 
282
                output = self.run( [ 'bzr', 'status', '--no-pending' ] )
283
283
 
284
284
                # parse output
285
285
                files = self.parse_file_blocks( output )
291
291
                @param files a list of relative filenames
292
292
                """
293
293
 
294
 
                # brz add
295
 
                self.run( [ 'brz', 'add', '-N' ] + files )
 
294
                # bzr add
 
295
                self.run( [ 'bzr', 'add', '-N' ] + files )
296
296
 
297
297
 
298
298
        def commit( self ):
299
299
                """Commit changes to the repo.
300
300
                """
301
301
 
302
 
                # brz commit
 
302
                # bzr commit
303
303
                try:
304
 
                        self.run( [ 'brz', 'commit', '-m', '' ] )
 
304
                        self.run( [ 'bzr', 'commit', '-m', '' ] )
305
305
                except self.VcsError as e:
306
306
                        if re.search( 'Working tree is out of date', e.output ):
307
307
                                raise the.program.FatalError(