parser.add_argument("--reconfigure",
action="store_true", dest="reconfigure",
help="Force configuration to be run")
+parser.add_argument("--reset-source",
+ action="store_true", dest="reset_source",
+ help="Reset sourcecode to the given version (removes local changes!)")
parser.add_argument("--no-update",
action="store_false", dest="update",
help="Do not update modules before compilation")
parser.add_argument("modules", metavar='MODULE', nargs='*',
help="Manually specify modules to be built")
args = parser.parse_args()
+# sanitize
+if args.reset_source and not args.update:
+ raise Exception("When no update is performed, no reset to the given version can be done either")
# load config
config = imp.load_source('config', args.config).__dict__
try:
if args.update:
print "Updating module",project.sourceFolder()
- project.vcs.update()
+ project.vcs.update(forceVersion=args.reset_source)
print "Building module",project.sourceFolder()
project.buildSystem.build(reconfigure=args.reconfigure)
print
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/'):]
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)
print "...done",
if repo.head.reference.commit != repo.commit(self.commit):
print "(keeping local patches around)",
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 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