pull: make pull verbose
[ugit.git] / ugit / controllers / merge.py
blobc18dc75eb653479cc146f8f9cfaf473794a717e8
1 #!/usr/bin/env python
2 from ugit import utils
3 from ugit import qtutils
4 from ugit.qobserver import QObserver
5 from ugit.views import MergeView
7 def abort_merge(model, parent):
8 txt = parent.tr("Abort merge?\n"
9 "Aborting the current merge will cause "
10 "*ALL* uncommitted changes to be lost.\n\n"
11 "Continue with aborting the current merge?")
12 answer = qtutils.question(parent, parent.tr('Abort Merge?'), txt)
13 if answer:
14 model.abort_merge()
16 def local_merge(model, parent):
17 model = model.clone()
18 model.create(revision='', revision_list=[])
19 view = MergeView(parent)
20 ctl = MergeController(model, view)
21 view.show()
23 class MergeController(QObserver):
24 def init(self, model, view):
25 # Set the current branch label
26 branch = self.model.get_currentbranch()
27 title = unicode(self.tr('Merge Into %s')) % branch
28 self.view.label.setText(title)
29 self.add_observables('revision', 'revision_list')
30 self.add_callbacks(
31 radio_local = self.radio_callback,
32 radio_remote = self.radio_callback,
33 radio_tag = self.radio_callback,
34 revision_list = self.revision_selected,
35 button_viz = self.viz_revision,
36 button_merge = self.merge_revision,
38 self.model.set_revision_list(
39 self.model.get_local_branches())
40 self.view.radio_local.setChecked(True)
42 def get_revision_list(self):
43 if self.view.radio_local.isChecked():
44 return self.model.get_local_branches()
45 elif self.view.radio_remote.isChecked():
46 return self.model.get_remote_branches()
47 elif self.view.radio_tag.isChecked():
48 return self.model.get_tags()
49 return []
51 def revision_selected(self, *args):
52 revlist = self.get_revision_list()
53 widget = self.view.revision_list
54 row, selected = qtutils.get_selected_row(widget)
55 if selected and row < len(revlist):
56 revision = revlist[row]
57 self.model.set_revision(revision)
59 def radio_callback(self):
60 revlist = self.get_revision_list()
61 self.model.set_revision_list(revlist)
63 def merge_revision(self):
64 revision = self.model.get_revision()
65 if not revision:
66 qtutils.information(
67 "No Revision Specified",
68 "You must specify a revision to merge")
69 return
71 no_commit = not(self.view.checkbox_commit.isChecked())
72 squash = self.view.checkbox_squash.isChecked()
73 msg = self.model.get_merge_message()
74 qtutils.log(
75 self.model.merge(
76 '-m'+msg,
77 revision,
78 strategy='recursive',
79 no_commit=no_commit,
80 squash=squash
82 quiet=False,
83 doraise=True)
84 self.view.accept()
86 def viz_revision(self):
87 revision = self.model.get_revision()
88 browser = self.model.get_history_browser()
89 utils.fork(browser, revision)