/srv/irclogs.ubuntu.com/2009/02/03/#bzr.txt

furiclelifeless: I'm just doing bzr -r100:03
furiclelifeless: pardon - bzr diff -r 100:03
lifelessfuricle: ok, as a workaround you can use filterdiff -x '*.pdf' or something like that, to remove the pdfs in your diff00:14
lifelessplease file a bug, this is something we can clearly do better on00:14
lifelessJc2k: avg 0.0027543475619600:14
lifelessavg 0.011894975904800:14
Jc2klifeless: did gc just kick some arse or do i need an eye test..00:16
lifelessarse kicking00:16
lifelessas usual the story is more complex00:17
Jc2kah boo :[00:17
lifelesslet me paste results00:17
lifelesshttp://paste.ubuntu.com/113016/00:17
furiclelifeless: 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 info00:18
lifelessfuricle: are you going to file a bug? If not, I will - but I don't have the test data to reproduce if its not obvious00:19
lifelessJc2k: in particular look at the max time00:20
lifeless0.17 is because we read one big zlib hunk00:20
lifelessbut after that the entire inventory for all of the repo is in one compressed record00:20
Jc2kso your saying the zlib reads are gonna kill us anyway?00:23
lifelessI'm saying its going to depend a lot00:23
lifeless><00:23
lifelesslike00:23
lifelessannotate will kick arse00:23
lifelessbut 'read the most recent commit message only' will be slow00:24
lifelessread all commits will be fast00:24
lifelessetc00:24
lifelesswe can trade time and space here00:25
lifelessif we cap the groups smaller00:25
lifelessthen the zlib read will be less00:25
lifelessbut we'll have more groups00:25
lifelessits not beyond hope00:27
lifelesswe can still look at short reads and decompresses for random access00:27
lifelesswe could keep recent texts at the front of groups00:27
Jc2kso 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
lifelessyah00:28
Jc2kwhat does gc have to do?00:28
* Jc2k missed your intro to gc as rob led you away at guadec :(00:29
lifelesscan I say it depends and wave my hands a lot ?00:29
Jc2ksure :D00:29
lifelessit depends, wave wave wave00:29
lifelessok00:29
lifelesshave you read the README in bzr-groupcompress?00:30
Jc2knope, *scurries off to look*00:30
lifelesswhen you've read that you will understand the tuning I'm talking about I hope00:31
lifelessthough I can and will enlarge from there00:31
Jc2kGPL GPL GPL GPL, lets make things smaller. read DESIGN. k thx end. :p00:32
lifelessoh yeah DESIGN.00:32
lifelessme00:32
lifelessh00:32
lifelessI knew which document I meant00:32
lifelesspet peeve, -d isn't global00:34
Jc2kok. generic process parsed.00:36
lifelesswow, think I found a knit bug ><00:36
lifelessso00:36
lifelesstwo layers00:36
lifelessstream-of-build-recipes00:36
lifelessefficient *fast* compressor on top00:37
lifelessthe build recipe stream should be 80% of the compress, or something like that00:37
lifelesscost to get a single text out is clearly:00:38
lifelesscost to decomopress outer enveloper up to the end of the text build recipe + cost to parse and execute the build recipe00:39
lifelessbest case cost would be no outer envelope and the first text in the stream00:39
lifelessbecause we could just read that text and ignore the rest00:40
furiclelifeless: I will file a bug.00:40
lifelessfuricle: thanks00:41
lifelessJc2k: did you catch my cheating ?00:41
Jc2klifeless: so.. to clarify "no outer envelope", no envelope compression at all? no zlib of the recipes?00:44
lifelessright00:44
lifelesswe can get rid of the decomp cost00:44
Jc2kin which case, you just read a full text and there is no decompression or assembly to do at all00:44
Jc2kso its uber fast00:44
lifelessjust read as much of the stream as needed00:44
lifelessbut larger00:45
lifelesssay 100% larger00:45
lifelesswhich of course for network IO isn't such a great thing00:45
lifelessbut its an option00:46
Jc2kbut we can fix that with smart reads, right?00:46
lifelessdepends on the use case00:46
lifelesslike, smart server, the server could zlib on the fly00:46
lifelesssftp, you will be reading whats on disk directly00:46
Jc2kbut group compress + smart server could use delta bases that it knows are on the client for example00:46
lifelessah00:46
lifelesslook closely at a recipe00:47
lifelessits not a delta as suc00:47
lifelessthis is a recipe:00:47
lifeless['label: label\n',00:47
lifeless'sha1: xxxxxxxxxxxxxxxxxx\n'00:48
lifeless 'i,3\n'00:48
lifeless'strange\n',00:48
lifeless'common\n',00:48
lifeless'\n',00:48
lifeless]00:48
lifelessthat recipe will create the text ['strange\n', 'common\n']00:48
lifelessthis recipe:00:48
lifeless'label: newlabel\n',00:48
lifeless'sha1: xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n'00:49
lifeless'c,72,7\n',00:49
lifeless'i,1\n',00:49
lifeless'different\n',00:49
lifeless'i,1\n',00:49
lifeless'\n'00:49
lifeless]00:49
lifelesscopies 7 bytes from byte 72 into its output00:49
Jc2kso recipes allow you to select ranges from the base text and insert next text?00:50
lifelessfrom the stream so far00:51
Jc2kah00:51
Jc2kwhere as git patch opcodes only let you reference the base text00:51
lifelessthis is why it compresses so well without threaded computation of best-parent00:52
lifelessbecause it uses every single text compressed so far as a parent00:52
Jc2kgotcha00:52
lifelessso the least cpu work to get the first text out is no zlib wrapper, and read in only the bytes for the first text00:53
lifelessleast average work is probably zlib, because less IO does matter00:54
lifelesstheres a typical U graph trading off space and time in different scenarios ere00:54
lifelessnow, 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 output00:55
lifelesschanging 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 wanted00:56
lifelessthe greedier we are, the more upfront work, but the less round trips00:56
spatshey 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/d646d28100:58
lifelessspats: its because you are trying at revision 000:59
lifelessspats: do your test case again, but after initing 'main', do a commit00:59
lifelesseven a commit with no content00:59
spatsaha! okay, thanks :)00:59
lifelessrevision 0 can't be merged with things, its a blackhole to bootstrap from :)01:00
lifelessso your merge is in effect a pull01:00
lifelessits a little wart, but one most folk can't ever encounter :P01:00
spatslifeless: 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.01:01
=== mlh_ is now known as mlh
Jc2klifeless: tough problem :)01:06
lifelessJc2k: does git do delta combining?01:07
lifelessJc2k: that is, to recreate something at the end of a chain of 200 texts01:07
lifelessdoes it get(base); patch(base->2); patch(2->3);; etc01:07
lifelessor does it get(base), combine_patches(2,3,4,5,...); patch(base->200)01:08
Jc2kit can chain, and there is a limit on the length of chains01:08
Jc2kits the 1st01:08
lifelessok01:08
Jc2kbase + patch = object 2, object 2 + patch = object 301:08
Jc2kand the limit is much lower than 200 from what i recall01:09
lifelessfolk on forums say --200 --20001:09
lifelessand benchmarkers are using that01:09
lifelessdefault is 5001:09
Jc2ki think it was just 10 in the beginning01:12
lifelessanyhow01:15
lifelessso to be faster than git01:15
lifelesswe have to be faster at some key operations01:16
lifelessand also faster in things like fetch that inspect every object01:16
lifelessI think gc is there now, modulo optimising01:16
lifelessbut the recent-history case still concerns me01:16
lifelessI think that that perhaps some hinting to the engine01:17
Jc2kcan we be a bit bigger and faster locally, and smaller and a bit slower when doing stuff remote?01:17
lifeless'I only want one thing, kthanks'01:17
lifelessyes, thats possible assuming decompress and recompress during push01:17
lifelesswe could even just change the zlib layer for that01:17
=== timchen119 is now known as nasloc__
lifelessok01:31
lifelessso a rough figure01:31
lifelessfirst 1000 revs of bzr01:31
lifelessknits->knits 5 seconds01:31
lifelessgc->gc 19 seconds01:31
lifelessnote that we have much better integrity checking in the latter case, so its not quite apples-apples01:31
lifelessand the gc repo is 50% of the size01:32
lifeless$ du -sh gc/.bzr01:32
lifeless1.3M    gc/.bzr01:32
lifeless$ du -sh plain/.bzr01:32
lifeless2.4M    plain/.bzr01:32
=== asac_ is now known as asac
lifelessslightly faster at some ops too:01:33
lifeless$ time bzr log -v plain/t > /dev/null01:34
lifelessreal    0m11.920s01:34
lifeless$ time bzr log -v gc/t > /dev/null01:34
lifelessreal    0m10.775s01:34
lifelesstree building too01:36
lifelessgc/t$ bzr remove-tree && bzr checkout . && bzr remove-tree && time bzr checkout .01:36
lifeless                                                                                                                                                                                                                   01:36
lifelessreal    0m0.914s01:36
lifelessplain/t$ bzr remove-tree && bzr checkout . && bzr remove-tree && time bzr checkout .01:36
lifeless                                                                                                                                                                                                                   01:36
lifelessreal    0m1.069s01:36
Jc2ksleep time for me (its 1.30 already!)01:40
Jc2kgood luck lifeless01:40
lifelessgnight!01:40
lifeless>< thumper - bzr push bzr+ssh://bazaar.launchpad.net/~lifeless/bzr/fix-chunked01:45
lifeless...01:45
lifelessbzr: ERROR: exceptions.KeyError: 'pqm@pqm.ubuntu.com-20090131231933-8o4phfvmuuizyyn6'01:46
lifelessTraceback (most recent call last):01:46
thumperlifeless: hi01:47
mwhudsonlifeless: is the branch packs5/branch6?01:49
lifelessmwhudson: think so01:49
thumperwas probably initially pushed when that combo made a broken branch01:50
lifeless$ bzr push bzr+ssh://bazaar.launchpad.net/~lifeless/bzr/fix-chunked01:50
lifelessUsing default stacking branch /~bzr/bzr/trunk at bzr+ssh://bazaar.launchpad.net/%7Elifeless/bzr/01:50
lifelessSource format does not support stacking, using format: '1.6'01:50
lifeless  Packs 5 (adds stacking support, requires bzr 1.6)01:50
lifelessthumper: new branch today01:50
thumperarse01:50
lifelessigc: new groupcompress pushed, FYI01:51
lifelessspiv: ^01:51
mwhudsonlifeless: i suppose you're not using bzr 1.9 still are you? :p01:51
spivlifeless: shiny01:51
lifelessmwhudson: bzr.dev01:51
furiclelifeless: For the record - bug#320783 - already existed - I just added my two cents - might be any pdf file01:51
lifelessfuricle: thanks!01:51
lifelessI'm going to get gc able to pull all of bzr.dev01:52
thumperlifeless: it seems that the branch has repo format 1.9 and branch format 1.601:52
lifelessurgh01:53
lifelessso it stacked, but didn't upgrade the branch format on the fly01:53
mwhudsonand is not stacked01:53
lifelessoh01:53
lifelessit is a stackable format branch01:53
lifelessjust not stacked01:53
thumperhttp://bazaar.launchpad.net/~lifeless/bzr/fix-chunked/.bzr/repository/format01:53
thumpersays 1.901:53
lifelessthumper: it should be 1.9, I've upgraded01:53
mwhudsonbranch.conf is empty01:54
thumperhttp://bazaar.launchpad.net/~lifeless/bzr/fix-chunked/.bzr/branch/format01:54
lifelessbut the branch I pushed from is branch6 or so01:54
thumpersays Branch Format 701:54
lifelessBazaar Branch Format 6 (bzr 0.15)01:54
lifelessright01:54
lifelessthats the autoupgrade stuff kicking in to support stacking01:54
thumperk01:54
thumpermwhudson: where is the stacked branch kept?01:55
mwhudsonso it converts the formatting appropriately, but doesn't actually set the stacking01:55
lifelesswhich 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
mwhudsonthumper: .bzr/branch/branch.conf01:55
mwhudsonlifeless: i'm pretty sure the auto-upgrading only happens when you have a mixed format like a new repo but old branch01:57
lifelessmwhudson: ok, anyhow lets not get distracted01:58
mwhudsonyeah01:58
lifelesstheory is the autoupgrade half-worked01:58
mwhudsonwell i'm already distracted :)02:00
mwhudsonbut yes02:00
mwhudsonthere should be tests for this stuff, maybe they only check the formats, not that the new branch is stacked?02:00
lifelessnone in blackbox.test_push02:00
mwhudsonnor branch_implementations.test_stacking it seems02:01
mwhudsonspiv: hey you, you fixed this bug02:01
lifelessdef test_push_doesnt_create_broken_branch02:01
lifelessis close02:01
mwhudsonthat sounds like something i wrote :)02:02
mwhudsonhm, maybe not02:02
mwhudsontest_push_with_default_stacking_does_not_create_broken_branch02:03
mwhudsonin branch_implementations.test_push02:03
lifelessspiv: want to hear a fun bug02:04
spivlifeless: sure02:08
spivlifeless: so long as I don't have to fix it ;)02:08
lifelessyou know how we check file content graph <-> revision graph correspondence02:09
lifelesswe greate graphs like that with '' as the content, for directories.02:09
lifelessguess what 'bzr check' and 'bzr reconcile' do not check02:09
spivThey don't check directories?02:10
lifelessRevisionNotPresent: Revision {('selftest-20050621060616-bb8b5b36e3c950c8', 'robertc@robertcollins.net-20050919060519-f582f62146b0b458')} not present in "<bzrlib.plugins.groupcompress.groupcompress.GroupCompressVersionedFiles object at 0x276e390>".02:10
lifelessthe source repo checks cleanly02:10
lifelessthats the directory 'bzrlib/tests'02:11
lifelessits being triggered by inserting a child of that02:11
spivOops.02:11
lifelessso, I think the child's parent pointer is wrong :P02:11
spivYeah, using a directory's "file content" as a parent for anything does seem rather weird.02:13
igclifeless: new groupcompress in brisbane-core or it's own branch?02:15
lifelessigc: its still seperate02:18
lifelessspiv: well, its another dir02:18
lifelessspiv: this is _very early_ commits02:19
lifelessspiv: so its appropriate, its just not aligned with the graph02:19
lifelessearly weave bug I think02:19
* igc lunch02:19
lifelessigc: but mutual dependencies02:20
igcso lifeless, to benchmark your latest groupcompress, I need to grab the latest plugin code02:56
lifelessigc: yes02:56
igclifeless: and bzr.dev or brisbane-core or doesn't matter?02:57
igcI assume brisbane core is more interesting to you?02:57
igcor not?02:57
lifelessif you are testing bbc node compression, then you need the format in there to use gc02:57
lifelessright now I'm isolating the parameters and performance for the compression layer, which is [mostly] orthogonal to bbc02:58
lifelessigc: have you seen compressbench02:59
igclifeless: I know of it but I haven't tried it03:00
lifelesswell, I'm mainly working with that for micro and then use case tests, for the --gc-plain format, right at the moment03:01
lifelessstill trying to rule-out-or-in03:01
igcsure03:01
lifelessuhm, if you want to put the gc-plain format through usertest, that would be nice03:02
igclifeless: shall do. I have chemo Wed & Fri this week so something mindless like running benchmarks will fit in well :-)03:04
lifeless:)03:05
lifelesslook, its legal drugs, can't complain03:05
igc:-)03:06
spivSpeaking of which... coffee.03:06
* spiv -> afk03:07
lifelessspiv: and for entertainment value, this bug is in out mainline repo03:39
Peng_jelmer: ping?03:42
sohailhi03:46
sohailI just did a bzr merge -r<foo>..<bar> /path/to/whatever03:46
sohailwell actually, a bunch of them03:47
sohailis there a way to list what is about to be merged?03:47
lifelessbzr missing03:47
sohaillifeless, no I mean what I am about to commit03:47
sohailI thought bzr st -v listed the relevant data but apparently not03:47
lifelessthe merged revisions?03:48
lifelessor the file changes?03:48
lifelessoh  sorry03:48
lifelessyou have cherry picked03:48
lifelesscherry picks are special and do not record the revision03:49
sohailorly?03:49
lifelessthey are essentially just a normal diff+patch operation03:49
sohailwhy?03:49
lifelessbecause we haven't implemented a non-transitive graph relationship that is scalable in the cases we know people do cherrypicks in03:50
lifelesssorry if that answer went straight off into technobabble :P03:50
lifelesswe have plans to get this fixed, but its not at the top of anyones queue as far as I know03:50
sohailso if I do bzr merge /path/to/whatever it will try to merge again?03:50
lifelessyes, but if you are doing that, why were you cherrypicking in the first place :)03:51
sohailwell because for now I just want stuff that i know works03:51
sohailand then later the rest of it03:51
lifelessfair enough03:51
lifelessit shouldn't cause many spurious conflicts when it does merge again03:52
lifelessunless you have changed the lines further03:52
sohailoki, thanks03:52
lifelessigc: around?03:53
sohailis it possible to say "ignore these revisions when merging for now"?03:54
lifelesssohail: 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:55
igclifeless: ping03:56
lifelessigc: I was thinking, for usertest03:56
sohailI understood your other babble better than the latest one :-)03:56
lifelessit 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:56
lifelesssohail: heh. So when we merge, you could imagine taking a series of patches and applying them.03:57
igclifeless: it depends ...03:57
lifelesssohail: 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 level03:57
igcthe source repo can be whatever format you like03:58
sohailI see.. I think :-)03:58
lifelesssohail: 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 work03:58
igcthe test is currently "bzr branch mirror feature-branch"03:58
igcfor gc-plain testing right now, ....03:59
lifelesssohail: and even you did, you then need to detect dependencies in later changes on the patch you are skipping03:59
igcI add an extra step though as I assmue that the source isn't in that format03:59
lifelesssohail: 'darcs' does something in this area, and we'd like to too, but it makes most folks minds hurt ;)03:59
lifelessigc: righto; I'm saying both steps are useful data04:00
lifelessigc: 'how slow to get to this format' and 'how slow to clone in the format'04:00
sohaillifeless, well I'd rather just say something like: "When you are merging from this branch, never ever merge revisions a..b"04:00
igclifeless: understood04:00
lifelesssohail: the way you say that today is: merge up to b (but don't commit yet), then merge -r b..a --force, and then commit04:01
sohailhmm04:01
sohaillet me try that04:01
lifelesssohail: that commits a revert of the a..b change in your branch04:01
lifelessif the other branch merges from you, they will have that revert applied to them04:02
sohailoh04:02
lifelessremember that the point of merging is to make two branches content be combined04:02
sohailso that isn't what I want either...04:02
lifelessso given two branches A and B04:02
lifelessin A, merge B+commit04:02
lifelessthen in B, merge A + commit04:02
lifelessis defined as giving you the same content04:02
sohailor maybe I can make a third integration branch?04:03
lifelessI don't know what your scenario is sorry :P04:04
sohailthat's ok, you've been helpful04:05
lifelessI'm happy to discuss things further if you like04:05
sohailI'm ok if you're ok :-)04:05
lifelesswe're all ok then04:05
sohailI have two branches, master & next. master is meant to be stable... The next branch got some stuff checked in that wasn't quite ready04:06
sohailbut I need to make the master use the latest good stuff04:06
sohailI want bzr to keep track of it all for me :-)04:06
lifelessfair enough04:06
lifelessI use looms for that04:06
lifelessbut you don't need to04:06
* sohail is waiting for The Bazaar Book :-)04:07
lifelessthe key thing to know is that I cherrypick when needed, and I have a branch for each conceptual change I'm making04:07
sohailyeah I think that's the thing04:07
lifelessif a branch B depends on branch A04:07
sohailnext time I gotta make a branch for each change04:07
lifelessI merge A into B04:07
lifelessnow, if A has bad stuff in it, but the conceptual change in B could be merged to trunk anyway04:07
lifelesswhat I do is a cherrypick04:07
lifeless-r branch:A..branch:B04:08
sohailwhat does that mean..04:09
sohail-r branch:A..branch:B04:09
lifelesswell04:09
sohaildifference between those two branches?04:09
lifelesslike -r x..y04:09
lifelessexcept that x is the tip of branch A04:09
lifelessand y is the tip of branch B04:09
lifelessso yeah, the difference between the branches04:09
sohailbut how does that apply here?04:10
lifelessit cherry picks the unique work in B without the stuff in A I was unhappy with04:11
lifelessit may not apply to you, I was just sharing how I use bzr to track things for me04:11
sohailoh I see04:11
sohailthis works if you have a branch per conceptual change04:11
lifelessyes04:12
sohailso do you have any suggestion for my situation?04:13
lifelessyou have two branches, master and next, next has some good stuff, and after it some bad stuff, and then some more good stuff?04:13
lifelessand you want all the good stuff in master?04:14
sohailyep04:14
sohailand I want bzr to track this04:14
lifelessok, firstly I'd merge all the good stuff to master that is before anything bad04:14
lifelessbzr merge -r last_good_before_bad; commit04:14
lifelessthen, 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
lifelessI would then go immediately to next and04:15
lifelessbzr merge master; "bzr merge -r first_bad..last_bad ."; bzr commit -m "Master excluded $topic_that_is_bad but merged everything else."04:16
lifelesswhich will merge back from master but keep the bad content (by reinstating it during the merge)04:16
lifelessat 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 stuff04:17
lifelessI would then rename 'next' to 'bad-feature'04:17
lifelessand make a new next :)04:17
lifelessspiv: any idea how to get pdb to handle BZR_PDB=1 when inside a generator?04:19
spivlifeless: 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:20
lifelessspiv: bt shows me the current call stack up to the generator only04:21
lifelessspiv: I can tell you how to reproduce easily if you like04:21
spivWeird, but I'm not totally surprised either.  pdb is a bit stupid.04:21
spivSure.04:21
sohaillifeless, OK, gonna try now04:21
lifelessspiv: install bzr-groupcompress to start with04:21
spivI have encountered wierdnesses with pdb + generators before.04:21
lifelesssohail: cool04:21
lifelessspiv: I know which is why I am mentioning04:21
sohaillifeless, ok so bzr merge -r last_good -> bzr is not tracking this merge04:21
sohaili.e., it is a normal diff+patch04:22
lifelesssohail: it should track it.  Its '-r X..Y' that it won't track04:22
lifelesssohail: '-r X' will get tracked04:22
spivMostly it's just "output looks a bit wonky", occasionally it's "pdb crashes"...04:22
lifelessspiv: this is 'interpreter exits'04:22
lifelessspiv: anyhow, bzr init-repo --gc-plain /tmp/foo04:23
lifelessbzr branch $bzr.dev /tmp/foo/t04:23
lifelesswoops04:23
sohaillifeless, howcome when I do bzr st -v it just says files are modified?04:23
lifeless-r 1500 on that04:23
sohailoh no, there it goes04:23
sohailmy bad04:23
lifelessspiv: then, BZR_PDB=1 bzr pull -r 1600 -d /tmp/foo/t04:23
lifelessspiv: you will want to do a setup.py build_ext -i in groupcompress04:25
sohaillifeless, it is warning me that I am doing a criss-cross merge04:26
lifelesssohail: thats probably ok in this case, just check the diff before committing and make sure its what you want04:27
lifelessspiv: how is it going04:28
spivlifeless: just started the -r 150004:30
spivOh, heh, I need your fix_chunked fix :)04:30
lifelessyou worked with mbp on the stacking stuff didn't you ?04:30
spivI worked a bit on fixing a bug well after it landed...04:31
spiv(bug 291046)04:31
ubottuLaunchpad bug 291046 in bzr "pushing branch6/packs5 to location with default stacking policy creates broken branch" [High,Fix released] https://launchpad.net/bugs/29104604:31
lifelessdo you know why add_fallback_repository sets fetch_order to 'topological' ?04:31
lifelessseems weird/unrelated to me04:32
davidstraussI think Bazaar developers might enjoy this: http://fourkitchens.com/blog/2009/02/03/importance-atomicity-or-why-git-staging-area-bad04:32
spivNo, I don't know why either.  I share your confusion.04:32
davidstrauss:-)04:32
lifelessdavidstrauss: heh; so I would like to add commit -i04:33
lifelessI do appreciate the philosophic argument that commiting untested code is bad04:33
davidstrausslifeless: what is commit -i?04:33
lifelessinteractive commit, prompt you like shelve does04:33
davidstraussah04:33
lifelessbut what you say 'n' do isn't committed04:33
lifelesss/do/to/04:34
sohaillifeless, should I try bzr merge --weave for the bzr merge next step04:34
lifelessI think that we should encourage good behaviour but not punish folk that want to run with knives04:34
sohailit causes less conflicts04:34
davidstraussan interactive commit would have the same philosophical issues of git staging04:34
lifelesssohail: ah yes, thats probably the criss-cross04:34
lifelessdavidstrauss: indeed04:34
sohaillifeless, ok thanks04:34
lifelessdavidstrauss: though some less, in that at least it can only commit things that are in front of you04:35
lifelessdavidstrauss: 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 operation04:36
lifelessI don't want *that*04:36
davidstrausstrue04:36
lifelessbut I would like you to (for instance) exclude a debugging comment easily04:37
lifelessat the moment you can do that by listing every other file04:37
lifelessa -x option to exclude some files would let you exclude one file, and its a small step from there to excluding one hunk04:37
davidstrausslifeless: 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
spivRight.  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:38
lifelessdavidstrauss: Would you be happy if a plugin could hook into bzr commit -i, to make that happen?04:39
davidstrausslifeless: I think interactive commit itself ought to be the plugin.04:39
spivlifeless: 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
davidstrausslifeless: At least initially.04:40
lifelessdavidstrauss: I believe it is already. I want something polished and core-quality04:40
davidstrausslifeless: I see04:40
lifelessspiv: about 4-504:40
spivOh, there it goes.04:40
davidstraussspiv: You forgot to tell it to --run-content.04:40
lifelessspiv: I blame knits04:40
davidstraussspiv: Or --jog-content04:40
spivdavidstrauss: --hyperspace-warp-content would do ;)04:40
davidstraussOr --meandering-content if you're a masochist with too much time04:41
spivlifeless: 10.5 for the whole branch -r1500.04:41
spiv10.5 minutes, that is.04:41
davidstraussthough that kills parallelism :-/04:41
lifelessspiv: yeah04:41
lifelessspiv: cloning it again is a lot faster04:42
lifelessbzr branch /tmp/foo/t /tmp/faster ;P04:42
lifeless1m4 for me that is04:43
spivlifeless: hmm, I'm not sure this is pdb's fault so much as Python's...04:44
lifelessspiv: I didn't blame pdb ;)04:45
lifelessI asked how to get pdb to be useful here04:45
lifelesshere @ pedants R us04:45
spivActually, no, I blame pdb after all...04:47
lifelesscool04:47
lifelesspatch?04:47
lifeless:)04:47
spivlifeless: http://rafb.net/p/6deAgv30.html is your traceback04:47
spivI'm still figuring out why pdb can't figure that out.04:48
lifelessyeah thats what I want to see in pdb04:48
spivAnd that's what traceback.print_tb(sys.exc_info[2]) gives in that except block.04:49
spiv(using sys.exc_traceback gives the same result)04:49
* 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
spivAh, I think I see why pdb gets confused.04:52
lifelessdavidstrauss: cool04:52
davidstraussUnfortunately, one of the conclusions is that Loom isn't ready for prime-time.04:52
lifelessthats fair enough04:53
lifelessI would really love feedback on any new (no bugs exist) issues04:53
lifelesseven conceptual ones04:53
davidstraussI'm very happy with the conceptual foundations of Loom.04:53
davidstraussI think it completely trumps Mercurial queues and StGit there.04:54
spivlifeless: 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
spivlifeless: but it relies on being able to recursively walk t.tb_frame.f_back.f_back.f_back... to get back to the top04:54
davidstraussIt's very important that a patch management tool integrated into a distributed VCS allow branching, pushing, pulling, etc. *with all the patches*.04:55
spivlifeless: and generators break that; f_back ends up as None04:55
spivlifeless: so pdb takes a perfectly good traceback and manages to fail to use most of it04:55
lifelessdavidstrauss: ah yes your bug04:56
davidstrausslifeless: I'm a little disappointed with the "record" command.04:56
lifelessI haven't seen that bug before and its high on my todo list04:56
davidstraussIt seems like it would be architecturally easier to natively support in-place branch switching and layer loom on top of that.04:58
davidstraussAnd by in-place, I mean with all branches being stored git-style.04:58
lifelessdavidstrauss: I don't think it would make a great deal of difference; but yes it would reduce the loom-specific code somewhat04:58
davidstraussMost of the loom issues I run into involve loom's implementation of multiple branch storage for one working tree.04:59
lifelessdavidstrauss: ok, well I'm be sure to read your posts if you could link them here04:59
davidstraussthanks :-)05:00
lifelessuserfeedback++05:00
davidstraussI love the work you guys do. It's really inspired me to care about the theoretical underpinnings of VCS.05:00
lifelessspiv: so what should pdb do ?05:00
spivlifeless: http://rafb.net/p/SORZ1J60.html05:08
spivlifeless: it seems the Pdb class handles this just fine05:08
spivlifeless: it's just the pdb.post_mortem function that makes the bad assumption that f_back will always work.05:08
lifelessbb:approve05:09
lifelesswith extra credit or a bug repo on python itself05:09
spivSpecifically, bdb.Bdb.get_stack seems to cope just fine with this traceback, so long as post_mortem hasn't already neutered it.05:09
lifelessspiv: though s/\<t\>\/tr/ or something05:11
spivlifeless: sure05:11
spivlifeless: "tb" is fairly idiomatic05:12
lifelesssure05:12
lifelessjust 't' is teh short05:12
spivYeah.05:12
spivI was cribbing furiously from pdb.py at that point, which uses f and t everywhere.05:13
lifelessugh05:13
lifelessdo you debug pdb to fix it05:18
lifelessor just poke to get a theory?05:18
spivI 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
spivlifeless: here's a snippet of my session:05:19
spiv(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_next05:19
spivNone05:19
spiv;)05:19
spivAnyway, 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:21
spivlifeless: hah, I see that current trunk pdb.py simply doesn't do the fast-forward in post_mortem anymore05:24
spivAFAICT it will actually leave you at the top of the stack when the prompt starts, though.05:25
lifelessshrug ;P05:26
spivHmm, and prior to that change that function had been untouched since 1992...05:26
lifelessok05:28
spivWeird, 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
lifelessso, mathias needs to backport it :)05:28
spivI was going to try submit a patch to Python, but not I'm just confused :)05:28
spivMaybe I'll submit a patch anyway, restoring the "start from the innermost frame" feature without the bug we're hitting.05:29
lifelesswould be nice05:29
spivAh, no, a different commit removed those lines.05:35
spivI think maybe I want a gannotate that puts a thin red line where some revision deleted lines without adding any...05:35
spivlifeless: http://bugs.python.org/issue415005:36
lifelessspiv: that would be nice, though perhaps nicer would be a [+]05:37
lifelessor a slider for time for the file05:37
spivlifeless: so, it appears to already be fixed in upstream; the patch is small and nice, I'll ask about a backport.05:38
lifelesswell, I'm doing yet-another-check of bzr.dev to validate this fetch issue05:39
lifelessI doubt I'll get more done today :(05:39
spivlifeless: btw, if you use Python 2.6 you should already have the fixed pdb.py, I think.05:42
lifelessI'm on 8.1005:46
lifelessperhaps I should take the plunge05:46
lifelessigc: interesting patch05:52
lifelessigc: do you handle new children being added, and do you track those children thereafter?05:52
lifelessand the converse05:52
igclifeless: i believe so, and files being changed to directories and vice versa :-)05:53
igclifeless: I'm looking forward to getting a TreeDelta directly from the lower layers when the split inventory stuff is closer05:54
igcthen log -v will be *much* better05:55
igclifeless: just to be clear, I track the *directory* and changes to it05:55
igcso if I file moves out of it, it's no longer tracked when it's out of the directory05:56
lifelessok05:56
igcin other words, it's more than simply logging dir/* as separate files05:56
lifelessI'm not saying thats right or rong05:57
lifelessbut I think it should be made clear to users of the cli and api, if its not today05:57
lifelessI haven't read the code yet05:57
igclifeless: shall do05:57
lifelessI have some partial parsin via regex stuff I did for bzr-search, which I then shelved.05:57
lifelesshow are you doing your partial parsing?05:57
lifelessoh, and a note that may be obvious - you can't use knit deltas at all for what you are doing05:58
igcchecking against file-ids and parent-ids in the inventories05:58
lifelessif its not I'll walk you through that05:58
igcplease do05:59
lifelessbrb gotta pickup caffeine at the shop05:59
igcnp05:59
lifelessso06:11
lifelessto do a delta you need to know about deletes06:11
lifelessand knit deltas only tell you about the fact of a delete, not the content of the delete06:12
lifelessigc: ^06:20
igclifeless: I think the fact of a delete is enough06:24
igcshow_diff_trees() is used to show the patch if requested06:24
lifelessyou don't know the id that was deleted06:25
igcwon't changes_from() work that out given two RevisionTrees?06:26
lifelessor even that a delete occured in the general case06:26
lifelessigc: yes but that isn't using knit deltas06:26
lifelessmaybe we're talking about different things :)06:27
igclifeless: I think so. I'm generating filtered revision trees and them passing them to changes_from to calc the TreeDelta06:28
lifelessigc: so you let them fully parse the inventory06:28
lifelessigc: ?06:28
igcthat's one option (2a in my email), yes06:28
lifelessyou said you went 2b though06:29
igcthe other option is only building the InventoryEntry's we want. So we parse until we're found the fileids we care about06:29
lifelessigc: using the full xml of the inventory ?06:29
igcsaving some time and some oject creation06:29
igcyes06:30
lifelessok06:30
lifelessalso not using the knit deltas ;)06:30
igcright06:30
igcI wasn't clever enough to even consider the knit deltas :-)06:30
lifelessbzr-search has a tuned function for this that does most of what you want06:32
lifelessyou might like to compare against it06:32
igcshall do06:32
lifelessit doesn't parse06:32
lifelessbut it gets file paths for a set of ids06:32
igcI've been playing with bzr-search a bit lately but haven't dived into the code much yet06:32
lifelesswhich is similar, it might have some ideas for you even if its not highly relevant06:32
igclifeless: I like how bzr-search uses it's own area under .bzr06:33
igcI suspect bzr-revnocache ought to do the same thing06:33
lifelessas a starting point, definitely;)06:33
igcI suspect users will feel 100x more confident deleting a cache under .bzr/bzr-revnocache than .bzr/branch :-)06:34
lifelessyah06:34
igclifeless: any reason why bzr-search shows rev-ids in the UI. I expected revnos :-)06:35
lifelessbzr-revnocache doesn't exist06:35
lifelessat the time of writing06:35
lifelessI have some ideas about how to do it06:35
lifelessbut hadn't implemented06:35
igcsure06:35
lifelessa goal in bzr-search was to never implement things that scale badly06:36
lifelessa related issue is 'is this revid in the branch'06:37
lifelessuntil I can answer that I can't share search indices across branches06:38
igcright. The functionality is sweet, the UI disappoints though. I half-expected to see the same output as bzr-log06:38
lifelesswell, I could, but it would be odd to get hits not in your branch06:38
lifelessigc: it does hook into log06:38
igcah - ok06:38
igcI was aware of the log hook for messages06:39
lifelessigc: bzr log -m '\bRobert\b'06:39
lifelessigc: time that with and w/o a search index06:39
lifelessI would kindof like to add a search specific search syntax - let log use bzr searches native syntax06:40
igcit was more that I hoped bzr-search made "log --authors 'Mr Smith|Mrs Smith'" unnecessary06:40
lifelessbut thats harder06:40
lifelessigc: oh, I see. Well it finds both revisions and files; I think hooking into log is appropriate for showing revisions in full detail06:41
lifelessigc: so I'd like 'log -s Smith' to Just Work06:41
lifelessbut that needs some refactoring around the query concept in log06:41
igcinteresting.06:41
lifelessto hook in cleanly06:41
lifelessnot to mention adding a parameter, or whatever06:42
lifelesslog -m is unsatisfying in two ways at the moment06:42
lifelessfirstly its a regex, and bzr-search doesn't [yet] have a regex engine built in06:42
lifelessso I check for the simplest form of regex I can match06:43
lifeless\bfoo\b == ('foo',) as a search term inside bzr search06:43
lifelessand anything I cant handle, I pass through06:43
igcI saw that bit of the bzr-search code06:45
lifelessI could turn -m 'foo' into '\bfoo\b', in regex terms06:45
lifelessbut that isn't drop-in for users06:45
lifelessI like drop-in06:45
igcwhat's the second issue?06:46
lifelessthe standard ui only searches the message06:48
lifelessso bzr-search has to search more, then filter back the results06:49
lifelessits a bit ugly06:49
sabdfllifeless: how is your current work landing in brisbane-core?06:52
jelmerPeng, pong06:52
jelmerPeng_, pong06:53
sabdfli haven't seen any movement in brisbane-core since jon in the first week of Jan, other than bzr.dev merges06:54
sabdflwondering if i'm missing the goodness06:54
lifelesssabdfl: I'm hammering on compression logic at the moment06:55
sabdflwhat's the best way to keep up?06:56
lifelesssabdfl: 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:56
lifelessat the moment, because I'm not making changes to brisbane-core, there is my compressbench benchmarker06:57
sabdflok06:57
lifelessand groupcompress had some stuff land in it today, which takes it to 5 times faster than knits for decompression, on average06:57
lifelessfor the use case of examine-all-history06:58
lifelessI'm sorry, I have to head off now, just about 6 and stuff happening :)06:58
lifelessI'll drop a mail to you about tracking what we're doing, and what we're doing tomorrow06:59
* lifeless is gone07:01
vilahi all07:13
Peng_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
ubottuLaunchpad bug 322856 in bzr-svn "svn-v4 revids are used for tags on an svn-v3 branch" [Medium,Fix released] https://launchpad.net/bugs/32285607:19
jelmerPeng_, bzr-svn 0.5 revno 2507 ?07:22
Peng_jelmer: Yep.07:23
jelmerPeng_, Which tags do not work ?07:27
Peng_jelmer: .bzr/branch/tags is exactly the same as it was beforehand.07:27
Peng_jelmer: Ehh, what's the right way to test it? i just renamed .bzr/branch/tags and tried "pull".07:28
jelmerPeng_: Yeah, that should work07:28
jelmerPeng_: So lots of question marks?07:28
jelmerI've confirmed it working here with lighttpd 1.4.x and trunk07:28
Peng_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:29
jelmerPeng_, 1.3.x will indeed give lots of "?" marks since I suspect most of the revisions that are tagged are not in its ancestry07:30
Peng_...Good point.07:31
Peng_OK, my mistake. (Especially since 1.3.x uses all svn-v4 IDs anyway.)07:32
Peng_1.4.x still created a couple bad tags, though, didn't it?07:32
jelmerjust two question marks here07:33
jelmerand those are for revisions not in the ancestry07:33
Peng_OK.07:33
Peng_Sorry for bothering you, then.07:34
Peng_And thanks for fixing the bug.07:34
jelmernp07:34
sohailmore 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"07:58
davidstrausssohail: are you running unbind?08:12
sohaildavidstrauss, yeah I ran unbind after I saw that message08:15
sohailthen it said: "Can't switch on branch only checkout"08:15
davidstrausssohail: unbind does not talk to the parent branch08:15
davidstrausssohail: branch-only checkout?08:15
sohailargh08:15
sohailthis is so confusing08:15
davidstrausssohail: what did you run to create the checkout?08:16
sohaildavidstrauss, I'm pretty sure it was a clone actually08:16
davidstrausssohail: then unbind should say that you can't unbind what is already a standalone branch08:16
sohaildavidstrauss, it didn't say that08:18
davidstrausssohail: what do you get from bzr info?08:18
ronnymoin08:18
sohaildavidstrauss, oh I decided to dig myself into a deeper hole and rm -rf08:19
sohailso now I don't know08:19
sohailronny, moin08:19
ronnyjelmer: can  you take a look at the commit method line 125 in http://paste.pocoo.org/show/10254908:19
davidstrausssohail: i'm talking about the alleged checkout08:19
sohaildavidstrauss, yeah I know it's gone08:19
ronnyjelmer: it complains about added paths in the repo not being versioned08:19
davidstrausssohail: what do you have left?08:19
sohaildavidstrauss, nothing08:19
sohailI'm just doing a fresh checkout now08:19
davidstrausssohail: oh, yeah, bzr can't help if you delete everything08:20
sohailnope08:20
sohailoh well :-)08:20
sohaildavidstrauss, can I still work offline with a checkout?08:20
davidstrausssohail: sort of, but i don't recommend it08:20
sohailargh08:21
sohailso how do you do this when offline: http://bazaar-vcs.org/Tutorials/CentralizedWorkflow08:21
* igc dinner08:21
sohailah I see08:22
davidstrausssohail: you sort of can't08:22
sohailbzr commit --local08:22
sohailorly?08:22
davidstrausssohail: be very wary of --local08:22
sohailhttp://bazaar-vcs.org/CheckoutTutorial08:22
sohailwhy?08:22
davidstrausssohail: https://bugs.launchpad.net/bzr/+bug/11380908:23
ubottuLaunchpad bug 113809 in bzr "update performs two merges" [High,Confirmed]08:23
sohailwonderful08:25
sohailwell it is as important to know the limitations of your tools as it is to know your own limitations :-)08:26
ronnyhmm08:27
ronnyi wish i did know whats wrong there08:27
ronnyjelmer: it seems like some methods require me to use the way of abspath -> wt.relpath to get working results08:33
ronnyhmm08:38
ronnyjelmer: WorkingTree.rename_one seems nasty, imho too much semantics08:38
jelmerronny: hi08:42
ronnyok08:43
ronnywth a bit luck all bzr tests will pass now08:43
ronnyyay08:43
ronnynative bzr support done08:44
ronny(at least for workdirs)08:44
jelmerronny: w00t :-)08:44
ronnyhmm08:44
jelmerhmm?08:44
ronnyi still have to deal with branch-management now08:45
jelmerI'll be away again in a bit, my class is starting08:45
jelmerronny: but feel free to talk to me, I'll reply when I get back08:45
ronnyk08:46
ronnyi have no classes at, exams time08:46
jelmerronny: ah, that explains why you have so much time to work on anyvc ;-)09:46
nuaif 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
nua...obviously the plugin would be installed on the server, not the client machine10:00
mwhudsonnua: the hooks will run on the server side, yes10:05
nuamwhudson: thanks, I'll get writing some code then :)10:06
nuamwhudson: I can't seem to get post_commit to work on the server, currently only have post_change_tip_working10:31
Peng_Do pushes count as "commits" for post_commit?10:34
Peng_jelmer: ping?10:41
jelmerPeng_, pong?10:41
Peng_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
jelmerPeng_, You might run into bug 18520010:43
ubottuLaunchpad bug 185200 in bzr-svn ""database is locked" bzr internal error" [Low,Triaged] https://launchpad.net/bugs/18520010:43
jelmeralthough it shouldn't cause corruption or anything10:43
Peng_jelmer: If it happens at the wrong time, could that kill the "bzr branch"?10:43
jelmerpeng_: yes10:44
Peng_Eh. That would be bad.10:44
Peng_Oh, good. I risked it anyway and nothing bad happened.10:44
Peng_jelmer: Thanks. :)10:46
* Peng_ wonders why the progress bar says revision 1154 is taking so long, when it should be tiny.10:46
jelmerno idea10:46
Peng_I _do_ have several really large revisions, but it shouldn't be that one.10:47
vilamwhudson: ping10:51
UdontKnowHi11:24
AfCThat's a good nick.11:33
UdontKnowAfC: and an old one11:38
=== abentley1 is now known as abentley
=== Kamping_Kaiser is now known as kgoetz
gorgapor#join bzr-dev14:12
Peng_There's a #bzr-dev?14:12
gorgaporlol, no actually14:12
gorgaporsorry for the typo14:12
gorgaporbut i do have a development question: with bzrlib, how do i get the root folder of the current branch?14:13
Peng_I don't know. You mean like the "bzr root" command? If so, you could check how it's implemented.14:13
gorgaporhey cool, i didn't know about that command14:14
gorgaporyeah i'll check that14:14
gorgaporthanks14:14
guilhembigorgapor: hi! you could do this:14:19
guilhembi        self.wt = WorkingTree.open_containing(u'.')[0]14:19
guilhembithen self.wt.basedir is the root dir.14:20
guilhembi(at least it used to be true a few months ago, haven't checked since).14:20
gorgaporguilhembi: thanks. actually though, i came up with a very similar solution from diving into the bzrlib source14:20
gorgaporbut you suggesting the same thing gives me much more confidence that i'm doing it the right way14:20
guilhembi:)14:21
igcnight all14:30
=== nevans1 is now known as nevans
=== kiko-afk is now known as kiko
nuaquick q: just looking at the bzrlib api docs, what is branch stacking?15:16
Peng_nua: Errm. When you do "bzr branch --stacked", bzr does not download and save the entire history.15:17
Lo-lan-donua: As far as I understood it, it's just saying that part of the history of a branch is stored remotely.15:17
Peng_That works too.15:17
nuaOk, I can safely ignore that for now then :)15:17
nuaIf 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()?15:19
ronnyjelmer: ping?16:29
jelmerronny, pong16:29
ronnyjelmer: is there any reason why some apis require me to call WorkingTree.relpath on absolute paths before they work?16:30
ronnyand does it change for newer bzr versions16:30
ronny(im currently on 1.6)16:31
ronnycause of ubuntu16:31
jelmerronny, generally, relative paths should always be save (since that's what the Tree API uses)16:38
jelmerronny, I think my earlier recommendation to just specify absolute paths is incorrect16:39
jelmerronny, and that using relative paths everywhere would be the sa{f,n}est way to go16:39
ronnyjelmer: my cwd is always different from the tree path, and it takes all relative paths relative to the cwd16:39
jelmerronny, you should be able to use wt.relpath(wt.abspath(path))16:41
jelmerronny, not really neat, but should do the job..16:41
ronnynot exactly nice16:41
ronnywell, its what i do atm16:43
kfogelI 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:51
kfogelBut nothing got pushed, and when I later did 'bzr pull' in my mirror of trunk, nothing came down.16:52
kfogelThe help for 'bzr tag' says that tags are pushed/pulled between branches just like revisions, but that didn't seem to happen.16:52
kfogelAm I missing something?16:52
fullermdYou sure the tag didn't come down?16:52
kfogelBy the way, 'bzr status' immediately after I made the tag also showed no changs.16:52
kfogelfullermd: well, let me see...16:52
kfogelfullermd: holy cow16:53
kfogelfullermd: well, you're right16:53
kfogelit came down16:53
kfogelit's just that neither the push nor the pull indicated that *anything* had been transmitted.16:53
* fullermd nods.16:53
kfogelThey looked exactly as if I had pushed or pulled when there are no changes.16:53
fullermdThat's one of the long-standing quirks of tags.16:53
Lo-lan-doIs there a way to tell bzr not to look for a smart server when accessing a branch through HTTP?16:55
Lo-lan-doI'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
sanctusHi, can I hide my commit made in one of my branch before pushing it to the main repository? (distribute)16:56
=== NfNitLoo` is now known as NfNitLoop
Takjelmer: ping md-bzr17:10
jelmerTak, hi17:10
Takhello17:10
Takso, I'm playing with bzr shell as an alternative interface17:11
Takit's a bit slower for "regular" operations like checking file status17:11
jelmerTak: If you're looking at alternative interfaces, xmloutput should be the primary choice I think17:11
Takis there a minimum version for that?17:12
jelmerit's a plugin, I'm not sure what bzr version it requires17:12
jelmerTak, I thought you were importing bzrlib using IronPython - does that not work?17:13
Takno, ironpython only works with ironpython :-/17:13
Takusing bzrlib directly would be ideal17:14
=== thekorn_ is now known as thekorn
Takhmm, xmloutput only implements a subset of the commandset I'm using17:15
jelmerthere is also another C#-based wrapper of bzrlib around, ahve you looked at that?17:16
jelmerI think it's in the bzr-visualstudio project, not sure what state it's in17:16
Takhmm, I think you pointed me to that before17:16
Takif it's the one I recall, I couldn't get it to build17:16
enigma42subvertpy question...17:25
enigma42I'm getting errors17:25
mwhudsondarn it vila17:25
mwhudson's gone17:25
enigma42bzr: 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:25
enigma42I'm thinking the subvertpy client isn't "mergeinfo" aware?17:26
jelmerhi enigma4217:26
enigma42jelmer: Hi. :-)17:26
Peng_jelmer: If I discover some odd traceback in bzr-svn, should I ask you here or go straight to filing a bug?17:28
jelmerenigma42: hmm17:28
Peng_jelmer: BTW, congrats on releasing 0.5.0. :)17:28
jelmerenigma42, this is not a standard svn server, is it?17:28
Tak"pybaz - python bindings for the bazaar revision control system"17:28
* Tak blink17:28
Peng_Tak: Presumably the old "baz" project, not the current "bzr" project.17:29
jelmerPeng_, thanks!17:29
jelmerenigma42, Is this against a project you've used bzr-svn with before?17:30
enigma42jelmer: It's a collabnet server.17:30
jelmerenigma42, is subvertpy linked against svn 1.5 on your machine?17:31
enigma42jelmer: Yeah, I've used this project before.17:32
enigma42jelmer: The difference is that collabnet just upgrade us to SVN 1.5 on the server recently.17:32
jelmerenigma42, it seems like a change on their end, could that be?17:32
jelmerenigma42, it's not just svn 1.5 on the server, it's some custom commit hook they seem to have17:32
enigma42Oh...I see...17:33
jelmerenigma42, I would be curious as to what they seem to use as the metric to determine whether a client is merge-info aware17:33
enigma42Yeah....I'll try to track that down.17:33
enigma42jelmer: Oh...how can I tell which svn lib subvertpy is linked against?17:35
jelmerldd on _ra.so17:35
enigma42jelmer: OK. Thanks.17:35
enigma42jelmer: subvertpy is definitely linked against svn 1.5...so like you said...it seems like a strange hook.17:38
Peng_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/18:04
=== bac is now known as bac_lunch
luke-jrDoes Bazaar support write-once repositories? ☺18:06
luke-jrfor example, a CD-R18:07
luke-jr(with a tar filesystem, not iso)18:08
mwhudsonpacks are written in big chunks18:08
jelmerPeng_, please file a bug18:08
Peng_jelmer: Alrighty.18:08
mwhudsonbut i guess it will be unhappy that it can't delete old ones18:08
Peng_Did I file another bug about that repo in the past?18:08
jelmerPeng_, nope18:09
Peng_Bazaar would probably also be unhappy if it couldn't take out locks...18:09
jelmerpeng_: ah, oops18:10
Peng_jelmer: ?18:11
jelmerpeng_: it's barfing on the fact that that file is named "tags"18:11
Peng_jelmer: Oh. Well, um, I just filed a bug anyway. Oops?18:16
jelmerPeng_, Thanks18:16
jelmerPeng_, This way we can track it, that's useful.18:16
Peng_Okay.18:16
Peng_(Bug 324970, if you haven't checked your bugmail yet.)18:17
ubottuLaunchpad bug 324970 in bzr-svn "RevisionMetadata._set_direct_lhs_parent_revmeta asserts while pulling ack's trunk" [Undecided,New] https://launchpad.net/bugs/32497018:17
speakmanhi folks, how is rebase supposed to work? i tried bzr rebase -r 10..11 and it just tracebacked.18:26
jelmerspeakman, which version of rebase?18:26
jelmerPeng_, ROFL18:26
jelmerPeng_, I was checking for path_elements[i-1] == "tags" somewhere18:27
jelmerPeng_, of course when parsing "trunk/tags", that ends up being [-1]18:27
jelmerspeakman: generally though, you shouldn't need to specify a range of revisions to rebase18:28
Peng_jelmer: So it's easy to fix? :)18:28
speakmanBBBBBBbzr: ERROR: No common revision, please specify --revision18:28
speakmanexcept for those "BBBB" :D18:28
speakmanrebase 0.318:29
jelmerspeakman, what are you trying to accomplish exactly? Because I think rebase might not be the right tool for the job18:29
jelmeryou can't combine two unrelated branches with it, since they will have different file ids18:29
jelmerPeng_, yup18:29
speakmanI'm not sure what rebase actually means, but I was thinking it could "flatten" all merges in the history log18:30
Peng_jelmer: Great. :)18:30
jelmerspeakman: not existing merges though, it's more of an alternative to merge than a way to change merges18:32
jelmerspeakman, of course, you should be able to re-do all your merges using rebase18:32
speakmanboh, i see18:34
speakmanoh*18:34
speakmanjelmer: can I redo merges now, or what do you mean?18:34
speakmanhm, now bzr (in another branch) claims that it's locked. How do one remove locks?18:37
jelmerspeakman, 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
jelmerspeakman, "bzr break-lock"18:37
jelmerspeakman, what's the fundamental problem you're trying to solve?18:41
jelmer(Why do you need to flatten your merges?)18:42
speakmanmost 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 interesting18:43
speakmanI've now "uncommit" so it says "pending merges:" at "bzr status", could I do rebase at this stage?18:43
jelmerPeng_, pushed18:44
jelmerspeakman, yes, you can now run e.g. "bzr rebase --pending-merges"18:44
jelmerfor --pending-merges you need 0.4 though I think18:44
=== kiko__ is now known as kiko-afk
jelmerspeakman: 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
Takhmm, it was pretty straightforward to move to xmloutput for the supported commands18:49
jelmertak: cool18:49
speakmanbzr: ERROR: no such option: --pending-merges18:50
jelmertak: now if only I could get it to compile.. :-(18:50
jelmerspeakman, you need bzr-rebase >= 0.418:51
speakmanoh, is there a PPA for that?18:51
jelmerno, but you should be able to run something like "bzr branch lp:bzr-rebase ~/.bazaar/plugins/rebase" to install it18:51
mwhudsonbzr will never block on taking a read lock, will it?18:51
Takjelmer: what's the issue you're having?18:53
jelmerTak, monodevelop version too old18:53
sanctuscan I hide my commit made in one of my branch before pushing it to the main repository? (distribute)18:54
Takohh...yeah, and md-trunk requires mono >= 2.0 which isn't in any distro but opensuse yet18:54
=== bac_lunch is now known as bac
speakmanjelmer: thanks, now rebase actually works too ;)18:55
dobeyhola19:02
dobeybzr can have commit hooks that run at the commit stage, rather than the push stage, no?19:02
jelmerdobey, yes19:02
dobeyis that documented on the wiki?19:03
jelmerI'd doubt it, there isn't much API documentation on the wiki19:03
jelmerdobey: the regular python API tools should be able to help you19:04
dobeyah. how would i set up a pre-commit hook? write a plug-in?19:04
jelmerdobey, yep19:04
dobeyok19:04
dobeywell that's 43433232x better than what git does :)19:04
dobeythough 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 commit19:05
dobeywhich i suppose i could sort of implement with a plug-in as well anyway19:06
jelmerdobey, that seems like a bad idea to me for security reasons19:06
dobeywhy?19:07
jelmerI wouldn't want code from $RANDOM_BRANCH I fetched to automatically run19:07
dobeywell, people already do that anyway19:07
dobey./configure && make will do that :)19:07
jelmerdobey: that's intentional decision by the user; it's not a side-effect of running "bzr <subcommand>"19:08
dobeyjelmer: 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 project19:09
dobeyso i don't know that i would call it a security issue really19:10
LarstiQdobey: I know I do.19:10
LarstiQdobey: at least with confingure you are aware there is execution going on.19:10
dobeyinterestingly enough, we just had a similar conversation in #gnome-hackers, because i was wondering if git would let me do stuff19:10
dobeyLarstiQ: but you don't necessarily know what19:11
dobeyyou just assume it's configuring to build19:11
jelmerdobey, you can have a look before you run configure19:11
jelmerdobey, hooks can even trigger e.g. during fetch19:11
LarstiQdobey: you have a lead to go find out if you want to, and you can do so before running anyting.19:12
dobeythey could, but i only want these to run before commit succeeds19:12
jelmerdobey, of course, nothing stops anybody from creating a "bzr-insecure" plugin that provides this sort of functionality :-)19:12
LarstiQdobey: unless hooks prompt everyhere, without being able to override that from the hooks, you have no such protection.19:13
dobeyLarstiQ: you could too if the hooks were in the branch19:13
LarstiQdobey: hmja19:13
dobeybah, if you don't trust the branch your pulling, don't pull it!19:13
dobeyi doubt you've read every line of code that's currently running on your machine :)19:14
LarstiQdobey: 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:14
LarstiQdobey: I've delegated that to the Debian developers, whom I trust ;P19:15
dobeyLarstiQ: by default it probably wouldn't be anything19:15
LarstiQdobey: that way you might have a better chance of convincing people who don't share your opinion that the risk is mitigated.19:15
dobeyof 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 much19:17
speakmanis there any reason there's not an "--update-working-tree" option in "push"? :)19:17
dobeybut i wanted to compare, since git doesn't do it at all19:17
jelmerspeakman, at some point the smart server will hopefully update the working tree automatically19:19
jelmerspeakman, it's not feasible over e.g. sftp or ftp19:19
speakmanhow come?19:20
speakmanaka why not?19:20
rexbronjames_w: Did you get a chance to look at my reply to your review of bd.profiles?19:20
jelmerspeakman: you have to retrieve / re-upload every single file19:21
speakmanusing (s)ftp to send the files directly from the current working tree?19:21
jelmerspeakman, you can't just upload, you have to make sure the remote hasn't changed19:21
speakmanhm what about requiring --overwrite ? :)19:21
jelmerspeakman, --overwrite is about overwriting the branch, not about overwriting files in the working tree19:21
jelmerspeakman, there is a plugin that can ssh into the remote server and run "bzr up" for you19:22
speakmanI'm aware of that plugin, but would be builtin imo19:23
speakmanwhen supported in smart server; will it then work with ssh+bzr which I believe runs the same code?19:23
speakman(at the remote place)19:23
jelmerspeakman, it would do something similar, but inside of bzr and wouldn't require any additional connections19:24
speakmanBut I will not be required to have an "bzr serve" runnint 24/7 to be able to update remote tree?19:24
speakmanas long as bzr is actually running on the remote side, there should be any differences right?19:25
jelmerspeakman, bzr serve isn't used by bzr+ssh19:25
jelmerwell, not as a daemon, anyway19:25
speakmanbut if smart serve is able to update remote working tree, why should bzr+ssh ? :)19:27
jelmerspeakman: bzr+ssh is using the smart server19:30
jelmerspeakman, it basically runs "ssh <host> bzr server --inetd"19:30
speakmanhm? 20:25 < jelmer> speakman, bzr serve isn't used by bzr+ssh19:30
jelmerspeakman, <jelmer> well, not as a daemon, anyway19:31
speakmanoh, missed that :D :D19:32
speakmanhow far away is that support? is there something one could support?19:33
jelmerfor updating the workingtree from the smart server?19:35
jelmerI think the main thing that needs to be done is adding a verb in the smart server protocol for it19:35
jelmerdon't think anybody is planning on working on it though19:35
speakmanhow can one get engage with bzr?19:38
LarstiQjelmer: did I already congratulate you with getting 0.5 released? If not, bij deze :)19:38
speakman0.5?19:39
jelmerLarstiQ, thanks!19:39
jelmerspeakman, see http://bazaar-vcs.org/BzrDevelopment for hints about development19:39
jelmeryou can also always ask here of course19:39
jelmerspeakman, bzr-svn 0.5.019:39
LarstiQit does seem like that page is a bit out of date19:41
LarstiQhttp://bazaar-vcs.org/BzrGivingBack might also have some bits19:42
speakmanbzrtools in the PPA is lagging behind and currently stops bzr for being upgraded19:55
Lo-lan-doWhat is this PPA everyone complains about?19:57
speakmandeb http://ppa.launchpad.net/bzr/ubuntu intrepid main19:57
Lo-lan-doWhat's it supposed to mean?19:58
Lo-lan-do(Also, why don't you just grab the packages from experimental?)19:58
jelmerLo-lan-do, it's the ubuntu equivalent of private repositories19:59
LarstiQLo-lan-do: Personal Package Archive20:04
LarstiQjelmer: any idea what the policy is, would I be allowed to upload bzrtools to the PPA?20:05
jelmerLarstiQ, yes, you only have to be in ~bzr20:05
Lo-lan-doSo any Launchpad user can have their archive hosted on Launchpad?20:05
jelmerLo-lan-do, yep20:05
jelmerunfortunately uploading for multiple versions of Ubuntu is a pain20:06
Lo-lan-doI'll bet many people use these PPAs too.20:06
Lo-lan-doSounds like an excellent way to get packages of dubious origins and quality on one's system.20:06
jelmerLo-lan-do, a lot of them are just used for testing the packages20:07
jelmerLo-lan-do, since you upload a source package, and it builds in a chroot20:08
jelmerwell, in some sort of jail (xen?)20:08
lifelessmoin moin20:08
LarstiQLo-lan-do: trusting PPAs is of course up to the user/sysadmin.20:08
LarstiQhey lifeless20:08
Lo-lan-doI 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:08
maxbWell, apt will do the usual "key not trusted" warings20:09
maxb*warnings20:09
Lo-lan-doI'm still amazed at the amount of trust people put in *random* URLs, so I can only be frightened by such a thing.20:09
maxbWell, there's little that can be done to help people who don't check anything at all :-/20:10
jelmerLo-lan-do, they have different keys they're signed with20:10
Lo-lan-doSure, but giving them the appearance of being "official" probably doesn't help.20:10
maxbUploading for multiple versions would probably be reasonably scriptable, using "dch"20:10
Lo-lan-do(And "invalid key" mostly means not much more than "one extra click")20:11
Lo-lan-doBut pardon me for rambling at users, we're here to celebrate bzr-svn 0.5 :-)20:12
jelmerLo-lan-do: otoh, there's lots of people installing *single* .deb's they download from the net20:12
jelmerLo-lan-do, stuff in PPA's will at least build from source cleanly20:13
Lo-lan-dojelmer: 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
jelmerLo-lan-do, nope20:15
jelmerLo-lan-do, what does ~/.bzr.log say?20:15
Lo-lan-dojelmer: http://pastebin.com/d47efe06620:16
Lo-lan-doBut 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:17
jelmerLo-lan-do, yeah, some similar issues to this were fixed20:18
Lo-lan-doAs 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:18
Lo-lan-doData 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:19
Lo-lan-doOn the remote box, bzr update in svn-gw/trunk (bound to SVN trunk), cd ../branch-foo, bzr pull ../trunk.20:20
Lo-lan-doAnyway, I added a gateway for the SVN branch too, and it seems to work now.20:21
=== spm_ is now known as spm
LarstiQspeakman: ok, ppa is a liiitle more involved to set up.20:34
maxbonly just barely. sources.list line, pgp key, done :-)20:35
speakmanhm?20:35
=== abadger19991 is now known as abadger1999
LarstiQmaxb: I meant building bzrtools 1.11 for the ppa20:38
LarstiQmaxb: doc/developers/ppa.txt if you're interested20:38
maxbhm? I built it locally just by grabbing the Debian experimental source20:38
Lo-lan-dojelmer, Jc2k: Can the bzr-*-pack scripts from bzr-git be run from ~/.bazaar/plugins/git, or do they need to be installed somehow?20:40
jelmerLo-lan-do, they would have to be installed (as /usr/bin/git-*pack actually)20:41
jelmerLo-lan-do, they're for the server side with ssh though20:41
Lo-lan-doI gathered that much, but apparently symlinking them into ~/bin isn't enough and I get "ImportError: No module named git.server"20:42
Jc2kLo-lan-do: that may well just be typos - i cant remember how thoroughly they were tested..20:44
Jc2khmm20:48
Lo-lan-doJc2k: I can't seem to get it working after an installation --prefix=$HOME, either.20:52
vilamwhudson: ping21:03
mwhudsonvila: hi!21:03
vilagreat, I wasn't sure you was already awake :-)21:03
mwhudsoni've actually been awake for 4 hours, but that's kinda unusual :)21:04
vilawow, is it 08:04 your time ?21:04
mwhudsonvila: 10:0421:07
mwhudsonvila: we're utc+1321:08
LarstiQlifeless: you're listed as maintainer in ~bzr/bzrtools/packaging-dapper, but not in the other distro packaging branches21:09
lifelessodd21:09
LarstiQlifeless: I optimistically decided to build bzrtools 1.11 for the ppa21:10
LarstiQlifeless: are these packaging branches supposed to stay entirely seperate?21:11
LarstiQlifeless: and should the Debian uploaders really be in there still?21:11
lifelessLarstiQ: I'm not entirely sure21:11
LarstiQlifeless: should I bother someone else? :)21:11
lifelessLarstiQ: its documented in the hacking guide I believe21:11
LarstiQlifeless: I'm trying to follow doc/developers/ppa.txt21:12
lifelessLarstiQ: ah, and its incomplete?21:12
lifelessLarstiQ: I'd ask the list21:12
lifelesspoolie isn't online, nor is hjam21:12
LarstiQwill do21:12
MattCampbellkfogel: 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
kfogelMattCampbell: no, haven't written it up yet, and am actually avoiding that for now.  I'm still very green with bzr.21:46
MattCampbellI know some other SVN developers have expressed concerns about DVCSes, e.g. that a DVCS makes it too easy to fork a project.21:47
kfogelMattCampbell: 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:49
MattCampbellkfogel: Oops, yeah, you're right.21:50
kfogelMattCampbell: I haven't experienced that in bzr so far, I have to say.21:51
kfogelBut then, I reflexively want to publish my changes, so I wouldn't wait for the tool to encourage it.21:51
MattCampbellI'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:53
MattCampbellespecially when combined with Launchpad.21:54
thumperabentley: unshelve is leaving UserWarning: ProgressTask(0/3, msg='Merge phase') is not the top progress task ProgressTask(None/None, msg='') type messages23:12
abentleythumper: I was not involved in the progress bar changes.23:13
thumperabentley: ok23:13
fullermdThere's a bug about it.23:13
fullermdbug 32175023:13
ubottuLaunchpad 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/32175023:13
igcmorning23:21
pooliehello igc!23:24
* lifeless kicks off a uncapped compressbench run on bzr.dev23:29
jmlpoolie: hi23:37
jmlpoolie: did we ever get that lp-open patch landed?23:38
lifelessmmm busy machine23:40
lifeless load average: 9.12, 8.39, 5.1223:40
pooliejml: i did not23:49
poolienagging will get you everywhere :)23:49
poolielifeless: i think you should go ahead and send that mail about brisbane-core23:50
pooliebut it would be good to add some kind of indicative number23:50
pooliewith caveats if needed23:50
lifelesspoolie: I thought you thought it was at the wrong level ?23:50
poolieit's still worth sending23:54
poolierather than waiting to make something else23:54
lifelesspoolie: pst'd you23:58

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!