[MERGE][Bug #52479] Message at the end of commit for bound branches
Daniel Watkins
D.M.Watkins at warwick.ac.uk
Wed Sep 5 00:26:24 BST 2007
On Tue, 2007-09-04 at 13:18 +1000, Martin Pool wrote:
> > I wouldn't veto it, but it seems like a half-measure to me. Why show
> > the location for bound commits, but not regular commits, or commits in
> > lightweight checkouts?
> >
> > And why not show it earlier, so the user can abort the commit if it's
> > going to the wrong place?
>
> That makes sense to me. Daniel, what do you think?
It makes sense to me.
In the attached I've added a started hook to be called when the initial
message should be sent. I'm not 100% sure that this is the right way to
do it but need some input regardless.
--
Daniel Watkins (Odd_Bloke) <D.M.Watkins at warwick.ac.uk>
University of Warwick Christian Focus President
University of Warwick Computing Society WUGLUG Liaison Officer
-------------- next part --------------
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: d.m.watkins at warwick.ac.uk-20070904232551-\
# atbaa0o3wlb8utrp
# target_branch: file:///home/daniel/devel/bzr/bzr.dev/
# testament_sha1: 5d9291125efbda9919818357144292d24f8a2df1
# timestamp: 2007-09-05 00:26:04 +0100
# base_revision_id: pqm at pqm.ubuntu.com-20070904035759-iv4xl6d7ez69txba
#
# Begin patch
=== modified file 'NEWS'
--- NEWS 2007-09-04 01:20:26 +0000
+++ NEWS 2007-09-04 23:25:51 +0000
@@ -117,6 +117,9 @@
* When two plugins conflict, the source of both the losing and now the
winning definition is shown. (Konstantin Mikhaylov, #5454)
+ * When committing to a branch, the location being committed to is
+ displayed. (Daniel Watkins, #52479)
+
IMPROVEMENTS:
* Add the option "--show-diff" to the commit command in order to display
=== modified file 'bzrlib/commit.py'
--- bzrlib/commit.py 2007-09-02 05:37:08 +0000
+++ bzrlib/commit.py 2007-09-04 23:23:25 +0000
@@ -86,6 +86,9 @@
class NullCommitReporter(object):
"""I report on progress of a commit."""
+ def started(self, revno, revid, location=None):
+ pass
+
def snapshot_change(self, change, path):
pass
@@ -121,6 +124,13 @@
return
self._note("%s %s", change, path)
+ def started(self, revno, rev_id, location=None):
+ if location is not None:
+ location = ' to "' + location + '"'
+ else:
+ location = ''
+ self._note('Committing revision %d%s.', revno, location)
+
def completed(self, revno, rev_id):
self._note('Committed revision %d.', revno)
@@ -290,7 +300,7 @@
self._gather_parents()
if len(self.parents) > 1 and self.specific_files:
raise errors.CannotCommitSelectedFileMerge(self.specific_files)
-
+
# Collect the changes
self._set_progress_stage("Collecting changes",
entries_title="Directory")
@@ -298,6 +308,15 @@
self.config, timestamp, timezone, committer, revprops, rev_id)
try:
+ # find the location being committed to
+ if self.bound_branch:
+ master_location = self.master_branch.base
+ else:
+ master_location = self.branch.base
+
+ # report the start of the commit
+ self.reporter.started(new_revno, self.rev_id, master_location)
+
self._update_builder_with_changes()
self._check_pointless()
=== modified file 'bzrlib/tests/blackbox/test_commit.py'
--- bzrlib/tests/blackbox/test_commit.py 2007-09-04 03:57:59 +0000
+++ bzrlib/tests/blackbox/test_commit.py 2007-09-04 23:23:25 +0000
@@ -35,7 +35,7 @@
self.build_tree(['hello.txt'])
out,err = self.run_bzr('commit -m empty', retcode=3)
self.assertEqual('', out)
- self.assertStartsWith(err, 'bzr: ERROR: no changes to commit.'
+ self.assertContainsRe(err, 'bzr: ERROR: no changes to commit\.'
' use --unchanged to commit anyhow\n')
def test_commit_success(self):
@@ -75,9 +75,9 @@
tree.add("hello.txt")
out,err = self.run_bzr('commit -m added')
self.assertEqual('', out)
- self.assertEqual('added hello.txt\n'
- 'Committed revision 1.\n',
- err)
+ self.assertContainsRe(err, '^Committing revision 1 to ".*"\.\n'
+ 'added hello.txt\n'
+ 'Committed revision 1.\n$',)
def prepare_simple_history(self):
"""Prepare and return a working tree with one commit of one file"""
@@ -94,9 +94,9 @@
self.build_tree_contents([('hello.txt', 'new contents')])
out, err = self.run_bzr('commit -m modified')
self.assertEqual('', out)
- self.assertEqual('modified hello.txt\n'
- 'Committed revision 2.\n',
- err)
+ self.assertContainsRe(err, '^Committing revision 2 to ".*"\.\n'
+ 'modified hello\.txt\n'
+ 'Committed revision 2\.\n$')
def test_verbose_commit_renamed(self):
# Verbose commit of renamed file should say so
@@ -104,9 +104,9 @@
wt.rename_one('hello.txt', 'gutentag.txt')
out, err = self.run_bzr('commit -m renamed')
self.assertEqual('', out)
- self.assertEqual('renamed hello.txt => gutentag.txt\n'
- 'Committed revision 2.\n',
- err)
+ self.assertContainsRe(err, '^Committing revision 2 to ".*"\.\n'
+ 'renamed hello\.txt => gutentag\.txt\n'
+ 'Committed revision 2\.$\n')
def test_verbose_commit_moved(self):
# Verbose commit of file moved to new directory should say so
@@ -116,10 +116,10 @@
wt.rename_one('hello.txt', 'subdir/hello.txt')
out, err = self.run_bzr('commit -m renamed')
self.assertEqual('', out)
- self.assertEqualDiff('added subdir\n'
- 'renamed hello.txt => subdir/hello.txt\n'
- 'Committed revision 2.\n',
- err)
+ self.assertContainsRe(err, '^Committing revision 2 to ".*"\.\n'
+ 'added subdir\n'
+ 'renamed hello\.txt => subdir/hello\.txt\n'
+ 'Committed revision 2\.\n$')
def test_verbose_commit_with_unknown(self):
"""Unknown files should not be listed by default in verbose output"""
@@ -129,9 +129,9 @@
wt.add(['hello.txt'])
out,err = self.run_bzr('commit -m added')
self.assertEqual('', out)
- self.assertEqual('added hello.txt\n'
- 'Committed revision 1.\n',
- err)
+ self.assertContainsRe(err, '^Committing revision 1 to ".*"\.\n'
+ 'added hello\.txt\n'
+ 'Committed revision 1\.\n$')
def test_verbose_commit_with_unchanged(self):
"""Unchanged files should not be listed by default in verbose output"""
@@ -142,9 +142,22 @@
tree.add("hello.txt")
out,err = self.run_bzr('commit -m added')
self.assertEqual('', out)
- self.assertEqual('added hello.txt\n'
- 'Committed revision 2.\n',
- err)
+ self.assertContainsRe(err, '^Committing revision 2 to ".*"\.\n'
+ 'added hello\.txt\n'
+ 'Committed revision 2\.$\n')
+
+ def test_verbose_bound_commit_includes_master_location(self):
+ """Location of master is displayed when committing to bound branch"""
+ a_tree = self.make_branch_and_tree('a')
+ self.build_tree(['a/b'])
+ a_tree.add('b')
+ a_tree.commit(message='Initial message')
+
+ b_tree = a_tree.branch.create_checkout('b')
+ expected = self.get_url('a') + '/'
+ out, err = self.run_bzr('commit -m blah --unchanged', working_dir='b')
+ self.assertEqual(err, 'Committing revision 2 to "%s".\n'
+ 'Committed revision 2.\n' % expected)
def test_commit_merge_reports_all_modified_files(self):
# the commit command should show all the files that are shown by
@@ -198,9 +211,9 @@
this_tree.merge_from_branch(other_tree.branch)
os.chdir('this')
out,err = self.run_bzr('commit -m added')
- os.chdir('..')
self.assertEqual('', out)
self.assertEqualDiff(
+ 'Committing revision 2 to "%s".\n'
'modified filetomodify\n'
'added newdir\n'
'added newfile\n'
@@ -210,7 +223,7 @@
'renamed filetorename => renamedfile\n'
'deleted dirtoremove\n'
'deleted filetoremove\n'
- 'Committed revision 2.\n',
+ 'Committed revision 2.\n' % (this_tree.branch.base, ),
err)
def test_empty_commit_message(self):
@@ -367,7 +380,9 @@
output, err = self.run_bzr(
'commit -m hello --fixes=lp:23452 tree/hello.txt')
self.assertEqual('', output)
- self.assertEqual('added hello.txt\nCommitted revision 1.\n', err)
+ self.assertContainsRe(err, 'Committing revision 1 to ".*"\.\n'
+ 'added hello\.txt\n'
+ 'Committed revision 1\.\n')
def test_no_bugs_no_properties(self):
"""If no bugs are fixed, the bugs property is not set.
# Begin bundle
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
ydIn4Wo8ockcNkbo//F3JFOFCQrdTVAw
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20070905/0f088aab/attachment-0001.pgp
More information about the bazaar
mailing list