- def update(self, subdir=None, recursive=None):
- self.__run_command_in_repo("git fetch --tags")
- self.__run_command_in_repo("git pull")
+ def __is_commit_id(self, id):
+ c = Command("git show %s | grep commit | awk '{print $2;}'" % id, self.options)
+ ret = self.__run_in_repo(c.output_of, with_stderr=False)
+ if ret.strip() == id:
+ return True
+ return False
+
+ def update(self, subdir=None, recursive=None, branch="master"):
+ if branch == "master":
+ self.__run_command_in_repo("git checkout %s" % branch)
+ else:
+ self.to_branch(branch, remote=True)
+ self.__run_command_in_repo("git fetch origin --tags")
+ self.__run_command_in_repo("git fetch origin")
+ if not self.__is_commit_id(branch):
+ # we don't need to merge anythign for commit ids.
+ self.__run_command_in_repo("git merge --ff origin/%s" % branch)