X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=module-tools.py;h=e3aaba7a240a1c1bc4dc3f968c7c5f9430efc087;hb=c634de4062cb0ba627fd799e7a8084839239fc4d;hp=66536a502861ab29760ee8ff4c244d1d4ff5b7dc;hpb=1cff66a22a69b2a5d2c9185416f47745006ca3fd;p=build.git diff --git a/module-tools.py b/module-tools.py index 66536a50..e3aaba7a 100755 --- a/module-tools.py +++ b/module-tools.py @@ -11,7 +11,14 @@ from optparse import OptionParser # Moving to git we decided to rename some of the repositories. Here is # a map of name changes applied in git repositories. RENAMED_SVN_MODULES = { - "PLEWWW": "plewww" + "PLEWWW": "plewww", + "PLCAPI": "plcapi", + "BootManager": "bootmanager", + "BootCD": "bootcd", + "VserverReference": "vserver-reference", + "BootstrapFS": "bootstrapfs", + "MyPLC": "myplc", + "NodeManager": "nodemanager" } def svn_to_git_name(module): @@ -183,7 +190,7 @@ class SvnRepository: url = "%s/tags/%s" % (self.repo_root(), tagname) return SvnRepository.remote_exists(url) - def update(self, subdir="", recursive=True): + def update(self, subdir="", recursive=True, branch=None): path = os.path.join(self.path, subdir) if recursive: svncommand = "svn up %s" % path @@ -289,9 +296,14 @@ class GitRepository: else: return self.__run_in_repo(c.run_fatal) - def update(self, subdir=None, recursive=None): - self.__run_command_in_repo("git fetch --tags") - self.__run_command_in_repo("git pull") + def update(self, subdir=None, recursive=None, branch="master"): + if branch == "master": + self.__run_command_in_repo("git checkout %s" % branch) + else: + self.__run_command_in_repo("git checkout origin/%s" % branch) + self.__run_command_in_repo("git fetch origin --tags") + self.__run_command_in_repo("git fetch origin") + self.__run_command_in_repo("git merge --ff origin/%s" % branch) def to_branch(self, branch, remote=True): if remote: @@ -352,9 +364,12 @@ class Repository: break @classmethod - def has_moved_to_git(cls, module, svnpath): + def has_moved_to_git(cls, module, config): module = git_to_svn_name(module) - return SvnRepository.remote_exists("%s/%s/aaaa-has-moved-to-git" % (svnpath, module)) + # check if the module is already in Git +# return SvnRepository.remote_exists("%s/%s/aaaa-has-moved-to-git" % (config['svnpath'], module)) + return GitRepository.remote_exists(Module.git_remote_dir(module)) + @classmethod def remote_exists(cls, remote): @@ -567,7 +582,7 @@ that for other purposes than tagging""" % options.workdir print 'Checking for',self.module_dir if not os.path.isdir (self.module_dir): - if Repository.has_moved_to_git(self.name, Module.config['svnpath']): + if Repository.has_moved_to_git(self.name, Module.config): self.repository = GitRepository.checkout(self.git_remote_dir(self.name), self.module_dir, self.options) @@ -580,7 +595,7 @@ that for other purposes than tagging""" % options.workdir self.repository = Repository(self.module_dir, self.options) if self.repository.type == "svn": # check if module has moved to git - if Repository.has_moved_to_git(self.name, Module.config['svnpath']): + if Repository.has_moved_to_git(self.name, Module.config): Command("rm -rf %s" % self.module_dir, self.options).run_silent() self.init_module_dir() # check if we have the required branch/tag @@ -614,7 +629,13 @@ that for other purposes than tagging""" % options.workdir return if self.options.verbose: print 'Updating', self.module_dir - self.repository.update() + + if hasattr(self,'branch'): + self.repository.update(branch=self.branch) + elif hasattr(self,'tagname'): + self.repository.update(branch=self.tagname) + else: + self.repository.update() def main_specname (self): attempt="%s/%s.spec"%(self.module_dir,self.name)