Mercurial > treepkg > treepkg
annotate treepkg/subversion.py @ 262:81ba86662cbd
Add treepkg/subversion.list_url function, a wrapper for "svn list"
author | Bernhard Herzog <bh@intevation.de> |
---|---|
date | Fri, 24 Apr 2009 18:33:12 +0000 |
parents | e387b879fd38 |
children | e201ea1f6d0e |
rev | line source |
---|---|
224
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
1 # Copyright (C) 2007, 2008, 2009 by Intevation GmbH |
0 | 2 # Authors: |
3 # Bernhard Herzog <bh@intevation.de> | |
4 # | |
5 # This program is free software under the GPL (>=v2) | |
6 # Read the file COPYING coming with the software for details. | |
7 | |
224
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
8 """Collection of subversion utility code""" |
0 | 9 |
10 import os | |
230
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
11 import shutil |
0 | 12 |
13 import run | |
45
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
0
diff
changeset
|
14 from cmdexpand import cmdexpand |
0 | 15 from util import extract_value_for_key |
16 | |
17 | |
262
81ba86662cbd
Add treepkg/subversion.list_url function, a wrapper for "svn list"
Bernhard Herzog <bh@intevation.de>
parents:
230
diff
changeset
|
18 def list_url(url): |
81ba86662cbd
Add treepkg/subversion.list_url function, a wrapper for "svn list"
Bernhard Herzog <bh@intevation.de>
parents:
230
diff
changeset
|
19 """Runs svn list with the given url and returns files listed as a list""" |
81ba86662cbd
Add treepkg/subversion.list_url function, a wrapper for "svn list"
Bernhard Herzog <bh@intevation.de>
parents:
230
diff
changeset
|
20 output = run.capture_output(cmdexpand("svn list $url", **locals())) |
81ba86662cbd
Add treepkg/subversion.list_url function, a wrapper for "svn list"
Bernhard Herzog <bh@intevation.de>
parents:
230
diff
changeset
|
21 return output.splitlines() |
81ba86662cbd
Add treepkg/subversion.list_url function, a wrapper for "svn list"
Bernhard Herzog <bh@intevation.de>
parents:
230
diff
changeset
|
22 |
208
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
23 def checkout(url, localdir, revision=None, recurse=True): |
0 | 24 """Runs svn to checkout the repository at url into the localdir""" |
208
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
25 args = [] |
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
26 if revision: |
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
27 args.extend(["--revision", revision]) |
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
28 if not recurse: |
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
29 args.append("-N") |
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
30 run.call(cmdexpand("svn checkout -q @args $url $localdir", **locals())) |
0 | 31 |
208
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
32 def update(localdir, revision=None, recurse=True): |
79
570ac81865be
Add revision parameter to update so that a checkout can be updated to a
Bernhard Herzog <bh@intevation.de>
parents:
45
diff
changeset
|
33 """Runs svn update on the localdir. |
570ac81865be
Add revision parameter to update so that a checkout can be updated to a
Bernhard Herzog <bh@intevation.de>
parents:
45
diff
changeset
|
34 The parameter revision, if given, is passed to svn as the value of |
570ac81865be
Add revision parameter to update so that a checkout can be updated to a
Bernhard Herzog <bh@intevation.de>
parents:
45
diff
changeset
|
35 the --revision option. |
570ac81865be
Add revision parameter to update so that a checkout can be updated to a
Bernhard Herzog <bh@intevation.de>
parents:
45
diff
changeset
|
36 """ |
208
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
37 args = [] |
79
570ac81865be
Add revision parameter to update so that a checkout can be updated to a
Bernhard Herzog <bh@intevation.de>
parents:
45
diff
changeset
|
38 if revision: |
208
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
39 args.extend(["--revision", revision]) |
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
40 if not recurse: |
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
41 args.append("-N") |
1527c37bd7aa
Allow checkouts of specific revision and to prohibit recursion during
Bernhard Herzog <bh@intevation.de>
parents:
79
diff
changeset
|
42 run.call(cmdexpand("svn update -q @args $localdir", **locals())) |
0 | 43 |
44 def export(src, dest): | |
45 """Runs svn export src dest""" | |
45
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
0
diff
changeset
|
46 run.call(cmdexpand("svn export -q $src $dest", **locals())) |
0 | 47 |
48 def last_changed_revision(svn_working_copy): | |
49 """return the last changed revision of an SVN working copy as an int""" | |
50 # Make sure we run svn under the C locale to avoid localized | |
51 # messages | |
52 env = os.environ.copy() | |
53 env["LANG"] = "C" | |
54 | |
45
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
0
diff
changeset
|
55 output = run.capture_output(cmdexpand("svn info $svn_working_copy", |
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
0
diff
changeset
|
56 **locals()), |
3e610233ccfe
use cmdexpand when calling subprocesses
Bernhard Herzog <bh@intevation.de>
parents:
0
diff
changeset
|
57 env=env) |
0 | 58 return int(extract_value_for_key(output.splitlines(), |
59 "Last Changed Rev:")) | |
224
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
60 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
61 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
62 class SvnRepository(object): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
63 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
64 """Describes a subversion repository""" |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
65 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
66 def __init__(self, url, external_subdirs=()): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
67 """Initialize the subversion repository description |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
68 Parameters: |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
69 url -- The url of the repository |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
70 external_subdirs -- A list of subdirectories which are managed |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
71 by svn externals definitions |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
72 """ |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
73 self.url = url |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
74 self.external_subdirs = external_subdirs |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
75 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
76 def checkout(self, localdir, revision=None): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
77 """Checks out the repository into localdir. The revision |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
78 parameter should be an and indicates the revision to check out. |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
79 """ |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
80 checkout(self.url, localdir, revision=revision) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
81 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
82 def export(self, localdir, destdir): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
83 """Exports the working copy in localdir to destdir""" |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
84 export(localdir, destdir) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
85 for subdir in self.external_subdirs: |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
86 absdir = os.path.join(destdir, subdir) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
87 if not os.path.isdir(absdir): |
228
d2ddd037ddaf
Fix a bug introduced by the subversion interface reorganization
Bernhard Herzog <bh@intevation.de>
parents:
224
diff
changeset
|
88 export(os.path.join(localdir, subdir), absdir) |
224
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
89 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
90 def last_changed_revision(self, localdir): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
91 """Returns the last changed revision of the working copy in localdir""" |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
92 return max([last_changed_revision(os.path.join(localdir, d)) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
93 for d in [localdir] + list(self.external_subdirs)]) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
94 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
95 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
96 class SvnWorkingCopy(object): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
97 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
98 """Represents a checkout of a subversion repository""" |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
99 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
100 def __init__(self, repository, localdir, logger=None): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
101 """ |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
102 Initialize the working copy. |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
103 Parameters: |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
104 repository -- The SvnRepository instance describing the |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
105 repository |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
106 localdir -- The directory for the working copy |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
107 logger -- logging object to use for some info/debug messages |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
108 """ |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
109 self.repository = repository |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
110 self.localdir = localdir |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
111 self.logger = logger |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
112 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
113 def log_info(self, *args): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
114 if self.logger is not None: |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
115 self.logger.info(*args) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
116 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
117 def update_or_checkout(self, revision=None): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
118 """Updates the working copy or creates by checking out the repository""" |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
119 if os.path.exists(self.localdir): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
120 self.log_info("Updating the working copy in %r", self.localdir) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
121 update(self.localdir, revision=revision) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
122 else: |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
123 self.log_info("The working copy in %r doesn't exist yet." |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
124 " Checking out from %r", |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
125 self.localdir, self.repository.url) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
126 self.repository.checkout(self.localdir, revision=revision) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
127 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
128 def export(self, destdir): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
129 """Exports the working copy to destdir""" |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
130 self.repository.export(self.localdir, destdir) |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
131 |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
132 def last_changed_revision(self): |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
133 """Returns the last changed rev of the working copy""" |
6bac65dcf258
Handle the svn repositories and working copies in a more object oriented way
Bernhard Herzog <bh@intevation.de>
parents:
208
diff
changeset
|
134 return self.repository.last_changed_revision(self.localdir) |
230
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
135 |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
136 |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
137 class ManualWorkingCopy(object): |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
138 |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
139 """A manually managed working copy""" |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
140 |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
141 def __init__(self, directory): |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
142 self.directory = directory |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
143 |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
144 def update_or_checkout(self, revision=None, recurse=True): |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
145 """This method does nothing""" |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
146 pass |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
147 |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
148 def export(self, destdir): |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
149 """Copies the entire working copy to destdir""" |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
150 shutil.copytree(self.directory, destdir) |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
151 |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
152 def last_changed_revision(self): |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
153 """Always returns 0""" |
e387b879fd38
Add treepkg.subversion.ManualWorkingCopy. Same interface as
Bernhard Herzog <bh@intevation.de>
parents:
228
diff
changeset
|
154 return 0 |