<br><br><div><span class="gmail_quote">On 4/12/07, <b class="gmail_sendername">John Arbash Meinel</b> <<a href="mailto:john@arbash-meinel.com">john@arbash-meinel.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
John Arbash Meinel has voted +0.<br>Status is now: Waiting<br>Comment:<br>This has come quite a ways, and I would really like to see it in 0.16.</blockquote><div><br>me too <br></div><br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
If you need some help, just ask, and I can try to do some of the things<br>I mention here</blockquote><div><br>I'll try my best to get it done..<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I think this should have a NOTES WHEN UPGRADING: section in NEWS.<br>Because it means that 'bzr rm' will change how it works.<br><br>I know there have been mention of people who are already using 'bzr rm'<br>
and expecting it to leave the file alone (James Troup mentioned this for<br>versioning files in /etc). So we need to make sure to convey this change<br>well. (We aren't destroying the data, you can 'bzr revert' or 'bzr rm
<br>--keep', but people need to know about it).</blockquote><div><br>Should I just put the whole thing in a the NOTES WHEN UPGRADING section ?<br></div><br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I don't quite understand this change:<br>- only 'added' files will be removed. If you specify both, then new<br>files<br>- in the specified directories will be removed. If the directories<br>are<br>+ only 'added' files will be removed. If you specify both, then new
<br>+ files in the specified directories will be removed. If the<br>directories are<br><br>It seems you re-wrapped the line, only to cause the next line to become<br>*too* long.</blockquote><div><br>[DONE]<br> </div><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I'm not sure about making these take multiple paths:<br> def failUnlessExists(self, path):
<br>- """Fail unless path, which may be abs or relative, exists."""<br>- self.failUnless(osutils.lexists(path),path+" does not exist")<br>+ """Fail unless path or paths, which may be abs or relative,
<br>exist."""<br>+ if not isinstance(path, basestring):<br>+ for p in path:<br>+ self.failUnlessExists(p)<br>+ else:<br>+ self.failUnless(osutils.lexists(path),path+" does not
<br>exist")<br><br>I think we generally avoid apis that use 'isinstance'. I'm probably<br>about 75% okay on this, though. Since it is meant as a way to make<br>writing tests easier, and as long as the tests are easier to write and
<br>easier to understand, it seems good.</blockquote><div><br>I'm leaving as is, unless someone is less than 50% ok with it.. :) </div><br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I prefer 'self.run_bzr' to 'self.runbzr', but that is more of a<br>guideline than a requirement.</blockquote><div><br>ok I'll convert to run_bzr_captured, <br>but 'self.runbzr' seemed more suited to lazy people like me...
<br>[DONE]<br><br>* these tests follow this pattern:<br> (out, err) = self.run_bzr_captured(['remove', '--keep', 'a'])<br> self.assertEquals(out.strip(), "")<br> self.assertEquals
(err.strip(), "removed a")<br>which we might want to do better:<br> self.run_bzr_captured(['remove', '--keep', 'a'], out_regex='', err_regex="removed a")<br>also can't I make it like runbzr, to auto expand a sting?
<br> (your probably gona say no as you don't like isinstance magic :( <br><br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
PEP8 says that:<br>(out,err) = self.runbzr(<br>should be<br>(out, err) = self.</blockquote><div><br>[DONE]<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
You added a test class to test_workingtree.py, but it should probably be<br>a test in workingtree_implementations/test_remove.py<br><br>+<br>+class TestRemove(TestCaseWithTransport):<br>+ """Tests WorkingTree.remove
"""<br><br>It needs to be written slightly differently, first by inheriting from<br>TestCaseWithWorkingTree.<br><br>You can look at other 'workingtree_implementations' tests to get a<br>reference for how to do it.
<br><br>Putting it in bzrlib/tests/test_workingtree.py means it will be tested<br>with our current default WT format. Putting it in<br>workingtree_implementations means it will get tested against all of our<br>WT implementations (currently WT2, WT3, WT4). The biggest benefit is
<br>that it adds tests for any new implementations, to make sure we maintain<br>interface consistency.</blockquote><div><br>[DONE]. all tests passed first time!<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I don't see why you needed to do this:<br>- if not tree.has_id(file_id):<br>+ if not tree.has_id(file_id) or not file_id in<br>tree.inventory:<br><br>If you found a case where "tree.has_id
(file_id)" was returning True, but<br>file_id not in tree.inventory, then you found a bug. And it should be<br>fixed at the 'has_id()' layer.</blockquote><div><br>...mm thats weird.<br>I had to do this to make my tests pass, but I undid it now, and it works fine..
<br>I think at the time I did it, I used self.changes_from(..., specific_files=...),<br>wrong, since I didn't dereference them...<br><br>[REMOVED]<br> </div></div>...<br>I'm still busy with the rest, but will get it done asap.
<br>