def create_branch(self): """Creates a branch; called by the "Create Branch" button""" self.getopts() revision = self.opts.revision branch = self.opts.branch no_update = self.no_update_radio.isChecked() ffwd_only = self.ffwd_only_radio.isChecked() existing_branches = gitcmds.branch_list() check_branch = False if not branch or not revision: qtutils.critical(N_('Missing Data'), N_('Please provide both a branch ' 'name and revision expression.')) return if branch in existing_branches: if no_update: msg = N_('Branch "%s" already exists.') % branch qtutils.critical(N_('Branch Exists'), msg) return # Whether we should prompt the user for lost commits commits = gitcmds.rev_list_range(revision, branch) check_branch = bool(commits) if check_branch: msg = (N_('Resetting "%(branch)s" to "%(revision)s" ' 'will lose commits.') % dict(branch=branch, revision=revision)) if ffwd_only: qtutils.critical(N_('Branch Exists'), msg) return lines = [msg] for idx, commit in enumerate(commits): subject = commit[1][0:min(len(commit[1]),16)] if len(subject) < len(commit[1]): subject += '...' lines.append('\t' + commit[0][:8] +'\t' + subject) if idx >= 5: skip = len(commits) - 5 lines.append('\t(%s)' % (N_('%d skipped') % skip)) break line = N_('Recovering lost commits may not be easy.') lines.append(line) if not qtutils.confirm(N_('Reset Branch?'), '\n'.join(lines), (N_('Reset "%(branch)s" to "%(revision)s"?') % dict(branch=branch, revision=revision)), N_('Reset Branch'), default=False, icon=qtutils.theme_icon('edit-undo.svg')): return self.setEnabled(False) self.progress.setEnabled(True) QtGui.QApplication.setOverrideCursor(Qt.WaitCursor) # Show a nice progress bar self.progress.setLabelText(N_('Updating...')) self.progress.show() self.thread.start()
def create_branch(self): """Creates a branch; called by the "Create Branch" button""" revision = self.model.revision branch = self.model.local_branch existing_branches = self.model.local_branches if not branch or not revision: qtutils.information('Missing Data', 'Please provide both a branch ' 'name and revision expression.') return check_branch = False if branch in existing_branches: if self.view.no_update_radio.isChecked(): msg = self.tr("Branch '%s' already exists.") msg = unicode(msg) % branch qtutils.information('warning', msg) return # Whether we should prompt the user for lost commits commits = gitcmds.rev_list_range(revision, branch) check_branch = bool(commits) if check_branch: msg = self.tr("Resetting '%s' to '%s' will " "lose the following commits:") lines = [ unicode(msg) % (branch, revision) ] for idx, commit in enumerate(commits): subject = commit[1][0:min(len(commit[1]),16)] if len(subject) < len(commit[1]): subject += '...' lines.append('\t' + commit[0][:8] +'\t' + subject) if idx >= 5: skip = len(commits) - 5 lines.append('\t(%d skipped)' % skip) break lines.extend([ unicode(self.tr('Recovering lost commits may not be easy.')), unicode(self.tr("Reset '%s'?")) % branch ]) result = qtutils.question(self.view, 'warning', '\n'.join(lines)) if not result: return # TODO handle fetch track = self.view.remote_radio.isChecked() fetch = self.view.fetch_checkbox.isChecked() ffwd = self.view.ffwd_only_radio.isChecked() reset = self.view.reset_radio.isChecked() chkout = self.view.checkout_checkbox.isChecked() status, output = self.model.create_branch(branch, revision, track=track) qtutils.log(status, output) if status == 0 and chkout: status, output = self.model.git.checkout(branch, with_status=True, with_stderr=True) qtutils.log(status, output) self.view.accept()