[00:02] jam: the win32 binaries I'm putting together will have at least a couple of patches from 1.6 (setup.py/inno) - how do you feel about me also keeping those other test suite changes in? But if you think its important we only apply strictly necessary patches I'll back them out of my local tree. [00:03] hi markh [00:03] hi john [00:03] I'd rather have it be stock 1.6 if at all possible [00:04] For example, getting those patches in, would be something to get into 1.6 final [00:04] I guess you'd say that, which is why I thought I better ask ;) np [00:04] And would have been something I would have liked mentioned earlier.... [00:04] Supporting multiple versions is a real pain whenever there is skew [00:04] what would you have liked mentioned earluer? [00:04] markh: that you are going to need the setup.py/inno patches for the win32 release [00:05] So I would rather bring in something with a bit of cruft if it is going to be the *official* version anyway. [00:05] Though I'd really rather not bring in cruft :) [00:05] these are the same patches I've previously sent for the build process. [00:05] jam: here [00:06] So... standup meeting for 2008-08-13 [00:06] with yet more tweaks as I find issues in testing, such as uninstall problems, etc [00:06] spiv: what are you working on today and yesterday [00:06] markh: I understand the patches you are describing, I wish you had nominated them as 1.6 patches. [00:06] Since you are going to use them for a 1.6 release [00:07] hence.... they need to be in 1.6 [00:07] they aren't complete - I last made a change 3 days ago to it [00:07] Yesterday I got the improved testing docs merged, reviewed some of lifeless's stuff, and made a bit of progress on the HPSS effort tests. [00:07] Today I'm going to focus on the effort tests, plus mentally willing 1.6 to get released ;) [00:07] markh: I would rather you focused on getting something complete, that can be a 1.6 release, than having it perfect. [00:08] We can make it perfect for 1.7 [00:08] 1.7 isn't very far away, after all. [00:08] markh: I'll be the 1.7 manager, and if I have any say about it, we'll follow a strict timetable [00:08] so pushing 1.6 back [00:08] means that 1.7 will release the next day [00:09] spiv: ok, today was focused on getting 1.6rc2 out the door [00:09] which was successful [00:09] I don't see a huge issue in me releasing my "bzr + tortoise" binaries called "1.6" when they are infact 1.6 + 2 build/installer related patches [00:09] with zero changes to bzr itself [00:09] jam: hooray! [00:09] markh: Because I can't do "bzr co http://bazaar-vcs.org/bzr/bzr.1.6" and get what we released as bzr-1.6-win32 [00:10] markh: aka, I can't easily *reproduce* your work [00:10] It is all on *you*, and I'd rather have it in the system [00:11] markh: If you feel it isn't really worth merging, perhaps it could be a bzr-1.6-win32 branch or something [00:11] but I'd really rather avoid that. [00:11] if I publish those 2 patches, and those patches are only related to the binaries built that include tortoise, then I really don't share your concern. Release a stand-alone binary without tortoise using the existing setup.py if it bothers you that much [00:11] I *really* want a snapshot we could use. [00:12] markh: I don't want you to be the only person who can make a release of the official binaries. I think that is a valid concern. [00:12] I think for development processes [00:12] having the release be [00:12] tag the branch [00:12] 'make dist' [00:12] publish results [00:12] is a wonderful workflow [00:12] Having it be [00:12] make dist [00:12] then apply 3 patches [00:12] then make win32-installer [00:13] etc [00:13] is not a good *process* [00:13] which is what I'm trying to avoid. [00:13] spiv: Tomorrow is more triaging to make sure we are ready for 1.6-final, as well as getting my stuff together for 1.7 Metronome emails [00:13] (something we have also been missing) [00:13] TWiB should also be happening tomorrow [00:13] as I've missed it for 2 weeks now. [00:14] rockstar: ^^ [00:14] And I'd *like* to get to bringing the btree code into core bzr [00:14] I may not get that far. [00:15] lifeless: speaking of which, I'd like to hear your thoughts on a 1.6-final that had the log regression. [00:15] Martin seemed to feel it was a critical blocker [00:15] but he's not here to expand on that [00:15] TWiB? [00:15] Oh, right [00:15] This Week in Bazaar [00:15] yes, I agree its not a good workflow and I don't propose it as an ongoing process. Regardless, I consider myself appropriately scolded [00:15] markh: So make them public, I'll merge them for 1.6-final [00:15] and the problem is solved :) [00:16] As long as they are *usable* [00:16] You've convinced me about bundling TBZR [00:16] And you've almost convinced me about paramiko [00:16] that wasn't your approach when you reviewed them last time! [00:16] markh: I need a release [00:16] that causes friction :) [00:16] * awilkins can build the win32 stuff (up to the python installers so far) [00:16] I don't want to use an ad-hoc release unless we must. [00:17] awilkins: I can build the installers, but I would like to have our "official" build, which will be TBZR + qbzr, etc. [00:17] Either we get it for 1.6 [00:17] or it gets delayed to 1.7 IMO [00:17] Hmm. [00:17] I'll get it to you in an hour [00:17] I'd rather not have an ad-hoc build for 1.6 [00:17] Is qbzr better than Olive? [00:17] markh: If they are as unintrusive as you say, I'll be okay bringing them in for 1.7 [00:17] anyone about that can help me track down #254797, _read_bytes not defined when using smart protocol [00:17] awilkins: It is more Windows-like [00:18] as it is built on QT [00:18] there are tradeoffs between the two [00:18] qlog is better than bzr viz (IMO) [00:18] but gannotate is better than qannotate [00:18] bzr viz is what I use most [00:18] awilkins: qlog allows folding merges [00:18] Hows the conflict dialog? [00:18] which is *huge* for me. [00:18] johnf: I can [00:18] awilkins: I don't know that qbzr has conflict handling yet. [00:18] johnf: in a few minutes [00:19] spiv: cheers [00:19] spiv: I ran into that for _urllib when BB was not giving proper 404's by the way. [00:19] I have a patch to the bzr-gtk conflict window for starting my favourite win32 merge tools [00:19] spiv: anything else? [00:19] (for standup) [00:19] awilkins: wrt qbzr and tortoise, its probably fair to say we see better potential in qbzr, rather than thinking qbzr is already more "complete" [00:19] markh: Sounds good. I'll look forward to reading them tomorrow. If you are up late, I'd love to chat with you a bit [00:19] both about the locking issues you were seeing [00:19] and more potential specifically in the context of tortoise! [00:19] and about your development, etc. [00:20] Anyway, bed time [00:20] But now is family time [00:20] np - thanks [00:20] I might also be around in a couple hours depending on when everyone sleeps. [00:20] The good thing is that all these branches is actually giving me real experience doing non-trivial merges :) [00:20] * jam => away [00:20] jam: interesting [00:21] jml: no, not for the standup, thanks! [00:22] is there any way to copy/move a file WITH HISTORY between projects? [00:22] spiv: not for what standup? [00:22] I'm developing an app with components I'd like to eventually move into separate libraries [00:25] jam: reply, with worked example, which I think is what you wanted [00:25] bzr move cannot move between branches, which would be where I'd expect to see that, but was wondering if projects within a combined repo gave any benefits like that [00:25] jam: catch you later [00:26] jam: I know that martin would really like to avoid the log regression [00:26] I'm not sure how to do that :P [00:26] n[ate]vw: that's not possible as far as I know [00:26] * markh wonders what will happen if he sneaks in a transparent version of bzr.ico rather than the one that is in the branch... [00:28] james_w: so no plugins could either? basically, I'd be nice to take files like MyFloatStuff.c and MyMathStuff.c and put them into a separate "NumberLibrary" project without losing the histories [00:29] n[ate]vw: not possible. You could take a branch and delete everything else from the branch and just have the two files from that point on [00:31] that might work alright, especially if bzr ever gets horizons (?) or whatever they call branching just a recent history [00:32] stacked branches are in 1.6, history horizon is a way off [00:33] uhm [00:33] bzr split [00:33] kthxdone [00:34] lifeless: your rules patch still has "respectively" in the docs, now for a singular item [00:35] james_w: seems like I just skimmed something about stacked branches, but do you have a link? [00:35] lifeless: excellent, thanks [00:36] james_w: thanks [00:36] I gotta love "merge --reprocess" - it took a 74 line conflict region down to the 1 line it really is :) [00:37] jml: your nick is too close to jam's :( [00:37] jml: at least for these pre-coffee fingers. [00:37] spiv: you know the solution to that! [00:38] cut off the fingers! [00:38] james_w: n/m found http://jam-bazaar.blogspot.com/2008/05/this-week-in-bazaar_29.html which was enough of a memory jog, I think I saw that in the checkouts help or something [00:39] oh, http://doc.bazaar-vcs.org/latest/en/user-guide/index.html#using-stacked-branches is where I saw it, FTR [00:39] abentley: are you around ? [00:40] abentley: my fix to iter_changes to be consistent has found a bug in diff that would show up on non-dirstate trees [00:40] abentley: but I'm not sure of the right behaviour [00:47] jam, TWiB is acknowledged, with high priority. [00:49] markh: what does bundling mean? [00:49] markh: I hoep it doesn't mean 'import into trunk' ? [00:49] one sec... [00:49] spiv: so it looks like medium.py is calling read_bytes on HTTPTransportBase but it's only implemented in SmartClientHTTPMediumRequest so maybe the read bytes should be on getsmartmedium?? [00:50] I'm totally poking in the dark here of course since I have no understanding of how this all fits together :) [00:50] lifeless: i don't think abentley is aroudn [00:51] johnf: what bzr version? [00:52] lifeless: 1.6rc2 and bzr.dev seems to exhibit the same bug [01:02] johnf: Ok, I'm looking into this one now. [01:02] spiv: let me know if I can help at all [01:02] spiv: I'm happy to look into it if pointed in the right direction [01:04] johnf: I think I have an idea about what's going on [01:04] johnf: I landed a change in 1.6 that tidied up a bunch of the logic around _read_bytes in bzrlib/smart/medium.py [01:05] johnf: part of that I think was moving methods from the mediumrequest into the medium [01:05] spiv: that makes sense [01:05] It wouldn't surprise me if the HTTP code didn't quite keep up. I thought I had fixed it (I definitely remember touching the HTTP code during that work), but I guess our test coverage is a bit lacking here. [01:11] Ah, I think SmartClientHTTPMediumRequest needs to implement read_line [01:11] lifeless: the bzr binary will bundle a few other binaries too (bzr-svn, qbzr, tortoise). The bzr.dev trunk's setup.py will get that capability, but no other code will be imported. Is that what you were asking? [01:11] Otherwise the default implementation falls back to calling that method on the medium, which is unimplemented in this case. [01:12] markh: cool; I was wondering if you intended to drop a copy of paramiko into the trunk etc [01:12] markh: that would have been concerning [01:13] lifeless: nope - just setup.py will kinda assume it is in-place when you make binaries [01:14] markh: windows binaries right ? [01:14] correct [01:14] kool [01:15] from a QA POV, we probably need to get the the point where setup.py nominates *exactly* what is bundled and fails if anything isn't there. It shouldn't be possible to "forget" to include something - but that can wait... [01:21] spiv: bug 257730 [01:21] Launchpad bug 257730 in bzr "bzr crashes during bzr pull" [Undecided,New] https://launchpad.net/bugs/257730 [01:22] johnf: ok, I have a probable fix in hand [01:23] johnf: http://rafb.net/p/XvhCPc82.html [01:23] lifeless: that looks like the same bug, thanks [01:24] yah [01:26] jam: I'm going to ask for the fix I'm doing for #254797 to go in 1.6 [01:32] lifeless: ping [01:33] hi [01:33] hey, first, thanks for the help on the article. The feedback from the head editor was great and it'll be out in pymag in sept [01:33] got bumped up a month [01:34] cool [01:34] I got asked to do a follow up article and I was thinking of covering a couple of workflows. Mainly a centralized (for the svn folks) and decentrailzed with share mainline [01:34] as I think those two are pretty common/useful for a large group out there [01:34] sounds good [01:34] is that your take or would another workflow better show off bzr or anything? [01:34] uhm [01:35] I think you should write about things you've experienced or played with [01:35] or helped people with [01:35] ok, definitely [01:37] It doesn't help that pycurl tests give (55, 'select/poll returned error') on my laptop. [01:41] spiv: that did the trick. Thanks === beuno is now known as beuno-dinner === beuno-dinner is now known as beuno [01:48] johnf: it has a bug, though :) [01:48] johnf: you may also be able to work around it by prefixing "nosmart+" to the http:// URL. [01:49] johnf: I'll send a polished patch to the list fairly shortly. === kiko-afk is now known as kiko-zzz [01:49] spiv: except I'm using a smart server bzr+https:// [01:49] Ah, in that case not so much :) [01:49] (The buglet is that there's a "return bytes" line in the _get_line function that needs to be "return bytes, ''" [01:50] ) [01:50] (Probably not significant in normal use) [02:01] Whoever just branched from my server (LP?) managed to download half of a 2 MB pack once, then the entire pack twice. Good going, bzr. [02:01] * Peng_ is away now. [02:01] Peng_: bleep [02:02] Peng_: same IP ? [02:05] Peng_: That would be me and my squid proxy I think. [02:05] Peng_: sorry! [02:06] spiv: upgrade it :) [02:06] lifeless: get it backported to hardy (or point me to a PPA I guess...) [02:06] spiv: feh [02:07] lifeless: that's my attitude too ;) [02:07] spiv: need a review for that patch" [02:07] ? [02:07] also, my rules one needs a review [02:08] and I'm wondering if we should file a bug on python for that 'cant write 80MB on smb reliably' bug [02:08] lifeless: I will need a review soon, not quite yet. [02:09] lifeless: hmm, probably. what happens exactly? Large writes get an EINVAL sometimes? [02:09] 22 whatever that is [02:10] bug 255656 [02:10] Launchpad bug 255656 in bzr ""bzr: ERROR: [Errno 22] Invalid argument" when "bzr pack" is executed manually or when "autopack" is triggered on a repository located on a windows network share" [Undecided,New] https://launchpad.net/bugs/255656 [02:12] lifeless: yeah, I'd bugger a file [02:12] lifeless: I wouldn't be very optimistic about it getting fixed, but you never know... [02:15] lifeless: hi, regarding your solution to bug 255656: I was told here that the solution is considered to be just a workaround for a bug in python.... [02:16] and that workarounds are not likely to be merged into bzr 1.6 [02:16] Ah, Squid. That would explain it. [02:17] * Peng_ goes back to being away. [02:17] what do you think? will there be a achance to get it merged into future revision (for the case python's bug doesn't get fixed) [02:17] spiv: You owe me $0.003 in wasted bandwidth! [02:18] Peng_: I'll have to buy you 1 mL of beer sometime... [02:28] jonnydee: its a bug [02:29] jonnydee: bzr supports python 2.4, so we have to fix it in bzr [02:39] rockstar: btw, did you end up doing much with that plugin you were writing in Dunedin? [02:40] jml, yes, but I haven't polished it. I didn't think there was much interest in it, so it got to my needs, and I quit. :) [02:40] Would you like me to make an official lp project for it? [02:41] hmm, is there a way for me to edit the checkin message after it was committed? [02:41] rockstar: do you have a published branch at least? [02:41] jml, no [02:41] * rockstar is ashamed [02:43] rockstar: +junk! [02:43] jml, yea yea... [02:43] warren: If you haven't pushed yet, and it's the most recent revision, you can uncommit and recommit. [02:44] someone else committed it, but I want to edit the commit message before pushing it to the real trunk [02:45] * Peng_ goes back to being away. [02:47] Peng_: you don't seem to be very good at being away [02:51] lifeless: so, we still hacking on Saturday? [02:51] if so, where, when and can RAOF come too? [02:53] I want to buy lingua latina [02:53] I think lynne would probably appreciate a little space, so not here [02:53] sure RAOF would be good company too [02:54] Howdie. [02:54] My place _could_ work. Possibly. There's a table and couch and stuff. [02:55] RAOF: where is your place? [02:55] Kensington. That makes it quite some way from both you and jml [02:55] indeedy [02:56] jml: whats your place like? [02:56] internetless. [02:56] jml: where are you now? [02:56] lifeless: spiv & Mary's place [02:56] ah [02:56] and next week ... ? [02:57] probably still up at Andrew & Mary's -- I've got a key. [02:59] well, there is a possibility. If spiv and mary would be happy with that. [02:59] I'll check in with Lynne when she gets home about doing it here [03:01] lifeless: ahh, ok -- thanks, taht's good news :) === mw is now known as mw|out [03:13] Question: Does bzr have any problem with many commits? Ie, are tiny commits about fixing little bugs, etc, acceptable in BZR? [03:14] Leefmc: absolutely [03:14] james_w: K [03:15] Anyone else used "Editra" before? I just learned of it today and it appears to have bzr support out of the box. [03:18] lifeless: Kensington isn't that far away. [03:20] where has spiv gone? [03:21] or going? :) [03:22] oh bugger - I see I should have put a 1.6 in the subject line for BB to see it targets 1.6... [03:23] lifeless: if it means the plants get watered, then we can probably cope with that... [03:24] markh: I'll be spending a couple of weeks in the South Island of NZ [03:24] ahh, nice :) [03:24] markh: and trying not to cut my head open with a snowboard ;) [03:24] oh that's right - you do that regularly? [03:25] Not very, which is probably the problem... [03:25] :) [03:27] lifeless: fix for #254797 sent to the list, btw [03:27] spiv: cool [03:29] jml: I know where spivs place is better [03:30] let's all party at spiv's while they are gone! [03:53] jam: welcome back :) [03:53] lifeless: well, for a bit at least [03:53] so I sent in a patch, its really quite tiny [03:56] Mmph. Has check gotten slower? [03:56] lifeless: so you basically just changed it so there are *no* per-branch config items? [03:56] Hmm, I thought there was some easy, obvious way to split a subdir with history into a new branch, but I don't see it. [03:56] I thought the point was to not version them [03:56] not to disable them completely [03:57] jam: Martin's request was to disable it rather than not-version [03:57] as he says: [03:58] If this is not baked yet then I think it would be cleaner to remove [03:58] the feature of reading from this file, rather than specially blocking [03:58] it out from being committed. We could still perhaps allow a branch or [03:58] plugin for trying filters to turn it back on. [03:58] ah, I do remember that. [03:58] Good enough I guess. [03:58] I still disagree with it, and I don't quite feel that Ian agrees, but I can accept the "lets postpone for now" [03:58] thank you [03:59] I'll merge that patch to trunk now then? [03:59] lifeless: please don't tie up the pqm yet :) [03:59] If I'm lucky, I'll get the 1.6 stuff merged that people want [03:59] and we can do a rc3 by tomorrow [03:59] so -final doesn't have to be delayed. [04:03] that would be good [04:03] I'll merge the rules after you go then [04:04] lifeless: It seems your patch is built on bzr.dev, not bzr 1.6 [04:04] do you want me to merge it to trunk and 1.6, or you'll do the cherrypick ? [04:04] So I'll cherry pick it [04:04] and you can merge it directly to trunk [04:04] ok [04:04] mwhudson, hi [04:04] I just addressed your review on my diff branch [04:04] jam: on inventories; does my worked example demonstrate the things you were concerned about ? [04:04] beuno: hi [04:05] lifeless: Did you ever get a chance to look back at bug 255155 (knit file permissions)? [04:05] Launchpad bug 255155 in bzr "bzr doesn't use the repository directory for permissions" [Medium,Confirmed] https://launchpad.net/bugs/255155 [04:05] beuno: oh right [04:05] fullermd: no, I haven't [04:05] beuno: i still think the diff should be against compare_revid if there is one [04:05] fullermd: can you upgrade to packs ? [04:05] mwhudson, and see 2 remaining bugs. The javascript one, I can squash tomorrow. bug #243415, not so sure about where to start [04:05] lifeless: Well you mention "minor variations" which doesn't seem to fit well with validators and "deterministic" values [04:05] Launchpad bug 243415 in loggerhead "Tracebacks go to console but not log file" [Medium,Confirmed] https://launchpad.net/bugs/243415 [04:05] jam: I say that if we *don't do X* there would be [04:06] jam: the sentence before described X [04:06] mwhudson, aaaaaaaaaaaah, I see. I understand what you meant now. I tend to ignore the fact that we have compare_id, since the UI for it is so ugly [04:06] lifeless: Well... _can_. would rather not, for non-technical reasons. [04:06] beuno: yeah, but ... [04:06] fullermd: you have users using bzr < 0.92 ? [04:07] lifeless: No, but it means a soft-flag day of making everyone upgrade their branches (or swallow abysmal performance). And there'll be a hard flag coming up shortly when the next and rich-root-capable standard format comes along (in 1.2 or something soon like that) [04:07] fullermd: the problem with permissions is they don't really work well enough [04:08] fullermd: huh? why would there be a performance hit? [04:08] I'd rather only ram that through once. [04:08] Because pulling from packs into knits was life-threateningly slow, at least last time I tried. [04:08] Re-annotating and all. [04:08] fullermd: please try again, it should not be [04:08] fullermd: make sure you have the C extensions [04:09] mwhudson, I'll address the compare_id bit. Any ideas for #243415? [04:09] Hm. I'll try to fiddle with that tonite... [04:09] beuno: well, serve-branches still doesn't actually have a logging section, does it? [04:09] fullermd: slower-than-normal yes, life threatening slow - no, jam fixed that weeks ago [04:10] mwhudson, it looks like it does, yes [04:11] jam: thanks for the approval. Shall I upload my current rc2 binary directly to launchpad for the project and mail the bzr list, to try and get some feedback in time for a final? Or would you prefer more controlled testing by people first? [04:11] beuno: well, not one that sets up logging to a file ... ? [04:11] jam: this was the quote I think:"If we add a [04:11] constraint to the usual LPC rules that we must bubble compression [04:11] opportunities as high up the tree as possible, then yes. If we don't, I [04:11] think it is possible to have minor variations." [04:11] spiv: ugh... I just hit something nasty [04:11] jam: I was trying to be complete, possibly adding confusion. [04:11] I'm using bzr-email on a bound branch over bzr+ssh [04:11] and it seems to be doing the log on the bzr+ssh branch [04:11] and taking *forever* [04:12] markh: well, if beuno is up for it, we may have a 1.6rc3 tonight/tomorrow early [04:12] with your changes in it [04:12] mwhudson, doesn't line 48+ do that? http://bazaar.launchpad.net/~loggerhead-team/loggerhead/trunk/annotate/210?file_id=servebranches.py-20080618011543-s6ydx5c3bl38zap6-1 [04:12] my rc2 binary has only those changes you just approved. [04:12] (oh - and an icon with a transparent background ;) [04:13] jam, I can do rc3 tomorrow morning, sure (~10hs) [04:13] mwhudson, ignore me, it seems it doesn't [04:13] markh: ... what did I just mention about having the official build as part of core? :) [04:13] mwhudson, I'm tired :) [04:13] beuno: fair enough :) [04:13] mwhudson, so, not for 1.6? [04:14] beuno: so loggerhead _should_ have logging and the logging _should_ capture tracebacks... [04:14] beuno: but yeah [04:14] mwhudson, ok, different bug to address [04:15] mwhudson, how does releasing 1.6 this week sound? [04:15] beuno: awesome! [04:15] \o/ [04:15] jelmer even packaged it, so I can probably upload it to PPA [04:17] pickscrape, how's your branch coming along? can you make it this week? [04:22] lifeless, spiv: I would really like to include a NEWS entry with your changes. [04:22] Especially for "reasons why we went past an rc" I feel each commit should have a NEWS entry. [04:23] Could you write up a simple one for me? [04:23] sure, I guess [04:23] beuno: that's a point [04:23] beuno: how is loggerhead's NEWS doing? [04:23] mwhudson, well, it's... uhm... we try not to push it too hard [04:24] * beuno adds another task to his ToDo list [04:24] i guess we should write some stuff [04:24] beuno: oh, also, we have the issue that if i merge the current loggerhead trunk to launchpad's codebase [04:24] beuno: it will go blue [04:24] we should, um, do something about that [04:25] mwhudson, ah, yeah, I'd have to merge && revert && commit. If you point me at the branch tomorrow, I'll merge it in [04:25] beuno: ah yeah, that'll work [04:31] good day/evening. is there a logout equivalent to bzr launchpad-login? [04:31] Jucato: I don't think so [04:31] jml: ^ [04:31] lifeless, markh, beuno, spiv: Well, after just submitting all 3 patches to the wrong branch (and having them all merged), I'm re-submitting them to the correct branch, and going to bed. I'll work on 1.6rc3 tomorrow. [04:31] Jucato: What would it do? [04:31] jam: :P [04:32] jam: what branch did they land on ? [04:32] jam: ack - thanks! [04:32] lifeless: bzr.dev [04:32] jam: also, re - log [04:32] before I used bzr launchpad-login , this command worked: bzr checkout lp:~ubuntu-core-doc/ubuntu-doc/kubuntu-intrepid. after logging in, I get this error [04:32] bzr: ERROR: Repository KnitPackRepository ('file:///home/jucato/kubuntu-intrepid/.bzr/repository') is not compatible with repostiory RemoteRepository(bzr+ssh://jucato@bazaar.launchpad.net/%7Eubuntu-core-doc/ubuntu-doc/kubuntu-interpid/.bzr/) [04:32] jam: do you have a minute before you go, I can work on it over your night [04:32] jam: hmm, bzr+ssh should be unaffected by my changes [04:32] jam: so I'm not sure why bzr-email would be slower... [04:32] jam: good night. [04:32] lifeless: I've got a bit [04:32] RAOF: I think it would remove your credentials [04:32] just don't expect high quality discussions :) [04:33] jam: so, AIUI we previously called 'file_vf.versions()' which did the _prefix iteration triggering a full read [04:33] lifeless: something like that, yes [04:34] I propose a patch to do the following: [04:34] hm.. I just nuked ~/.bazaar and it works now again.. but the reason I logged in was because I got the note "You have not informed bzr of your launchpad login. If you are attempting a write operation and it fails, run "bzr launchpad-login YOUR_ID" and try again. [04:34] two things [04:34] spiv: I don't know that you specifically effected it, or if it just that 'bzr log bzr+ssh' is really poor [04:34] if the regions-unparsed ever reaches zero, convert the in memory structure to a full-buffered one. [04:35] actually no, rephrasing [04:35] Jucato: That error looks like you've got an already-existing directory? Does it work trying to checkout to a new directory? [04:36] there is an open bug spiv was looking at on kubuntu-docs [04:36] RAOF: nope. I even rm -rf'ed the contents of that directory [04:36] I think its something what vis-a-vis repo format preservation [04:37] RAOF: I got it working for now by nuking ~/.bazaar. I'll wrestle with the problem again when I need to push something :/ [04:38] jam: actually, scratch that - you go to bed, I'll get some stats together [04:38] lifeless: I think there are 2 performance bugs [04:38] jam: any particular size repo you were testing on? [04:38] 1 is that we don't trigger buffering [04:38] lifeless: http://people.ubuntu.com/~jameinel/mysql-unpacked.tar.bz2 [04:39] thats going to hurt me isn't it [04:39] lifeless: a mysql repository, with an "optimally unpacked" layout [04:39] its 652 MB [04:39] only got 700M free on disk [04:39] lifeless: It shows up with bzr.dev [04:39] I can't even download an untar it ;) [04:39] lifeless: so there is the "if we hit all of history, buffering is faster" bug [04:40] lifeless: and there is the "requesting all (file_id, revision_id) tuples" from a knitpack repo issue. [04:40] I don't know which is the bigger issue [04:40] whats the second one? [04:40] lifeless: misses in the knitgraphindex [04:40] it has to bisect search for every non-existing key, into every pack file [04:40] right [04:40] so 20 pack files, require 2 bisect searches * N missing keys [04:41] 'require 20 * N' [04:41] its the same problem [04:41] ok [04:41] go sleep, I'll see if I can generate a hack for 1.6/.dev [04:41] I suppose a dict lookup miss is significantly faster [04:41] lifeless: just don't over-engineer it for a regression quickfix :) [04:42] jam: we need to fix it [04:42] I jave 4 and a bit hour until I raid, so there is time [04:43] mwhudson, pushed the changes with compare_revid. I'm heading to bed now, and start tomorrow with the remaining bug + NEWS updates [04:43] beuno: excellent [04:43] (what I did feels a bit hackish though) [04:44] lifeless: I just feel that if we could get a peak into the per-file graph, we could do it a lot cheaper by walking the ancestry [04:44] without having to buffer_all. [04:44] jam: but we do that [04:44] lifeless: by grabbing every possible key, which is bad for KnitGraph. [04:45] we do modified_text_versions = branch.repository.texts.get_parent_map(text_keys) [04:45] jam: the thing is, we've already walked the graph once to do the revision sorting [04:45] graph.iter_ancestry([known_tip]) [04:45] lifeless: different graph [04:45] jam: I know [04:46] jam: its much better on IO to do what we do today, simply sorting by size to have the largest index first would probably reduce most of the pain [04:46] certainly loading all .tix indices is bad when you want just a single file_id [04:46] I don't know that _iter_prefix is smart enough about how it does it, though. [04:46] jam: its better on IO compared to just walking, because just walking is steps latency [04:46] _prefix is dumb but fixable [04:47] but we're not using _preix now [04:47] _prefix is dumb, but fixable, and 3x faster than get_all() :) [04:47] is NEWS, or builtins.py better you think ? [04:47] jam: uhm, prefix is basically get_all [04:47] lifeless: actually, you want something that changes relatively little versus the whole tree [04:48] rules.py? :P [04:48] lifeless: but done *in order* (I meant to say get_parent_map(all)) [04:48] _prefix is better because it reads the whole .tix [04:49] hi [04:49] lifeless: _prefix is better because it does 1 linear read into a dict cache, serves results from there (though we may not actually hit the per-file graph much after that point) [04:50] rather than bisecting an in-memory structure 10,000 *20 times [04:50] Perforce revision graph... http://www.perforce.com/perforce/products/tours/p4v/p4v_revision_graph_6.html [04:50] jam: yes, and it does those details because it reads the whole tix [04:50] I think we both have a feel [04:50] I'll welcome a patch [04:50] jam: I'm talking big picture, you're talking fine detail [04:50] I'll see if I can get something sensible for you to consider [04:53] JonCruz: you might take a look at the "qbzr" plugin and "bzr qlog". It allows you to collapse and expand branches, which works a lot better when you have the 100s of branches that we have with bzr [04:53] (i'm personally responsible for >200 feature branches of bzr) [04:53] the functionality is one of the nicer parts. [04:53] jam: it's a little hard to explain without actually using it [04:54] JonCruz: I didn't mean to start much of a conversation, I'm really tired and heading to bed [04:54] I just thought I'd point you to something. [04:54] I'd checked them out a while back [04:54] jam: [04:55] hey JonCruz [04:55] lifeless: ? [04:55] http://rafb.net/p/gbv3vY51.html [04:55] JonCruz: it does look interesting, but I don't see it scaling above 4 or so branches [04:55] certainly, above 3 the lines start having to cross somewhere [04:55] Oh, it scales easily to dozens of branches [04:56] I've used it with some large enterprises [04:56] 22 seconds with that patch [04:56] I asked JonCruz to step in, as he was saying that this perforce viewer is great, and so I wanted to find out why so that the bzr gui tools could improve [04:56] testing without [04:56] * beuno is off to bed. night everybody! [04:56] one aspect is that navigator window in the corner. Allows for zooming in and out [04:56] 34 without [04:56] so its possibly sufficient [04:57] lifeless: looks interesting, unfortunately rafb.net doesn't let me copy and paste easily, I'll test on my mysql repo [04:57] the shapes also show merge, copy, branch start, branch end, etc. [04:58] pick-any-two-and-diff is also handy [04:58] the navigator is interesting [04:58] ah, it's not file based as I thought, it's just perforce being different [04:58] jam: firefox/epiphany copy & pastes from that rafb.net page just fine for me... [04:59] it [04:59] it's a bit file oriented... but it would be nice to track code blobs in a similar fasion. [04:59] that tool helps significantly when tracking down bugs in software that's been around for a bit [04:59] it's more of a canvas this I think, which would be a bit of work, but if the benefits are there and rely on that then it may be necessary [05:00] also it focuses things for those with a spacial way of thinking, as opposed to the list-based approach of http://qbzr.googlegroups.com/web/qlog.png [05:00] list-based is also good [05:01] diff between any two is something that I know is missing in bzr-gtk, and there is an open bug I think [05:01] spiv: I seem to get a consistent "malformed patch" with my cut-and-paste attempts [05:01] so in that p4v view the revision numbers are across the top. In the QBzr one they are down the left [05:02] jam: huh, weird. [05:02] lifeless: pong [05:02] hey [05:02] I mailed the list [05:02] jam: was it faster? [05:02] lifeless: still copying the repo to this disk [05:02] oh heh [05:03] their "blame" tool is also nice live http://www.perforce.com/perforce/products/tours/p4v/p4v_time_lapse_view_7.html [05:03] lifeless: and, of course, getting distracted trying to actually 'patch' rather than do it manually. [05:03] rafb used to allow text access [05:03] I wonder why they don't anymore [05:03] jelmer: http://www.perforce.com/perforce/products/tours/p4v/p4v_revision_graph_6.html <- you can ask me to explain tomorrow if you don't have the scrollback [05:04] hm, somewhere to steal loggerhead ideas from! [05:05] Oooh. their main page has some videos http://www.perforce.com/perforce/products/p4v.html [05:05] I guess I should check if those are helpful [05:07] lifeless: "time bzr log" goes from 40s => 28s, versus 28.8 for bzr.1.3 [05:07] jam: so its a win ? [05:08] lifeless: "time bzr log file" seems to be around 43s, which would be a definite win over the 2m+ from before [05:08] I'll finish testing, but yeah, it looks like a big win [05:08] ok [05:08] it may not be sufficient [05:08] so, for bzr1.3 it was 35s for 'bzr log file' versus 43s. [05:08] but as its implementing a TODO from the original design :) [05:08] So you aren't *quite* there [05:09] ok [05:09] mysql is a very big tree [05:09] but I'm willing to take 43s versus 2min + [05:09] its likely that if you print [05:09] and accept a small regression [05:09] len(key), self.key_count() [05:09] you'll see a ration below 20 [05:09] *ratio* [05:11] lifeless: sure, and the code you wrote doesn't take into account how much you've already read, right? [05:11] james_w: yes. It appears that their screencast video on the revision graph is helpful http://filehost.perforce.com/downloads/media/rg/rg.html [05:11] jam: right [05:11] lifeless: but it is 2 min 27s without your patch [05:11] jam: I aimed for quick [05:11] for 'bzr log file' [05:11] JonCruz: cool, thanks, I'll take a look tomorrow [05:11] heh heh, diff -r is bigger than diff -r 1 for loggerhead currently :) [05:11] lifeless: So I think it passes my thresholds [05:11] does it help annotate? [05:13] JonCruz: thanks for the pointers, I've got to sleep now, I'll swing by if I have any more questions [05:16] lifeless: so for the *big* packs, I see 59632 35579 0.60 [05:16] aka, the 60,000 revisions are always >1/20th of the size of a text index [05:16] that will do _buffer_all :P [05:16] even optimally packed [05:17] I'm not sure why its staying slower then [05:17] hrm - its seems that pycurl will wait up to 15 minutes before deciding a read had died and retrying it? [05:17] lifeless: there are other queries that aren't triggering it, but I'm not going to dig into it all. I'll check annotate. [05:17] s/up to// [05:18] markh: that smells like tcp [05:18] 2 errors pulling from bzr.dev so far == 30 mins [05:18] lifeless: well, first hand says "within the noise" [05:19] 7.8 for bzr 1.3, 7.9 with your patch, 8.3 for bzr.dev [05:19] so likely it helps [05:19] but the margins are pretty small [05:19] lifeless: ATM, I would give BB:approve, but I think I should sleep first :) [05:20] * jam => to bed [05:20] jam: gnight [05:27] abentley: I think bb is talking to itself [05:27] abentley: :P [05:28] lifeless: joy. [05:37] abentley: what do you think about the diff 'added but missing' issue? [05:38] lifeless: Dunno. i've been fixing BB. [05:38] ah [05:38] can I run it past you ? [05:40] Sure [05:40] This the iter_changes bug? [05:41] yeah [05:41] fixing dirstate to do what inventory based ones does made a diff test break [05:41] the diff test did [05:41] add('foo') [05:41] rm('foo') [05:41] diff -> wanted no outout, status 0 [05:42] now it shows garbage - [05:43] kind change, mode change [05:43] which is strictly correct but not very useful [05:44] I think 'added' with no content would be a better display for diff [05:45] lifeless: So the iter_changes behavior sounds correct. The diff behavior sounds whack. We've usually treated missing files as though they had been removed. [05:46] So I would expect diff to produce no output. [05:46] ah [05:47] "added with no content" might be more sensible if you land a patch requiring files to be manually removed. [05:47] But diff has never tried to be as informative about file status as "status". [05:47] well, such a patch seems to be contentious :) [05:48] sure, I can make it do nothing [05:48] Cool. [05:48] I know diff != status [05:48] but deliberately hiding seems a little strange to me [05:49] I'll get on hiding it though [05:50] What would you expect the behavior to be for "removed-but-not-deleted" files? [05:50] IIRC it's the same as "removed-and-deleted". [05:51] well diff shows a full content removal [05:51] and assumes no content change [06:07] abentley: [06:07] === modified file 'bzrlib/diff.py' [06:07] --- bzrlib/diff.py 2008-06-11 03:56:46 +0000 [06:07] +++ bzrlib/diff.py 2008-08-14 05:07:18 +0000 [06:07] @@ -874,7 +874,9 @@ [06:07] return path.encode(self.path_encoding, "replace") [06:07] for (file_id, paths, changed_content, versioned, parent, name, kind, [06:07] executable) in sorted(iterator, key=changes_key): [06:07] - if parent == (None, None): [06:07] + # The root does not get diffed, and items with no known kind (that [06:07] + # is, missing) in both trees are skipped as well. [06:07] + if parent == (None, None) or kind == (None, None): [06:07] seem reasonable ? [06:08] lifeless: Yes, that seems fine. [06:09] lifeless: is \> a special string in regexes? [06:09] in some engines yes [06:10] \ is 'match the word foo [06:10] I'm trying to decode what '\[MERGE\>' would match using python's engine. [06:11] I would expect it to match only "[MERGE>" [06:12] hmm [06:12] try \\> ? [06:12] no, thats wrong [06:12] but I mean, perhaps the \ is being caught by python [06:12] r'\[MERGE\>' vs u'...' [06:15] Okay. [06:15] abentley: do I have bb:approve from you for that little patch? [06:15] if so, I can land the iter_changes fix [06:15] lifeless: Could you pastebin it so I can see it in context? [06:16] that was the entire thing [06:16] lifeless: I figured, but I wanted to see where it fit in the existing file. [06:16] I mean, its independent of the iter_changes fix, because its already broken for WT3 trees [06:17] but I can pastebin the whole branch if thats what you mean [06:18] I meant just pastebinning the patch, so that it's in a form I can appy. [06:19] http://pastebin.com/pastebin.php?dl=d62ba1f07 [06:22] jeepers [06:22] etag support for loggerhead in about 10 minutes [06:23] nice [06:24] ah, not quite [06:25] not really an either-or thing is it ? [06:26] well [06:26] i guess supporting etags isn't [06:26] but it's not much use unless i generate some too :) [06:26] lifeless: bb:approve [06:27] and the changelog view's isn't quite brain-dead simple [06:27] and actually, i only did the templated stuff so far [06:27] abentley: thanks! [06:33] lifeless: so, Hornsby's out. Let's go to Kensington (or alternatively go Internetless at mine, pending confirmation with flatmate.) [06:34] ok [06:38] lifeless: can you point me to something that explains what a 'weak etag' is? [06:40] i guess i should generate weak etags, as my tags won't change on template upgrades [06:44] a datestamp is a weak etag [06:44] a hash is a strong one [06:47] lifeless: ta, i found an rfc which made some kind of sense [06:48] lifeless: should i support if-modified-since and so on, or would you say etags suffice? [06:48] why are you doing this? [06:48] 13.3.3 rfc 2616 btw [06:48] so we can usefully put squid in front of it [06:48] oh right [06:49] IMS yes, definitely [06:50] squid will probably be sending IMS [06:50] rather than IAM [06:50] sorry, IM [06:51] lifeless: is there a reason why TestCase.make_branch and friends don't accept URLs? [06:51] jml: yes [06:51] lifeless: what is it? [06:52] (because it's making my life hard) [06:52] because we want one test to run on different transports [06:52] what do you need to do that you are having trouble doing ? [06:52] lifeless: I want to make a branch at a specific URL. [06:53] lifeless: I can do this, but it would be more convenient if I could use make_branch. [06:53] jml: obviously; I was being a bit more general [06:53] lifeless: oh, ok. [06:53] lifeless: so, I want to make a branch in a test in a place that Launchpad will find it. [06:54] lifeless: right, that's what i was reading, good to have it confirmed though [06:55] nice timing, freenode [06:55] jml: go on [06:56] lifeless: I am writing an acceptance test to show that Launchpad stacks branches that it mirrors. [06:57] jml: I can tell you what I would do [06:57] (other than making lp less picky for testing) :) [06:57] go ahead [06:57] I would set self.transport_readonly_server to HttpServer [06:58] (as ChrootedTestCase does) [06:58] but uncondiitonally [06:58] then [06:58] self.make_branch('foo') [06:58] and the url to give lp is [06:58] self.get_readonly_url('foo') [06:58] it will be an http url [06:59] that's not the branch I'm worried about creating. [06:59] ok [06:59] the branch I want to create is the stacked-on branch. [06:59] this is an acceptance test right? [06:59] yes. [07:00] so why isn't make_branch(foo), make_branch(bar), lp.mirror(foo), lp.mirror(bar) reasonable? [07:02] there are reasons. [07:03] ok [07:27] ohohoh I just had a thought [07:27] lifeless: those can be dangerous [07:27] if we used another char [07:27] or perhaps two columns [07:27] we can sensibly do diff after a merge [07:28] say two chars [07:28] -1foo [07:28] -2bar [07:28] + gam [07:28] (parent 1 had foo, parent 2 had bar, we have gam) [07:29] alternatively [07:29] - foo [07:29] +Mbar [07:29] + gam [07:29] basis has foo [07:29] the merge had bar [07:29] we have gam [07:30] I think the former is more useful, because unchanged local lines from the merge can just not be shown [07:31] Sounds interesting. [07:31] So, a slightly richer diff format, essentially? [07:31] That can represent more than just texts from {old,new} [07:44] spiv: yeah [07:45] I often want to know 'did I resolve this well' [07:45] and I think this would let me figure that out [07:46] I often want to know that too. [07:46] did my rm patch get reviewed? [07:47] I did review it. [07:48] * spiv checks the email escaped the laptop [07:48] ah [07:48] jam and I both voted tweak. [07:48] (for different issues :) [07:49] hm, what about using the diff's merge format? [07:49] er [07:49] I mean git's merge format [07:49] (And yes, my mail escaped) [07:50] spiv: 'deletes' is wrong [07:55] lifeless: huh? [07:56] your tweak, my mental grammar filter is objecting to using deletes [07:56] lifeless: I just checked, jml's mental grammar matches mine [07:57] I think you're both wrong. [07:58] now I need to go looking for singular verbs with plural subjects [07:58] lifeless: Shall I ask my linguist? :) [07:58] sure, though I'm looking for rationale not assertion [07:58] and she may not have time/interest to dig up a explanation [07:59] I'll find out if she does. [08:00] bzr is singular [08:01] delete is the verb [08:01] bzr is doing the deletion [08:01] lifeless: it's just a bad sentence. [08:01] (that's the official diagnosis ;) [08:01] so bzr is the subject, and thus subject-verb agreement -> [08:01] jml: so lets reword id [08:02] sure. [08:02] "Break any of these rules sooner than say anything outright barbarous." etc [08:03] it will have to wait, I have things to do before 6 [08:03] This makes bzr stop tracking changes to the specified files. It will also [08:03] delete them if they can easily be recovered using revert. [08:04] (That's my quick attempt at improving it) [08:04] anyhow, suject-verb agreement is why 'bzr delete' is correct, IMO [08:05] Yeah, I eventually managed to parse it the way necessary to see that. My very strong intuition was otherwise. [08:05] Do you like my rewrite? [08:05] so, 'bzr will also delete them ..' would work better in your restated sentence; using 'it' means more backtracking [08:05] other than that its fine. [08:05] Sure. [08:05] +1 on that. [08:06] thanks [08:13] bbiab [08:16] question, does bzr have issues with version control involving binary versions ? [08:17] as opposed to say text. [08:17] Nope. [08:17] spiv: so it just stores the entire file of the binary right ? [08:17] i believe with txt files version control apps generally use diff / patches right ? [08:17] "bzr diff" will decline to show you anything useful, but it'll store the versions just fine. [08:18] bzr's internal storage format isn't patch files. [08:18] That said, it is currently optimised for text files with newlines bytes. [08:19] spiv: but you can use it with binaries though right ? i'd imagine it does some kind of hash to determine modification. [08:19] So it won't (currently) store them very efficiently. Depending on the way the file changes it could easily just store the whole file for each new version. [08:20] spiv: okay, that was what i was wondering on. [08:21] Nonetheless, it's not like it's broken, it's just somewhat inefficient. [08:26] i'd like to use bzr-svn to fetch some svn repos. what is the current situation if one wants to use it with svn-1.4.6? [08:26] (without patching svn) [08:29] I believe the current bzr-svn trunk (and most recent beta release?) doesn't need any patching of svn [08:29] Check the README I guess. [08:39] release is supposed to happen soon? [08:40] gour: Yeah, pretty soon. See the mailing lsit. [08:40] (I think) [08:42] god [08:42] *good === salimander is now known as Sepheriel [10:45] hi, why should I choose bazaar over git? [10:46] ubuntu_: simpler UI and safer [10:46] ubuntu_: that's why i migrated from darcs to bzr instead to git. ymmv [10:46] what do you mean by simpler UI and safer? [10:46] ubuntu_, and it works with Launchapd (if you do open source stuff) :) [10:47] ubuntu_: just count how many commands are there in git, read about its model and see how can you shoot yourself in the foot ;) [10:48] ubuntu_, why not try both out and choose the one which you're more comfortable with? I tested mercurial and bzr, and bzr just felt a lot more smooth to work with. [10:48] i use git at the moment. it's fast and actually it's quite easy to use. [10:48] i heard of bzr not being as fast as git. [10:48] true. but i do not work on linux kernel :-) [10:48] ubuntu_, it's not. how big is your source tree? [10:48] and how many revisions does it have? [10:49] well my source tree is like one rails project, so it wouldn't matter i guess. [10:49] ubuntu_: with darcs i started using it after 5mins. bzr is similar - check http://doc.bazaar-vcs.org/bzr.dev/en/mini-tutorial/index.html [10:50] ubuntu_, It's pretty snappy with a ~1000 file 1200 revisions repository, so you should be okay too. [10:50] ubuntu_: nice and orthogonal command set supporting many different workflows...(d)vcs should be a tool i do not have to think to much, but just use it [10:51] but another thing is, that just what i read and heard is that git is used by far more projects than bzr... [10:51] I thought all the concepts was a bit confusing at first - shared repos, checkouts, lightweight.. ahh! [10:51] ubuntu_: that's also true. m$ windoze is used by far more users than linux, but i don't care :-) [10:52] i love my mac. [10:52] ;) [10:53] :-) [10:54] another thing: is it possible in bazaar to "change" the history? overwrite a commit, change the commit message etc. [10:54] ubuntu_: one selling point for bzr is its plugin system - rumor has it git doesn't support plugins? [10:55] ubuntu_: it's possible... afaik, it's not super-simple in the general case [10:56] ok. thanks to all! i'll give bzr a try. [10:57] ubuntu_: in the common case ("doh, i forgot to add file X" or "man, that commit message was really retarded") it's very simple: just "bzr uncommit", fix what went wrong and re-commit [10:58] yeah that's the simple case. but if it's "doh, that commit message is retarded" on commit 16 and we're at 24? [10:59] then you will have to rewrite the history, which will screw everybody who branched from you [10:59] ubuntu_: it's doable, but a bit more involved. [10:59] revision history in bzr is immutable [10:59] is it documented on bazaar-vcs.org ? [10:59] if you need to do a change like this, you need to make a new history [11:00] ubuntu_: not that I know. [11:00] ubuntu_: one (painful) way to do it is to "bzr uncommit" repeatedly [11:00] ubuntu_: another way is to use the rebase plugin [11:02] it should be pretty simple, something along these lines ;) bzr branch -r 16 some_branch fix_msg; bzr uncommit; bzr ci -m "New and improved commit message"; cd some_branch; bzr rebase -r17.. ../fix_msg [11:03] but since you're a git-guy I guess you all about rebasing already? [11:03] rebase wouldn't help you in this case [11:04] the replay command from the rebase plugin would [11:05] right, where replay command = bzr rebase :p [11:05] hmm.. this is interesting. what's the difference between replay and rebase? [11:06] maybe I misunderstand what bzr rebase -r does, but I really hope it does not drop revisions [11:07] replay is mass cherrypicking [11:07] rebase replays your local commits on top of a specified branch [11:08] luks, it doesn't. AFAIK, rebase does the same thing. [11:08] the same thing as what? [11:08] as replay [11:09] no [11:09] so what's the difference? [11:09] didn't I just say it? [11:09] but as I said, I'm not sure what `bzr rebase -r` does [11:10] luks: Maybe, but I'm not exactly sure what "mass cherrypicking" means.. [11:10] bzr merge -c X OTHER_BRANCH; bzr ci -m COMMIT_MESSAGE_OF_X [11:10] replay seems to be undocumented (bzrtools 1.3 something) so it's kind of hard to tell if the difference :) [11:10] bzr merge -c X+1 OTHER_BRANCH; bzr ci -m COMMIT_MESSAGE_OF_X+1 [11:10] etc. [11:11] ehm, and what does bzrtools have to do with this? :) [11:11] eh, sorry.. rebase 0.3 :) [11:11] rebase, by definition, should change the base of your local commits [11:12] that means it would not drop the revision with incorrect message [11:14] I *think* I see the difference now. It seems it's just a matter of syntax/workflow." [11:15] replaying revisions A..B from branchA onto branchB <=> rebasing branchB on branchA [11:15] well, you are wrong, but I'm not going to argue :) [11:15] that is true in some specific case, not in general [11:16] luks: ok, I'll take your word for it - I'm a rebase noob. [11:18] maybe, in the future, there will be documentation to enlighten me on the difference ;) [11:21] gimaker: http://rafb.net/p/ZfTkuu17.html [11:21] is this more clear? [11:22] or http://rafb.net/p/jE4zBV41.html to be more precise [11:23] as the new revision just look like the originals, they are not identical [11:25] wouldnt "(in branch B) bzr replay -r 3..4 A" be the same as "(in branch B) bzr rebase -r3.. branchA" ? [11:25] [11:26] sorry, I meant (in branchA) bzr rebase -r3.. branchB [11:27] that should also yield A->B->E->F->C'->D' ? [11:28] definitely too much rebasing here ;) [11:28] agreed ;) [11:30] I don't know what -r in rebase does [11:33] luks: rebase -rA..B OTHER will replay A..B from the current branch on OTHER. [11:33] gimaker: just tried it, /tmp/branchB$ bzr rebase -r3.. ../branchA/ still results in A - B - C - D - E' - F' [11:33] so, no, it doesn't :) [11:33] and it will definitely not apply it on OTHER [11:35] hm, I honestly don't understnad `rebase -r` [11:36] bzr rebase -r4.. ../branchA is A -> B -> C -> D -> D' -> E' -> F' [11:36] but E was never a parent of D, so I don't know what's going on [11:37] er, I mean D parent of E [11:39] oh, sorry, ignore me, I did something wrong [11:39] bzr rebase -r4.. ../branchA will drop the revision E, and the result will be A -> B -> C -> D -> F' [11:40] I'm surprised it drops the revision so easily though [11:40] luks: yes, but rebase -r3.. should give you A->B->C->D->E'->F', no? [11:40] gimaker: yes, as I said above [11:41] luks: but after playing a bit with it i can see that you're right... [11:41] so -r in rebase basically means that you can manually specify the 'common anccessor' [11:41] which can be destructive [11:41] (really destructive, not just rewriting history) [11:42] you can also use the --onto argument to specify where A..B should be rebased [11:44] luks: thanks for clarifying the replay command! it might provide quite useful indeed [11:45] gimaker: well, in the end it looks like you can get the same result using rebase, so technically you don't need it :) [11:46] but for the original question I'd still prefer the (for me) more obvious way: bzr branch -r X A B; cd B; bzr uncommit; bzr commit; bzr replay -R X+1 ../A [11:46] bzr replay -R X+1.. ../A [11:46] luks: hehe yeah, that was my point all along :) [11:46] but it's more involved, so I think I'll prefer the replay-way in the future :) [11:46] yeah, I didn't realize rebase can drop revisions in the process [11:57] maybe these things should be documented somewhere - how to change an old commit message, or how to collapse/remove the first X revisions of the history (which is something I recently did, and it wasn't very obvious) [12:00] yeah, most bzr people don't agree with history modifications, but if users do it according to a document at they won't screw up so badly :) [12:02] luks: after trying it, I can see why they don't agree with it :) But it's useful in some cases, e.g. if you're just making a personal project public and want to remove the first 100 commit messages which just says "lol butts" or similar nonsense. [12:03] * Kinnison recommends not being daft enough to commit with that kind of message :-) [12:06] Kinnison: it's bound to happen. Put a VCS in the hands of couple of fresh students and there you go! [12:07] They'll learn [12:07] And having the mistake immortalised for all time will help them to learn that just because you were a numpty at one time, doesn't mean you can't improve [12:08] You can't change the fact that at one point you were idiotic enough to think that "lol butts" was a sensible commit message, so why encourage people to hide it like it's a dirty secret or something? [12:10] Kinnison: Here's a better reason: http://wiki.freebsd.org/VCSFeatureObliterate [12:14] gimaker: Legal encumberances are about the only reason I can see to change history. Also, in a DVCS, I firmly believe that once you have allowed a revision to reach the wild, attempting to disavow its existence is counterproductive. [12:16] Even Arch/TLA had a long discussion on the website about why changing history is bad [12:16] Kinnison: Not every DVCS is employed "in the wild", e.g. usage in closed-source shops. There was another case where an employee had put some improper comments about a (female) coworker in a commit message. It went to court ... and the company ended up wanting the commit message removed. [12:17] Hmmm [12:17] I can agree that it's usually a bad idea, but as someone else put it "when you need it, you really need it". [12:17] I guess. I'm still against promoting the concept though. [12:17] gimaker: if the coworker has a local branch, there is no way to remove it from there === `6og is now known as Kamping_Kaiser [12:18] luks: That's not the point, the point is that the company "did their duty" (and I think it was a centralized VCS). [12:19] gimaker: sure, but with DVCS it's not so easy to do such a change globally [12:20] e.g. in case of FreeBSD, everybody in the world would had to redownload the whole history and destroy all old copies [12:20] which seems almost impossible thing to do [12:23] There's still a difference... I'm not a lawyer, but if you illegally provide some content you probably get a "take down notice", and not a demand to erase all copies of that file. [12:24] hm, right [12:27] it's also useful if you have sensitive business secrets somewhere in your repository (commit messages or not), and then want to distribute the repository to a third party [12:28] e.g. "Added feature X. This will enable us to easily implement secret feature Y in product Z later on." [12:29] That's what non-disclosure and similar agreements are for [12:30] Kinnison: That does help if you decide to open-source parts of your codebase [12:31] GPL and NDAs don't mix and match :) [12:49] i have a bazaar repo set up on my work computer, however after work i wanna export my work into a tar so I can take home and continue at home. Problem is, starting a new repo at home to host my files would erase my rev logs. Is there a way to transfer repos from one PC to another? [12:50] TemplePrime: if you copy the .bzr directory as well you'll get the rev logs too [12:50] the preferred way is to use a computer to which you can connect from both places, and use 'bzr push' [12:51] TemplePrime: branch or repository? In the first case, `bzr push`. [12:51] but if you don't have such a server, just making a tarball of the directory should be fine [12:51] computers are not connected, so making a tarball then, but I have to have even the same user on both machines? [12:52] no [12:52] wow, bzr is flexible [12:52] cp -r one of them (you only need the .bzr directory within it), shove it on e.g. a USB stick, then bzr merge /path/to/usbstick [12:52] do both run the same operating system? [12:52] luks, yeah [12:52] the only problem would be moving windows working tree to linux or vice versa [12:52] then it's not a problem [12:52] no, they both have linux [12:53] So.. don't move the working tree :) [12:53] And use the merge/push trick so you can deal with divergent history and whatnot... [12:53] yeah, repository on a usb stick is a good idea [12:53] Hey guys. I want to share a bzr branch with a colleague [12:53] we're both in the same unix group [12:53] uws: umask? [12:53] can I somehow make sure all the files are foo:ourgroup ug+rwX,o+rX when I push? [12:53] LeoNerd, I tarball the whole repo and extract it in my home directory, that's it? [12:54] TemplePrime: No need even there. cp -r it to the USB stick. Take it home. Do not move it off.. instead, run bzr merge /path/to/the/USB/repo from your home machine's workdir [12:54] Let bzr pull the changes out from the USB stick, don't you manaully trash it [12:55] (merge or pull or whatever is required) [12:55] In fact.. when at work, don't cp -r, that's silly.. bzr push it :) [12:55] usually pull, since he can't work on both places at the same time :) [12:55] LarstiQ: How would that work with bzr+ssh or preferably sftp:// ? [12:55] Depends.. sometimes I forget [12:55] LeoNerd, on my home machine I dont have even bazaar installed, after I install it dont I need to whoami and init stuff? [12:55] TemplePrime: Oh probably, yes... [12:56] TemplePrime: you do need bzr whoami, but not bzr init [12:56] the init and the whoami need to be the same right? [12:56] init creates a new branch, but you already have one [12:56] no, they don't [12:56] true, so only whoami [12:57] bzr push/pull from an usb stick is really the best option [12:57] i'll tarball it an email it to myself, dont have usb ports on the server [12:57] you can use `bzr send` too [12:57] if you already have the branch on both computers [12:57] luks, they are not connected to each other [12:58] oh, right [13:08] Does bzr have a way to split a subdir into a new branch, retaining only that subdir's history? [13:09] I haven't found one... the 'split' command seems to basically rename subdir => . and delete everything else, but doesn't change the history at all. [13:10] I'm basically looking for the opposite of the 'merge-into' command. === mark2 is now known as markh [14:33] hey [14:34] does anybody know of any frontends for bzr like http://www.versionsapp.com/ ? [14:35] mheld, bzr-gtk? [14:35] for OS X? [14:35] without using fink/macports [14:35] there's bzrx or something [14:35] bazaarx maybe [14:36] http://elliotmurphy.com/2008/06/06/bazaarx/ [14:36] hey beuno [14:37] * beuno waves at james_w [14:39] i like the concept of bazaarX, but I don't really see how I could install this on 20 computers easily/quickly === mw|out is now known as mw === kiko-zzz is now known as kiko [15:01] Is this a problem? "Standalone tree (format: unnamed)" [15:01] This is a loom. [15:07] /usr/lib/python2.5/site-packages/bzrlib/plugins/email/__init__.py:57: DeprecationWarning: bzrlib.branch.BranchHooks.install_hook was deprecated in version 1.5. Branch.hooks.install_hook('post_commit', branch_commit_hook) [15:07] just upgraded bzr to Bazaar (bzr) 1.6rc2 [15:08] Oh, I guess all of my looms claim to have format "unnamed". [15:09] strk: I don't think you need to worry about deprecation warnings. [15:09] strk: They can safely be ignored, unless you are the author of the plugin using the deprecated API. === kiko is now known as kiko-phone [15:33] strk: When we get to a full release, we suppress deprecation warnings [15:33] it is just for developers and people running bleeding edge [15:33] so that the authors know they need to fix stuff for the release [15:33] strk: and 'bzr-email' has a fix if it releases a new version. [15:34] (the code is done and in trunk, it just needs to be packaged.) [15:34] thanks === kiko-phone is now known as kiko [15:58] AttributeError: 'KnitPackRepository' object has no attribute 'get_revision_graph' [15:58] bzr viz ... [16:04] strk: Sounds like you need to update your bzr-gtk plugin to a more recent one [16:06] I'm using the custom repository [16:07] http://ppa.launchpad.net/bzr/ubuntu hardy main [16:07] got prompted to upgrade bzr but not bzr-gtk [16:11] I am trying to merge two unrelated branches with; bzr merge -r 0..-1 ../unrelated-branch unfortunenately I get an error about Repository KnitPackRepository not being compatible with the other (both are knitpack's), any tips? [16:14] are you sure one of them isn't rich-root-pack? [16:16] luks: thanks for the tip, you are right [17:08] beuno: ping, I'm submitting the 1.6rc3 to PQM now, it will be a bit and I'll have a 1.6rc3 tarball to package. [17:09] jam, cool. I'll try and get to that ASAP [17:09] beuno: I'll make sure to ping you again when I've uploaded the tarball [17:09] is this the last 1.6 RC? [17:09] I just wanted to alert you that it was coming soon [17:09] luks: With any luck [17:09] jam, thanks :) [17:09] I wanted to do it quickly to give an rc a bit of time before -final [17:17] abentley: do you have a 1.6 release of bzrtools that we can get packaged? [17:21] jam: I released bzrtools 1.6 in June [17:21] abentley: is it still compatible with 1.6rc? [17:22] It at least seems that ~bzr/ppa only has the 1.5 packages [17:23] and ~bzr-beta doesn't have any bzrtools [17:23] beuno: any chance you would feel comfortable packaging bzrtools as well? [17:23] jam: yes. [17:25] jam, yeah, I did it last time too. Just need time. I'll upload it around 1.6 for sure [17:26] beuno: k. I would put it in the beta-ppa for now to go along with the 1.6 releases. This will also let us easily copy it into the official repo when 1.6 is final [17:26] If you could do bzr-gtk as well, it would be nice, but I'm not going to make you do *everything* :) [17:26] Did Martin usually do bzr-gtk? [17:26] no, jelmer did [17:27] and, bzr-gtk may be trickier as it may have varied dependencies [17:27] I'd rather we try and trick jelmer into doing that one === kiko is now known as kiko-fud [18:01] hi, is it possible in bazaar to checkout to the working directory (like in git)? [18:33] beuno: 1.6rc3 upleading now === mw is now known as mw|brb [18:41] jam, great, I have some stuff to finish, and then I'll get to that [18:43] beuno: it is at http://edge.launchpad.net/bzr/1.6/1.6rc3/+download/bzr-1.6rc3.tar.gz for your downloading convenience === jam changed the topic of #bzr to: Bazaar version control system | http://bazaar-vcs.org | please test 1.6rc3! / http://irclogs.ubuntu.com/ | http://planet.bazaar-vcs.org/ | http://blogs.mysql.com/kaj/2008/06/19/version-control-thanks-bitkeeper-welcome-bazaar/ [18:44] * beuno conveniently downloads it === mw|brb is now known as mw [18:46] how do i tell bzr to ignore a group of folders involved a directory structure ? [18:46] i have a bunch of source, but also a lot of images, the images are not important. [18:47] bzr ignore [18:48] cody-somerville: so > bzr ignore foldername1/ foldername2 /foldername3 filename4 etcnum [18:50] compubomb, you can also use patterns [18:50] "bzr help ignore" <-- great info about it [18:52] cody-somerville: every time i accidentially do commit without giving it a message, it loads up a text editor on my system that i don't use(not important) but what is pissing me off is i don't know how to save the information that is in this box in order to execute the full commit. [18:52] do i save a file or something ? [18:52] i don't see a filename. [18:53] Yes, save without modifying the filename [18:53] yup, didn't work [18:53] :/ [18:53] You can change the editor by changing the EDITOR environment value [18:53] what is annoying me is it's using jed [18:54] cody-somerville: i did env | grep "EDITOR" and it's not even in there. [18:54] wtf would bzr use jed ? [18:55] There are several commands in debian based distributions use the "alternatives" system so that scripts and what not can run them and it'll use the preferred alternative. [18:56] This may be the case with bazaar. I'm not a bazaar developer so I don't know :P [18:58] compubomb: we use VISUAL, EDITOR, and BZR_EDITOR [18:58] Otherwise we fall back to "/usr/bin/editor" which is in the alternatives system [18:58] then vi, pico, nano, joe [18:58] how to check plugin version? [18:58] I'm guessing your distribution has "jed" set as the default editor [18:58] when you run "/usr/bin/editor" [18:58] hsn_: If they export it, just do "bzr plugins" [18:59] hsn_: Not all plugins give a version string, though [18:59] thanks [19:00] is there way to check if i have one plugin in path multiple times? [19:00] hsn_: If the plugin is available via different names, it will probably give a conflict at import time [19:00] if it is the same name [19:00] we have specific precedence [19:01] ~/.bazaar/plugins takes precedence over system-installed plugins [19:01] btw, why is bzr loading plugins from /usr/lib/python2.5/site-packages/bzrlib/plugins if I don't use that bzrlib? [19:01] it might have incompatible plugins, so it's probably not a good idea === thumper_laptop is now known as thumper [19:05] jam: ty, just removed the symlink to /etc/alternatives/editor and chnaged it to vim [19:06] anyone happen to know where i could find a tutorial on setting up bzr with trac on ubuntu ? [19:06] i installed the trac-bzr package but it just installed a folder on my system, didn't do any configuration to apache i believe. [19:08] luks: IIRC, it is setup to search the "Arch independent plugin path" because some people install multiple architectures side-by-side. So you end up with bzrlib installed in /usr/lib-x86/python... and you need to import the python modules from /usr/lib/python... [19:09] luks: otherwise, I agree that when running out of the source tree, it may be good/bad to import site packages. [19:09] jam: yeah, I know it was introduced then, but it doesn't seem logical [19:09] I have maybe 0.90 in /usr/lib/python and I use 1.6 from my homedir [19:09] if I had a globally installed plugin for the 0.90 version, it would break my 1.6 local install [19:09] what interfaces other than trac are good for bazaar interfacing ? [19:10] bleh, i mean like bug/ticket systems etc. [19:10] is there way to disable plugin for example by renaming its directory to something? [19:11] jam: one thing, if I sent a patch to ignore plugins named __init__, is there a change of getting it approved? it currently fill .bzr.log because it tries to load bzrlib/plugins/__init__.py and bzrlib/plugins/__init__.pyc [19:11] for me actually twice, from my homedir and from /usr/lib/python... [19:11] is there like a launchpad for local systems ? === kiko-fud is now known as kiko [19:13] compubomb: I don't think there is anything integrated [19:13] trac is probably the best choice if you want all-in-one solution [19:14] hsn_: I rename them into a subdir [19:14] (happens to be called DEACTIVATED) [19:15] luks: probably I'd review a patch [19:15] luks: i installed trac-bzr but i don't know how to access it online, i'm not used to working with python apps. i found the directory in "/usr/share/trac" [19:15] I don't feel like 4 lines in .bzr.log is "filling the log" but it is a bit ugly [19:15] do i have to do setup.py install ? [19:15] i'm not sure wtf i'm doing. [19:15] jam: well, not really "filling the log", but for most commands it's the only output [19:15] trac has these directories in it "cgi-bin/ conf/ htdocs/ plugins/ templates/ wiki-default/ wiki-macros/" [19:16] every time I look at bzr.log I see four "Plugin name __init__ already loaded" entries for each command [19:16] compubomb: sorry, I don't know [19:20] luks: np, i asked in #trac, hopefully they will be kind enough to help me and not be like rftm. [19:20] sometimes, you need floaties before you get your stride. [19:20] rftm=rtfm [19:21] rtfm is the equivalent of learning how to read and someone hands you a dictionary and says go at it tiger, and people expect you to be superman off the bat. [19:22] I think trac has some nice tutorials on their wiki [19:22] for all deployment methods [19:29] luks: yea, they have it for svn [19:39] compubomb: http://bazaar.launchpad.net/~trac-bzr-team/trac-bzr/trunk/annotate/48?file_id=readme-20061211191445-unb1b1y5dhltbwy7-2 [19:40] Once trac and the plugin are both installed, look at line 56 of that file and apply the required changes to trac.ini [19:40] That tells trac to use the plugin for version control instead of its built-in svn layer [20:07] jam, TWiB in 15? [20:12] does bzr have a function similar to svn:externals? and if so, can it do files or multiple files instead of complete directories? [20:14] rockstar: I'm syncing right now, then i'll reboot and we're on [20:14] jam, sounds great [20:19] jam: you still in Chicago? [20:19] never mind, I did a whois [20:19] you going to barcamp this weekend? [20:27] nixternal: I didn't even know it was happening, and yes i'm still in Chicago. [20:30] rockstar: rebooting [20:37] nixternal: to your earlier question, bzr doesn't really have a replacement for svn:externals yet, and the proposed one would be at a directory level [20:37] not for individual files [20:38] so that means I have more work in front of me here at work :) [20:39] rockstar: ready? i'm starting up gobby now [20:39] jam, I is ready [20:41] jam: http://barcampchicago.com - Saturday and Sunday, all day and night, free food and beer, live music, good talks, and some hacking [20:41] last year totally rocked and this year is looking good already [20:41] it is over at UIC [20:41] nixternal: sounds fun, hopefully I can make it around children's b-day parties [20:42] heh, this is b-day party weekend in chicago...my neice's is saturday, but barcamp won there :) === mw is now known as mw|food [20:51] thumper, ping [21:13] wow, svn2bzr (dumpfile version) is slow on long histories. Looks like it's going to run for about a week by the time it completes at this rate [21:30] lifeless, interesting thing just now. I tried to index the launchpad branch, and it brought my core2duo to it's knees. I control+c'd, and it kept on going until I killed the PID manually. Is that expected? [21:30] Is there a way to removed ignored file patterns from the ignore file on a per project basis. For example in the default configuration bzr will ignore *.a & *.o but for a certain project I don't what this to happen. [21:30] TWiB is available: http://jam-bazaar.blogspot.com/ [21:31] phoenix3051: you can edit ~/.bazaar/ignore, but that will change all branches [21:31] phoenix3051: you can always specifically add files [21:31] by doing "bzr add filename.a" [21:31] it is just that "bzr status" won't show them, or "bzr add" won't add them automatically. [21:36] Jam: adding them by hand would be a nightmare as there are approx ~10k files. [21:36] phoenix3051: "find . -name '*.a' -print0 | xargs -0 bzr add" [21:36] takes a few seconds? [21:38] oh never thought of that because I was running the test on a windows machine, of to get cygwin installed now :) [21:43] phoenix3051: I think on windows you could still do "bzr add */*.a */*/*.a" etc [21:43] I don't know if we support "**/*.a" on win32 [21:44] no we don't === kiko is now known as kiko-afk === mw|food is now known as mw [22:18] Hrm... does 1.6 break tracbzr? [22:20] Not that I've experienced [22:20] pickscrape: I'm getting a mysterious AttributeError: 'BzrDirNode' object has no attribute 'path' [22:21] I'll try updating mine and see if I get anything similar [22:24] My apt-fu is really bad. What's the easiest way to downgrade my bzr version? apt-get install bzr=1.5 doesn't work. I must be missing something obvious. [22:25] That should be sufficient [22:25] When you say "doesn't work" - explain in more detail [22:26] e.g. E: Version '1.5' for 'bzr' was not found [22:26] oh let me try updating the cache [22:26] though, if i have 1.6, you'd think it' be up to date [22:27] awmcclain: what page gives you that error? [22:27] pickscrape: Going _into_ a branch. [22:27] via the browser? [22:27] pickscrape: Browse source, yes. [22:28] I see the top level fine, but anything below. pfft. [22:28] I'm getting a different error: "AttributeError: 'KnitPackRepository' object has no attribute 'get_revision_graph'" [22:28] :( [22:28] beuno: pong [22:29] Wonder if I'm using the right trac-bzr branch... [22:29] beuno: drop the group count down [22:29] thumper, hi :) I just committed a fix for a bug in LH's search. Is there anyway you can cherrypick that into the gnome playground, so I can make sure it fixes the problem? [22:29] beuno: the fail-to-close is the refcounter hunting up objects and touching them before free, so its thrashing [22:30] lifeless, ah, right. So, "known issue" [22:30] beuno: hmm.. we need to upgrade the branch almost wholesale anyway [22:30] beuno: so "python" [22:30] beuno: it might be easier to reapply the theme to trunk and use that [22:31] robtaylor: which reminds me, the thing that concerns me about gobject is the ref counting; its really harsh on memory IO; can GObject run w/o it ? [22:32] thumper, ok, do you want me to update the gnome branch to the new theme then? I know you where already working on some of that.... [22:39] Nope. I've even tried sudo apt-get install bzr=1.5.0-1~bazaar1~gutsy1. I can't downgrade to 1.5 [22:42] awmcclain: my problem appears to be when the branch isn't in a shared repository. If it is, I can browse into it fine [22:43] Which is odd. [22:43] pickscrape: I'm navigating into a shared repository. :( [22:43] Yes, and we aren't even getting the same error message :) [22:43] I'm just trying to downgrade now, but I'm having no luck. [22:43] What version of trac and the trac-bzr plugin are you using? [22:46] awmcclain: well, if you have 1.6, doesn't that mean you are using the ~beta-ppa which doesn't have 1.5 in it? [22:46] don't you need to use the ~bzr ppa instead? [22:46] Hah, just realised I've already raised a bug for my problem (bug #239591) [22:46] Launchpad bug 239591 in trac-bzr "traceback when browsing branch with history" [Medium,Triaged] https://launchpad.net/bugs/239591 [22:46] jam: I have both in my sources list. Let me double check. Good point. [22:47] jam: apt-get install bzr=1.5 "should" work, correct? [22:47] i just want to make sure my command looks right. [22:47] awmcclain: I don't know apt [22:47] sorry [22:48] jam: Oh, son of a gun. I must have removed it. [22:48] sigh [22:48] * awmcclain sighs [22:48] I can "upgrade" "update" and "install foo" but I haven't tried a specific version. [22:48] It's going to be a long day, i feel it. [22:50] awmcclain: what's the output of "apt-cache policy bzr"? [22:51] http://dpaste.com/71509/ [22:52] Ah! got it. [22:52] sudo apt-get install bzr=1.5.0-1~bazaar1~gutsy1 [22:54] Perfect. Downgrading fixed it. [22:54] cool [22:54] I should file bug in trac-bzr, yes? [22:54] file a bugt [22:56] it looks like it, yes [23:08] jam: hi [23:20] hi lifeless [23:34] what shall I do if I get: bzr: ERROR: bzrlib.errors.BzrCheckError: Internal check failed: revno does not match len(mainline) 13 != 6191 [23:35] jam: what I"m trying to do with gc is get smooth integration with bzr [23:35] jam: which is why sorting out fetch to be solid is important to me [23:35] lifeless: I agree that fetch is important, I don't think the sort order is the most important part of it [23:36] (gc => gc fetch is currently at 27 minutes and still on 0/4) [23:36] jam: what do you think is the mort important part of fetch ? [23:36] lifeless: getting it to fetch without recompressing everything [23:37] jam: So the way that that will work will depend on the way gc->gc fetch is implemented [23:37] I want to implement it via get_record_stream, which is what I'm working on, so I'm working towards that [23:38] if it doesn't fit well via get_record_stream, then I'll do a custom thing like pack->pack does; [23:38] lifeless: I feel like you are spending a lot of time getting the "optimal order when recompressing everything" [23:38] but not skipping around it. [23:38] because it isn't ever going to scale. [23:39] well, AFAICT git recompresses everything on fetch [23:39] it sends existing deltas but always decompresses on receipt [23:39] anyhow [23:40] I don't want to rush groupcompress, I want to take the time to get it well polished [23:40] lifeless: gc is much more expensive then their compression strategy [23:40] I'm not sure if we can improve it a lot or not. [23:40] jam: its cheaper surely [23:40] conceptually gc does less work [23:41] I don't see it doing less work [23:41] I suppose if you consider the cached hashes? [23:41] At a minimum creating deltas is more expensive than expanding them [23:42] by about 10-100:1 ? [23:42] git does a xdelta (A, B), for a set of (B) to decide which B to insert next, and threads that [23:42] it then reuses the one it chose. [23:42] lifeless: I'm not positive, but I don't think it does that for transmission, only for "git pack" [23:43] but it generates matching ranges etc from scratch for at least N-1 pairs [23:43] (or repack, etc) [23:43] I agree that it does that for repack --window .... [23:43] transmission is less enthusiastic true [23:43] I don't think it does that during "clone" [23:43] but its still at least N-1 pairs [23:44] lifeless: except for the ones it can re-use (which is at least what you just said) [23:44] and GC can't be reused except in bulk [23:44] we can just put the group on the wire intact [23:45] lifeless: and doing that (IMO) is more important as a priority, and may preclude using get_record_stream [23:45] lifeless: I'm *more* concerned about local branching than network, atm [23:46] lifeless: because after you've gotten the wire stream, you still have to insert it into the local repo [23:47] jam: well, if you're interested in scratching that part first, please do so :) [23:47] I don't think that non-developer usage feedback is very useful at this stage for gc repos [23:47] lifeless: I've got lots of other things on my plate before I can get to gc. Certainly you are welcome to scratch your itch. But it feels like you are trying to polish something that isn't *usable* yet. [23:47] so I don't have any motivation to get the formats and compressor into bzr.dev per se [23:48] [23:48] I'm trying to get the *implementation of fetch usable* [23:48] that means either custom-coded, or using get_record_stream [23:48] Ok, I would suggest you are going about it in the wrong way. [23:48] Perhaps not. [23:48] you're complaining that its slow using get_record_stream [23:48] I feel like you are polishing the insertion order. [23:48] WHICH IS WHY I AM WORKIG ON GET_RECORD_STREAM [23:49] jam: I'm working on the interface so that gc->gc using get_record_stream has the room to send an entire group and reuse it while still working correctly for knits [23:49] we're trying to squash all these different use cases into one interface [23:50] which is fine, but it means polishing the interface to be really nice [23:50] lifeless: sure, and my feeling is that get_record_stream isn't a good fit. [23:50] jam: you do realise that you haven't said that at all [23:51] until now [23:51] lifeless: I've been saying using an api that requires recompressing everything isn't a good fit. which is basically how get_record_stream() is designed (atm). [23:51] not at all [23:51] get_record_stream was designed explicitly to avoid recompressing [23:51] And I don't see having: get_record_stream("gc-blobs") [23:51] and knit->knit doesn't recompress [23:52] lifeless: because the stream is designed as knit deltas. [23:52] no [23:52] because the api is flexible [23:52] it may not be flexible enough [23:53] which is one of the possible outcomes of this discussion [23:53] lifeless: well, at present it talks about everything 1-text at a time [23:53] which isn't possible for "optimal GC transmission". [23:53] Specifically the "get_bytes_as()" portion. [23:53] And 1 factory object per text [23:54] I'm irritated because I feel like you are telling me I'm doing the wrong thing, but your objections have been about 'this bit over here is rough' not why the time is wasted [23:54] jam: the API is stream->stream [23:54] jam: the generic use of the stream is text->text [23:56] lifeless: http://rafb.net/p/T8dpQb85.html [23:56] a stream is an "iterator of ContentFactory objects" [23:57] which is a series of Content objects. I will agree that it doesn't give a definition of what Content is. [23:57] But if it is compatible with Knit [23:57] then it would be 1 Content for each text. [23:57] lifeless: look, *you* wrote the api, and you have the best knowledge of how it can be modified to fit what you are looking for. [23:58] I'm going off the level that I've been exposed to it to date. [23:58] Which isn't truly deep. [23:58] The only flag we have at the moment to indicate what type of stream to produce is "ordering". [23:59] Which doesn't really fit a "give a ContentFactory stream that is useful for knits" versus "give me a ContentFactory stream that is good for gc => gc". [23:59] lifeless: I *do* see that the base-level ContentFactory object has a "self.key" member, rather than a "self.keys" parameter