/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: 2014-04-18 14:42:00 UTC
  • Revision ID: tim@ed.am-20140418144200-ksbr3l58p2v3jhy2
fixed bugs in command.expand_files, where results could be not unique, nor
sorted, and make sure the last component of the files is not resolved if it is a
symlink

Show diffs side-by-side

added added

removed removed

21
21
 
22
22
import os
23
23
import the, util
24
 
from vcs.vcs import Vcs
 
24
from vcs.bzr import BzrVcs
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 = False
 
34
                self.vcs = BzrVcs( self.full_dir )
35
35
 
36
36
 
37
37
        def check_dir_exists( self, should_exist = True ):
 
38
                condition = 'does not' if should_exist else 'already'
38
39
                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: %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
 
 
 
41
                                'repository %s exists: %s' % ( condition, self.dir ) )
64
42
 
65
43
        def __str__( self ):
66
44
                return "Repo( %s: %s )" % ( self.name, self.dir )