projects
/
mass-build.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make waitAfterConfig a command-line option, instead of configuring it in the conf...
[mass-build.git]
/
vcs.py
diff --git
a/vcs.py
b/vcs.py
index f40c6e9c4e8915b7549668e49cbf9e9ced0c6346..785a9ba35c4a1e10e649db55c4eaaf84d0032df6 100644
(file)
--- a/
vcs.py
+++ b/
vcs.py
@@
-1,6
+1,6
@@
import os, git, subprocess
import os, git, subprocess
-'''A VCS must have an "update" method with an optional "force
" parameter
.'''
+'''A VCS must have an "update" method with an optional "force
Version" parameter, and optionally a "version" method
.'''
# Fetch updates from git
class Git:
# Fetch updates from git
class Git:
@@
-13,7
+13,7
@@
class Git:
def update(self, op_code, cur_count, max_count=None, message=''):
print self._cur_line+(" "*30)+"\r",
def update(self, op_code, cur_count, max_count=None, message=''):
print self._cur_line+(" "*30)+"\r",
- def update(self):
+ def update(self
, forceVersion=False
):
isBranch = (self.commit.startswith('origin/'))
if isBranch:
branchname = self.commit[len('origin/'):]
isBranch = (self.commit.startswith('origin/'))
if isBranch:
branchname = self.commit[len('origin/'):]
@@
-24,6
+24,7
@@
class Git:
# load existing repo
repo = git.Repo(self.folder)
origin = repo.remotes.origin
# load existing repo
repo = git.Repo(self.folder)
origin = repo.remotes.origin
+ origin.config_writer.set_value("url", self.url) # make sure we use the current URL
else:
# create a new one
os.makedirs(self.folder)
else:
# create a new one
os.makedirs(self.folder)
@@
-40,7
+41,13
@@
class Git:
branch.set_tracking_branch(origin.refs[branchname])
# update it to the latest remote commit
branch.checkout()
branch.set_tracking_branch(origin.refs[branchname])
# update it to the latest remote commit
branch.checkout()
- repo.git.rebase(self.commit)
+ if forceVersion:
+ repo.head.reset(self.commit, working_tree=True)
+ else:
+ repo.git.rebase(self.commit)
+ # update submodules
+ repo.git.submodule("update", "--init", "--recursive", "--rebase")
+ # done
print "...done",
if repo.head.reference.commit != repo.commit(self.commit):
print "(keeping local patches around)",
print "...done",
if repo.head.reference.commit != repo.commit(self.commit):
print "(keeping local patches around)",
@@
-54,17
+61,14
@@
class Git:
# Fetch updates via SVN
class SVN:
# Fetch updates via SVN
class SVN:
- def __init__(self, folder, url
, versionName
):
+ def __init__(self, folder, url):
self.folder = os.path.abspath(folder)
self.url = url
self.folder = os.path.abspath(folder)
self.url = url
- self.versionName = versionName
- def update(self):
+ def update(self
, forceVersion=False
):
if os.path.exists(self.folder):
os.chdir(self.folder) # go into repository
if os.path.exists(self.folder):
os.chdir(self.folder) # go into repository
+ if forceVersion: subprocess.check_call(['svn', 'revert', '-R', '.'])
subprocess.check_call(['svn', 'switch', self.url]) # and update to the URL we got
else:
subprocess.check_call(['svn', 'co', self.url, self.folder]) # just download it
subprocess.check_call(['svn', 'switch', self.url]) # and update to the URL we got
else:
subprocess.check_call(['svn', 'co', self.url, self.folder]) # just download it
-
- def version(self):
- return self.versionName