[00:03] lifeless: I'm just doing bzr -r1 [00:03] lifeless: pardon - bzr diff -r 1 [00:14] furicle: ok, as a workaround you can use filterdiff -x '*.pdf' or something like that, to remove the pdfs in your diff [00:14] please file a bug, this is something we can clearly do better on [00:14] Jc2k: avg 0.00275434756196 [00:14] avg 0.0118949759048 [00:16] lifeless: did gc just kick some arse or do i need an eye test.. [00:16] arse kicking [00:17] as usual the story is more complex [00:17] ah boo :[ [00:17] let me paste results [00:17] http://paste.ubuntu.com/113016/ [00:18] lifeless: thanks for the info - I can pipe it out to vim and hack it back out, just wondered if I was doing something wrong. Thanks for the info [00:19] furicle: are you going to file a bug? If not, I will - but I don't have the test data to reproduce if its not obvious [00:20] Jc2k: in particular look at the max time [00:20] 0.17 is because we read one big zlib hunk [00:20] but after that the entire inventory for all of the repo is in one compressed record [00:23] so your saying the zlib reads are gonna kill us anyway? [00:23] I'm saying its going to depend a lot [00:23] >< [00:23] like [00:23] annotate will kick arse [00:24] but 'read the most recent commit message only' will be slow [00:24] read all commits will be fast [00:24] etc [00:25] we can trade time and space here [00:25] if we cap the groups smaller [00:25] then the zlib read will be less [00:25] but we'll have more groups [00:27] its not beyond hope [00:27] we can still look at short reads and decompresses for random access [00:27] we could keep recent texts at the front of groups [00:28] so in comparison to git: git looking at the most recent commit can generally look at the first object in the pack (or near) and it will generally be a full text rather than a delta so it will be (seek a few bytes in) (hot zlib action) done. [00:28] yah [00:28] what does gc have to do? [00:29] * Jc2k missed your intro to gc as rob led you away at guadec :( [00:29] can I say it depends and wave my hands a lot ? [00:29] sure :D [00:29] it depends, wave wave wave [00:29] ok [00:30] have you read the README in bzr-groupcompress? [00:30] nope, *scurries off to look* [00:31] when you've read that you will understand the tuning I'm talking about I hope [00:31] though I can and will enlarge from there [00:32] GPL GPL GPL GPL, lets make things smaller. read DESIGN. k thx end. :p [00:32] oh yeah DESIGN. [00:32] me [00:32] h [00:32] I knew which document I meant [00:34] pet peeve, -d isn't global [00:36] ok. generic process parsed. [00:36] wow, think I found a knit bug >< [00:36] so [00:36] two layers [00:36] stream-of-build-recipes [00:37] efficient *fast* compressor on top [00:37] the build recipe stream should be 80% of the compress, or something like that [00:38] cost to get a single text out is clearly: [00:39] cost to decomopress outer enveloper up to the end of the text build recipe + cost to parse and execute the build recipe [00:39] best case cost would be no outer envelope and the first text in the stream [00:40] because we could just read that text and ignore the rest [00:40] lifeless: I will file a bug. [00:41] furicle: thanks [00:41] Jc2k: did you catch my cheating ? [00:44] lifeless: so.. to clarify "no outer envelope", no envelope compression at all? no zlib of the recipes? [00:44] right [00:44] we can get rid of the decomp cost [00:44] in which case, you just read a full text and there is no decompression or assembly to do at all [00:44] so its uber fast [00:44] just read as much of the stream as needed [00:45] but larger [00:45] say 100% larger [00:45] which of course for network IO isn't such a great thing [00:46] but its an option [00:46] but we can fix that with smart reads, right? [00:46] depends on the use case [00:46] like, smart server, the server could zlib on the fly [00:46] sftp, you will be reading whats on disk directly [00:46] but group compress + smart server could use delta bases that it knows are on the client for example [00:46] ah [00:47] look closely at a recipe [00:47] its not a delta as suc [00:47] this is a recipe: [00:47] ['label: label\n', [00:48] 'sha1: xxxxxxxxxxxxxxxxxx\n' [00:48] 'i,3\n' [00:48] 'strange\n', [00:48] 'common\n', [00:48] '\n', [00:48] ] [00:48] that recipe will create the text ['strange\n', 'common\n'] [00:48] this recipe: [00:48] 'label: newlabel\n', [00:49] 'sha1: xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n' [00:49] 'c,72,7\n', [00:49] 'i,1\n', [00:49] 'different\n', [00:49] 'i,1\n', [00:49] '\n' [00:49] ] [00:49] copies 7 bytes from byte 72 into its output [00:50] so recipes allow you to select ranges from the base text and insert next text? [00:51] from the stream so far [00:51] ah [00:51] where as git patch opcodes only let you reference the base text [00:52] this is why it compresses so well without threaded computation of best-parent [00:52] because it uses every single text compressed so far as a parent [00:52] gotcha [00:53] so the least cpu work to get the first text out is no zlib wrapper, and read in only the bytes for the first text [00:54] least average work is probably zlib, because less IO does matter [00:54] theres a typical U graph trading off space and time in different scenarios ere [00:55] now, the current decompression code, for the first text, reads the entire zlib envelope, decompresses the entire thing, puts that in a lru cache, then grabs the recipe it needed and generates the output [00:56] changing this to read less is complex in two ways: how much of the zlib record has to be read to decompress the recipe for the first text, and how much will eventually be wanted [00:56] the greedier we are, the more upfront work, but the less round trips [00:58] hey all. I'm having trouble merging a task branch back to trunk; bzr is telling me there are no changes to commit after I do the merge, despite showing me a +N line during the merge. What am I missing? See http://pastebin.com/d646d281 [00:59] spats: its because you are trying at revision 0 [00:59] spats: do your test case again, but after initing 'main', do a commit [00:59] even a commit with no content [00:59] aha! okay, thanks :) [01:00] revision 0 can't be merged with things, its a blackhole to bootstrap from :) [01:00] so your merge is in effect a pull [01:00] its a little wart, but one most folk can't ever encounter :P [01:01] lifeless: I was trying to follow the "never check in to the mainline" theory a bit too literally - make a branch for initial code checkin. I might just add an empty checkin to the process. === mlh_ is now known as mlh [01:06] lifeless: tough problem :) [01:07] Jc2k: does git do delta combining? [01:07] Jc2k: that is, to recreate something at the end of a chain of 200 texts [01:07] does it get(base); patch(base->2); patch(2->3);; etc [01:08] or does it get(base), combine_patches(2,3,4,5,...); patch(base->200) [01:08] it can chain, and there is a limit on the length of chains [01:08] its the 1st [01:08] ok [01:08] base + patch = object 2, object 2 + patch = object 3 [01:09] and the limit is much lower than 200 from what i recall [01:09] folk on forums say --200 --200 [01:09] and benchmarkers are using that [01:09] default is 50 [01:12] i think it was just 10 in the beginning [01:15] anyhow [01:15] so to be faster than git [01:16] we have to be faster at some key operations [01:16] and also faster in things like fetch that inspect every object [01:16] I think gc is there now, modulo optimising [01:16] but the recent-history case still concerns me [01:17] I think that that perhaps some hinting to the engine [01:17] can we be a bit bigger and faster locally, and smaller and a bit slower when doing stuff remote? [01:17] 'I only want one thing, kthanks' [01:17] yes, thats possible assuming decompress and recompress during push [01:17] we could even just change the zlib layer for that === timchen119 is now known as nasloc__ [01:31] ok [01:31] so a rough figure [01:31] first 1000 revs of bzr [01:31] knits->knits 5 seconds [01:31] gc->gc 19 seconds [01:31] note that we have much better integrity checking in the latter case, so its not quite apples-apples [01:32] and the gc repo is 50% of the size [01:32] $ du -sh gc/.bzr [01:32] 1.3M gc/.bzr [01:32] $ du -sh plain/.bzr [01:32] 2.4M plain/.bzr === asac_ is now known as asac [01:33] slightly faster at some ops too: [01:34] $ time bzr log -v plain/t > /dev/null [01:34] real 0m11.920s [01:34] $ time bzr log -v gc/t > /dev/null [01:34] real 0m10.775s [01:36] tree building too [01:36] gc/t$ bzr remove-tree && bzr checkout . && bzr remove-tree && time bzr checkout . [01:36] [01:36] real 0m0.914s [01:36] plain/t$ bzr remove-tree && bzr checkout . && bzr remove-tree && time bzr checkout . [01:36] [01:36] real 0m1.069s [01:40] sleep time for me (its 1.30 already!) [01:40] good luck lifeless [01:40] gnight! [01:45] >< thumper - bzr push bzr+ssh://bazaar.launchpad.net/~lifeless/bzr/fix-chunked [01:45] ... [01:46] bzr: ERROR: exceptions.KeyError: 'pqm@pqm.ubuntu.com-20090131231933-8o4phfvmuuizyyn6' [01:46] Traceback (most recent call last): [01:47] lifeless: hi [01:49] lifeless: is the branch packs5/branch6? [01:49] mwhudson: think so [01:50] was probably initially pushed when that combo made a broken branch [01:50] $ bzr push bzr+ssh://bazaar.launchpad.net/~lifeless/bzr/fix-chunked [01:50] Using default stacking branch /~bzr/bzr/trunk at bzr+ssh://bazaar.launchpad.net/%7Elifeless/bzr/ [01:50] Source format does not support stacking, using format: '1.6' [01:50] Packs 5 (adds stacking support, requires bzr 1.6) [01:50] thumper: new branch today [01:50] arse [01:51] igc: new groupcompress pushed, FYI [01:51] spiv: ^ [01:51] lifeless: i suppose you're not using bzr 1.9 still are you? :p [01:51] lifeless: shiny [01:51] mwhudson: bzr.dev [01:51] lifeless: For the record - bug#320783 - already existed - I just added my two cents - might be any pdf file [01:51] furicle: thanks! [01:52] I'm going to get gc able to pull all of bzr.dev [01:52] lifeless: it seems that the branch has repo format 1.9 and branch format 1.6 [01:53] urgh [01:53] so it stacked, but didn't upgrade the branch format on the fly [01:53] and is not stacked [01:53] oh [01:53] it is a stackable format branch [01:53] just not stacked [01:53] http://bazaar.launchpad.net/~lifeless/bzr/fix-chunked/.bzr/repository/format [01:53] says 1.9 [01:53] thumper: it should be 1.9, I've upgraded [01:54] branch.conf is empty [01:54] http://bazaar.launchpad.net/~lifeless/bzr/fix-chunked/.bzr/branch/format [01:54] but the branch I pushed from is branch6 or so [01:54] says Branch Format 7 [01:54] Bazaar Branch Format 6 (bzr 0.15) [01:54] right [01:54] thats the autoupgrade stuff kicking in to support stacking [01:54] k [01:55] mwhudson: where is the stacked branch kept? [01:55] so it converts the formatting appropriately, but doesn't actually set the stacking [01:55] which is a bit odd for folk that don't want their project to suddenly grow a dependency on latest bzr; or is it per-project enabled in lp ? [01:55] thumper: .bzr/branch/branch.conf [01:57] lifeless: i'm pretty sure the auto-upgrading only happens when you have a mixed format like a new repo but old branch [01:58] mwhudson: ok, anyhow lets not get distracted [01:58] yeah [01:58] theory is the autoupgrade half-worked [02:00] well i'm already distracted :) [02:00] but yes [02:00] there should be tests for this stuff, maybe they only check the formats, not that the new branch is stacked? [02:00] none in blackbox.test_push [02:01] nor branch_implementations.test_stacking it seems [02:01] spiv: hey you, you fixed this bug [02:01] def test_push_doesnt_create_broken_branch [02:01] is close [02:02] that sounds like something i wrote :) [02:02] hm, maybe not [02:03] test_push_with_default_stacking_does_not_create_broken_branch [02:03] in branch_implementations.test_push [02:04] spiv: want to hear a fun bug [02:08] lifeless: sure [02:08] lifeless: so long as I don't have to fix it ;) [02:09] you know how we check file content graph <-> revision graph correspondence [02:09] we greate graphs like that with '' as the content, for directories. [02:09] guess what 'bzr check' and 'bzr reconcile' do not check [02:10] They don't check directories? [02:10] RevisionNotPresent: Revision {('selftest-20050621060616-bb8b5b36e3c950c8', 'robertc@robertcollins.net-20050919060519-f582f62146b0b458')} not present in "". [02:10] the source repo checks cleanly [02:11] thats the directory 'bzrlib/tests' [02:11] its being triggered by inserting a child of that [02:11] Oops. [02:11] so, I think the child's parent pointer is wrong :P [02:13] Yeah, using a directory's "file content" as a parent for anything does seem rather weird. [02:15] lifeless: new groupcompress in brisbane-core or it's own branch? [02:18] igc: its still seperate [02:18] spiv: well, its another dir [02:19] spiv: this is _very early_ commits [02:19] spiv: so its appropriate, its just not aligned with the graph [02:19] early weave bug I think [02:19] * igc lunch [02:20] igc: but mutual dependencies [02:56] so lifeless, to benchmark your latest groupcompress, I need to grab the latest plugin code [02:56] igc: yes [02:57] lifeless: and bzr.dev or brisbane-core or doesn't matter? [02:57] I assume brisbane core is more interesting to you? [02:57] or not? [02:57] if you are testing bbc node compression, then you need the format in there to use gc [02:58] right now I'm isolating the parameters and performance for the compression layer, which is [mostly] orthogonal to bbc [02:59] igc: have you seen compressbench [03:00] lifeless: I know of it but I haven't tried it [03:01] well, I'm mainly working with that for micro and then use case tests, for the --gc-plain format, right at the moment [03:01] still trying to rule-out-or-in [03:01] sure [03:02] uhm, if you want to put the gc-plain format through usertest, that would be nice [03:04] lifeless: shall do. I have chemo Wed & Fri this week so something mindless like running benchmarks will fit in well :-) [03:05] :) [03:05] look, its legal drugs, can't complain [03:06] :-) [03:06] Speaking of which... coffee. [03:07] * spiv -> afk [03:39] spiv: and for entertainment value, this bug is in out mainline repo [03:42] jelmer: ping? [03:46] hi [03:46] I just did a bzr merge -r.. /path/to/whatever [03:47] well actually, a bunch of them [03:47] is there a way to list what is about to be merged? [03:47] bzr missing [03:47] lifeless, no I mean what I am about to commit [03:47] I thought bzr st -v listed the relevant data but apparently not [03:48] the merged revisions? [03:48] or the file changes? [03:48] oh sorry [03:48] you have cherry picked [03:49] cherry picks are special and do not record the revision [03:49] orly? [03:49] they are essentially just a normal diff+patch operation [03:49] why? [03:50] because we haven't implemented a non-transitive graph relationship that is scalable in the cases we know people do cherrypicks in [03:50] sorry if that answer went straight off into technobabble :P [03:50] we have plans to get this fixed, but its not at the top of anyones queue as far as I know [03:50] so if I do bzr merge /path/to/whatever it will try to merge again? [03:51] yes, but if you are doing that, why were you cherrypicking in the first place :) [03:51] well because for now I just want stuff that i know works [03:51] and then later the rest of it [03:51] fair enough [03:52] it shouldn't cause many spurious conflicts when it does merge again [03:52] unless you have changed the lines further [03:52] oki, thanks [03:53] igc: around? [03:54] is it possible to say "ignore these revisions when merging for now"? [03:55] sohail: no, because merging acts on the whole files, and there is no copy of the files you are merging from that is missing those lines *and* has any new lines added [which might supercede those very lines you wanted to eliminate] [03:56] lifeless: ping [03:56] igc: I was thinking, for usertest [03:56] I understood your other babble better than the latest one :-) [03:56] it would be nice to have both time-to-clone-natively and time-to-clone-from-pack-0.92, which is the only one we have today, isn't it ? [03:57] sohail: heh. So when we merge, you could imagine taking a series of patches and applying them. [03:57] lifeless: it depends ... [03:57] sohail: or, taking the file contents of the source, and the target, and a common version they both shared, then finding what changes have occured at that level [03:58] the source repo can be whatever format you like [03:58] I see.. I think :-) [03:58] sohail: in the former approach you could 'skip a patch', but in the latter approach, you don't know which lines are from a given patch without doing rather more work [03:58] the test is currently "bzr branch mirror feature-branch" [03:59] for gc-plain testing right now, .... [03:59] sohail: and even you did, you then need to detect dependencies in later changes on the patch you are skipping [03:59] I add an extra step though as I assmue that the source isn't in that format [03:59] sohail: 'darcs' does something in this area, and we'd like to too, but it makes most folks minds hurt ;) [04:00] igc: righto; I'm saying both steps are useful data [04:00] igc: 'how slow to get to this format' and 'how slow to clone in the format' [04:00] lifeless, well I'd rather just say something like: "When you are merging from this branch, never ever merge revisions a..b" [04:00] lifeless: understood [04:01] sohail: the way you say that today is: merge up to b (but don't commit yet), then merge -r b..a --force, and then commit [04:01] hmm [04:01] let me try that [04:01] sohail: that commits a revert of the a..b change in your branch [04:02] if the other branch merges from you, they will have that revert applied to them [04:02] oh [04:02] remember that the point of merging is to make two branches content be combined [04:02] so that isn't what I want either... [04:02] so given two branches A and B [04:02] in A, merge B+commit [04:02] then in B, merge A + commit [04:02] is defined as giving you the same content [04:03] or maybe I can make a third integration branch? [04:04] I don't know what your scenario is sorry :P [04:05] that's ok, you've been helpful [04:05] I'm happy to discuss things further if you like [04:05] I'm ok if you're ok :-) [04:05] we're all ok then [04:06] I have two branches, master & next. master is meant to be stable... The next branch got some stuff checked in that wasn't quite ready [04:06] but I need to make the master use the latest good stuff [04:06] I want bzr to keep track of it all for me :-) [04:06] fair enough [04:06] I use looms for that [04:06] but you don't need to [04:07] * sohail is waiting for The Bazaar Book :-) [04:07] the key thing to know is that I cherrypick when needed, and I have a branch for each conceptual change I'm making [04:07] yeah I think that's the thing [04:07] if a branch B depends on branch A [04:07] next time I gotta make a branch for each change [04:07] I merge A into B [04:07] now, if A has bad stuff in it, but the conceptual change in B could be merged to trunk anyway [04:07] what I do is a cherrypick [04:08] -r branch:A..branch:B [04:09] what does that mean.. [04:09] -r branch:A..branch:B [04:09] well [04:09] difference between those two branches? [04:09] like -r x..y [04:09] except that x is the tip of branch A [04:09] and y is the tip of branch B [04:09] so yeah, the difference between the branches [04:10] but how does that apply here? [04:11] it cherry picks the unique work in B without the stuff in A I was unhappy with [04:11] it may not apply to you, I was just sharing how I use bzr to track things for me [04:11] oh I see [04:11] this works if you have a branch per conceptual change [04:12] yes [04:13] so do you have any suggestion for my situation? [04:13] you have two branches, master and next, next has some good stuff, and after it some bad stuff, and then some more good stuff? [04:14] and you want all the good stuff in master? [04:14] yep [04:14] and I want bzr to track this [04:14] ok, firstly I'd merge all the good stuff to master that is before anything bad [04:14] bzr merge -r last_good_before_bad; commit [04:15] then, I'd : bzr merge next; bzr merge -r last_bad..first_bad --force next; bzr commit -m "Pull in all ready code from next"; [04:15] I would then go immediately to next and [04:16] bzr merge master; "bzr merge -r first_bad..last_bad ."; bzr commit -m "Master excluded $topic_that_is_bad but merged everything else." [04:16] which will merge back from master but keep the bad content (by reinstating it during the merge) [04:17] at this point, master has all the good stuff; next has everything including bad; the next merge from next to master will carry over the bad stuff [04:17] I would then rename 'next' to 'bad-feature' [04:17] and make a new next :) [04:19] spiv: any idea how to get pdb to handle BZR_PDB=1 when inside a generator? [04:20] lifeless: Hmm, I'd expect it to Just Work, aside from the usual trick with generators which is they don't really start until the first iteration. [04:21] spiv: bt shows me the current call stack up to the generator only [04:21] spiv: I can tell you how to reproduce easily if you like [04:21] Weird, but I'm not totally surprised either. pdb is a bit stupid. [04:21] Sure. [04:21] lifeless, OK, gonna try now [04:21] spiv: install bzr-groupcompress to start with [04:21] I have encountered wierdnesses with pdb + generators before. [04:21] sohail: cool [04:21] spiv: I know which is why I am mentioning [04:21] lifeless, ok so bzr merge -r last_good -> bzr is not tracking this merge [04:22] i.e., it is a normal diff+patch [04:22] sohail: it should track it. Its '-r X..Y' that it won't track [04:22] sohail: '-r X' will get tracked [04:22] Mostly it's just "output looks a bit wonky", occasionally it's "pdb crashes"... [04:22] spiv: this is 'interpreter exits' [04:23] spiv: anyhow, bzr init-repo --gc-plain /tmp/foo [04:23] bzr branch $bzr.dev /tmp/foo/t [04:23] woops [04:23] lifeless, howcome when I do bzr st -v it just says files are modified? [04:23] -r 1500 on that [04:23] oh no, there it goes [04:23] my bad [04:23] spiv: then, BZR_PDB=1 bzr pull -r 1600 -d /tmp/foo/t [04:25] spiv: you will want to do a setup.py build_ext -i in groupcompress [04:26] lifeless, it is warning me that I am doing a criss-cross merge [04:27] sohail: thats probably ok in this case, just check the diff before committing and make sure its what you want [04:28] spiv: how is it going [04:30] lifeless: just started the -r 1500 [04:30] Oh, heh, I need your fix_chunked fix :) [04:30] you worked with mbp on the stacking stuff didn't you ? [04:31] I worked a bit on fixing a bug well after it landed... [04:31] (bug 291046) [04:31] Launchpad bug 291046 in bzr "pushing branch6/packs5 to location with default stacking policy creates broken branch" [High,Fix released] https://launchpad.net/bugs/291046 [04:31] do you know why add_fallback_repository sets fetch_order to 'topological' ? [04:32] seems weird/unrelated to me [04:32] I think Bazaar developers might enjoy this: http://fourkitchens.com/blog/2009/02/03/importance-atomicity-or-why-git-staging-area-bad [04:32] No, I don't know why either. I share your confusion. [04:32] :-) [04:33] davidstrauss: heh; so I would like to add commit -i [04:33] I do appreciate the philosophic argument that commiting untested code is bad [04:33] lifeless: what is commit -i? [04:33] interactive commit, prompt you like shelve does [04:33] ah [04:33] but what you say 'n' do isn't committed [04:34] s/do/to/ [04:34] lifeless, should I try bzr merge --weave for the bzr merge next step [04:34] I think that we should encourage good behaviour but not punish folk that want to run with knives [04:34] it causes less conflicts [04:34] an interactive commit would have the same philosophical issues of git staging [04:34] sohail: ah yes, thats probably the criss-cross [04:34] davidstrauss: indeed [04:34] lifeless, ok thanks [04:35] davidstrauss: though some less, in that at least it can only commit things that are in front of you [04:36] davidstrauss: git can commit content which isn't in your tree, and wasn't in the previous tree either, if you staged half way through some operation [04:36] I don't want *that* [04:36] true [04:37] but I would like you to (for instance) exclude a debugging comment easily [04:37] at the moment you can do that by listing every other file [04:37] a -x option to exclude some files would let you exclude one file, and its a small step from there to excluding one hunk [04:38] lifeless: I'd like an interactive commit that cancels if you choose to shelve or unshelve anything. Then, you can run your tests again, re-run commit. If you don't shelve or unshelve anything, the commit goes through. [04:38] Right. It's not so much that the ability to do selective commits is bad; but like many tools it should be used with care. [04:39] davidstrauss: Would you be happy if a plugin could hook into bzr commit -i, to make that happen? [04:39] lifeless: I think interactive commit itself ought to be the plugin. [04:40] lifeless: Hmm, how many minutes and hundreds of MB of RAM will it take for this branch to get past "Transferring:Walking content. 2320/2504"? :) [04:40] lifeless: At least initially. [04:40] davidstrauss: I believe it is already. I want something polished and core-quality [04:40] lifeless: I see [04:40] spiv: about 4-5 [04:40] Oh, there it goes. [04:40] spiv: You forgot to tell it to --run-content. [04:40] spiv: I blame knits [04:40] spiv: Or --jog-content [04:40] davidstrauss: --hyperspace-warp-content would do ;) [04:41] Or --meandering-content if you're a masochist with too much time [04:41] lifeless: 10.5 for the whole branch -r1500. [04:41] 10.5 minutes, that is. [04:41] though that kills parallelism :-/ [04:41] spiv: yeah [04:42] spiv: cloning it again is a lot faster [04:42] bzr branch /tmp/foo/t /tmp/faster ;P [04:43] 1m4 for me that is [04:44] lifeless: hmm, I'm not sure this is pdb's fault so much as Python's... [04:45] spiv: I didn't blame pdb ;) [04:45] I asked how to get pdb to be useful here [04:45] here @ pedants R us [04:47] Actually, no, I blame pdb after all... [04:47] cool [04:47] patch? [04:47] :) [04:47] lifeless: http://rafb.net/p/6deAgv30.html is your traceback [04:48] I'm still figuring out why pdb can't figure that out. [04:48] yeah thats what I want to see in pdb [04:49] And that's what traceback.print_tb(sys.exc_info[2]) gives in that except block. [04:49] (using sys.exc_traceback gives the same result) [04:52] * davidstrauss revs up to start a multi-part blog post series on how we used Bazaar last week during the Drupal.org upgrade sprint to manage a complex set of core patches. [04:52] Ah, I think I see why pdb gets confused. [04:52] davidstrauss: cool [04:52] Unfortunately, one of the conclusions is that Loom isn't ready for prime-time. [04:53] thats fair enough [04:53] I would really love feedback on any new (no bugs exist) issues [04:53] even conceptual ones [04:53] I'm very happy with the conceptual foundations of Loom. [04:54] I think it completely trumps Mercurial queues and StGit there. [04:54] lifeless: pdb recursively does t.tb_next on the traceback to find out where to start pdb (because you want to be at bottom of the traceback, where the exception happened), [04:54] lifeless: but it relies on being able to recursively walk t.tb_frame.f_back.f_back.f_back... to get back to the top [04:55] It's very important that a patch management tool integrated into a distributed VCS allow branching, pushing, pulling, etc. *with all the patches*. [04:55] lifeless: and generators break that; f_back ends up as None [04:55] lifeless: so pdb takes a perfectly good traceback and manages to fail to use most of it [04:56] davidstrauss: ah yes your bug [04:56] lifeless: I'm a little disappointed with the "record" command. [04:56] I haven't seen that bug before and its high on my todo list [04:58] It seems like it would be architecturally easier to natively support in-place branch switching and layer loom on top of that. [04:58] And by in-place, I mean with all branches being stored git-style. [04:58] davidstrauss: I don't think it would make a great deal of difference; but yes it would reduce the loom-specific code somewhat [04:59] Most of the loom issues I run into involve loom's implementation of multiple branch storage for one working tree. [04:59] davidstrauss: ok, well I'm be sure to read your posts if you could link them here [05:00] thanks :-) [05:00] userfeedback++ [05:00] I love the work you guys do. It's really inspired me to care about the theoretical underpinnings of VCS. [05:00] spiv: so what should pdb do ? [05:08] lifeless: http://rafb.net/p/SORZ1J60.html [05:08] lifeless: it seems the Pdb class handles this just fine [05:08] lifeless: it's just the pdb.post_mortem function that makes the bad assumption that f_back will always work. [05:09] bb:approve [05:09] with extra credit or a bug repo on python itself [05:09] Specifically, bdb.Bdb.get_stack seems to cope just fine with this traceback, so long as post_mortem hasn't already neutered it. [05:11] spiv: though s/\\/tr/ or something [05:11] lifeless: sure [05:12] lifeless: "tb" is fairly idiomatic [05:12] sure [05:12] just 't' is teh short [05:12] Yeah. [05:13] I was cribbing furiously from pdb.py at that point, which uses f and t everywhere. [05:13] ugh [05:18] do you debug pdb to fix it [05:18] or just poke to get a theory? [05:19] I inserted a "import pdb; pdb.set_trace()" near the top of the except block, and interactively poked at the traceback object while looking at the pdb source. [05:19] lifeless: here's a snippet of my session: [05:19] (Pdb) pp exc_info[2].tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next [05:19] None [05:19] ;) [05:21] Anyway, post_mortem() is pretty short, it basically follows the tb_next chain to the bottom, so it was a matter of finding out how pdb tries to get back to the top given the bottom. [05:24] lifeless: hah, I see that current trunk pdb.py simply doesn't do the fast-forward in post_mortem anymore [05:25] AFAICT it will actually leave you at the top of the stack when the prompt starts, though. [05:26] shrug ;P [05:26] Hmm, and prior to that change that function had been untouched since 1992... [05:28] ok [05:28] Weird, the offending code was removed in http://svn.python.org/view?rev=61312&view=rev, but the commit message is about a totally orthogonal issue. [05:28] so, mathias needs to backport it :) [05:28] I was going to try submit a patch to Python, but not I'm just confused :) [05:29] Maybe I'll submit a patch anyway, restoring the "start from the innermost frame" feature without the bug we're hitting. [05:29] would be nice [05:35] Ah, no, a different commit removed those lines. [05:35] I think maybe I want a gannotate that puts a thin red line where some revision deleted lines without adding any... [05:36] lifeless: http://bugs.python.org/issue4150 [05:37] spiv: that would be nice, though perhaps nicer would be a [+] [05:37] or a slider for time for the file [05:38] lifeless: so, it appears to already be fixed in upstream; the patch is small and nice, I'll ask about a backport. [05:39] well, I'm doing yet-another-check of bzr.dev to validate this fetch issue [05:39] I doubt I'll get more done today :( [05:42] lifeless: btw, if you use Python 2.6 you should already have the fixed pdb.py, I think. [05:46] I'm on 8.10 [05:46] perhaps I should take the plunge [05:52] igc: interesting patch [05:52] igc: do you handle new children being added, and do you track those children thereafter? [05:52] and the converse [05:53] lifeless: i believe so, and files being changed to directories and vice versa :-) [05:54] lifeless: I'm looking forward to getting a TreeDelta directly from the lower layers when the split inventory stuff is closer [05:55] then log -v will be *much* better [05:55] lifeless: just to be clear, I track the *directory* and changes to it [05:56] so if I file moves out of it, it's no longer tracked when it's out of the directory [05:56] ok [05:56] in other words, it's more than simply logging dir/* as separate files [05:57] I'm not saying thats right or rong [05:57] but I think it should be made clear to users of the cli and api, if its not today [05:57] I haven't read the code yet [05:57] lifeless: shall do [05:57] I have some partial parsin via regex stuff I did for bzr-search, which I then shelved. [05:57] how are you doing your partial parsing? [05:58] oh, and a note that may be obvious - you can't use knit deltas at all for what you are doing [05:58] checking against file-ids and parent-ids in the inventories [05:58] if its not I'll walk you through that [05:59] please do [05:59] brb gotta pickup caffeine at the shop [05:59] np [06:11] so [06:11] to do a delta you need to know about deletes [06:12] and knit deltas only tell you about the fact of a delete, not the content of the delete [06:20] igc: ^ [06:24] lifeless: I think the fact of a delete is enough [06:24] show_diff_trees() is used to show the patch if requested [06:25] you don't know the id that was deleted [06:26] won't changes_from() work that out given two RevisionTrees? [06:26] or even that a delete occured in the general case [06:26] igc: yes but that isn't using knit deltas [06:27] maybe we're talking about different things :) [06:28] lifeless: I think so. I'm generating filtered revision trees and them passing them to changes_from to calc the TreeDelta [06:28] igc: so you let them fully parse the inventory [06:28] igc: ? [06:28] that's one option (2a in my email), yes [06:29] you said you went 2b though [06:29] the other option is only building the InventoryEntry's we want. So we parse until we're found the fileids we care about [06:29] igc: using the full xml of the inventory ? [06:29] saving some time and some oject creation [06:30] yes [06:30] ok [06:30] also not using the knit deltas ;) [06:30] right [06:30] I wasn't clever enough to even consider the knit deltas :-) [06:32] bzr-search has a tuned function for this that does most of what you want [06:32] you might like to compare against it [06:32] shall do [06:32] it doesn't parse [06:32] but it gets file paths for a set of ids [06:32] I've been playing with bzr-search a bit lately but haven't dived into the code much yet [06:32] which is similar, it might have some ideas for you even if its not highly relevant [06:33] lifeless: I like how bzr-search uses it's own area under .bzr [06:33] I suspect bzr-revnocache ought to do the same thing [06:33] as a starting point, definitely;) [06:34] I suspect users will feel 100x more confident deleting a cache under .bzr/bzr-revnocache than .bzr/branch :-) [06:34] yah [06:35] lifeless: any reason why bzr-search shows rev-ids in the UI. I expected revnos :-) [06:35] bzr-revnocache doesn't exist [06:35] at the time of writing [06:35] I have some ideas about how to do it [06:35] but hadn't implemented [06:35] sure [06:36] a goal in bzr-search was to never implement things that scale badly [06:37] a related issue is 'is this revid in the branch' [06:38] until I can answer that I can't share search indices across branches [06:38] right. The functionality is sweet, the UI disappoints though. I half-expected to see the same output as bzr-log [06:38] well, I could, but it would be odd to get hits not in your branch [06:38] igc: it does hook into log [06:38] ah - ok [06:39] I was aware of the log hook for messages [06:39] igc: bzr log -m '\bRobert\b' [06:39] igc: time that with and w/o a search index [06:40] I would kindof like to add a search specific search syntax - let log use bzr searches native syntax [06:40] it was more that I hoped bzr-search made "log --authors 'Mr Smith|Mrs Smith'" unnecessary [06:40] but thats harder [06:41] igc: oh, I see. Well it finds both revisions and files; I think hooking into log is appropriate for showing revisions in full detail [06:41] igc: so I'd like 'log -s Smith' to Just Work [06:41] but that needs some refactoring around the query concept in log [06:41] interesting. [06:41] to hook in cleanly [06:42] not to mention adding a parameter, or whatever [06:42] log -m is unsatisfying in two ways at the moment [06:42] firstly its a regex, and bzr-search doesn't [yet] have a regex engine built in [06:43] so I check for the simplest form of regex I can match [06:43] \bfoo\b == ('foo',) as a search term inside bzr search [06:43] and anything I cant handle, I pass through [06:45] I saw that bit of the bzr-search code [06:45] I could turn -m 'foo' into '\bfoo\b', in regex terms [06:45] but that isn't drop-in for users [06:45] I like drop-in [06:46] what's the second issue? [06:48] the standard ui only searches the message [06:49] so bzr-search has to search more, then filter back the results [06:49] its a bit ugly [06:52] lifeless: how is your current work landing in brisbane-core? [06:52] Peng, pong [06:53] Peng_, pong [06:54] i haven't seen any movement in brisbane-core since jon in the first week of Jan, other than bzr.dev merges [06:54] wondering if i'm missing the goodness [06:55] sabdfl: I'm hammering on compression logic at the moment [06:56] what's the best way to keep up? [06:56] sabdfl: which is why its not showing up in brisbane core; I've been trying to be sure we know what makes git fast/us slow at text extraction, to decide what approach we take to fix the delta compression [and we have to fix it to use brisbane core otherwise its bigger rather than smaller] [06:57] at the moment, because I'm not making changes to brisbane-core, there is my compressbench benchmarker [06:57] ok [06:57] and groupcompress had some stuff land in it today, which takes it to 5 times faster than knits for decompression, on average [06:58] for the use case of examine-all-history [06:58] I'm sorry, I have to head off now, just about 6 and stuff happening :) [06:59] I'll drop a mail to you about tracking what we're doing, and what we're doing tomorrow [07:01] * lifeless is gone [07:13] hi all [07:19] jelmer: Hi. I just wanted to ask you one thing: You marked bug 322856 as fixed, but I still get it. Do I have to delete svn-cache or anything? [07:19] Launchpad bug 322856 in bzr-svn "svn-v4 revids are used for tags on an svn-v3 branch" [Medium,Fix released] https://launchpad.net/bugs/322856 [07:22] Peng_, bzr-svn 0.5 revno 2507 ? [07:23] jelmer: Yep. [07:27] Peng_, Which tags do not work ? [07:27] jelmer: .bzr/branch/tags is exactly the same as it was beforehand. [07:28] jelmer: Ehh, what's the right way to test it? i just renamed .bzr/branch/tags and tried "pull". [07:28] Peng_: Yeah, that should work [07:28] Peng_: So lots of question marks? [07:28] I've confirmed it working here with lighttpd 1.4.x and trunk [07:29] jelmer: Hmm, I just tried it on 1.4.x and it only produced two svn-v4 tags, which means it's almost perfect. I had tried it on 1.3.x earlier. [07:30] Peng_, 1.3.x will indeed give lots of "?" marks since I suspect most of the revisions that are tagged are not in its ancestry [07:31] ...Good point. [07:32] OK, my mistake. (Especially since 1.3.x uses all svn-v4 IDs anyway.) [07:32] 1.4.x still created a couple bad tags, though, didn't it? [07:33] just two question marks here [07:33] and those are for revisions not in the ancestry [07:33] OK. [07:34] Sorry for bothering you, then. [07:34] And thanks for fixing the bug. [07:34] np [07:58] more bzr-hole-digging... I did rm -rf /path/to/branch but now when I try to switch an checkout bound to branch to master, it says: "unable to connect to target of bound branch /path/to/branch: not a branch: /path/to/branch" [08:12] sohail: are you running unbind? [08:15] davidstrauss, yeah I ran unbind after I saw that message [08:15] then it said: "Can't switch on branch only checkout" [08:15] sohail: unbind does not talk to the parent branch [08:15] sohail: branch-only checkout? [08:15] argh [08:15] this is so confusing [08:16] sohail: what did you run to create the checkout? [08:16] davidstrauss, I'm pretty sure it was a clone actually [08:16] sohail: then unbind should say that you can't unbind what is already a standalone branch [08:18] davidstrauss, it didn't say that [08:18] sohail: what do you get from bzr info? [08:18] moin [08:19] davidstrauss, oh I decided to dig myself into a deeper hole and rm -rf [08:19] so now I don't know [08:19] ronny, moin [08:19] jelmer: can you take a look at the commit method line 125 in http://paste.pocoo.org/show/102549 [08:19] sohail: i'm talking about the alleged checkout [08:19] davidstrauss, yeah I know it's gone [08:19] jelmer: it complains about added paths in the repo not being versioned [08:19] sohail: what do you have left? [08:19] davidstrauss, nothing [08:19] I'm just doing a fresh checkout now [08:20] sohail: oh, yeah, bzr can't help if you delete everything [08:20] nope [08:20] oh well :-) [08:20] davidstrauss, can I still work offline with a checkout? [08:20] sohail: sort of, but i don't recommend it [08:21] argh [08:21] so how do you do this when offline: http://bazaar-vcs.org/Tutorials/CentralizedWorkflow [08:21] * igc dinner [08:22] ah I see [08:22] sohail: you sort of can't [08:22] bzr commit --local [08:22] orly? [08:22] sohail: be very wary of --local [08:22] http://bazaar-vcs.org/CheckoutTutorial [08:22] why? [08:23] sohail: https://bugs.launchpad.net/bzr/+bug/113809 [08:23] Launchpad bug 113809 in bzr "update performs two merges" [High,Confirmed] [08:25] wonderful [08:26] well it is as important to know the limitations of your tools as it is to know your own limitations :-) [08:27] hmm [08:27] i wish i did know whats wrong there [08:33] jelmer: it seems like some methods require me to use the way of abspath -> wt.relpath to get working results [08:38] hmm [08:38] jelmer: WorkingTree.rename_one seems nasty, imho too much semantics [08:42] ronny: hi [08:43] ok [08:43] wth a bit luck all bzr tests will pass now [08:43] yay [08:44] native bzr support done [08:44] (at least for workdirs) [08:44] ronny: w00t :-) [08:44] hmm [08:44] hmm? [08:45] i still have to deal with branch-management now [08:45] I'll be away again in a bit, my class is starting [08:45] ronny: but feel free to talk to me, I'll reply when I get back [08:46] k [08:46] i have no classes at, exams time [09:46] ronny: ah, that explains why you have so much time to work on anyvc ;-) [10:00] if I run a smartserver over ssh and someone pushes/pulls/commits/uncommits will the post_push() etc hooks run on the server machine? If not, can I find out what the action was that caused a post_change_branch_tip() hook to fire? [10:00] ...obviously the plugin would be installed on the server, not the client machine [10:05] nua: the hooks will run on the server side, yes [10:06] mwhudson: thanks, I'll get writing some code then :) [10:31] mwhudson: I can't seem to get post_commit to work on the server, currently only have post_change_tip_working [10:34] Do pushes count as "commits" for post_commit? [10:41] jelmer: ping? [10:41] Peng_, pong? [10:43] jelmer: Hi. Quick question: is it safe to do "bzr log" on an svn branch at the same time as a "bzr branch" is importing it? Can svn-cache handle concurrent access and all? [10:43] Peng_, You might run into bug 185200 [10:43] Launchpad bug 185200 in bzr-svn ""database is locked" bzr internal error" [Low,Triaged] https://launchpad.net/bugs/185200 [10:43] although it shouldn't cause corruption or anything [10:43] jelmer: If it happens at the wrong time, could that kill the "bzr branch"? [10:44] peng_: yes [10:44] Eh. That would be bad. [10:44] Oh, good. I risked it anyway and nothing bad happened. [10:46] jelmer: Thanks. :) [10:46] * Peng_ wonders why the progress bar says revision 1154 is taking so long, when it should be tiny. [10:46] no idea [10:47] I _do_ have several really large revisions, but it shouldn't be that one. [10:51] mwhudson: ping [11:24] Hi [11:33] That's a good nick. [11:38] AfC: and an old one === abentley1 is now known as abentley === Kamping_Kaiser is now known as kgoetz [14:12] #join bzr-dev [14:12] There's a #bzr-dev? [14:12] lol, no actually [14:12] sorry for the typo [14:13] but i do have a development question: with bzrlib, how do i get the root folder of the current branch? [14:13] I don't know. You mean like the "bzr root" command? If so, you could check how it's implemented. [14:14] hey cool, i didn't know about that command [14:14] yeah i'll check that [14:14] thanks [14:19] gorgapor: hi! you could do this: [14:19] self.wt = WorkingTree.open_containing(u'.')[0] [14:20] then self.wt.basedir is the root dir. [14:20] (at least it used to be true a few months ago, haven't checked since). [14:20] guilhembi: thanks. actually though, i came up with a very similar solution from diving into the bzrlib source [14:20] but you suggesting the same thing gives me much more confidence that i'm doing it the right way [14:21] :) [14:30] night all === nevans1 is now known as nevans === kiko-afk is now known as kiko [15:16] quick q: just looking at the bzrlib api docs, what is branch stacking? [15:17] nua: Errm. When you do "bzr branch --stacked", bzr does not download and save the entire history. [15:17] nua: As far as I understood it, it's just saying that part of the history of a branch is stored remotely. [15:17] That works too. [15:17] Ok, I can safely ignore that for now then :) [15:19] If I'm adding something to the post_change_branch_tip hook on a smart server, I get passed branch as an arg, how do I get the path that branch is currently stored at on the server? get_bound_location()? [16:29] jelmer: ping? [16:29] ronny, pong [16:30] jelmer: is there any reason why some apis require me to call WorkingTree.relpath on absolute paths before they work? [16:30] and does it change for newer bzr versions [16:31] (im currently on 1.6) [16:31] cause of ubuntu [16:38] ronny, generally, relative paths should always be save (since that's what the Tree API uses) [16:39] ronny, I think my earlier recommendation to just specify absolute paths is incorrect [16:39] ronny, and that using relative paths everywhere would be the sa{f,n}est way to go [16:39] jelmer: my cwd is always different from the tree path, and it takes all relative paths relative to the cwd [16:41] ronny, you should be able to use wt.relpath(wt.abspath(path)) [16:41] ronny, not really neat, but should do the job.. [16:41] not exactly nice [16:43] well, its what i do atm [16:51] I just did 'bzr tag release-0.1.82' in a branch of the bkrpr project that otherwise was totally up-to-date and had no uncommitted changes, then did 'bzr push lp:bkrpr'. [16:52] But nothing got pushed, and when I later did 'bzr pull' in my mirror of trunk, nothing came down. [16:52] The help for 'bzr tag' says that tags are pushed/pulled between branches just like revisions, but that didn't seem to happen. [16:52] Am I missing something? [16:52] You sure the tag didn't come down? [16:52] By the way, 'bzr status' immediately after I made the tag also showed no changs. [16:52] fullermd: well, let me see... [16:53] fullermd: holy cow [16:53] fullermd: well, you're right [16:53] it came down [16:53] it's just that neither the push nor the pull indicated that *anything* had been transmitted. [16:53] * fullermd nods. [16:53] They looked exactly as if I had pushed or pulled when there are no changes. [16:53] That's one of the long-standing quirks of tags. [16:55] Is there a way to tell bzr not to look for a smart server when accessing a branch through HTTP? [16:56] I'd like to get rid of "File does not exist: /srv/bzr/fusionforge/svn-Branch_4_7-ro/.bzr/smart" in the Apache logs. [16:56] Hi, can I hide my commit made in one of my branch before pushing it to the main repository? (distribute) === NfNitLoo` is now known as NfNitLoop [17:10] jelmer: ping md-bzr [17:10] Tak, hi [17:10] hello [17:11] so, I'm playing with bzr shell as an alternative interface [17:11] it's a bit slower for "regular" operations like checking file status [17:11] Tak: If you're looking at alternative interfaces, xmloutput should be the primary choice I think [17:12] is there a minimum version for that? [17:12] it's a plugin, I'm not sure what bzr version it requires [17:13] Tak, I thought you were importing bzrlib using IronPython - does that not work? [17:13] no, ironpython only works with ironpython :-/ [17:14] using bzrlib directly would be ideal === thekorn_ is now known as thekorn [17:15] hmm, xmloutput only implements a subset of the commandset I'm using [17:16] there is also another C#-based wrapper of bzrlib around, ahve you looked at that? [17:16] I think it's in the bzr-visualstudio project, not sure what state it's in [17:16] hmm, I think you pointed me to that before [17:16] if it's the one I recall, I couldn't get it to build [17:25] subvertpy question... [17:25] I'm getting errors [17:25] darn it vila [17:25] 's gone [17:25] bzr: ERROR: subvertpy.SubversionException: ("Commit blocked by start-commit hook (exit code 1) with output:\nProject 'sequoia' requires that committing clients be mergeinfo-aware,\nbut yours is not. Consider upgrading to a client that is using Subversion 1.5\n(or newer) libraries.", 165001) [17:26] I'm thinking the subvertpy client isn't "mergeinfo" aware? [17:26] hi enigma42 [17:26] jelmer: Hi. :-) [17:28] jelmer: If I discover some odd traceback in bzr-svn, should I ask you here or go straight to filing a bug? [17:28] enigma42: hmm [17:28] jelmer: BTW, congrats on releasing 0.5.0. :) [17:28] enigma42, this is not a standard svn server, is it? [17:28] "pybaz - python bindings for the bazaar revision control system" [17:28] * Tak blink [17:29] Tak: Presumably the old "baz" project, not the current "bzr" project. [17:29] Peng_, thanks! [17:30] enigma42, Is this against a project you've used bzr-svn with before? [17:30] jelmer: It's a collabnet server. [17:31] enigma42, is subvertpy linked against svn 1.5 on your machine? [17:32] jelmer: Yeah, I've used this project before. [17:32] jelmer: The difference is that collabnet just upgrade us to SVN 1.5 on the server recently. [17:32] enigma42, it seems like a change on their end, could that be? [17:32] enigma42, it's not just svn 1.5 on the server, it's some custom commit hook they seem to have [17:33] Oh...I see... [17:33] enigma42, I would be curious as to what they seem to use as the metric to determine whether a client is merge-info aware [17:33] Yeah....I'll try to track that down. [17:35] jelmer: Oh...how can I tell which svn lib subvertpy is linked against? [17:35] ldd on _ra.so [17:35] jelmer: OK. Thanks. [17:38] jelmer: subvertpy is definitely linked against svn 1.5...so like you said...it seems like a strange hook. [18:04] jelmer: Well, um, I got an assertion in RevisionMetadata._set_direct_lhs_parent_revmeta while pulling a branch with bzr-svn 0.5 (latest revision) that I used to use with 0.4. http://paste.pocoo.org/show/qHxKKSCAS4i2Xv3Z0VaY/ === bac is now known as bac_lunch [18:06] Does Bazaar support write-once repositories? ☺ [18:07] for example, a CD-R [18:08] (with a tar filesystem, not iso) [18:08] packs are written in big chunks [18:08] Peng_, please file a bug [18:08] jelmer: Alrighty. [18:08] but i guess it will be unhappy that it can't delete old ones [18:08] Did I file another bug about that repo in the past? [18:09] Peng_, nope [18:09] Bazaar would probably also be unhappy if it couldn't take out locks... [18:10] peng_: ah, oops [18:11] jelmer: ? [18:11] peng_: it's barfing on the fact that that file is named "tags" [18:16] jelmer: Oh. Well, um, I just filed a bug anyway. Oops? [18:16] Peng_, Thanks [18:16] Peng_, This way we can track it, that's useful. [18:16] Okay. [18:17] (Bug 324970, if you haven't checked your bugmail yet.) [18:17] Launchpad bug 324970 in bzr-svn "RevisionMetadata._set_direct_lhs_parent_revmeta asserts while pulling ack's trunk" [Undecided,New] https://launchpad.net/bugs/324970 [18:26] hi folks, how is rebase supposed to work? i tried bzr rebase -r 10..11 and it just tracebacked. [18:26] speakman, which version of rebase? [18:26] Peng_, ROFL [18:27] Peng_, I was checking for path_elements[i-1] == "tags" somewhere [18:27] Peng_, of course when parsing "trunk/tags", that ends up being [-1] [18:28] speakman: generally though, you shouldn't need to specify a range of revisions to rebase [18:28] jelmer: So it's easy to fix? :) [18:28] BBBBBBbzr: ERROR: No common revision, please specify --revision [18:28] except for those "BBBB" :D [18:29] rebase 0.3 [18:29] speakman, what are you trying to accomplish exactly? Because I think rebase might not be the right tool for the job [18:29] you can't combine two unrelated branches with it, since they will have different file ids [18:29] Peng_, yup [18:30] I'm not sure what rebase actually means, but I was thinking it could "flatten" all merges in the history log [18:30] jelmer: Great. :) [18:32] speakman: not existing merges though, it's more of an alternative to merge than a way to change merges [18:32] speakman, of course, you should be able to re-do all your merges using rebase [18:34] boh, i see [18:34] oh* [18:34] jelmer: can I redo merges now, or what do you mean? [18:37] hm, now bzr (in another branch) claims that it's locked. How do one remove locks? [18:37] speakman, you'll basically have to uncommit everything in your branch and re-do the merges, but running "bzr rebase" where you had previously run "bzr merge"" [18:37] speakman, "bzr break-lock" [18:41] speakman, what's the fundamental problem you're trying to solve? [18:42] (Why do you need to flatten your merges?) [18:43] most curios actually, but if there's a way to put merges on top of history instead of making a unnecessary merge post it's pretty interesting [18:43] I've now "uncommit" so it says "pending merges:" at "bzr status", could I do rebase at this stage? [18:44] Peng_, pushed [18:44] speakman, yes, you can now run e.g. "bzr rebase --pending-merges" [18:44] for --pending-merges you need 0.4 though I think === kiko__ is now known as kiko-afk [18:49] speakman: rebasing is generally considered bad though, because it changes the identity of rebased revisions so you should only ever use rebase on revisions that aren'd pushed yet and in use by other people. [18:49] hmm, it was pretty straightforward to move to xmloutput for the supported commands [18:49] tak: cool [18:50] bzr: ERROR: no such option: --pending-merges [18:50] tak: now if only I could get it to compile.. :-( [18:51] speakman, you need bzr-rebase >= 0.4 [18:51] oh, is there a PPA for that? [18:51] no, but you should be able to run something like "bzr branch lp:bzr-rebase ~/.bazaar/plugins/rebase" to install it [18:51] bzr will never block on taking a read lock, will it? [18:53] jelmer: what's the issue you're having? [18:53] Tak, monodevelop version too old [18:54] can I hide my commit made in one of my branch before pushing it to the main repository? (distribute) [18:54] ohh...yeah, and md-trunk requires mono >= 2.0 which isn't in any distro but opensuse yet === bac_lunch is now known as bac [18:55] jelmer: thanks, now rebase actually works too ;) [19:02] hola [19:02] bzr can have commit hooks that run at the commit stage, rather than the push stage, no? [19:02] dobey, yes [19:03] is that documented on the wiki? [19:03] I'd doubt it, there isn't much API documentation on the wiki [19:04] dobey: the regular python API tools should be able to help you [19:04] ah. how would i set up a pre-commit hook? write a plug-in? [19:04] dobey, yep [19:04] ok [19:04] well that's 43433232x better than what git does :) [19:05] though i was hoping i could just drop a script somewhere, and anyone that pulls the branch will get that hook run when they do a commit [19:06] which i suppose i could sort of implement with a plug-in as well anyway [19:06] dobey, that seems like a bad idea to me for security reasons [19:07] why? [19:07] I wouldn't want code from $RANDOM_BRANCH I fetched to automatically run [19:07] well, people already do that anyway [19:07] ./configure && make will do that :) [19:08] dobey: that's intentional decision by the user; it's not a side-effect of running "bzr " [19:09] jelmer: but you can stick arbitrary code in configure, or a makefile, or have it run a built binary, and very few people if any actually read every line of code before building/running a project [19:10] so i don't know that i would call it a security issue really [19:10] dobey: I know I do. [19:10] dobey: at least with confingure you are aware there is execution going on. [19:10] interestingly enough, we just had a similar conversation in #gnome-hackers, because i was wondering if git would let me do stuff [19:11] LarstiQ: but you don't necessarily know what [19:11] you just assume it's configuring to build [19:11] dobey, you can have a look before you run configure [19:11] dobey, hooks can even trigger e.g. during fetch [19:12] dobey: you have a lead to go find out if you want to, and you can do so before running anyting. [19:12] they could, but i only want these to run before commit succeeds [19:12] dobey, of course, nothing stops anybody from creating a "bzr-insecure" plugin that provides this sort of functionality :-) [19:13] dobey: unless hooks prompt everyhere, without being able to override that from the hooks, you have no such protection. [19:13] LarstiQ: you could too if the hooks were in the branch [19:13] dobey: hmja [19:13] bah, if you don't trust the branch your pulling, don't pull it! [19:14] i doubt you've read every line of code that's currently running on your machine :) [19:14] dobey: if you were to have a go at a bzr-insecure plugin, I'd start by printing out a summary of what hooks are 'hooked' [19:15] dobey: I've delegated that to the Debian developers, whom I trust ;P [19:15] LarstiQ: by default it probably wouldn't be anything [19:15] dobey: that way you might have a better chance of convincing people who don't share your opinion that the risk is mitigated. [19:17] of course the things i want to do this with are currently in git or svn (and about to be moved to git :-/), so making a bzr plug-in wouldn't really help me all that much [19:17] is there any reason there's not an "--update-working-tree" option in "push"? :) [19:17] but i wanted to compare, since git doesn't do it at all [19:19] speakman, at some point the smart server will hopefully update the working tree automatically [19:19] speakman, it's not feasible over e.g. sftp or ftp [19:20] how come? [19:20] aka why not? [19:20] james_w: Did you get a chance to look at my reply to your review of bd.profiles? [19:21] speakman: you have to retrieve / re-upload every single file [19:21] using (s)ftp to send the files directly from the current working tree? [19:21] speakman, you can't just upload, you have to make sure the remote hasn't changed [19:21] hm what about requiring --overwrite ? :) [19:21] speakman, --overwrite is about overwriting the branch, not about overwriting files in the working tree [19:22] speakman, there is a plugin that can ssh into the remote server and run "bzr up" for you [19:23] I'm aware of that plugin, but would be builtin imo [19:23] when supported in smart server; will it then work with ssh+bzr which I believe runs the same code? [19:23] (at the remote place) [19:24] speakman, it would do something similar, but inside of bzr and wouldn't require any additional connections [19:24] But I will not be required to have an "bzr serve" runnint 24/7 to be able to update remote tree? [19:25] as long as bzr is actually running on the remote side, there should be any differences right? [19:25] speakman, bzr serve isn't used by bzr+ssh [19:25] well, not as a daemon, anyway [19:27] but if smart serve is able to update remote working tree, why should bzr+ssh ? :) [19:30] speakman: bzr+ssh is using the smart server [19:30] speakman, it basically runs "ssh bzr server --inetd" [19:30] hm? 20:25 < jelmer> speakman, bzr serve isn't used by bzr+ssh [19:31] speakman, well, not as a daemon, anyway [19:32] oh, missed that :D :D [19:33] how far away is that support? is there something one could support? [19:35] for updating the workingtree from the smart server? [19:35] I think the main thing that needs to be done is adding a verb in the smart server protocol for it [19:35] don't think anybody is planning on working on it though [19:38] how can one get engage with bzr? [19:38] jelmer: did I already congratulate you with getting 0.5 released? If not, bij deze :) [19:39] 0.5? [19:39] LarstiQ, thanks! [19:39] speakman, see http://bazaar-vcs.org/BzrDevelopment for hints about development [19:39] you can also always ask here of course [19:39] speakman, bzr-svn 0.5.0 [19:41] it does seem like that page is a bit out of date [19:42] http://bazaar-vcs.org/BzrGivingBack might also have some bits [19:55] bzrtools in the PPA is lagging behind and currently stops bzr for being upgraded [19:57] What is this PPA everyone complains about? [19:57] deb http://ppa.launchpad.net/bzr/ubuntu intrepid main [19:58] What's it supposed to mean? [19:58] (Also, why don't you just grab the packages from experimental?) [19:59] Lo-lan-do, it's the ubuntu equivalent of private repositories [20:04] Lo-lan-do: Personal Package Archive [20:05] jelmer: any idea what the policy is, would I be allowed to upload bzrtools to the PPA? [20:05] LarstiQ, yes, you only have to be in ~bzr [20:05] So any Launchpad user can have their archive hosted on Launchpad? [20:05] Lo-lan-do, yep [20:06] unfortunately uploading for multiple versions of Ubuntu is a pain [20:06] I'll bet many people use these PPAs too. [20:06] Sounds like an excellent way to get packages of dubious origins and quality on one's system. [20:07] Lo-lan-do, a lot of them are just used for testing the packages [20:08] Lo-lan-do, since you upload a source package, and it builds in a chroot [20:08] well, in some sort of jail (xen?) [20:08] moin moin [20:08] Lo-lan-do: trusting PPAs is of course up to the user/sysadmin. [20:08] hey lifeless [20:08] I don't doubt it, I just fear that many users will trust the URL ("oh, it has launchpad in it, must be supported by Canonical in some way") and install stuff from there with no second thoughts. [20:09] Well, apt will do the usual "key not trusted" warings [20:09] *warnings [20:09] I'm still amazed at the amount of trust people put in *random* URLs, so I can only be frightened by such a thing. [20:10] Well, there's little that can be done to help people who don't check anything at all :-/ [20:10] Lo-lan-do, they have different keys they're signed with [20:10] Sure, but giving them the appearance of being "official" probably doesn't help. [20:10] Uploading for multiple versions would probably be reasonably scriptable, using "dch" [20:11] (And "invalid key" mostly means not much more than "one extra click") [20:12] But pardon me for rambling at users, we're here to celebrate bzr-svn 0.5 :-) [20:12] Lo-lan-do: otoh, there's lots of people installing *single* .deb's they download from the net [20:13] Lo-lan-do, stuff in PPA's will at least build from source cleanly [20:15] jelmer: Do you know of a (possible) bug where bzr-svn would output "bzr: ERROR: No such file" after a merge done in SVN? [20:15] Lo-lan-do, nope [20:15] Lo-lan-do, what does ~/.bzr.log say? [20:16] jelmer: http://pastebin.com/d47efe066 [20:17] But I'm not sure it still happens with 0.5.0 since I upgraded later than that log, and I also tried to work around the bug based on a hypothesis of mine. [20:18] Lo-lan-do, yeah, some similar issues to this were fixed [20:18] As far as I can tell, the problem appeared when pulling from a branch that's bound to (and bzr update'd from) an SVN trunk after a merge. [20:19] Data flow: on my local machine, bugfix in branch_foo (bound to SVN /branches/foo), cd ../trunk (bound to SVN trunk), bzr merge ../foo, bzr commit. [20:20] On the remote box, bzr update in svn-gw/trunk (bound to SVN trunk), cd ../branch-foo, bzr pull ../trunk. [20:21] Anyway, I added a gateway for the SVN branch too, and it seems to work now. === spm_ is now known as spm [20:34] speakman: ok, ppa is a liiitle more involved to set up. [20:35] only just barely. sources.list line, pgp key, done :-) [20:35] hm? === abadger19991 is now known as abadger1999 [20:38] maxb: I meant building bzrtools 1.11 for the ppa [20:38] maxb: doc/developers/ppa.txt if you're interested [20:38] hm? I built it locally just by grabbing the Debian experimental source [20:40] jelmer, Jc2k: Can the bzr-*-pack scripts from bzr-git be run from ~/.bazaar/plugins/git, or do they need to be installed somehow? [20:41] Lo-lan-do, they would have to be installed (as /usr/bin/git-*pack actually) [20:41] Lo-lan-do, they're for the server side with ssh though [20:42] I gathered that much, but apparently symlinking them into ~/bin isn't enough and I get "ImportError: No module named git.server" [20:44] Lo-lan-do: that may well just be typos - i cant remember how thoroughly they were tested.. [20:48] hmm [20:52] Jc2k: I can't seem to get it working after an installation --prefix=$HOME, either. [21:03] mwhudson: ping [21:03] vila: hi! [21:03] great, I wasn't sure you was already awake :-) [21:04] i've actually been awake for 4 hours, but that's kinda unusual :) [21:04] wow, is it 08:04 your time ? [21:07] vila: 10:04 [21:08] vila: we're utc+13 [21:09] lifeless: you're listed as maintainer in ~bzr/bzrtools/packaging-dapper, but not in the other distro packaging branches [21:09] odd [21:10] lifeless: I optimistically decided to build bzrtools 1.11 for the ppa [21:11] lifeless: are these packaging branches supposed to stay entirely seperate? [21:11] lifeless: and should the Debian uploaders really be in there still? [21:11] LarstiQ: I'm not entirely sure [21:11] lifeless: should I bother someone else? :) [21:11] LarstiQ: its documented in the hacking guide I believe [21:12] lifeless: I'm trying to follow doc/developers/ppa.txt [21:12] LarstiQ: ah, and its incomplete? [21:12] LarstiQ: I'd ask the list [21:12] poolie isn't online, nor is hjam [21:12] will do [21:46] kfogel: I just learned that you're working for Canonical. Given that you were one of the Subversion project leaders, I'm curious about what you think of bzr now that you've been working with it for a little while. Have you written your opinion on bzr somewhere, e.g. a blog post? [21:46] MattCampbell: no, haven't written it up yet, and am actually avoiding that for now. I'm still very green with bzr. [21:47] I know some other SVN developers have expressed concerns about DVCSes, e.g. that a DVCS makes it too easy to fork a project. [21:49] MattCampbell: I don't think that's ever been the concern. I've heard concerns that dvcs makes it too easy to develop in isolation, which is slightly different. [21:50] kfogel: Oops, yeah, you're right. [21:51] MattCampbell: I haven't experienced that in bzr so far, I have to say. [21:51] But then, I reflexively want to publish my changes, so I wouldn't wait for the tool to encourage it. [21:53] I'm green with bzr too, so I may be wrong, but I think bzr encourages non-core developers to publish changes in a way that makes them easy to merge. [21:54] especially when combined with Launchpad. [23:12] abentley: unshelve is leaving UserWarning: ProgressTask(0/3, msg='Merge phase') is not the top progress task ProgressTask(None/None, msg='') type messages [23:13] thumper: I was not involved in the progress bar changes. [23:13] abentley: ok [23:13] There's a bug about it. [23:13] bug 321750 [23:13] Launchpad bug 321750 in bzr "unshelve emits "UserWarning: ProgressTask(0/3, msg='Merge phase') is not the top progress task ProgressTask(None/None, msg='')"" [Undecided,New] https://launchpad.net/bugs/321750 [23:21] morning [23:24] hello igc! [23:29] * lifeless kicks off a uncapped compressbench run on bzr.dev [23:37] poolie: hi [23:38] poolie: did we ever get that lp-open patch landed? [23:40] mmm busy machine [23:40] load average: 9.12, 8.39, 5.12 [23:49] jml: i did not [23:49] nagging will get you everywhere :) [23:50] lifeless: i think you should go ahead and send that mail about brisbane-core [23:50] but it would be good to add some kind of indicative number [23:50] with caveats if needed [23:50] poolie: I thought you thought it was at the wrong level ? [23:54] it's still worth sending [23:54] rather than waiting to make something else [23:58] poolie: pst'd you