def restore_temp_commit(flags, restore_data): """ Restores the initial state before a temp commit was created. - restore_data -- The restore data returned from the 'create_temp_commit' function. """ try: # Restore branch. if restore_data[0] != get_branch(): log(flags, "Switching active branch to \'" + restore_data[0] + "\'") switch_branch(restore_data[0]) # Check if changes have been stashed (and temporary commit created). if restore_data[2] is not None: log(flags, "Resetting branch \'" + restore_data[0] + "\'to commit \'" + restore_data[1] + "\'") reset_branch(flags, restore_data[0], restore_data[1]) log(flags, "Restoring uncommitted changes from stash to " + "branch \'" + restore_data[0] + "\'") apply_stash(flags, restore_data[0], drop=True) except Error as err: raise OpError(err)
def __process_merge_guser_and_gcc(self): logger = logging.getLogger(__name__) logger.info("process_merge_guser_and_gcc starts...") try: gitutil.push_branch(self.gcc, 'master', 'guser', 'cc') except: # should fail, since guser 'cc' branch only accept data from gcc, and no other push. raise gmerge = self.gmerge # reset gmerge cc branch as guser cc gitutil.reset_branch(gmerge, 'cc', 'guser', 'cc') # reset gmerge master branch as guser master gitutil.reset_branch(gmerge, 'master', 'guser', 'master') # save the current commit in mater when rebasing. gitutil.create_branch(self.guser, 'rebase_spot', 'master') # checkout master branch. gitutil.checkout_branch(gmerge, 'master') # merge cc to master. try: gmerge.git.rebase('cc') except git.GitCommandError: # get current status gmerge_status = str(gmerge.git.status()) # abort rebase for next round. gmerge.git.rebase('--abort') if self.mirror_mode: try: gitutil.push_branch(self.guser, 'cc', 'gpublic', 'cc', force=True) except: # should fail, since guser 'cc' branch only accept data from gcc, and no other push. raise # manual merge needs. users = gitutil.get_users(self.guser, self.guser.heads.rebase_spot.commit, self.guser.heads.base.commit) raise ConflictException(users, gmerge_status) except: raise # rebase is successful. self.__continue_after_merge_in_gmerge()