[PATCH] Updated status --short patch with tests (attached)
Keir Mierle
keir at cs.toronto.edu
Thu Nov 23 19:13:47 GMT 2006
(I forgot to attach the bundle the first time, sorry for the list spam)
I've updated the patch I sent the other day [1] to have tests. However, I'm not
sure how to create a test harness to test the display of inner merges. From my
reading of the existing blackbox testcode, status for pending inner merges is
not tested at all. Since I copied and modified the existing status test code,
neither is my status code tested for the case of inner merges (I have 'P.
xxx <at> xxx.com' for pending inner merges, and 'P xxx <at> xxx.com' for
regular
merges.)
I'm not even sure what an inner merge is.
If someone cares to clue me in or point me to a url (neither google nor
bazaar-vcs.org search is giving me anything) I'll remedy the situation.
Thanks,
Keir
[1] http://bundlebuggy.aaronbentley.com/request/%3C20061122084700.GK4741@cs.toronto.edu%3E
-------------- next part --------------
# Bazaar revision bundle v0.8
#
# message:
# Fix spacing error and add tests for status --short command flag.
# committer: Keir Mierle <keir at cs.utoronto.ca>
# date: Thu 2006-11-23 13:56:25.005000114 -0500
=== modified file NEWS
--- NEWS
+++ NEWS
@@ -19,10 +19,18 @@
location for general information, outside of a specific command.
This includes updates for ``bzr help revisionspec`` the first topic
included. (Goffredo Baroncelli, John Arbash Meinel, #42714)
-
+
* WSGI-compatible HTTP smart server. See ``doc/http_smart_server.txt``.
(Andrew Bennetts)
+ * Added ``bzr status --short`` to make status report svn style flags
+ for each file; for example
+ $ bzr status --short
+ A foo
+ A bar
+ D baz
+ ? wooley
+
INTERNALS:
* New -D option given before the command line turns on debugging output
=== modified file bzrlib/builtins.py // last-changed:keir at cs.utoronto.ca-200611
... 22083620-jsqvusdnnxfmmvd3
--- bzrlib/builtins.py
+++ bzrlib/builtins.py
@@ -128,26 +128,29 @@
This reports on versioned and unknown files, reporting them
grouped by state. Possible states are:
- added
+ added / A
Versioned in the working copy but not in the previous revision.
- removed
+ removed / D
Versioned in the previous revision but removed or deleted
in the working copy.
- renamed
+ renamed / R
Path of this file changed from the previous revision;
the text may also have changed. This includes files whose
parent directory was renamed.
- modified
+ modified / M
Text has changed since the previous revision.
- unknown
+ unknown / ?
Not versioned and not matching an ignore pattern.
To see ignored files use 'bzr ignored'. For details in the
changes to file texts, use 'bzr diff'.
+
+ --short gives a one character status flag for each item, similar
+ to the SVN's status command.
If no arguments are specified, the status of the entire working
directory is shown. Otherwise, only the status of the specified
@@ -161,20 +164,21 @@
# TODO: --no-recurse, --recurse options
takes_args = ['file*']
- takes_options = ['show-ids', 'revision']
+ takes_options = ['show-ids', 'revision', 'short']
aliases = ['st', 'stat']
encoding_type = 'replace'
@display_command
- def run(self, show_ids=False, file_list=None, revision=None):
+ def run(self, show_ids=False, file_list=None, revision=None, short=False):
from bzrlib.status import show_tree_status
tree, file_list = tree_files(file_list)
show_tree_status(tree, show_ids=show_ids,
specific_files=file_list, revision=revision,
- to_file=self.outf)
+ to_file=self.outf,
+ short=short)
class cmd_cat_revision(Command):
=== modified file bzrlib/delta.py
--- bzrlib/delta.py
+++ bzrlib/delta.py
@@ -90,9 +90,9 @@
return False
- def show(self, to_file, show_ids=False, show_unchanged=False):
+ def show(self, to_file, show_ids=False, show_unchanged=False, short_status=False):
"""output this delta in status-like form to to_file."""
- def show_list(files):
+ def show_list(files, short_status_letter=''):
for item in files:
path, fid, kind = item[:3]
@@ -105,22 +105,31 @@
path += '*'
if show_ids:
- print >>to_file, ' %-30s %s' % (path, fid)
+ print >>to_file, '%s %-30s %s' % (short_status_letter, path, fid)
else:
- print >>to_file, ' ', path
+ print >>to_file, '%s %s' % (short_status_letter, path)
if self.removed:
- print >>to_file, 'removed:'
- show_list(self.removed)
+ if not short_status:
+ print >>to_file, 'removed:'
+ show_list(self.removed)
+ else:
+ show_list(self.removed, 'D')
if self.added:
- print >>to_file, 'added:'
- show_list(self.added)
+ if not short_status:
+ print >>to_file, 'added:'
+ show_list(self.added)
+ else:
+ show_list(self.added, 'A')
extra_modified = []
if self.renamed:
- print >>to_file, 'renamed:'
+ short_status_letter = 'R'
+ if not short_status:
+ print >>to_file, 'renamed:'
+ short_status_letter = ''
for (oldpath, newpath, fid, kind,
text_modified, meta_modified) in self.renamed:
if text_modified or meta_modified:
@@ -129,18 +138,26 @@
if meta_modified:
newpath += '*'
if show_ids:
- print >>to_file, ' %s => %s %s' % (oldpath, newpath, fid)
+ print >>to_file, '%s %s => %s %s' % (short_status_letter,
+ oldpath, newpath, fid)
else:
- print >>to_file, ' %s => %s' % (oldpath, newpath)
+ print >>to_file, '%s %s => %s' % (short_status_letter,
+ oldpath, newpath)
if self.modified or extra_modified:
- print >>to_file, 'modified:'
- show_list(self.modified)
- show_list(extra_modified)
+ short_status_letter = 'M'
+ if not short_status:
+ print >>to_file, 'modified:'
+ short_status_letter = ''
+ show_list(self.modified, short_status_letter)
+ show_list(extra_modified, short_status_letter)
if show_unchanged and self.unchanged:
- print >>to_file, 'unchanged:'
- show_list(self.unchanged)
+ if not short_status:
+ print >>to_file, 'unchanged:'
+ show_list(self.unchanged)
+ else:
+ show_list(self.unchanged, 'S')
@deprecated_function(zero_nine)
=== modified file bzrlib/status.py
--- bzrlib/status.py
+++ bzrlib/status.py
@@ -76,7 +76,8 @@
show_ids=False,
to_file=None,
show_pending=True,
- revision=None):
+ revision=None,
+ short=False):
"""Display summary of changes.
By default this compares the working tree to a previous revision.
@@ -101,6 +102,7 @@
If not None it must be a RevisionSpec list.
If one revision show compared it with working tree.
If two revisions show status between first and second.
+ :param short: If True, gives short SVN-style status lines
"""
if show_unchanged is not None:
warn("show_status_trees with show_unchanged has been deprecated "
@@ -137,22 +139,29 @@
specific_files=specific_files)
delta.show(to_file,
show_ids=show_ids,
- show_unchanged=show_unchanged)
-
- list_paths('unknown', new.unknowns(), specific_files, to_file)
+ show_unchanged=show_unchanged,
+ short_status=short)
+ short_status_letter = '?'
+ if not short:
+ short_status_letter = ''
+ list_paths('unknown', new.unknowns(), specific_files, to_file,
+ short_status_letter)
conflict_title = False
# show the new conflicts only for now. XXX: get them from the delta.
for conflict in new.conflicts():
- if conflict_title is False:
+ if not short and conflict_title is False:
print >> to_file, "conflicts:"
conflict_title = True
- print >> to_file, " %s" % conflict
+ if not short:
+ print >> to_file, " %s" % conflict
+ else:
+ print >> to_file, "C %s" % conflict
if new_is_working_tree and show_pending:
- show_pending_merges(new, to_file)
+ show_pending_merges(new, to_file, short)
finally:
wt.unlock()
-def show_pending_merges(new, to_file):
+def show_pending_merges(new, to_file, short=False):
"""Write out a display of pending merges in a working tree."""
parents = new.get_parent_ids()
if len(parents) < 2:
@@ -160,7 +169,8 @@
pending = parents[1:]
branch = new.branch
last_revision = parents[0]
- print >>to_file, 'pending merges:'
+ if not short:
+ print >>to_file, 'pending merges:'
if last_revision is not None:
try:
ignore = set(branch.repository.get_ancestry(last_revision))
@@ -178,7 +188,10 @@
from bzrlib.osutils import terminal_width
width = terminal_width()
m_revision = branch.repository.get_revision(merge)
- print >> to_file, ' ', line_log(m_revision, width - 3)
+ if short:
+ print >> to_file, 'P ', line_log(m_revision, width - 3)
+ else:
+ print >> to_file, ' ', line_log(m_revision, width - 3)
inner_merges = branch.repository.get_ancestry(merge)
assert inner_merges[0] is None
inner_merges.pop(0)
@@ -187,17 +200,23 @@
if mmerge in ignore:
continue
mm_revision = branch.repository.get_revision(mmerge)
- print >> to_file, ' ', line_log(mm_revision, width - 5)
+ if short:
+ print >> to_file, 'P. ', line_log(mm_revision, width - 5)
+ else:
+ print >> to_file, ' ', line_log(mm_revision, width - 5)
ignore.add(mmerge)
except errors.NoSuchRevision:
- print >> to_file, ' ', merge
+ if short:
+ print >> to_file, 'P ', merge
+ else:
+ print >> to_file, ' ', merge
-def list_paths(header, paths, specific_files, to_file):
+def list_paths(header, paths, specific_files, to_file, short_status_letter=''):
done_header = False
for path in paths:
if specific_files and not is_inside_any(specific_files, path):
continue
- if not done_header:
+ if not short_status_letter and not done_header:
print >>to_file, '%s:' % header
done_header = True
- print >>to_file, ' ', path
+ print >>to_file, '%s %s' % (short_status_letter, path)
=== modified file bzrlib/tests/blackbox/test_status.py
--- bzrlib/tests/blackbox/test_status.py
+++ bzrlib/tests/blackbox/test_status.py
@@ -41,20 +41,20 @@
class BranchStatus(TestCaseWithTransport):
def assertStatus(self, output_lines, working_tree,
- revision=None):
+ revision=None, short=False):
"""Run status in working_tree and look for output.
:param output_lines: The lines to look for.
:param working_tree: The tree to run status in.
"""
- output_string = self.status_string(working_tree, revision)
+ output_string = self.status_string(working_tree, revision, short)
self.assertEqual(output_lines, output_string.splitlines(True))
- def status_string(self, wt, revision=None):
+ def status_string(self, wt, revision=None, short=False):
# use a real file rather than StringIO because it doesn't handle
# Unicode very well.
tof = codecs.getwriter('utf-8')(TemporaryFile())
- show_tree_status(wt, to_file=tof, revision=revision)
+ show_tree_status(wt, to_file=tof, revision=revision, short=short)
tof.seek(0)
return tof.read().decode('utf-8')
@@ -75,6 +75,11 @@
' hello.c\n',
],
wt)
+ self.assertStatus([
+ '? bye.c\n',
+ '? hello.c\n',
+ ],
+ wt, short=True)
# add a commit to allow showing pending merges.
wt.commit('create a parent to allow testing merge output')
@@ -88,6 +93,12 @@
' pending at pending-0-0\n',
],
wt)
+ self.assertStatus([
+ '? bye.c\n',
+ '? hello.c\n',
+ 'P pending at pending-0-0\n',
+ ],
+ wt, short=True)
def test_branch_status_revisions(self):
"""Tests branch status with revisions"""
@@ -154,16 +165,22 @@
wt.add('test.c')
wt.commit('testing')
+ self.assertStatus([
+ 'unknown:\n',
+ ' bye.c\n',
+ ' dir2\n',
+ ' directory/hello.c\n'
+ ],
+ wt)
+
+ self.assertStatus([
+ '? bye.c\n',
+ '? dir2\n',
+ '? directory/hello.c\n'
+ ],
+ wt, short=True)
+
tof = StringIO()
- show_tree_status(wt, to_file=tof)
- tof.seek(0)
- self.assertEquals(tof.readlines(),
- ['unknown:\n',
- ' bye.c\n',
- ' dir2\n',
- ' directory/hello.c\n'
- ])
-
self.assertRaises(errors.PathsDoNotExist,
show_tree_status,
wt, specific_files=['bye.c','test.c','absent.c'],
@@ -177,12 +194,22 @@
' directory/hello.c\n'
])
tof = StringIO()
+ show_tree_status(wt, specific_files=['directory'], to_file=tof,
+ short=True)
+ tof.seek(0)
+ self.assertEquals(tof.readlines(), ['? directory/hello.c\n'])
+
+ tof = StringIO()
show_tree_status(wt, specific_files=['dir2'], to_file=tof)
tof.seek(0)
self.assertEquals(tof.readlines(),
['unknown:\n',
' dir2\n'
])
+ tof = StringIO()
+ show_tree_status(wt, specific_files=['dir2'], to_file=tof, short=True)
+ tof.seek(0)
+ self.assertEquals(tof.readlines(), ['? dir2\n'])
def test_status_nonexistent_file(self):
# files that don't exist in either the basis tree or working tree
@@ -226,22 +253,36 @@
def test_status(self):
self.run_bzr("init")
+
self.build_tree(['hello.txt'])
result = self.run_bzr("status")[0]
self.assert_("unknown:\n hello.txt\n" in result, result)
+ result = self.run_bzr("status","--short")[0]
+ self.assert_("? hello.txt\n" in result, result)
+
self.run_bzr("add", "hello.txt")
result = self.run_bzr("status")[0]
self.assert_("added:\n hello.txt\n" in result, result)
+ result = self.run_bzr("status","--short")[0]
+ self.assert_("A hello.txt\n" in result, result)
+
self.run_bzr("commit", "-m", "added")
result = self.run_bzr("status", "-r", "0..1")[0]
self.assert_("added:\n hello.txt\n" in result, result)
+ result = self.run_bzr("status", "--short", "-r", "0..1")[0]
+ self.assert_("A hello.txt\n" in result, result)
+
self.build_tree(['world.txt'])
result = self.run_bzr("status", "-r", "0")[0]
self.assert_("added:\n hello.txt\n" \
"unknown:\n world.txt\n" in result, result)
-
result2 = self.run_bzr("status", "-r", "0..")[0]
self.assertEquals(result2, result)
+ result = self.run_bzr("status", "--short", "-r", "0")[0]
+ self.assert_("A hello.txt\n" \
+ "? world.txt\n" in result, result)
+ result2 = self.run_bzr("status", "--short", "-r", "0..")[0]
+ self.assertEquals(result2, result)
class TestStatusEncodings(TestCaseWithTransport):
=== modified directory // last-changed:keir at cs.utoronto.ca-20061123185625-ndto
... 53ylcb8zo1y6
# revision id: keir at cs.utoronto.ca-20061123185625-ndto53ylcb8zo1y6
# sha1: 3d76579077cead9657b8790dab201a78e30805f8
# inventory sha1: e7b22fd304feef5ca5f8f74f94c0fd3b82cffe52
# parent ids:
# keir at cs.utoronto.ca-20061122083620-jsqvusdnnxfmmvd3
# base id: pqm at pqm.ubuntu.com-20061121123418-3d0b2fb05cbe6b43
# properties:
# branch-nick: bzr.shortstatus
# message:
# Add a --short flag to status to get svn-style status
# committer: Keir Mierle <keir at cs.utoronto.ca>
# date: Wed 2006-11-22 03:36:20.407000065 -0500
=== modified file bzrlib/builtins.py // encoding:base64
LS0tIGJ6cmxpYi9idWlsdGlucy5weQorKysgYnpybGliL2J1aWx0aW5zLnB5CkBAIC0xMjgsMjYg
KzEyOCwyOSBAQAogICAgIFRoaXMgcmVwb3J0cyBvbiB2ZXJzaW9uZWQgYW5kIHVua25vd24gZmls
ZXMsIHJlcG9ydGluZyB0aGVtCiAgICAgZ3JvdXBlZCBieSBzdGF0ZS4gIFBvc3NpYmxlIHN0YXRl
cyBhcmU6CiAKLSAgICBhZGRlZAorICAgIGFkZGVkIC8gQQogICAgICAgICBWZXJzaW9uZWQgaW4g
dGhlIHdvcmtpbmcgY29weSBidXQgbm90IGluIHRoZSBwcmV2aW91cyByZXZpc2lvbi4KIAotICAg
IHJlbW92ZWQKKyAgICByZW1vdmVkIC8gRAogICAgICAgICBWZXJzaW9uZWQgaW4gdGhlIHByZXZp
b3VzIHJldmlzaW9uIGJ1dCByZW1vdmVkIG9yIGRlbGV0ZWQKICAgICAgICAgaW4gdGhlIHdvcmtp
bmcgY29weS4KIAotICAgIHJlbmFtZWQKKyAgICByZW5hbWVkIC8gUgogICAgICAgICBQYXRoIG9m
IHRoaXMgZmlsZSBjaGFuZ2VkIGZyb20gdGhlIHByZXZpb3VzIHJldmlzaW9uOwogICAgICAgICB0
aGUgdGV4dCBtYXkgYWxzbyBoYXZlIGNoYW5nZWQuICBUaGlzIGluY2x1ZGVzIGZpbGVzIHdob3Nl
CiAgICAgICAgIHBhcmVudCBkaXJlY3Rvcnkgd2FzIHJlbmFtZWQuCiAKLSAgICBtb2RpZmllZAor
ICAgIG1vZGlmaWVkIC8gTQogICAgICAgICBUZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2
aW91cyByZXZpc2lvbi4KIAotICAgIHVua25vd24KKyAgICB1bmtub3duIC8gPwogICAgICAgICBO
b3QgdmVyc2lvbmVkIGFuZCBub3QgbWF0Y2hpbmcgYW4gaWdub3JlIHBhdHRlcm4uCiAKICAgICBU
byBzZWUgaWdub3JlZCBmaWxlcyB1c2UgJ2J6ciBpZ25vcmVkJy4gIEZvciBkZXRhaWxzIGluIHRo
ZQogICAgIGNoYW5nZXMgdG8gZmlsZSB0ZXh0cywgdXNlICdienIgZGlmZicuCisgICAgCisgICAg
LS1zaG9ydCBnaXZlcyBhIG9uZSBjaGFyYWN0ZXIgc3RhdHVzIGZsYWcgZm9yIGVhY2ggaXRlbSwg
c2ltaWxhcgorICAgIHRvIHRoZSBTVk4ncyBzdGF0dXMgY29tbWFuZC4KIAogICAgIElmIG5vIGFy
Z3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgc3RhdHVzIG9mIHRoZSBlbnRpcmUgd29ya2luZwog
ICAgIGRpcmVjdG9yeSBpcyBzaG93bi4gIE90aGVyd2lzZSwgb25seSB0aGUgc3RhdHVzIG9mIHRo
ZSBzcGVjaWZpZWQKQEAgLTE2MSwyMCArMTY0LDIxIEBACiAgICAgIyBUT0RPOiAtLW5vLXJlY3Vy
c2UsIC0tcmVjdXJzZSBvcHRpb25zCiAgICAgCiAgICAgdGFrZXNfYXJncyA9IFsnZmlsZSonXQot
ICAgIHRha2VzX29wdGlvbnMgPSBbJ3Nob3ctaWRzJywgJ3JldmlzaW9uJ10KKyAgICB0YWtlc19v
cHRpb25zID0gWydzaG93LWlkcycsICdyZXZpc2lvbicsICdzaG9ydCddCiAgICAgYWxpYXNlcyA9
IFsnc3QnLCAnc3RhdCddCiAKICAgICBlbmNvZGluZ190eXBlID0gJ3JlcGxhY2UnCiAgICAgCiAg
ICAgQGRpc3BsYXlfY29tbWFuZAotICAgIGRlZiBydW4oc2VsZiwgc2hvd19pZHM9RmFsc2UsIGZp
bGVfbGlzdD1Ob25lLCByZXZpc2lvbj1Ob25lKToKKyAgICBkZWYgcnVuKHNlbGYsIHNob3dfaWRz
PUZhbHNlLCBmaWxlX2xpc3Q9Tm9uZSwgcmV2aXNpb249Tm9uZSwgc2hvcnQ9RmFsc2UpOgogICAg
ICAgICBmcm9tIGJ6cmxpYi5zdGF0dXMgaW1wb3J0IHNob3dfdHJlZV9zdGF0dXMKIAogICAgICAg
ICB0cmVlLCBmaWxlX2xpc3QgPSB0cmVlX2ZpbGVzKGZpbGVfbGlzdCkKICAgICAgICAgICAgIAog
ICAgICAgICBzaG93X3RyZWVfc3RhdHVzKHRyZWUsIHNob3dfaWRzPXNob3dfaWRzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIHNwZWNpZmljX2ZpbGVzPWZpbGVfbGlzdCwgcmV2aXNpb249cmV2
aXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgdG9fZmlsZT1zZWxmLm91dGYpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9fZmlsZT1zZWxmLm91dGYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgc2hvcnQ9c2hvcnQpCiAKIAogY2xhc3MgY21kX2NhdF9yZXZpc2lvbihDb21tYW5k
KToKCg==
=== modified file bzrlib/delta.py // encoding:base64
LS0tIGJ6cmxpYi9kZWx0YS5weQorKysgYnpybGliL2RlbHRhLnB5CkBAIC05MCw5ICs5MCw5IEBA
CiAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgCiAKLSAgICBkZWYgc2hvdyhzZWxm
LCB0b19maWxlLCBzaG93X2lkcz1GYWxzZSwgc2hvd191bmNoYW5nZWQ9RmFsc2UpOgorICAgIGRl
ZiBzaG93KHNlbGYsIHRvX2ZpbGUsIHNob3dfaWRzPUZhbHNlLCBzaG93X3VuY2hhbmdlZD1GYWxz
ZSwgc2hvcnRfc3RhdHVzPUZhbHNlKToKICAgICAgICAgIiIib3V0cHV0IHRoaXMgZGVsdGEgaW4g
c3RhdHVzLWxpa2UgZm9ybSB0byB0b19maWxlLiIiIgotICAgICAgICBkZWYgc2hvd19saXN0KGZp
bGVzKToKKyAgICAgICAgZGVmIHNob3dfbGlzdChmaWxlcywgc2hvcnRfc3RhdHVzX2xldHRlcj0n
Jyk6CiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBmaWxlczoKICAgICAgICAgICAgICAgICBwYXRo
LCBmaWQsIGtpbmQgPSBpdGVtWzozXQogCkBAIC0xMDcsMjAgKzEwNywyOSBAQAogICAgICAgICAg
ICAgICAgIGlmIHNob3dfaWRzOgogICAgICAgICAgICAgICAgICAgICBwcmludCA+PnRvX2ZpbGUs
ICcgICUtMzBzICVzJyAlIChwYXRoLCBmaWQpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgcHJpbnQgPj50b19maWxlLCAnICcsIHBhdGgKKyAgICAgICAgICAgICAg
ICAgICAgcHJpbnQgPj50b19maWxlLCAnJXMgJXMnICUgKHNob3J0X3N0YXR1c19sZXR0ZXIsIHBh
dGgpCiAgICAgICAgICAgICAKICAgICAgICAgaWYgc2VsZi5yZW1vdmVkOgotICAgICAgICAgICAg
cHJpbnQgPj50b19maWxlLCAncmVtb3ZlZDonCi0gICAgICAgICAgICBzaG93X2xpc3Qoc2VsZi5y
ZW1vdmVkKQorICAgICAgICAgICAgaWYgbm90IHNob3J0X3N0YXR1czoKKyAgICAgICAgICAgICAg
ICBwcmludCA+PnRvX2ZpbGUsICdyZW1vdmVkOicKKyAgICAgICAgICAgICAgICBzaG93X2xpc3Qo
c2VsZi5yZW1vdmVkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzaG93X2xp
c3Qoc2VsZi5yZW1vdmVkLCAnRCcpCiAgICAgICAgICAgICAgICAgCiAgICAgICAgIGlmIHNlbGYu
YWRkZWQ6Ci0gICAgICAgICAgICBwcmludCA+PnRvX2ZpbGUsICdhZGRlZDonCi0gICAgICAgICAg
ICBzaG93X2xpc3Qoc2VsZi5hZGRlZCkKKyAgICAgICAgICAgIGlmIG5vdCBzaG9ydF9zdGF0dXM6
CisgICAgICAgICAgICAgICAgcHJpbnQgPj50b19maWxlLCAnYWRkZWQ6JworICAgICAgICAgICAg
ICAgIHNob3dfbGlzdChzZWxmLmFkZGVkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBzaG93X2xpc3Qoc2VsZi5hZGRlZCwgJ0EnKQogCiAgICAgICAgIGV4dHJhX21vZGlmaWVk
ID0gW10KIAogICAgICAgICBpZiBzZWxmLnJlbmFtZWQ6Ci0gICAgICAgICAgICBwcmludCA+PnRv
X2ZpbGUsICdyZW5hbWVkOicKKyAgICAgICAgICAgIHNob3J0X3N0YXR1c19sZXR0ZXIgPSAnUicK
KyAgICAgICAgICAgIGlmIG5vdCBzaG9ydF9zdGF0dXM6CisgICAgICAgICAgICAgICAgcHJpbnQg
Pj50b19maWxlLCAncmVuYW1lZDonCisgICAgICAgICAgICAgICAgc2hvcnRfc3RhdHVzX2xldHRl
ciA9ICcnCiAgICAgICAgICAgICBmb3IgKG9sZHBhdGgsIG5ld3BhdGgsIGZpZCwga2luZCwKICAg
ICAgICAgICAgICAgICAgdGV4dF9tb2RpZmllZCwgbWV0YV9tb2RpZmllZCkgaW4gc2VsZi5yZW5h
bWVkOgogICAgICAgICAgICAgICAgIGlmIHRleHRfbW9kaWZpZWQgb3IgbWV0YV9tb2RpZmllZDoK
QEAgLTEyOSwxOCArMTM4LDI2IEBACiAgICAgICAgICAgICAgICAgaWYgbWV0YV9tb2RpZmllZDoK
ICAgICAgICAgICAgICAgICAgICAgbmV3cGF0aCArPSAnKicKICAgICAgICAgICAgICAgICBpZiBz
aG93X2lkczoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj50b19maWxlLCAnICAlcyA9PiAl
cyAlcycgJSAob2xkcGF0aCwgbmV3cGF0aCwgZmlkKQorICAgICAgICAgICAgICAgICAgICBwcmlu
dCA+PnRvX2ZpbGUsICclcyAgJXMgPT4gJXMgJXMnICUgKHNob3J0X3N0YXR1c19sZXR0ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2xkcGF0aCwgbmV3cGF0aCwgZmlkKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIHByaW50ID4+dG9fZmlsZSwgJyAgJXMgPT4gJXMnICUgKG9sZHBhdGgsIG5ld3Bh
dGgpCisgICAgICAgICAgICAgICAgICAgIHByaW50ID4+dG9fZmlsZSwgJyVzICAlcyA9PiAlcycg
JSAoc2hvcnRfc3RhdHVzX2xldHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvbGRwYXRoLCBuZXdwYXRoKQogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgaWYgc2VsZi5tb2RpZmllZCBvciBleHRyYV9tb2RpZmllZDoKLSAgICAg
ICAgICAgIHByaW50ID4+dG9fZmlsZSwgJ21vZGlmaWVkOicKLSAgICAgICAgICAgIHNob3dfbGlz
dChzZWxmLm1vZGlmaWVkKQotICAgICAgICAgICAgc2hvd19saXN0KGV4dHJhX21vZGlmaWVkKQor
ICAgICAgICAgICAgc2hvcnRfc3RhdHVzX2xldHRlciA9ICdNJworICAgICAgICAgICAgaWYgbm90
IHNob3J0X3N0YXR1czoKKyAgICAgICAgICAgICAgICBwcmludCA+PnRvX2ZpbGUsICdtb2RpZmll
ZDonCisgICAgICAgICAgICAgICAgc2hvcnRfc3RhdHVzX2xldHRlciA9ICcnCisgICAgICAgICAg
ICBzaG93X2xpc3Qoc2VsZi5tb2RpZmllZCwgc2hvcnRfc3RhdHVzX2xldHRlcikKKyAgICAgICAg
ICAgIHNob3dfbGlzdChleHRyYV9tb2RpZmllZCwgc2hvcnRfc3RhdHVzX2xldHRlcikKICAgICAg
ICAgICAgIAogICAgICAgICBpZiBzaG93X3VuY2hhbmdlZCBhbmQgc2VsZi51bmNoYW5nZWQ6Ci0g
ICAgICAgICAgICBwcmludCA+PnRvX2ZpbGUsICd1bmNoYW5nZWQ6JwotICAgICAgICAgICAgc2hv
d19saXN0KHNlbGYudW5jaGFuZ2VkKQorICAgICAgICAgICAgaWYgbm90IHNob3J0X3N0YXR1czoK
KyAgICAgICAgICAgICAgICBwcmludCA+PnRvX2ZpbGUsICd1bmNoYW5nZWQ6JworICAgICAgICAg
ICAgICAgIHNob3dfbGlzdChzZWxmLnVuY2hhbmdlZCkKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgc2hvd19saXN0KHNlbGYudW5jaGFuZ2VkLCAnUycpCiAKIAogQGRlcHJlY2F0
ZWRfZnVuY3Rpb24oemVyb19uaW5lKQoK
=== modified file bzrlib/status.py // encoding:base64
LS0tIGJ6cmxpYi9zdGF0dXMucHkKKysrIGJ6cmxpYi9zdGF0dXMucHkKQEAgLTc2LDcgKzc2LDgg
QEAKICAgICAgICAgICAgICAgICAgICAgIHNob3dfaWRzPUZhbHNlLAogICAgICAgICAgICAgICAg
ICAgICAgdG9fZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgc2hvd19wZW5kaW5nPVRy
dWUsCi0gICAgICAgICAgICAgICAgICAgICByZXZpc2lvbj1Ob25lKToKKyAgICAgICAgICAgICAg
ICAgICAgIHJldmlzaW9uPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICBzaG9ydD1GYWxzZSk6
CiAgICAgIiIiRGlzcGxheSBzdW1tYXJ5IG9mIGNoYW5nZXMuCiAKICAgICBCeSBkZWZhdWx0IHRo
aXMgY29tcGFyZXMgdGhlIHdvcmtpbmcgdHJlZSB0byBhIHByZXZpb3VzIHJldmlzaW9uLiAKQEAg
LTEwMSw2ICsxMDIsNyBAQAogICAgICAgICBJZiBub3QgTm9uZSBpdCBtdXN0IGJlIGEgUmV2aXNp
b25TcGVjIGxpc3QuCiAgICAgICAgIElmIG9uZSByZXZpc2lvbiBzaG93IGNvbXBhcmVkIGl0IHdp
dGggd29ya2luZyB0cmVlLgogICAgICAgICBJZiB0d28gcmV2aXNpb25zIHNob3cgc3RhdHVzIGJl
dHdlZW4gZmlyc3QgYW5kIHNlY29uZC4KKyAgICA6cGFyYW0gc2hvcnQ6IElmIFRydWUsIGdpdmVz
IHNob3J0IFNWTi1zdHlsZSBzdGF0dXMgbGluZXMKICAgICAiIiIKICAgICBpZiBzaG93X3VuY2hh
bmdlZCBpcyBub3QgTm9uZToKICAgICAgICAgd2Fybigic2hvd19zdGF0dXNfdHJlZXMgd2l0aCBz
aG93X3VuY2hhbmdlZCBoYXMgYmVlbiBkZXByZWNhdGVkICIKQEAgLTEzNywxNiArMTM5LDIzIEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY19maWxlcz1zcGVjaWZpY19m
aWxlcykKICAgICAgICAgZGVsdGEuc2hvdyh0b19maWxlLAogICAgICAgICAgICAgICAgICAgIHNo
b3dfaWRzPXNob3dfaWRzLAotICAgICAgICAgICAgICAgICAgIHNob3dfdW5jaGFuZ2VkPXNob3df
dW5jaGFuZ2VkKQotCi0gICAgICAgIGxpc3RfcGF0aHMoJ3Vua25vd24nLCBuZXcudW5rbm93bnMo
KSwgc3BlY2lmaWNfZmlsZXMsIHRvX2ZpbGUpCisgICAgICAgICAgICAgICAgICAgc2hvd191bmNo
YW5nZWQ9c2hvd191bmNoYW5nZWQsCisgICAgICAgICAgICAgICAgICAgc2hvcnRfc3RhdHVzPXNo
b3J0KQorICAgICAgICBzaG9ydF9zdGF0dXNfbGV0dGVyID0gJz8nCisgICAgICAgIGlmIG5vdCBz
aG9ydDoKKyAgICAgICAgICAgIHNob3J0X3N0YXR1c19sZXR0ZXIgPSAnJworICAgICAgICBsaXN0
X3BhdGhzKCd1bmtub3duJywgbmV3LnVua25vd25zKCksIHNwZWNpZmljX2ZpbGVzLCB0b19maWxl
LAorICAgICAgICAgICAgICAgICAgIHNob3J0X3N0YXR1c19sZXR0ZXIpCiAgICAgICAgIGNvbmZs
aWN0X3RpdGxlID0gRmFsc2UKICAgICAgICAgIyBzaG93IHRoZSBuZXcgY29uZmxpY3RzIG9ubHkg
Zm9yIG5vdy4gWFhYOiBnZXQgdGhlbSBmcm9tIHRoZSBkZWx0YS4KICAgICAgICAgZm9yIGNvbmZs
aWN0IGluIG5ldy5jb25mbGljdHMoKToKLSAgICAgICAgICAgIGlmIGNvbmZsaWN0X3RpdGxlIGlz
IEZhbHNlOgorICAgICAgICAgICAgaWYgbm90IHNob3J0IGFuZCBjb25mbGljdF90aXRsZSBpcyBG
YWxzZToKICAgICAgICAgICAgICAgICBwcmludCA+PiB0b19maWxlLCAiY29uZmxpY3RzOiIKICAg
ICAgICAgICAgICAgICBjb25mbGljdF90aXRsZSA9IFRydWUKLSAgICAgICAgICAgIHByaW50ID4+
IHRvX2ZpbGUsICIgICVzIiAlIGNvbmZsaWN0CisgICAgICAgICAgICBpZiBub3Qgc2hvcnQ6Cisg
ICAgICAgICAgICAgICAgcHJpbnQgPj4gdG9fZmlsZSwgIiAgJXMiICUgY29uZmxpY3QKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgPj4gdG9fZmlsZSwgIkMgICVzIiAl
IGNvbmZsaWN0CiAgICAgICAgIGlmIG5ld19pc193b3JraW5nX3RyZWUgYW5kIHNob3dfcGVuZGlu
ZzoKICAgICAgICAgICAgIHNob3dfcGVuZGluZ19tZXJnZXMobmV3LCB0b19maWxlKQogICAgIGZp
bmFsbHk6CkBAIC0xOTIsMTIgKzIwMSwxMiBAQAogICAgICAgICBleGNlcHQgZXJyb3JzLk5vU3Vj
aFJldmlzaW9uOgogICAgICAgICAgICAgcHJpbnQgPj4gdG9fZmlsZSwgJyAnLCBtZXJnZQogICAg
ICAgICAKLWRlZiBsaXN0X3BhdGhzKGhlYWRlciwgcGF0aHMsIHNwZWNpZmljX2ZpbGVzLCB0b19m
aWxlKToKK2RlZiBsaXN0X3BhdGhzKGhlYWRlciwgcGF0aHMsIHNwZWNpZmljX2ZpbGVzLCB0b19m
aWxlLCBzaG9ydF9zdGF0dXNfbGV0dGVyPScnKToKICAgICBkb25lX2hlYWRlciA9IEZhbHNlCiAg
ICAgZm9yIHBhdGggaW4gcGF0aHM6CiAgICAgICAgIGlmIHNwZWNpZmljX2ZpbGVzIGFuZCBub3Qg
aXNfaW5zaWRlX2FueShzcGVjaWZpY19maWxlcywgcGF0aCk6CiAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICBpZiBub3QgZG9uZV9oZWFkZXI6CisgICAgICAgIGlmIG5vdCBzaG9ydF9zdGF0
dXNfbGV0dGVyIGFuZCBub3QgZG9uZV9oZWFkZXI6CiAgICAgICAgICAgICBwcmludCA+PnRvX2Zp
bGUsICclczonICUgaGVhZGVyCiAgICAgICAgICAgICBkb25lX2hlYWRlciA9IFRydWUKLSAgICAg
ICAgcHJpbnQgPj50b19maWxlLCAnICcsIHBhdGgKKyAgICAgICAgcHJpbnQgPj50b19maWxlLCAn
JXMgJXMnICUgKHNob3J0X3N0YXR1c19sZXR0ZXIsIHBhdGgpCgo=
=== modified directory // last-changed:keir at cs.utoronto.ca-20061122083620-jsqv
... usdnnxfmmvd3
# revision id: keir at cs.utoronto.ca-20061122083620-jsqvusdnnxfmmvd3
# sha1: d93f0ef207317215ab88b0ed56cec59f3c2952b7
# inventory sha1: e9ad112b70c92e3219c64903f377301381c3ff4e
# parent ids:
# pqm at pqm.ubuntu.com-20061121123418-3d0b2fb05cbe6b43
# properties:
# branch-nick: bzr.shortstatus
More information about the bazaar
mailing list