[00:39] Night [00:47] how are bzr revision ids calculated/generated? i'm also happy with the file name (and line number/function name) [00:50] hey... is there a plugin for use with Qt Creator? === Ursinha is now known as Ursinha-afk [01:26] knittl: I assume you're asking about native revids? Because the plugins that talk to other VCS code can generate their own revids. (meaning bzr-svn, bzr-tfs, etc...) [01:27] jbowtie: yes i was. but i think i found it. email-timestamp-random [01:27] although i don't understand why random and not some kind of hash [01:29] knittl: Probably no reasonable criteria for what to hash. [01:31] knittl: Don't forget that revids can originate in other places. For example bzr-tfs uses path:changeset for its revids. [01:32] so in bzr there is no way to verify a revid is actually the revid of that particular revision? [01:32] revids themselves are not signatures [01:33] signature are signatures [01:34] also creating the exact same revision twice will generate a different revid? [01:37] knittl: If I understand the question, yes, you'll get two different revids; though I suspect they would merge cleanly in that case. [01:38] ok [03:05] hi all [03:05] i'm having some hardware problems, will be offline a bit [03:06] some web pages indicate it may be just the cable, which would be nice [03:08] poolie: almost more aggravating if it just a cable, though :) [03:09] :) [05:43] poolie_: the pad.lv root page doesn't list OOPS === poolie_ is now known as poolie [05:46] thanks [05:46] just a small thing :) [05:48] can you give me an example id? [05:55] fixed [06:03] ding ding ding, release day, hello all ! [06:03] poolie: I mean that the root page doesn't explain showing OOPS's [06:03] poolie: got that cable plugged now ? :-p [06:03] poolie: actually showing a specific oops works :P [06:03] lifeless: i understand; i've fixed it now [06:03] \o/ [06:03] i was just going to use a specific example [06:03] ah [06:03] but i guess since most people can't click them it's of limited use [06:04] and maybe they expire anyhow? [06:04] hi vila [06:04] eventually yes [06:04] i was hoping to get stale lock detection in for the beta, but i guess i won't now [06:04] and i believe in resisting the temptation to slip or rush [06:05] poolie: you're right, I was hoping for orphans myself :) [06:05] so, let's just do it [06:05] can release another later [06:05] vila, i'm just running gardener [06:05] which is nice [06:05] but it told me something was merged even though it has uncommitted changes [06:05] is that intended? [06:05] poolie: glad you like it [06:06] poolie: it's very rough so far, so it just spew out whatever if finds without dependencies [06:07] so that seems like a bug? do you want a report somewhere? [06:07] or for me to just tell you here [06:07] the rules can be refined, but I'm not clear yet about all edge cases, after all, you may modify a tree after it has been merged, you can forget to commit, etc, so upfront, I can't say if your case is valid [06:08] poolie: bug please [06:08] poolie: that's why I released early :) [06:09] vila, so today shall we do 2.2.1 and 2.3b1? [06:09] poolie: no 2.1.2 ? Anyway, I think the most important is 2.2.1 so we can then merge up [06:10] and also that [06:10] i sent a merge up of 2.1 to 2.2 the other day [06:10] would be worth checking it succeeded [06:11] I think I saw it [06:13] poolie: Can you just remind me the intended audience for 2.1.3 and 2.2.1 (2.3b1 is for everyone willing to try, but not stable yet) [06:14] 2.2.1 will go into maverick right ? Somewhere else ? [06:14] 2.2.1 should go in to maverick updates [06:14] they've just today announced the final freeze [06:15] i don't know if it's possible to do an SRU before the thing even officially releases [06:15] we should check [06:15] ok, added to TODO [06:16] hmm, we don't have a place where we track which distro carry which bzr version right ? [06:16] * fullermd will be updating ports... [06:16] We did have a page on the wiki once. It was very useful for seeing when anybody bothered updating it ;p [06:17] Didn't have such a page to track the installer builds ? Or was it done just by mail ? [06:18] That will be very helpful for me and my alzheimer... what's the name ? [06:18] also, we may want to get a specific clarification that the SRU policy and our policy agree [06:18] to avoid future confusion [06:19] I think we got such confirmation... or did I just dreamed it ? [06:19] https://bugs.edge.launchpad.net/bzr-gardener/+bug/641043 - your very first! [06:19] Launchpad bug 641043 in bzr-gardener "says 'merged' about trees with uncommitted changes (affected: 1, heat: 6)" [Undecided,New] [06:20] poolie: anyway, yesterday mthaddon was kind enough to create a pqm 2.3 branch so I think everything is in place for whatever release we want to do [06:21] poolie: we may as well start with 2.1.3 [06:21] yes, lets [06:21] *let's [06:21] how about if you do it and i'll copilot? [06:21] vila, poolie: for some reason my __copy__ hack is failing on lp:bzr but not lp:bzr/2.2. I've thought of a shorter, more conservative workaround for traceback duplication to use to replace the __copy__ hack, it might be good to land that to 2.2 before we make a release of 2.2.1? [06:21] (I was trying to merge 2.2 to lp:bzr so I could close off a couple of In Progress bugs) [06:22] just in case it is subtly broken in 2.2? [06:22] that makes sense to me, put it up for review? [06:22] Right, and the minimise the delta between 2.2 and trunk. [06:22] Will do. [06:22] on the whole that was perhaps not critical enough to put in 2.2 [06:22] otoh it should only affect selftest [06:23] spiv: if you're >90% sure about it , go, otherwise, revert please ;) [06:23] oh, only selftest ? make that >80% then :) [06:23] spiv: thanks for the heads-up anyway [06:25] poolie: also, for 2.3, do we allow only backports from now on or will 2.3b2 be just a pull of bzr.dev ? [06:26] backports? [06:26] meaning merges from trunk to 2.3? [06:27] poolie: I mean, what will be the policy for merging changes to 2.3. The same as 2.2 as of today, or everything from bzr.dev at 2.3b2 release time ? [06:27] IIRC the process was that 2.3 is released from trunk until the first rc... am I misremembering? [06:28] there was some discussion that having a branch makes the actual release process easier [06:28] spiv: yeah, that [06:28] in case any small fixes are needed [06:29] vila, poolie: https://code.edge.launchpad.net/~spiv/bzr/traceback-accumulation-2.2/+merge/35778 [06:30] thanks, +1 [06:39] poolie: wow, hold on, what about 2.0.6 ? [06:40] https://edge.launchpad.net/bzr/2.0 says: Released in September 2009; supported until at least September 2010. [06:41] There are several worthwhile fixes that would be in 2.0.6, especially #522637 [06:41] spiv: shameless plug :) [06:41] :) [06:42] let's do it [06:44] hm, what should i do now? still fix stale locks? [06:45] maybe add a note about requesting SRUs to the release guide, then go back to that [06:45] poolie: whatever you want as long as I can interrupt you :) But if you want to summarize our policies regarding 2.0, 2.1, 2.2, 2.3, that would be good too :) [06:49] i'll be here for at least 2-3 hours [06:50] meh, now what's new for 2.0, no wonder I couldn't find it :) [06:56] bzr lp-propose -m 'Release 2.0.6' --approve lp:bzr/2.0 [06:56] bzr: ERROR: bzr+ssh://bazaar.launchpad.net/%2Bbranch/bzr/2.0/ is not registered on Launchpad [06:56] ring any bell ? [06:57] it sounds a lot like what thumper just changed [07:03] grr, firefox can't start, close any existing window (none, double checked) or *restart your system*. WTF ? [07:07] ok, found the ghost, jinxed it [07:09] poolie: https://code.edge.launchpad.net/~vila/bzr/prepare-2.0.6/+merge/35779 sanity check please, while pqm is busy [07:23] poolie: ping [07:26] * vila plugs poolie's cable [07:29] poolie: hi [07:29] i mean, vila [07:29] :) [07:30] sure [07:31] vila re the branch for bug 32669 [07:31] Launchpad bug 32669 in Bazaar "Adding a symlink to another branch fails (affected: 3, heat: 17)" [Medium,Fix released] https://launchpad.net/bugs/32669 [07:32] hm [07:33] i have a comment https://bugs.edge.launchpad.net/bzr/+bug/32669/comments/14 saying "fixed in trunk after 2.2" but i don't see it in trunk's news file [07:33] Launchpad bug 32669 in Bazaar "Adding a symlink to another branch fails (affected: 3, heat: 17)" [Medium,Fix released] [07:33] at any rate i wouldn't block 2.0.6 on it [07:33] poolie: me neither :) Just a heads-up for 2.0.7 [07:34] poolie: Given http://paste.ubuntu.com/495121/, I'll create a 2.0.7 milestone with a 2011-03-10 targeted date (in six months, a thursday) [07:35] hm [07:35] that makes sense [07:36] done [07:36] its host distribution may EOL before then? [07:37] you mean hardy ? [07:37] i guess so [07:37] actually no, isn't 2.0 in karmic? [07:38] anyway, that's why I asked for a policy for 2.0, 2.1, 2.2, 2.3. The milestone is there, we can always says: and this is the last 2.0 release [07:38] works for me [07:39] poolie: ok, sanity check on https://code.edge.launchpad.net/~vila/bzr/prepare-2.0.6/+merge/35779 ? [07:43] yes, it's fine [07:46] karmic is supported until april next year [07:46] so, it's probably not worth doing a 2.0.7 in march [07:46] but we can see how we go closer to the time [07:51] pff, two feed-pqm from two different setups, both errored out but both send the request :-/ [07:54] istm we want to get on to this page: https://wiki.ubuntu.com/StableReleaseUpdates/MicroReleaseExceptions [07:58] poolie: istm you're deadly right [08:00] i'll mail the board [08:00] poolie: great ! thanks ! [08:04] spiv: http://babune.ladeuil.net:24842/job/selftest-hardy/lastFailedBuild/testReport/junit/bzrlib.tests.test_sftp_transport/SSHVendorBadConnection/test_bad_connection_ssh/ :-( how about http://paste.ubuntu.com/495128/ [08:04] heya vila, spiv [08:05] vila: hmm, I don't think I like that. [08:05] spiv: e.errno and e.args seem to be a mess that we don't handle consistently in other parts (see also bzrlib.smart.medium line 930 ) [08:06] Yeah :( [08:06] spiv: hehe, I don't like it much either, but I want a stop-gap fix [08:06] spiv: I hate to discover that *now* too [08:07] spiv: and the comment in bs.medium is even more worrying because many other places don't even take it into account (grep socket.error) [08:07] does anyone know off hand if selftest runs during packaging? [08:07] i think it does not. [08:08] poolie: my guess is no, but I don't know either. [08:08] dunno, but it runs at each commit and at source release time [08:08] i know :) [08:08] releasing source is not part of packaging ? [08:09] hmm [08:09] poolie: IIRC pitti has said that our mandatory tests-run-before-landing might be considered as good [08:09] But I guess it's probably not too hard to make the packaging do a selftest run. [08:10] * bialix waves at poolie [08:10] bialix: hey ! [08:12] hi there spiv, bialix [08:12] vila: I'm actually trying to figure out why EPIPE is being treated specially there in the first place :) [08:12] spiv: do you have a better idea for http://paste.ubuntu.com/495128/ that could be landed soon ? Will a huge red blinking FIXME be enough to wait for a better fix ? [08:12] vila: as a stopgap, socket.error isn't going to be EPIPE is it? So it could be handled in a separate except block. [08:13] spiv: ha cool, I'd like to have this fixed asap and preferably before cutting 2.3b1 [08:13] spiv: let me double check, I think it was [08:13] spiv: http://babune.ladeuil.net:24842/job/selftest-hardy/195/testReport/junit/bzrlib.tests.test_sftp_transport/SSHVendorBadConnection/test_bad_connection_ssh/ [08:14] Blah. [08:14] spiv: and I'm pretty sure the analysis was that it was a socket.error... [08:14] Yeah. [08:15] an alternative would be a more complex test with isinstance(socket) and e.args[0] or e.errno... but without tests... :-/ [08:16] s/complex test/complex if expression/ [08:16] spiv: thks for the merge 2.2 -> dev [08:17] vila: you're welcome, I already had it ready to go :) [08:20] ok sent [08:21] vila: I wonder if maybe http://paste.ubuntu.com/495134/ would do? [08:22] spiv: rationale ? [08:22] vila: I don't really understand why that code is treating errno==EPIPE and EOFError as a connection error, but anything else that occurs during connection as not a connection error... [08:22] (despite the comment and the fact that annotate blames me :) [08:23] vila: so I'm thinking "why not treat all of those as a regular connection error?", basically [08:24] spiv: and we have evidence that not handling a socket.error.EPIPE make the test fail... how does this relate ? [08:24] now we will raise a connection error in this case and ? [08:25] it will be handled above and... what ? [08:25] EPIPE there has always caused some sort of exception there [08:26] So if the test needs the connection to somehow succeed in that case, we're barking up the wrong tree with tweaking which exception it raises. [08:27] Given that the comment is referring to some untested condition, I'm glad enough to get rid of it, worth a try at least [08:28] Well, it's not going to solve the intermittent failure. [08:28] It'll give a more appropriate error, we hope. [08:29] i need to reply to vila's config thing... [08:30] spiv: ok, let's try that [08:30] Hmm, I guess the test is about failure to connect, so a more appropriate error may be the fix... [08:30] poolie: the orphan related one ? [08:30] spiv: I understand [08:30] yeah [08:30] spiv: well, I *think* I understand :) [08:31] poolie: amanica raised a good point about ignoring bzr-orphans [08:31] * spiv experiments now [08:34] vila: manually hacking that try block to raise various socket.errors, just unconditionally doing self._raise... works. [08:34] vila: I'll put up a patch [08:34] spiv: thanks [08:35] vila: I'd love to know what the different treatment of EPIPE was intended to achieve, though :/ [08:35] spiv: yeah, me too, let's ask the praised one for this comment :) [08:37] spiv: just joking, trying to ease your pain for not remembering, I so know the feeling ;) [08:39] aw... 2.0 the [ascii] tests, double pain [08:40] plus the fact that I should add that back to babune some way or another ;-/ [08:42] spiv: by the way, IIUC you have a patch for python addressing http://babune.ladeuil.net:24842/job/selftest-jaunty/lastFailedBuild/testReport/junit/bzrlib.tests.per_transport/TransportTests/test_readv_with_adjust_for_latency_HttpTransport_urllib_HTTPSServer_urllib_/ ? [08:42] vila: https://code.edge.launchpad.net/~spiv/bzr/ssh-connect-socket-error/+merge/35784 [08:43] vila: yes, fixed in the upstream 2.7 branch, patch backported already to python2.6 in maverick [08:44] vila: it's triggered by trying to things with SSLSocket objects that aren't connected [08:44] vila: (http://bugs.python.org/issue9729 is the relevant report) [08:44] spiv: I know the root cause, ha cool [08:44] vila: so if we want to avoid it in unfixed python perhaps we can find a way to avoid trying to use SSL sockets there before they are actually connected? [08:45] spiv: it occurs only *before* the first connection ? [08:47] hmm, given the traceback... that's an idea worth checking... [08:47] vila: if the SSLSocket._sslobj is not set, then various methods (including send and recv) just try to delegate to the back socket object implementation, presumably so that you'll get appropriate socket.errors [08:48] vila: except those code paths were untested and in some cases broken in two separate ways :) [08:48] spiv: so we get correct socket errors (EBADF especially) if we try to use a close socket right ? [08:48] closed [08:48] spiv: yeah, tell me about untested code ;-/ [08:49] http://svn.python.org/view?view=rev&revision=84806 is the patch that was committed. [08:50] vila: I know it's triggered by never-been-connected sockets wrapped with the SSLSocket class [08:51] vila: I haven't checked if was-connected-but-now-now-closed sockets would do the same thing [08:51] spiv: ok, good enough for me, I'm pretty sure the later is covered by tests [08:51] spiv: well, obviously the former is too ;) [08:52] spiv: but randomly :-D [08:52] I was a bit depressed by the test_socket and test_ssl tests in Python. [08:53] I'm used to nicer test infrastructure, and more comprehensive coverage. [08:56] spiv: right, I think I have rough idea on how to reproduce it in a test, but not now ;( [08:56] ;) I meant [08:57] spiv: so this patch will find its way upstream in the next 2.6 or only 2.7 ? [09:01] vila: only 2.7 [09:01] vila: IIRC upstream considers 2.6 to be security-fixes-only now [09:01] spiv: right, ssl is all about security isn't it ? :D [09:01] Hah. [09:02] vila: I'm about to log off for the night, anything else you need from me urgently? [09:03] spiv: I don't think so, unless your current pqm submission fails in which case, I'll came personally talk to you on the beach [09:03] Ok :) [09:03] spiv: I'll land the fix for the EPIPE thing when needed [09:03] I'll try to keep an eye on it and if it fails put the failure somewhere visible. [09:04] spiv: ok, great, enjoy your week-end ! [09:04] vila: thanks, you too, when you get the chance :) [09:07] grr, bzr-2.0 knows nothing about BZR_PLUGIN_PATH damn alzheimer [09:12] * vila whistles while sudo mv /plugins /pluginsx , because... he can [09:14] vila, https://code.edge.launchpad.net/~mbp/bzr/doc/+merge/35785 describes sru stuff [09:14] there may be more to add [09:14] i don't want to duplicate the wiki too much though [09:14] but please ask questions [09:15] * poolie trying to get the scripts branch through pqm [09:16] did we merge the patch to omit details from skipped tests? [09:18] poolie: I don't know, but my understanding is that jam and mgz are shaving this yak differently so they should agree on the better way (I've ping them both) [09:19] At least the workaround for duplicated tracebacks will help keep the details of skipped tests to something reasonable. [09:19] spiv: +1 [09:19] spiv: you did land this one right ? [09:20] On 2.2 (which is being merged to bzr.dev as we speak) [09:20] * vila drools about spiv wifi access from the beach 8-) [09:20] have fun spiv :) [09:32] poolie: appropriate Ubuntu release for 2.0 -> >= karmic ? [09:34] for 2.0 it would be karmci [09:34] 2.1 lucid [09:34] 2.2 mavericj [09:40] poolie: ok, and for ppas, I'll follow ppa.txt, but I'm not there yet [09:48] for those following from home: make check-dist-tarball for 2.0.6 : Ran 23384 tests in 1049.609s [09:48] OK (known_failures=39) [09:48] 2014 tests skipped [09:48] bzrlib.tests.blackbox.test_branch.TestBranchStacked.test_branch_stacked_from_smart_server is leaking threads among 2523 leaking tests. [09:48] now running with no locale [09:50] Spooky. [10:12] pass with no locale: [ascii] Ran 23384 tests in 994.671s [10:12] [ascii] OK (known_failures=39) [10:12] [ascii] 2260 tests skipped [10:12] [ascii] bzrlib.tests.blackbox.test_branch.TestBranchStacked.test_branch_stacked_from_smart_server is leaking threads among 2476 leaking tests. [10:12] Finally, I've got some reference point about the number of leaks [10:13] vila: which reminds me: https://bugs.edge.launchpad.net/subunit/+bug/637674 [10:13] Launchpad bug 637674 in subunit "RemotedTestCase.addCleanup exists but fails under Python 2.7 (affected: 1, heat: 6)" [Undecided,New] [10:14] spiv: hmm, should ping mgz about it [10:15] Oh, I see the 2.2->dev branch landed. Good. [10:23] Is there any software I can exploit to rapidly illustrate branch revision graphs? [10:24] qlog [10:24] Esp. something that produces "management grade" graphics? [10:24] Hmmph. [10:24] bzr-gtk adds a graph command iirc [10:24] bzrtools has something that uses graphviz. [10:24] ^^ thats the one i mean [10:25] it does not work well on big graphs [10:25] Heh, I was kinda hoping for something that does hypothetical ones, but I suppose that's just as much work :-) [10:25] graph-ancestry [10:25] Oh, well, for hypothetical ones you use ASCII-art 8-} [10:25] jam is very good on that [10:25] oh i see [10:25] fullermd, I'm talking about _management grade_ visualization :-) [10:25] you can search the examples in his mails [10:26] 4-color glossy ASCII art, then :p [10:26] I heard Gary wasn't bad at generating them too ;-) [10:26] Heheheheh :-) [10:26] You could bang up fake stuff to feed into dot just like graph-ancestry does. [10:26] visio / omingraffle / dia i guess [10:26] I'd probably fiddle with xfig if I had to do it. [10:26] inkscape [10:27] we'll I [10:27] (I love xfig. The UI is so bizarre by modern standards that it always makes me crosseyed for the first 10 minutes I use it, but then it snaps right into focus) [10:27] well I'd just draw by hand and scan it later [10:27] Yeah, I've been using Inkscape up till now [10:28] awilkins: what is "management grade"? [10:29] bialix: simple :) [10:29] I presume it defines the revenue contribution of each revision. [10:29] rotfl [10:29] Also there need to be little clipart cartoon men pointing at them and smiling. [10:30] (for bonus points, they all spontaneously burst out singing _It's A Small World_ partway through the presentation. Come to think of it, I'd kinda dig seeing that myself.) [10:30] do it in ascii, then apply a 3D filter to it so its at an angle [10:31] awilkins: look http://doc.bazaar.canonical.com/migration/en/foreign/bzr-on-svn-projects.html [10:31] there is a lot of sexy pictures [10:31] bialix, Yes, I always liked those [10:32] What are those, inkscape? [10:32] no, some MacOS tool [10:33] Bah. [10:33] I know [10:33] Ought to write something that takes ASCII-art graphs and transforms them into SVG [10:34] Which you can then stylesheet and export to PNG [10:34] The people who can do things like that are too busy writing converters that go the other way, making ASCII movies :p [10:34] I always find whenever i try and use a diagramming tool [10:34] that i wish i'd just used paper [10:35] A tool that generated Hollywood movies from ASCII art would be much more impressive [10:35] Isn't that what Avatar did? [10:35] its not something you generally do often enough to be able to do something that looks good quickly [10:36] xfig works well for me once I jerk back into the mental mode to handle the UI. [10:36] it has a horrible website [10:37] I didn't even know it had a website, actually... [10:37] Woo, the recursive SVG file on the SVG page for Wikipedia is really impressive [10:37] whenever i see a site like this i instantly imagine it hasn't been maintained for a decade [10:37] I don't think it's had a release in something like that, no. But it still works fine. [10:37] Heck, xv hasn't had a release in, what, almost 2 decades? But I still use it every day. [10:37] * fullermd wonders when the last time xbiff was touched was... [10:38] awilkins: where's the recursive one? [10:39] Glenjamin, I figured that the one that shows an SVG file overlaid with the SVG logo was actually describing itself [10:39] * awilkins opens the file [10:40] Ok, it's a MITE more complex inside :-( [10:41] oh, i thought there was an SVG which included itself and rendered an infinite picture [10:42] That would be cool ; on a related note I have a hankering to produce an XSLT stylesheet that renders an annotated schema as a specification document, which includes a pretty-printed copy of the schema within it as an appendix [10:45] Ideally also prettyprinting the XSLT :p [10:46] Heh, just have one XML file that is the schema but has the XSLT inline so you can open it in a browser to get a "management grade" spec but also use it for implementation :-) [10:48] Better, XSL could fall into a hole somewhere for a while 'till people get around to finishing jade... I mean, not that I'm bitter or annoyed or anything... [10:48] jade? [10:48] DSSSL processor. [10:52] fullermd: Digital Super Slow Subscriber Line ? [10:52] fullermd: A ZX80 should do no ? [10:52] Pbbt :p [10:53] Poor BroadBand Type ? [10:53] I believe he meant "pttthpt" [10:54] awilkins: no no http not thpt [10:54] * fullermd hires Bill The Cat to do his IRC'ing for him. [10:56] hm. i still don't fully understand a testament [10:57] it stores timestamp, parent revs, some text (it says indented, human-readable; but i have no idea what it is used for), and file paths in canonical form [10:57] so where do file contents come into play? [10:59] because obviously, having the same pathnames does not mean it's the exact same file contents [11:01] http://blogs.gnome.org/jamesh/2007/10/04/signed-revisions-with-bazaar/ [11:02] this says that "bzr testament --long" includes hashes of file contents [11:03] ok. difficult to find bzr docs on gnome sites [11:03] i googled "bzr testament" [11:03] its the top result. [11:04] still, it's a third party observation [11:04] http://wiki.bazaar.canonical.com/Testament [11:04] i expect the bazaar wiki to contain a little more information [11:04] there are a lot of third parties involved in the bzr community, that's the point of a community me thinks... [11:05] knittl: it's a wiki ! Your contributions will be gladly welcome [11:05] Well, that's a near-standing page from a glossary jblack was working up way back in the mists of history. [11:05] (near-standin that is) [11:05] vila: my contributions? i really don't grokk bazaar [11:05] and i don't want to confuse others [11:05] Even asking questions is a contribution ; gives people an idea of what's important for people [11:06] But, why ask about testaments in the first place? They're pretty specific use items. [11:06] because they come after files, ineventories and revisions [11:06] Last time I heard or thought about them was when I was looking through the command list and said "hey, what's 'testament'?" ;p [11:07] (I think that wiki page is incorrect too; a testament isn't a type of revision) [11:07] only if you write a list "files, inventories, revisions, testaments" [11:07] fullermd: well, that does not help _me_ in any way [11:07] Glenjamin: i am [11:07] Well, it's like a crypto signature [11:07] Sort of [11:07] Ish [11:07] Yes, but why? A testament is basically just a representation of a revision. [11:07] seems an odd list of evaluation criteria [11:08] awilkins: i know what they *basically* are, but that's nearly not enough information [11:08] So you can say things like "this software was compiled from this revision" and know that you are talking about an exactly particular state, I suppose [11:08] it's like saying 'a revision is a specific version of the project' [11:08] knittl: as I understand it a testament is a format-independent mechanism for verifying the contents of a revision [11:08] great, that's 1 thing a revision is made of [11:09] does that mean you can lookup a revision using a testament's checksum [11:09] git just has this property because of the way it works - you can just say "revisions " where blah is the SHA-1 value and be almost totally certain that you are talking about the same thing [11:09] awilkins: git uses annotated tags to sign revisions [11:09] Glenjamin: in theory, sure. I'm not sure what the use of that would be though [11:10] knittl, because of the way git processes data, the signature is only required to certify the SOURCE of a revision [11:10] on an unrelated topic: how does bzr map from revids to revisions? using an index/dictionary file? [11:10] awilkins: ehm. i know. i think i really know git well [11:10] knittl, The SHA-1 hash identifies any revision + it's history + it's content with certitude. [11:11] hashes dependent on all contents and ancestor content [11:11] Apologies if I'm teaching you to suck eggs [11:11] what happens when you have 2^40+1 commits? [11:11] Linus comes to your house and beats you up. [11:11] why 40? sha1 is 160 bits [11:12] I see some of my documentation patches have been merged, but the bug status is still "Confirmed" (example: lp:401605) [11:12] hrm, dunno why i had 40 in my head [11:12] oh, its 40 chars in hex [11:12] What needs to happen before those get bumped to "Fix Committed" status? [11:12] One hex char is a nibble [11:12] 40 could be relevant to collision attacks, but 40 sounds like an awfull small number [11:13] Well, all you REALLY need for a collision is two. Finding them is the trick... [11:13] 2^51 is the collision attack number for sha1 according to wikipedia [11:14] my wikipedia tells me 2⁶³ [11:14] Of course, most VCS exploits you'd want to do call for preimage attacks rather than just collisions... [11:14] And you'd have to find collisions that were both valid git trees also [11:14] yes. but why are we having a conversation about collision attacks on sha1? [11:14] It's more fun than discussing snails. [11:15] jbowtie: where did they land ? [11:15] i'm looking forward to sha3 [11:15] grøstl ftw [11:15] :] [11:16] jbowtie: I'm releasing today and I'm reviewing all of them, but if they landed recently you can mark them 'Fix Released' with a 2.3b1 milestone [11:17] vila: 401605 was merged into lp:bzr, revision 5202 back in May. [11:17] jbowtie: we don't use 'Fix Committed' anymore [11:17] vila: Well that would explain it. [11:18] jbowtie: Are they mentioned in NEWS ? If yes, the milestone where they appear applies [11:18] jbowtie: http://doc.bazaar.canonical.com/latest/developers/bug-handling.html [11:18] oh, while people are around [11:19] can anyone suggest a single letter shortcut for revert --no-backup [11:20] bzr alias "myrevert"="revert --no-backup" [11:20] bzr myrevert [11:20] sorry, it's 2 leters [11:20] good point [11:20] make up your own! [11:20] bialix: I'd use 'bzr alias rnb="revert --no-backup"' ;) [11:20] cool! I like what spiv said [11:20] Rig up a foot petal! [11:20] yeah, i have aliases for most things - dunno why that didn't occur to me [11:20] Glenjamin: nope, that's the only case where bzr can lose your data, you have to type it, I will even prefer --no-backup-I-know-it-will-kill-my-cat :D [11:21] hehe [11:21] i do a lot of "merge --uncommitted" followed by revert on the merge source [11:21] OK, so I've basically been ignoring bugs once a merge proposal is accepted. But they're still sitting there as open - so what do I do about it? [11:21] Because otherwise my bug queue is not going to get shorter. [11:22] jbowtie: mark it as Fix Released, targetted to the milestone of the next release (the one that will include your fix) [11:23] jbowtie: although I think if the merge proposal includes a NEWS entry with a bug number then around the time release is made the RM will probably notice if the bug status is out of date. [11:23] spiv: So I should be touching NEWS when I fix bugs; did not realise that. [11:25] jbowtie: we often ask for NEWS entries when reviewing patches, but we also often just add them for you if that's all that's missing. [11:25] (And sometimes we don't have them at all, for sufficiently minor changes or due to forgetfulness) [11:28] spiv: Hmm, I can't seem to set milestone field. #401605 needs to be updated to target the milestone. [11:29] vila: Sorry - that should be for you - Launchpad is not letting me set the milestone field. [11:31] jbowtie: that's weird... not in the right team, but which team ? [11:32] ha, bzr-qa [11:32] vila: You will forgive me if I have no clue... [11:32] jbowtie: which milestone? [11:33] (we can add you to the relevant team as soon as we figure out which one that is, but in the meantime I can set this one for you) [11:33] spiv: Based on the revision number I would assume whatever's being released next [11:34] jbowtie: adde you to bzr-qa, try with another bug [11:34] added [11:34] jbowtie: ok, set to 2.3b1 [11:35] vila: That seems to have worked, will review my merged bugs and try to figure out which ones made 2.2 and/or 2.3b1 [11:35] jbowtie: don't forget to assign the bug to yourself so we can blame you in the future :) [11:36] jbowtie: thanks for that ! Let me know when you're done or if you need help [11:37] vila: No worries; will tell you bug numbers when I finish so you can check my work. [11:39] jbowtie: I'll get mail for that, don't worry [11:43] vila: Done, wasn't as many as I thought. Only odd one was #146780 since it was fixed on wiki rather than in codebase. [11:44] jbowtie: great. So yeas, wiki is instant-fix-released ;) [11:44] how can i get a list of stored testaments for a repository/branch? [11:46] Great, only 53 documentation bugs left to fix! [11:49] i thought revnos do not change inside a branch? [11:50] they don't [11:50] but they can be different for the same revision in a different branch [11:50] then why are my commits now 5410.1.x instead of 5411-5413? [11:50] i did bzr pull [11:50] revnos can be changed with pull/push --overwrite [11:50] i did not use overwrite [11:51] you pulled from the branch where is your local branch was merged [11:51] WHAT? [11:51] so pull makes your local branch the identical to the remote one [11:51] pull doesn't just update your branch, it makes your branch a mirror of the remote one [11:52] knittl: perhaps you want to look at append_revisions_only settings for branch; it prevented to mainline revno changes [11:53] so you tell me revnos do not change in a branch? and then you tell me they do? [11:53] no, your branch changed [11:53] yes [11:54] what now‽! [11:54] it depends on what you need [11:55] bzr help pull [11:55] Purpose: Turn this branch into a mirror of another branch. [11:55] i have my branch. i do a pull (which should not succeed, because i have different revisions) [11:55] you have different revision numbers, or different revisions? [11:55] i made 3 revisions in my branch [11:55] they got merged [11:55] either you have alias for pull or your local branch was fully merged into another branch [11:56] so it has all the revisions [11:56] ok, the latter [11:56] it was. but then, why do my revnos change? [11:56] because you branch was merged [11:56] therefore no data is lost, and your branch is no longer your branch, its a fresh version of the pull location [11:56] your branch [11:56] i understand that nothing was lost [11:56] * bialix shut up for a while [11:57] if you want revnos to stay the same in your local branch, use merge - not pull [11:57] Glenjamin: it cannot just change my branch to something different? – even if all revisions are there [11:57] why not? [11:57] it can, it does, it even says it will [11:57] because that is what pull does [11:58] what happens if i merged? conflicts because revs are in both branches? [11:58] no [11:58] all revisions from upstream collapsed into a single merge commit? [11:58] the latter [11:58] but its expandable in the log [11:59] and even looks pretty in bzr qlog [11:59] unknown command qlog [11:59] still, this behavior is – in my eyes – stupid [11:59] s/stupid/unintuitive/ [11:59] install bzr-qt for qlog [12:00] it's not bzr-qt [12:00] no, i don't need another qt app [12:00] it is QBzr [12:00] ah yes, it seemed wrong as i was typing it but couldn't remember what it was called [12:00] its only unintuitive because you used git first, and its pull command means something different [12:00] in git, pull just means fetch then merge [12:01] in bzr pull means fast-forward merge [12:01] it's unintuitive in every imaginable way [12:02] fast-forward does not change revnos [12:02] your confusing unintuitive with "different from this other tool" [12:02] git does not have revnos [12:02] you wanna talk about unintuitive, try git checkout == svn revert [12:04] they both do what you'd expect neven if ythey are named differently) [12:04] and i'm not even complaining that bzr is different from git [12:04] anyway, revnos are not as important as you'd think [12:04] but i expect my revnos to stay the same [12:04] then don't use pull [12:04] so i can see: bzr log -rXXX # my revision [12:05] knittl: The revids are stable in bzr - however the revnos are just a friendly representation. [12:05] even after i do git pull [12:05] basically, "bzr pull" takes the remote branch, and puts it at your local location [12:06] so it's bzr clone? [12:06] and in this case the remote branch's history differed from yours [12:06] bzr clone --resume [12:06] yeah, i guess so [12:06] bzr clone --update-and-overwrite-local-branch [12:06] well, only if the actual revisions are not going to be lost [12:07] bzr update-my-out-of-date-mirror-of-that-branch [12:07] what's do these two branches you have represent? [12:07] grml. i have to accept it. still find it unintuitive [12:08] ie. which is the mainine, which is a feature branch [12:08] what's do WHAT? [12:08] you merged your local branch into your remote branch, so that implies that the remote one is the mainline [12:08] i didn't merge anything. upstream merged [12:09] well somehow the revisions you made in local got into remote [12:09] yes, upstream merged them [12:10] right, so then upstream has the mainline list of revision numbers [12:10] which as far as the world-at-large is concerned, is the right revnos [12:10] knittl: set append_revisions_only = True in your branch.conf [12:10] mgz: ping [12:10] boing. [12:11] bialix: that would have just stopped him from pulling, no? [12:11] just discovered: python -c "print None <= 0" prints True; is it good? [12:11] Glenjamin: yes, stopped from pulling and compalining maybe [12:11] bialix: I imagine you expect that from any duck typing language... [12:11] qwa [12:12] that's going away in Python 3. [12:12] >>> None == 0 #> False [12:12] ok, no sense talking against you, for me it stays unintuitive. period. [12:12] >>> None >= 0 #> False [12:12] heh [12:12] >>> None <= 0 #> True [12:12] thats odd. [12:13] Python 3: TypeError: unorderable types: NoneType() <= int() [12:13] it's the way it is in Python 2 so you can have a list of arbitrary objects and sort it without fuss [12:13] hmm [12:14] ok, I see [12:14] how can i display the saved testament of a revision? [12:15] knittl: there's been some discussion of making append_revisions_only = True the default [12:15] Testaments aren't saved. They're generated. [12:15] so where is the signature stored? [12:15] A testament isn't a thing, it's just a way of displaying a revision, not immorally unequivalent to 'log'. [12:15] which can be signed [12:16] Well, any text can be signed. Testaments are just what bzr created as "use this text to sign". [12:16] Signatures were a separate file in knits, AIR. I imagine they're just another data record in packs. [12:16] ok [12:17] I'm not sure if there's an easy way to see the signature via the command line; I can give you the Python incantation if you like. [12:17] i'm afk now. need to smash something :D [12:17] spiv: no way via commandline? oh my… [12:17] if it makes you feel any better, i found git really unintuitive cos i was used to bzr/svn semantics for the commands [12:19] There just hasn't been much demand to work on UI around signatures, basically. Relatively few people care about them. [12:20] nobody cares about integrity? [12:20] what is integrity? [12:20] A line of servers from HP, I think. [12:22] Apparently not, from the questions I've seen users ask. [12:22] At least, not in that form. [12:22] nobody cares about verifying history of a revision? [12:22] not really, i just care that the code in that revision works [12:22] Well, obviously the bzr team cares, because we implemented the feature to have signatures :) [12:22] how it got there is bonus information for me [12:23] spiv: but it cannot be verified from the command line? [12:23] on the matter of integrity, i do have some missing revisions with cause some history operations to fail on a bzr repo that used to be an svn repo (and spent a year or so being an svn repo accessed by bzr clients) [12:23] I vaguely recall a plugin that did that. [12:23] Shoot. Almost nobody even cares enough to run ECC memory; cryptographic signatures are so many steps beyond that... [12:23] Yeah, jam wrote a plugin AIR. [12:24] bottom of this page http://blogs.gnome.org/jamesh/2007/10/04/signed-revisions-with-bazaar/ [12:24] fullermd: not mentioning running systems without RAID... [12:24] what if i wanted to display a signature for a revsion(testament) [12:24] vila: Well, then you get into systems with (or without) RAID, but without a FS with hierarchial checksums too... but I stray. [12:25] fullermd: hierachical file systems !!! Who needs that ??? [12:26] vila: Well, nobody cares about hierarchial namespaces anyway. I mean, look at DNS. [12:26] fullermd: pff IP addresses, real men use MACs ;) [12:27] you're confusing two transport layers here [12:27] knittl: `bzr testament` -- is not it what you're looking for? [12:27] Macs? I thought you were using Ubuntu ;p [12:27] bialix: that does not display the signature, only the text form of a testament [12:27] bialix: Testament doesn't display any signatures. It just gens a testament for the rev. [12:27] knittl: there's some code halfway down that page i linked that shows how to display a signature [12:27] which could be trivially wrapped in a command [12:28] are you talking about gpg-signatures? [12:28] because I don't know what else exists in bzf [12:28] Glenjamin: i find it a pity there's no command for that [12:28] fullermd: you're mixing hardware and software now ;-P [12:28] i think i'll write a patch for that … [12:28] so i can again complain about rev 5432 being 5431.1.1 after pull [12:29] vila: Heck, just wait'll I get warmed up! [12:29] knittl: `bzr pull -r5431.1.x . --overwrite` will restore your previous history [12:30] bialix: but will kill upstream revs? [12:30] what it means "kill"? [12:30] they are gone, aren't they? [12:30] you want your precious revisions back -- you'll get them [12:31] if you do that, then merge from upstream [12:31] then merge from upstream, yes [12:31] Glenjamin: so, after pull --overwrite upstream revisions are gone and i have to merge (download) them again [12:31] knittl: no [12:31] that topic was closed btw [12:31] they're probably cached in the repo [12:31] you don't need to download them [12:31] they're in the repo [12:31] knittl: the repository won't forget the revisions [12:31] run `bzr heads --dead` after pull [12:32] knittl: the bzr pull with simply change which revision the branch considers to be its tip [12:33] whatever. got work to do now [12:33] If you do another operation later that needs those revisions, they won't be refetched. [12:49] looking at the diff of one of spiv's changes, I see I mispelt my own name in the NEWS file [13:18] * maxb puzzles at getting "Repository with UUID 283d02a7-25f6-0310-bc7c-ecb5cbfe19da at svn://anonsvn.kde.org/home/kde contains fewer revisions than cache." from bzr-svn [13:18] (non-reproducible) === oubiwann is now known as oubiwann-away === oubiwann-away is now known as oubiwann === Ursinha-afk is now known as Ursinha [14:26] lifeless: Is there a debian packaging branch for testtools in sid? [14:45] raise errors.NoSuchRevision(self, revision_id) [14:45] bzrlib.errors.NoSuchRevision: CHKInventoryRepository('file:///home/knittl/bzr/bzr/.bzr/repository/') has no revision pqm@pqm.ubuntu.com-20100917091211-1e9h9nf6bsdjr6bd [14:45] $ bzr log -rrevid:pqm@pqm.ubuntu.com-20100917091211-1e9h9nf6bsdjr6bd [14:45] ------------------------------------------------------------ [14:45] revno: 5431 [merge] [14:46] so, what's wrong? [15:01] knittl: are you trying to output the signature? [15:02] i wrote a quick command to do that, and got the same nosuchrevision error [15:04] if there's no signature, thats the exception that gets thrown [15:05] Glenjamin: yes [15:10] knittl: https://code.launchpad.net/~glenjamin/+junk/bzr-signature is as far as i got [15:11] but i have no repos with signed revisions [15:15] if i sprout() a branch from an existing bzr branch, and commit to the new branch, why would basis_branch().get_revision_id() on the new branch, return the last revision committed to the new branch, rather than the last revision of the basis branch? [15:19] dobey: Maybe you need to unlock, and relock [15:20] dobey: Oh sorry - I miss read the question. Please ignore my answer. [15:40] hmm === zyga is now known as zyga-food [16:48] Hi vila. How is it going? [16:49] GaryvdM: at pqm pace... [16:49] vila: Ah [16:50] GaryvdM: 2.0 requests are twice as slow and I didn't order them as I should have [16:51] is anyone familiar with the inner workings of QBzr? I was trying to see how to add --diff-options into qdiff the other day and couldn't for the life of me see how it worked [16:51] Glenjamin: I can help you in a sec. === zyga-food is now known as zyga [16:51] my actual goal is just to be able to say "ignore whitespace" [16:53] Glenjamin: so it would be cool if you could specify that from both the command line, and the ui. We are planing to make the qdiff ui simillar to new qannotate ui. [16:54] then we can have all the view options in a menu. [16:54] i see [16:54] Glenjamin: but to start from the command line would be easier. [16:54] is there a way to change the qannotate colours? [16:55] Glenjamin: The colours are chosen from a hash of the committers name. [16:55] heh, my boss gets hot pink [16:55] Glenjamin: you would need to change the code to do this. [16:55] clever approach to colour selection though [16:55] Glenjamin: As the commit gets older, it changes towards white. [16:56] is that pretty new? I'm sure i've used qannotate before and its been pastel colours like qdiff [16:57] Glenjamin: Those must have been older commits. [17:00] Glenjamin: so to add a commandline option to qdiff, you need to start in lib/commands.py [17:00] that bit I can do, but i couldn't see how diffwindow gets its content [17:01] or can i just assume it does, and pass the flag through to _get_ext_diff_args [17:02] get_ext_diff_args is used when launching a external diff program. You need to change get_diff_window_args. [17:03] does the external diff button only appear if its configured then? [17:03] Yes [17:03] Glenjamin: but you will need to change every get_diff_window_args, as you will need to change what is expected from that method. [17:04] Glenjamin: there are 2 in commands.py, and 3 in diff_args.py [17:04] wouldn't it make more sense to default to the current revision instead of the last one? [17:05] would it make sense to have it return a dict instead of a tuple? [17:05] knittl: the current revision is the last one, i assumed [17:05] e.g. in cmd_testament -> if revision is None: revision = b.last_revision() [17:05] Glenjamin: not if you do bzr update -r old_revision [17:05] but i'm not really knowledgeable of bzr internals, so i could be mistaken [17:05] i didn't dig into the branch/revision API, i just used an example that worked [17:06] if you want to extend it so -r actually works, please do :) [17:06] Glenjamin: Yes, a dict makes more sense. [17:06] unhashable type list. i think i'm getting closer [17:07] hm. that's not my code that's crashing :-/ [17:07] woohoo [17:10] GaryvdM: so once i've sorted out the arguments, where abouts can i plug in and tell the diff bit to ignore whitespace? === beuno is now known as beuno-lunch === deryck is now known as deryck[lunch] [17:13] Glenjamin: I'm not sure what is the best way to implement this. One way is to modify the text that you pass to the diff, so that all white space is removed. You will need to keep track of what white space you removed, so that you can translate the ranges of the hunks returned for positions with out whitespace to positions with whitespace. [17:13] i wonder if it almost makes sense to allow the internal diff algorithm to ignore whitespace [17:14] i was kind of hoping qdiff was a thinner wrapper around diff than it actually is [17:14] Glenjamin: It does this at line 377 of diffwindow.py [17:15] Glenjamin: yhea - sorry about that. The only thing we use is a SequenceMatcher. [17:16] oh i see, this is the actual differencing [17:17] Yes [17:21] ok, i follow your suggestion now [17:21] sounds fiddly, but doable [17:21] i might give it a shot this weekend [17:21] Goodluck [17:40] hi i,m just starting to use bazaar. how can a get gui interface for bazaar. what plugin will do that? [17:40] nprasath002: 'bzr explore' should do it in most recent versions [17:41] how did you install it? [17:41] i use via synaptic package manager [17:41] ok, then that should work. [17:41] thanks [18:02] where should i put show-signature and how can i inform bzr of the new command? i thought @display_command would be enough [18:03] anybody can help with my previous question? [18:03] if i sprout() a branch from an existing bzr branch, and commit to the new branch, why would basis_branch().get_revision_id() on the new branch, return the last revision committed to the new branch, rather than the last revision of the basis branch? [18:04] dobey: on what object are you calling basis_branch()? I grep bzr.dev for that method, and could not find it. [18:05] why aren't there utility functions like 'openBranch' or 'getRevisionId'? [18:05] seems like if rev is None: rev_id = b.last_revision() else: rev_id = revision[0].as_revision_id(b) is used quite a lot [18:05] as is if branch == '.': b = Branch.open_containing(…)… [18:07] knittl: are you writing a plugin? if so, put this in the plugins __init__.py: [18:07] knittl: they are static methods, like Branch.open [18:07] from bzrlib.commands import plugin_cmds [18:08] plugin_cmds.register_lazy(name, aliases, module) [18:08] GaryvdM: i don't know if it's a plugin [18:08] show-signature [18:08] ddaa: so? what prevents utility methods? even better suited for calling static methods? [18:09] knittl: Are you going to have this command live in bzrlib, or a plugin? [18:09] Because: python -c 'import this' | grep Namespaces [18:09] GaryvdM: right now it is in bzrlib [18:09] also, it makes it obvious what these functions return [18:09] Branch.open returns a Branch... [18:09] knittl: Look at bzrlib/builtins.py [18:10] ddaa: i don't understand? if rev is None: "default" else: "get id" is used a lot [18:10] GaryvdM: i've put it there already [18:10] GaryvdM: a bzr Branch [18:11] knittl: because: python -c 'import this' | grep ambiguity [18:11] GaryvdM: sorry, typo. basis_tree(), not basis_branch() [18:11] In the face of ambiguity, refuse the temptation to guess. [18:12] what does that tell me? :-/ [18:12] maybe I don't understand your problem [18:12] i think so [18:13] my question is: the code »if branch == '.': b = branch.open_containing(branch)[0] else: b = Branch.open(branch)« is used over and over === beuno-lunch is now known as beuno [18:13] why isn't there a single function which returns the correct »b«? [18:13] same goes for »if revision is None: rev_id = b.last_revision() else: rev_id = revision[0].as_revision_id(b)« [18:14] dobey: The basis_tree for a working tree is the tree which the wt is based on. It will be the parent of the revision for the next tree. [18:15] GaryvdM: my command class is in builtin.py [18:15] how do i register it for autocompletion? [18:15] dobey: It has no relation to the parents branch tip, or common ancestor. [18:15] i cannot find register_something for the other classes in that file [18:15] GaryvdM: how do i get the last revision from the parent tree that a branch is based on, then? [18:16] i need the revision id or revno of the last revision from the parent tree [18:16] and should i use sys.stdout.write or self.outf.write? [18:16] different (existing) commands use one or the other form [18:17] dobey: I'm not sure exactly offhand, but you are looking for how to get the common ancestor [18:17] cmd_testament uses sys.… and cmd_plugins uses self.… [18:17] dobey: From the command line, you could do bzr diff -r ancestor:../trunk/ [18:19] GaryvdM: but how do i do that with bzrlib? i don't want a diff, i just want a reference, so i can iter over the revisions since that revision [18:20] GaryvdM: ie, i need to get all authors for all revisions, after the branch from the ancestor [18:21] dobey: ok - take a look at the code for bzr missing --mine-only. that will do what you need [18:22] should i use self.outf.write or sys.stdout.write? [18:22] and how do i register the command for autocompletion? [18:25] GaryvdM: do you know where that code is? i'm having trouble finding it. if it's find_missing() in bzrlib.missing, then i can't really go that route :( [18:30] Is anyone aware of a workaround for bug 389674? [18:30] Launchpad bug 389674 in Bazaar "NotImplementedError(_PreviewTree.inventory) when unshelving must create the parent directory (affected: 3, heat: 3)" [Medium,Confirmed] https://launchpad.net/bugs/389674 [18:35] dobey: why not? If you look in find_missing, you will see that it opens the revision dags of both branches, and finds the revision unique to each branch, but you only need to get the revisions unique to one of the branches. [18:36] GaryvdM: because how do i point at the remote branch if i've only got the local one to look at? [18:38] dobey: if you don't have access to the remote branch, you will need to record what it's tip was when you branch it. Bzr does not currently store this. [18:39] fail :( === frakturfreak_ is now known as frakturfreak [18:39] dobey: What are you trying to do? [18:40] GaryvdM: get all the authors of all revisions in a branch, since it was branched from its ancestor [18:40] hi folks i want to configure bzr with my user for pull/push but my laptop user is different from my lp user? [18:41] dobey: And it has to work with no connection to the ancestor? [18:42] how i can do this? [18:43] ovnicraft: You can create a ~/.bazaar/authentication.conf [18:43] GaryvdM: preferably, yes. i might be able to hack it to pass in the other branch, but that makes things amazingly complex, since it might have changes since the child branch was made [18:45] knittl: It seem that commands.py scans the builtins module for classes whos names start with "cmd_". Is your command named accordingly? [18:46] GaryvdM, can i add th user here: parent_location= bzr+ssh://myuser@bazaar.launchpad.net/%7Eopenerp/openobject-server/trunk/ ? [18:46] and get it done [18:46] ovnicraft: Yes [18:47] Night all. [18:50] hm, gary is offline [18:50] yes, my command is named cmd_show_signature [19:07] https://code.launchpad.net/~knittl/bzr/show-signature who wants to test? [19:12] abently, jam: ^^ is that true? do i need both branches to be able to determine the revno/revid of the ancestor from which a branch was created? [19:13] dobey: I'm not sure what you are ^^ at, but if you want to run "ancestor:" you need a branch === Ursinha is now known as Ursinha-lunch [19:14] note that you can pretty trivially create a branch with "bzr branch --no-tree -r x.y.z . ../ancestor-branch", etc. [19:14] with --no-tree and a shared repo, it is rather lightweight. [19:14] Certaintly the bzrlib internals support more [19:15] just hasn't been needed from the commandline [19:15] jam: previous converation with garyvdm. can i do it with just the child, or do i need both branches? i'm doing it from bzrlib, inside tarmac [19:16] dobey: how do you know what the "ancestor" is? [19:16] without having its branch [19:16] if you mean "I need the tip pointer of the branch I branched from", no bzr does not store that [19:16] also, it is not accurate once you have merged from the ancestor branch [19:17] that's what i'm trying to figure out [19:17] if I do "bzr branch foo bar; bzr commit -m "foo" foo ; "bzr commit -m "bar" bar; cd bar; bzr merge ../foo; bzr commit -m "both" [19:17] then what is the actual answer? [19:17] what happens if foo merges bar 1 time, etc, etc [19:18] you really want something like "Graph.find_unique_ancestors()" but you need to have the current tip of the branch you are comparing against [19:18] IMO [19:18] dobey: I said that pretty fast, but I can spell it out if you would prefer [19:18] well, if i could get the info from the merge proposal in launchpad, i'd be just as happy. [19:19] since launchpad seems to understand all this just fine, in terms of the merge proposal, though it doesn't seem to exactly expose all the information in the API [19:20] dobey: well, there are probably 2 things to consider [19:20] 1 the branch you are merging into [19:20] 2 any prerequisite branches [19:20] I don't know what lpapi exposes [19:21] well let's ignore the prerequisite branches issue for now, as i don't think tarmac handles them currently, anyway [19:21] dobey: https://code.edge.launchpad.net/~abentley/bzr/annotate-revspec/+merge/34681 [19:21] It has a "Merge into: " [19:21] and a "Prerequisite: " [19:21] Anyone know if it's possible to so something like convert a shelf-* file into a diff so I can apply it by hand? [19:21] if you grab that branch_url, you can open the branch and use "Branch.last_revision()" to get its tip [19:22] jam: how can i make a command default to the current checked out revision? [19:22] using last as default is unintuitive [19:22] jam: right, but that assumes that it hasn't changed since the branch proposed for merger [19:22] knittl: WT.last_revision() [19:23] vs Branch.last_revision(0 [19:23] dobey: "Hasn't changed" ? [19:23] what hasn't changed [19:23] the branch? Isn't the point that you should handle if it *does* change? [19:23] certainly the Merge Proposal page uses the current tips for those things. [19:23] jam: relying on that has to assume that there are no revisiions in the target branch, that aren't in the source branch [19:23] dobey: MPs don't assume that [19:23] why are you? [19:24] If I have put up a branch for review with 10 changes, and I land 5 of them, what do you want the system to do? [19:24] Still report all 10? [19:24] i'm not, but i can't get the last revision of the target and then use that as a reference in the source, if that revision isn't in the source [19:25] dobey: graph = Repository.get_graph(other_repository) [19:25] will use "other_repository" as a fall back for revisions it doesn't know about [19:25] what i would like is for proposal.preview_diff.prerequisite_revision_id to actually give me a value other than 'None' but it doesn't seem to do that [19:25] dobey: abentley or maybe rockstar are more knowledgeable about the Launchpad side of things (even thumper if he's around) [19:26] dobey, don't use Launchpad at all. Do it all in bzr. [19:26] rockstar: it doesn't seem possible. [19:27] jam, dobey needs to get the LCA between two branches, and then get all the revisions from that LCA to tip in one of the branches. [19:28] maxb: yes [19:28] dobey, is this for a merge proposal that has a prerequisite branch? [19:28] where? :-) [19:28] rockstar: certainly. But he wants to get the information about what revisions, etc *from launchpad* [19:29] (what branch, and what revision in the branch, etc) [19:29] abentley: no, not other than the target [19:29] pickscrape: I'll poke at it for a second, but offhand I don't know of a way to do it [19:29] jam: well i'd like to get the information from bzr, but from what you're all are saying, it isn't stored in bzr [19:29] the old shelves stored actually patches, but the new one does not [19:29] for what it's worth, i don't care about what tip is at all [19:29] what i want is the revision id at the point when the child branch was created from the parent. [19:30] that is the only piece of information i want/need [19:30] jam: thanks! [19:30] yeah the new shelve is nice when it works, and it works more often now [19:30] or perhaps i am oversimplyfing things at the moment, because this seems like it is getting overly complex very easily [19:30] but when it breaks it's really broken. :) [19:31] dobey, the prerequisite revision_id is the revision_id of the prerequisite branch that was used to generate the diff. If there was no prerequisite branch, it cannot have a revision_id. [19:31] pickscrape: if you can use python apis, you can look into bzrlib.shelf.Unshelver.from_tree_and_shelf(), or even Unshelver.from_args() [19:32] abentley: by that definition, if there is no prerequisite branch, it cannot have a merge proposal [19:32] sorry, that would be bzrlib.shelf_ui.Unshelver.from_args [19:32] dobey, False. All that is needed for a merge proposal is a source branch and a target branch. Prerequisite branches are optional. [19:33] abentley: then the documentation is wrong. [19:33] dobey: I think you are using "prerequisite" when you don't want it [19:33] you want the revision of the merge proposal [19:33] dobey, which documentation? [19:33] abentley: is that exposed from the api? [19:33] it may just be the Branch, which you then open for Branch.last_revision()? [19:33] abentley: the launchpad api docs [19:33] jam, I don't know what you mean by "revision of the merge proposal". [19:34] abentley: the revision that is being proposed to be merged into another branch [19:34] hrmm [19:34] jam, we don't propose revisions, we propose branches. [19:34] abentley: well there is a specific revision that is being shown [19:34] who wants to test: https://code.launchpad.net/~knittl/bzr/show-signature ? [19:35] jam, yes, the source branch last_revision. It will be updated (for active proposals) if you push the source branch. [19:35] abentley: dobey basically wants to know what revisions are being proposed to be merged, and it sounds like he needs to open the source and target branches, and then use Graph.find_unique_ancestors(source.last_revision(), [target.last_revision()]) [19:35] pickscrape: that will let you open up the shelf, and as long as you don't call .run() it won't try to apply it, and I think you can then query it for the data you want to pull out manually [19:36] jam, (well, if you just want to know which are proposed to be merged, you don't need an LCA) [19:36] jam: thanks, I'm having a play with that now. [19:36] abentley: he wants all the authors that have contributed to the current code [19:36] how would you determine that ? [19:37] jam, I'd do a set difference of the two tips. [19:37] abentley: that is what find_unique_ancestors does, only without having to get the full ancestry [19:37] and to do so, you ... have to walk back to the LCAs :) [19:38] jam, yes, I know. === frakturfreak_ is now known as frakturfreak [19:38] anyway, I don't think I've stated a strict need for an LCA, just to get the tips and use find_unique_ancestors() [19:39] which I think is also what you are saying [19:39] dobey: does that make sense? [19:39] maybe [19:39] my brain hurts :) [19:40] i guess i just need to have both branches, and do find_unmerged() [19:40] jam, when you said "what revisions are being merged", I thought you meant which tip revisions are being merged, not the ancestry of those tips. [19:41] dobey: http://paste.ubuntu.com/495461/ [19:42] some basic overview of what I would do [19:42] If you meant "which revisions will become part of the ancestry", not "which two revisions are participating in the merge", I get it now. [19:43] jam: any idea what type the "merger" parameter passed to either write_diff() or show_changes() need to be? [19:44] abentley: correct [19:45] pickscrape: I would look at the shelf_ui.Unshelver.run() method [19:45] dobey, the API documentation doesn't say that the prerequisite branch is non-optional. In fact, it says there are circumstances where it should be left blank. [19:45] merger = self.manager.get_unshelver(self.shelf_id).make_merger(None) [19:45] pickscrape: what about "bzr unshelve --preview" ? [19:46] that should show the diff for you, right? [19:46] does that also fail? [19:46] jam: --preview results in the same execption unfortunately [19:46] abentley: yes. but it implies that if left blank, the target is considered the prerequisite, and i would therefore expect the prerequisite_revision_id to be from the target [19:46] which doesn't seem to be the case [19:46] dobey, I didn't mean to imply that the target was the prerequisite in that case. [19:47] dobey: and if you take my example slightly further, it can handle prerequisite branches by just passing more revision_ids to the find_unique_ancestors() method. [19:48] abentley: perhaps clarify that prerequisite_revision_id will NEVER point to a revid of the target, and is only there if there is a prerequisite other than the target [19:48] dobey, the prerequisite is a branch that should be merged into target before you merge the source branch. [19:48] (I don't think find_unmerged supports that) [19:48] jam: write_diff and show_changes also result in the same exception being thrown. [19:48] dobey, for example if you have two branches, A and B, and you branched B from A. [19:49] pickscrape: so the specific failure is that PreviewTree is not a 100% reproduction of a real tree. But I don't really know what it is trying to do that is failing [19:49] (I haven't looked closely at the bug) [19:49] dobey, You want A's changes to be considered separately from B's changes, so you set A as a prerequisite branch when you propose B for merging. [19:49] jam: I posted a small reproduction recipe on the bug a while back which could be handy for you. [19:50] abentley: i know what the prerequisite branch feature means. i'm just stating that the api documentation i just looked at, is somewhat unclear and implied there was more of a connection between what target and prerequisite are, in the backend, than there apparently is in actuality [19:52] dobey, this is text that was written for the web interface, so it's written with Launchpad users as a target audience rather than API client devs. [19:52] abentley: even if not your intent, the wording tends to denote the possibility that the target can be a prerequisite, and while that field should be left blank in such a case, it does not state that all the other related fields will also be blank [20:01] jam: I just realised that I've been trying to unshelve while my lightweight checkout was pointing at a different branch to the shelf's original source. [20:01] So in this instance I was actually being silly. However, the last time this happened it was a bit more subtle than that. [20:02] pickscrape: well, shelved content has a required revision_id that it is based upon. It sounds like we don't give a clear error when that revision is not available [20:02] that would be a separate bug from the sound of it [20:03] anybody wants to test printing signatures? [20:03] https://code.edge.launchpad.net/~knittl/bzr/show-signature [20:05] jam: wouldn't attempting to unshelve to a branch with that revision_id not present be roughly similar to merge --uncommitted? [20:05] knittl: I'll give it a look [20:05] pickscrape: if we can't find the revision *at all* is different than if it just isn't in the ancestry [20:05] (if your branches have separate repositories) [20:05] otherwise yes, it should be 'merge --uncommitted' [20:05] jam: great, thanks [20:06] jam: ah, well in this case the revision in question will definitely have been in the shared repository. [20:07] pickscrape: then that makes less sense, and my guess is just a bug in an edge case handling [20:07] jam: should I raise that as a separate bug then, and attempt to write something remotely sensible? :) [20:07] (as a description) [20:09] pickscrape: if the revision is available, then it is probably the same bug [20:09] but you're welcome to update the description and summary if you can make it clear what is going on [20:09] jam: OK, I'll leave it then [20:10] jam: ok, with your pastebin, i think i finally got something that works, using the graph. === Ursinha-lunch is now known as Ursinha [20:27] jam: it seems to work! thanks! :) [20:28] dobey: happy to hep [20:28] help [20:28] (not that I don't like hepping, though :) [20:28] heh === frakturfreak_ is now known as frakturfreak [20:41] hey there, bzr is quite slow for branching from launchpad (time bzr branch lp:arista = 20 seconds). Is there any way to make it go faster, by using bzr:// or something? [20:42] when I want to "sell" launchpad to someone, I obviously get the git comparison (5 seconds to git clone http://github.com/danielgtaylor/arista.git) [20:42] I would really prefer my project to use bzr [20:42] nekohayo: do you know if there is a hg clone as well? [20:42] knittl, ? [20:43] a mercurial repo of arista? [20:43] nekohayo: nothing to do with your problem, i'm simply interested [20:43] yes [20:43] not that I know of [20:43] so bzr and git? [20:44] yeah, the bzr one is a mirror of the git repo [20:44] i see. thank you :) [20:45] so, anyhow, I've never seen bzr branch faster than 20 seconds from launchpad [20:45] don't ask me, i don't use bzr :> [20:45] nekohayo: 'bzr lp-login' [20:45] that might not make it go faster, but things will certainly be different! [20:46] I'm alreaddy logged in [20:46] (or is that command supposed to do something else than just return my login username?) [20:47] nekohayo: oh, nevermind then. === frakturfreak_ is now known as frakturfreak [20:48] nekohayo: without being logged in, it's http://, if you are logged in, it's bzr+ssh [20:48] FWIW, it takes 15 seconds for me to get the branch. [20:48] * nekohayo is scared to imagine the performance without being logged it, must be about 30-40 secs [20:49] maybe it's better! who knows. [20:49] from my tests here, over HTTP = 20 secs, over bzr+ssh = 9 secs [20:49] so I'm wondering why LP is still slow [20:55] hmm, lifeless might know something [21:15] i did a 'bzr branch lp:qa-regression-testing', made a chance, committed it, and now want to push it to lp:~serge-hallyn/qa-regression-testing/foo. It's a huge tree, so i want it to just base lp:~serge-hallyn/qa-regression-testing on the main one and upload only the one diff. Is that possible? [21:17] afaik bzr/lb does that automatically [21:17] * lp [21:18] but don't take my word for it [21:18] knittl: doesn't appear to :) i gave up after 30 mins of very heavy net traffic [21:18] hallyn: just pushing to a branch should auto base on the old one, as long as a development focus is set [21:19] how do i set a development focus? [21:20] knittl: bzr show-signature works for me. 'bzr show-signature -r 4011.1.1 | gpg --verify' works [21:20] (in your brancH) [21:21] though I'm guessing you don't actually validate the testament sha1, which may be a next step [21:21] jam: awesome :D [21:21] no, it's only called 'show-…' [21:21] knittl: you may want to call it "cat-signature" [21:21] I think we have cat-revision, etc [21:21] i think cat is a bad name for that [21:21] which does a similar "dump the text that is stored in the repo" [21:21] because it's for concat, not for output [21:22] knittl: while true, we don't use "show-text" or "show-revision" [21:23] yes, i understand that [21:32] hallyn: Ihttps://help.launchpad.net/Code/QuickStart#line-61 but if lp:project works, it suggests that the dev focus is set. [21:33] hallyn: When you push a new branch, it should tell you that it stacked the branch against the dev focus. [21:34] but only after pushing [21:34] yes [21:35] Hi there! [21:35] We're getting a connection timeout issue when trying to checkout a bazaar branch out of Launchpad in an EC2 cloud-init script [21:36] Would anyone have any vague guesses on what could possibly be going on? [21:37] We're a bit puzzled at the moment because sshing into the machine and run it, it works [21:37] s/run/running [21:38] apt-get is running right before the bzr switch command, so it's not an actual network error [21:39] jam: best name would probably be print-signature [21:39] also for all the other cat-*-commands [21:40] niemeyer: do you have the traceback? [21:40] if you are checking out an "lp:" thing [21:40] sometimes that fails because of the xmlrpc request [21:40] especially if proxies are involved [21:41] jam: Yes, we're using lp: [21:41] niemeyer: some versions of bzr did not handle xmlrpc requests and http proxies (because python itself does not trivially handle it) [21:41] hazmat has the error message [21:41] bzr: ERROR: Connection error: failed to connect to bazaar.launchpad.net:4155: Connection timed out [21:42] hazmat: that is trying to connect directly to a "bzr://" url [21:42] you need to connect to a "bzr+ssh://" url [21:42] jam: We're not behing an http proxy though.. it's an EC2 instance [21:42] 4155 is the bzr port [21:42] Uh [21:42] jam, hmm. thanks i'll double check that now [21:42] hazmat: Aren't we using lp:? [21:42] jam: Does lp: resolve to bzr: in some cases? [21:42] niemeyer, we are using lp: [21:42] jam: why should the testament hash verified? that's not the job of a signature [21:42] probably since we're not authenticated to bzr (no keys) on the ec2 instance [21:43] if it's wrong, well, you signed a faulty testament :P [21:43] niemeyer: lp: should never resolved to bzr:// because Launchpad doesn't expose bzr:// [21:43] if it does, that is a bug in launchpad-code (aka thumper) [21:43] What the heck then :) [21:44] jam: Yeah, no "bzr:" in our code base, at least [21:45] If that's a bug in Launchpad, though, should be easy to fix by using http: explicitly [21:45] I don't really know why it would be trying to connect directly. [21:45] I do know that thumper recently landed code to allow "lp:" urls to be resolved inside of ssh [21:45] so that it can handle private projects, etc [21:45] so "lp:foo" actually resolves to "bzr+ssh://bazaar.launchpad.net/+branch/foo" [21:46] rather than ~/foo-group/foo/trunk, etc [21:46] Hmm [21:46] I don't know if it broke something of yours [21:46] Ok.. we'll try with http:.. let's see [21:46] GaryvdM: it did say it was trying stacked, but i don't remember against what, and it certainly wasn't pushing only the diff. [21:47] alas, that has to wait, more urgent question: [21:47] what is the recommended bzr equivalent to 'git rebase -i'? [21:47] in other words, remote developer makes 5 commits while offline, meanwhile upstream advances by 10 commits, [21:47] why not use git in the first place? :> [21:47] now remote developer wants to squash his patches 2-4, and rebase those 3 on top of the upstream branch? [21:48] * hallyn facepalms [21:48] that was no sarcasm, that was a real question :) [21:48] but i'd be also interested in the answer to rebasing in bzr [21:48] "we can't", basically [21:49] there's a 3rd-party rebase plugin [21:49] but using it is not necessarily a good practice [21:49] amending a revision is so uncomfortable right now [21:49] jam: Yes, http: solved the problem [21:49] jam: So it looks like some kind of resolution problem with lp: indeed [21:50] niemeyer: I don't *know* that it is resolving lp:foo => bzr://bazaar.launchpad.net/foo" but it certainly looks like something like that happened [21:50] jam, what's odd is that when we logged into the instance by hand and used bzr switch lp: it did the right thing.. but somehow it didn't do the right thing eraly on [21:50] nDuff: so what is good practice? [21:50] maybe thumper changed something and forgot to have the +ssh [21:50] jam: Yeah, I have no idea either [21:50] Glad it's now working, though :-) [21:50] indeed [21:50] jam: Thanks! [21:50] hazmat: if you were logged in, maybe it was using different credentials? [21:50] +1 [21:50] It was indeed [21:50] nDuff: i would guess: do a local branch into different working dir, work there, and do bzr merge revision-by-revision into the other after a fresh pull? [21:50] jam, its all anonymous work [21:51] hazmat: I don't think so [21:51] hazmat: cloud-init must execute as root [21:51] hazmat: and we executed with sudo [21:51] niemeyer, but that has no bzr/launchpad credentials [21:51] hazmat: Yeah, just saying it's a different env [21:51] jkakar: Hi! [21:51] true [21:51] hallyn, ...to use a workflow that avoids _needing_ rebase-like functionality? [21:51] niemeyer, hmm.. actually executing by hand i was using sudo.. because of file perms [21:52] hallyn, ...if you're not coming from git, that's not so hard :) [21:53] nDuff: well really i'm trying to figure out how to tell someone else, not employed by my employer, how they should proceed with their workflow... [21:53] (in a bzr tree shared with us) [21:54] nDuff: so the most basic question: if he has made 2 commits, and now wants to push, but there are conflicting changes in the upstream, how can he stash his changes away, pull, and then (gotta use the word) rebase his revisions? [21:55] why do that at all? [21:55] nDuff: alternative? [21:55] why not just merge upstream and fix the conflicts? [21:55] well, i think tha'ts what h'es doing now. it removes the previous commits from upstream and replaces it with one called 'merge' [21:55] if i didn't want meaningful revision history, i wouldn't need this at all [21:55] they're still there [21:55] how do i see them? [21:56] * nDuff looks at help for bzr log [21:56] ahh, --levels / -n [21:56] jinkeys [21:58] so -- you're actually getting _more_ history this way [21:58] but, if the 'merge' wasn't conflicting anyway, why bother 'hiding' this way instead of just picking an order? [21:58] rather than throwing away the info about the context something was originally written in (and disguising bugs introduced during the rebase/merge process), you're keeping it all [21:58] it's a win [21:58] hm [21:59] nDuff: it definately solves my problem, thanks a bunch [21:59] there's textual conflicts, and there's logical conflicts [21:59] only the former can be detected automatically [21:59] so doing an automatic flatten on merge is dangerous [21:59] well [21:59] that's not quite true -- the cases where git does an automatic fast-forward are safe [21:59] but they lose history about when things were actually merged [22:00] why? history is still the same [22:00] and dummy-merge commits only clutter history [22:00] not from the perspective of "what did the shared tree look like at this point in time/" [22:00] * hallyn quietly sneaks away from the ensuing battle [22:00] then use git pull --no-ff [22:00] or merge --no-ff [22:01] knittl, yes, I'm not saying there aren't workarounds -- it's just something that I've been historically a little wary of as a default behavior. [22:01] knittl, ...I use git for my day job, far more than I use bzr, but that doesn't mean I like every single design choice and default Linus made. [22:02] jam: the resolve_lp_path xmlprc call that bzrlib calls to resolve lp: branches ONLY returns http or bzr+ssh, no bare bzr to be found there [22:02] i still think --no-ff is (most of the times) unnecessery [22:02] no idea what was causing the problem [22:02] * …ary [22:04] knittl, I don't think you're wrong -- but I do think throwing away information just because it's unnecessary 99% of the time is something to be wary of in the context of a tool whose principal and primary purpose is storing and tracking mission-critical content. At least, I do when I'm playing devil's advocate. :) [22:04] thumper: I would have assumed so, but something weird is going on, and I new you had touched it a bit recently [22:04] jam: yeah :) [22:05] nDuff: if nothing changed in my version of the DAG why should i introduce i new node? that's my point of view ^^ [22:05] knittl: if you look at bzr log --short bzr.dev, that is an example of where --no-ff works very well [22:05] which is: features are developed on non-mainline commits, and committed and summarized at merge time [22:05] i don't care [22:05] so instead of seeing 100 revisions every time you implemented a feautre [22:05] you see a single summary rev [22:06] with logical step [22:06] stepts [22:06] somewhat akin to rebasing to clean up your history [22:06] no, it only hides the turd [22:08] anyway, we do support "bzr merge --pull" which you can alias to be the default [22:09] (bzr merge --pull = ff if you can) [22:09] whatever, i'm not interested in ff vs. non-ff merges [22:10] jam: why should verification of testament hash happen in cat-signature? [22:10] cat-signature should only print the signature (so, print-signature …) [22:11] knittl: it certainly doesn't have to, but if you actually want to verify that the revision is correct and signed, then I would recommend closing the loop (potentially only as a flag) [22:11] if the testament hash is wrong there's another thing wrong [22:12] certainly it is "separate but related" [22:15] should happen on testament level [22:36] does an inventory store the executable bit? [22:36] i guess so, but then why isn't it printed when using bzr inventory -v? [22:44] what's the bzr command do bind your local checkout to the network one, so that you don't get out of sync? [22:45] 'bzr bind ' [22:45] * kirkland just butchered the vocabulary, he's sure [22:45] apparently not ;) [22:45] dash: hmm, man and bzr help don't seem to know about "bind" [22:45] * kirkland did at least look for it [22:46] 'bzr help bind' [22:46] also listed under 'bzr help commands' === Ursinha is now known as Ursinha-afk