/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/repo.py

  • Committer: Tim Marston
  • Date: 2016-05-22 16:45:54 UTC
  • Revision ID: tim@ed.am-20160522164554-n5qhuibvnv0z4tk1
added general reporting to CopyBase and configured it via copy-in and copy-out
walkers (it is required in copy in, during add command); added -R (recursive)
flass to add command; allow vcs backends to augment statically ignored files
list; added detection of out of date working copy to bzr backend;
generate_walk_list() now takes a mandatory directory as the first argument;
don't copy entire subtree during copy of missing directory (as this makes
assumptions about what's in the walk-list)

Show diffs side-by-side

added added

removed removed

21
21
 
22
22
import os
23
23
import the, util
24
 
from vcs.bzr import BzrVcs
 
24
from vcs.vcs import Vcs
25
25
 
26
26
 
27
27
class Repo:
31
31
                self.name = name
32
32
                self.dir = os.path.join( the.dir, self.name )
33
33
                self.full_dir = util.canonicalise_path( self.dir )
34
 
                self.vcs = BzrVcs( self.full_dir )
 
34
                self.vcs = False
35
35
 
36
36
 
37
37
        def check_dir_exists( self, should_exist = True ):
38
 
                condition = 'does not' if should_exist else 'already'
39
38
                if os.path.exists( self.full_dir ) != should_exist:
 
39
                        error = 'does not exist' if should_exist else 'already exists'
40
40
                        raise the.program.FatalError(
41
 
                                'repository %s exists: %s' % ( condition, self.dir ) )
 
41
                                'repository %s: %s' % ( error, self.dir ) )
 
42
 
 
43
 
 
44
        def detect_vcs( self ):
 
45
                if os.path.exists( self.full_dir ):
 
46
                        for vcs in Vcs.vcses:
 
47
                                instance = Vcs.instantiate_vcs( vcs, self.full_dir )
 
48
                                if instance.has_authority():
 
49
                                        if the.verbose >= 2: print "repo vcs: %s" % vcs
 
50
                                        self.vcs = instance
 
51
                                        break
 
52
                        if self.vcs == False:
 
53
                                raise the.program.FatalError(
 
54
                                        'unknown vcs in repository: %s' % self.dir )
 
55
 
 
56
 
 
57
        def set_vcs( self, vcs ):
 
58
                if Vcs.vcses.count( vcs ) == 1:
 
59
                        self.vcs = Vcs.instantiate_vcs( vcs, self.full_dir )
 
60
                        if the.verbose >= 2: print "repo vcs: %s" % vcs
 
61
                else:
 
62
                        raise the.program.FatalError( 'unknown vcs requested: %s' % vcs )
 
63
 
42
64
 
43
65
        def __str__( self ):
44
66
                return "Repo( %s: %s )" % ( self.name, self.dir )