/srv/irclogs.ubuntu.com/2008/07/03/#bzr.txt

abentleySo yeah, compatibility would suggest checking whether the class supports that parameter.00:00
abentleylike supports_reverse_cherrypick.00:00
pickscrapeThis is weird. I'm trying to bzr rm a symlink to a directory, but it is complaining about the files in the directory the symlink links to00:01
pickscrapeAn no, I'm not appending a slash to the end of the symlink name00:01
lifelesspickscrape: I believe we have a bug :(00:02
lifelessbeuno: wb00:02
pickscrapelifeless: passing the --force flag does the right thing (the target directory is not affected)00:03
pickscrapeNot the correct user experience though. I'll raise it in launchpad.00:03
tolstoyLoggerhead! I'm going to see if I can even get CLOSE to setting it up..... ;)00:06
NfNitLoophrmm, does bzr version symlinks?00:07
lifelessjam: why did you change it from using calltree?00:07
lifelessNfNitLoop: yes00:07
NfNitLoopHuh. cool.00:07
lifelesspickscrape: thanks00:07
jamlifeless: you mean callgrind?, because I don't have KCacheGrind on win32, you can change it back if you like00:07
NfNitLoopI noticed a bug the other day re: operation on a case-insensitive filesystem.00:07
NfNitLoopis that known?00:08
NfNitLoopI tried adding file x, when it had already been added as X.00:08
jamsave('filename.callgrind') should give the same result, btw00:08
NfNitLoopand it committed it a second time.00:08
NfNitLoopand then complained that it was missing. :p00:08
lifelessjam: parameterised it00:10
lifelessNfNitLoop: oh, foo. File a bug ?00:10
lifelessNfNitLoop: thats the sort of thing that makes usage for windows users (or FAT under linux) particularly painful.00:11
NfNitLoopyes.  I'm all too familiar with file case issues and still was a bit confused as to what was going on.00:13
NfNitLoopI'll try to create a sample and submit that tonight.00:14
jamlifeless: latest version of PyBloom has a bloom.resize() function, so we can poke at it if we want.00:17
jamI'm done for the night, though. Off to dance class00:17
jamlp:~jameinel/+junk/pybloom00:17
lifelessjam: tchau00:18
lifelessjam: what dance style?00:18
jamballroom, aka latin, waltz, swing, etc00:18
lifelessnice00:18
lifelessI keep meaning to get back into that00:18
lifelessso00:20
lifelessparse_lines and string split make iter_random_one cry00:20
lifelessa C parser would be substantially more efficient00:21
lifeless(I'd like to drive the cost of random access way down, because it its a good total-cost proxy)00:25
tolstoyHm. I can't seem to install Paste 1.1.700:28
Odd_BlokeMoin.00:29
tolstoyEr, 1.71.00:29
tolstoyMake that Paste 1.7.1.   ImportError: No module named setuptools00:29
tolstoyI wonder why all the other "python setup.py install"s I did?00:30
namedo easy_install setuptools00:30
pygisomebody wanna raise their voice on the whole GNOME+DVCS stuff?00:30
Odd_Bloketolstoy: Or, better, use your package management system if you have one.00:30
james_whey pygi. I liked your post on the matter.00:30
namewhich gnome+dvcs stuff?00:30
tolstoyOdd_Bloke: This is on Solaris, all inside a user account.00:31
tolstoyI don't think I have "easy_install" on there.00:31
pygijames_w, thanks, I just wrote a big comment addressing concerns Jason raised00:31
tolstoyYes, yes, it feels like I've gone back in time decades by not having root on this box.00:31
pyginame, the discussion of GNOME migration to DVCS00:31
Odd_Bloketolstoy: http://pypi.python.org/pypi/setuptools/00:32
tolstoyAre setuptools not normally part of the Python? And not required for other versions of setup.py?00:32
tolstoy(I'm so far away from Python culture these days, alas. Close as I can get is Groovy.)00:33
Odd_Bloketolstoy: I believe that most setup.pys use just distutils.00:34
Odd_BlokeBut I'm not sure.00:34
tolstoyOkay. Cool. That makes sense.00:34
nameOdd_Bloke: yes they do00:35
james_wpygi: thanks, just read it. Jc2k has raised some similar points to you, and I think it's very important, and not something that's being discussed at the moment. I don't have any voice in GNOME to try and steer the conversation, but I'd be happy to comment on a migration plan for bzr.00:35
james_wpygi: are you a git fan, or is gitorious just very good for what you want? Would you prefer bzr, or is the abstraction of everything what you would like?00:36
pygijames_w, as I've written in the post, I'm not a fan of either git or bzr00:36
pygiI use both where I see fit00:36
pygi(heck, I've even mentored two bzr students in 2006)00:36
pygijames_w, currently, something like gitorious doesn't exist for bzr00:37
pygiand no, you can't count LP, because it is not free00:37
james_wpygi: ah yeah, I forgot that sorry.00:37
namepygi: why is LP not free?00:37
pygijames_w, the problem is people keep going in circles, rather then discussing important points00:37
james_wpygi: yeah, that's what lp is trying to do, but it's obviously not going to work for GNOME.00:38
pygithat's why I hope my post will bring at least put bug in peoples ear :)00:38
pyginame, because its not Free by FSF definition :)00:38
pygijames_w, if you wanna work with me, we could surely write a plan for bzr00:39
pygiI'm all for it00:39
pygijames_w, it the end, it all comes down to communication and collaboration, as I've mentioned00:39
pygithese folks forgot what that is lately00:39
thumperpygi: are you looking for somewhere to put bzr gnome branches?00:40
james_wyeah, these tools are supposed to help with collaboration, not cause fights.00:40
james_wpygi: there's a #gnome-bzr channel on gimpnet that may be more appropriate if we want to have longer discussions on this topic, there's a bunch of people there willing to work to make this happen.00:40
james_whey thumper00:41
thumperjames_w: hey00:41
thumperjames_w: getting kinda late where you are?00:41
lifelesspygi: where is your post ?00:41
pygilifeless, moment :)00:41
pygilifeless, http://pygi.wordpress.com/2008/07/01/broken-by-birth/00:41
pygithumper, it00:41
pygithumper, it's a little more complicated then that00:42
pygijames_w, ok, will come there (You have pm too, btw)00:42
james_wthumper: aye, just finished a meeting.00:42
thumperjames_w: work style meeting?00:43
james_wthumper: yup, platform team weekly.00:43
lifelesspygi: are you aware that savannah, and alioth support bzr ?00:43
lifelesspygi: (by which I mean, what is 'like gitorious' mean) ?00:44
pygilifeless, yes, I am aware that they support bzr00:45
lifelessok, cool00:45
pygilifeless, it's not only about supporting bzr per-se00:49
Pilkypygi: if you're wanting the ability for people to use whatever DVCS they want, then wouldn't svn as the central repo work best?00:49
pygiit's about making it easier for everyone involved00:49
Pilkyfrom what I understand the svn integration in bzr, git and hg is better than the integration between the 300:49
james_wnight all00:50
pygiPilky, that's what people are currently doing mostly00:50
lifelessnight james_w00:50
pygibut that means overhead00:50
Pilkytrue00:51
pygiPilky, anyway, that was just a suggestion on how things *could* be handled00:51
pygiwhat is important is for people to finally realize they're not going anywhere with useless arguments sometimes even on personal level00:51
Pilkyyeah00:51
Pilkythe unfortunately reality about we programmers is that when we start liking a tool we'll fight to the death over it ;)00:52
pygiI know, but sometimes you have to think above tools00:52
pygiIf I was a new folk in the FOSS community, and read planet GNOME, I'd run away from the project as faster as possible00:53
pygibecause of the recent events00:53
lifelesspygi: I think you make good points00:53
pygilifeless, any questions or critics perhaps? Those always help flesh out the idea :)00:53
Pilkypygi: there's a reason I don't do a huge amount of open source stuff (or at least large stuff), it's far easier to get your own way when you're the sole dev ;)00:54
lifelesspygi: well, one thing to note is that bzr itself has an abstraction system; it can natively talk about hg and svn and a number of bzr formats00:54
lifelesspygi: (in a way that none of git/hg/svn try to do)00:54
pygilifeless, yep, am aware of that =)00:54
pygithanks for pointing it out ;)00:55
lifelessfor instance, pqm had a multi-dvcs abstraction00:55
lifelessand now we're ripping it out to replace with bzr plugins00:55
pygiPilky, I prefer to stay out, and maintain a lot of stuff outside such projects (the only exception is xfburn (xfce project), but it was initially started there, so can't change it for the time being)00:56
pygilifeless, I should really look further into pqm branch then (I guess it's on LP as usual)00:56
Pilkypygi: the only "major" open source project I've worked/am working on is BazaarX, everything else is my shareware apps00:57
pygiPilky, ah, no Mac here, sorry :)00:57
lifelesswell, pqm is not the cleanest code base. Yes its on lp. But the point there was just that /one/ approach would be to write admin toolchains in bzr, as a lingua franca00:58
lifelessmuch as is being done with svn today, but being D aware00:58
Pilkypygi: heh00:58
pygilifeless, understood00:59
* pygi is thankful for all the comments ;)00:59
pygilets hope I can put them to good use :)01:00
lifelessI'd argue that gnome has a gitorious itself /already/01:01
lifelessjust called 'gnome-svn-orius'01:01
pygiehm, well, if you can call the current platform they use that way, yes01:02
lifelesswell01:02
lifelesswhat is it about gitorius as a system that could save admin time01:02
lifelessis it outsourcing - but gnome could have gotten a variety of sites to host the svn migration01:03
pygilifeless, ehm, no, its not about that01:03
pygilifeless, gnome would have its own instance ofcourse, and not *plain* Gitorious01:03
lifelessright01:03
pygiI've outlined some of the things that would save admins time in my latest comment01:03
lifelessso why would it be easier for the admins :)01:03
pygibut there are a lot of stuff we could change to make it even easier for them01:04
pygithats why I want the discussion01:04
pygiwhich I managed to initiate at KDE (sadly I can't attend Akademy, but oh well)01:04
lifelesspygi: right, so my point is 'what would make the sysadmins life easier' is a good discussion and quite orthogonal to changing vcs -except- insofar as different vcs's have different admin overheads01:05
pygilifeless, I definitely agree01:05
pygilemme c/p excerpt:01:05
pygi"Maintainers of specific module could approve users for commit access to “mainline” or main repository, giving administrators less work. New modules/projects could be added by existing GNOME developers after their inclusion has been discussed. New translators and documentation writers could get their commit bits much easier"01:05
pygias an example ofcourse, I can't count all the use-cases01:06
lifelessI think that thouse things are actually highly automated at gnome already?01:06
lifelessI was thnking of things like bkor having to script some massive dump+load for all 520 svn modules to handle 1.501:07
pygisome things are, some things aren't01:07
pygilifeless, that's the part where I say whats needed prior to migration :)01:07
lifelessK01:07
pygilifeless, we could have an interface that would allow upgrading all repos to say new bzr format01:08
lifelesspygi: right; not to mention that bzr can do that it self remotely01:08
pygiindeed01:08
pygiI just gave that as an example01:09
lifeless:)01:09
pygilifeless, I definitely agree that everything you mentioned should be discussed01:10
pygilifeless, but before that, we need to make people collaborate the way they can once again01:10
lifelesswe can't make them, we can only try to collaborate with them01:11
pygiwell, yes, and by collaborating with them change the way they think about collaboration =)01:11
lifelesswhich is a little hard when you get told you're stupid or insane for making an informed design decision :)01:11
pygilifeless, eh, even though I doubt anybody will listen to whatever I wrote in the post, they'd listen even less if I actually argued technical reasons behind whatever DVCS they choose01:12
pygior if I accidentally mentioned that I prefer one over the others01:12
lifelesspygi: sure, not suggesting you should get technical; I was noting that unpleasantness doesn't help collaboration - and there has been plenty in some of the previous months/years about DVCS01:12
pygilifeless, and not only DVCS ...01:13
* pygi should probably do some bzr hacking this summer if he gets the time01:14
lifelesspygi: that would be cool01:15
lifelesspygi: will you be at GUADEC? I'd be happy to point at internals face-to-face if you are01:16
pygilifeless, eh, sadly no :(01:17
lifelessah well01:17
pygibut I'd be happy to learn more about internals over irc/mail/jabber/whatever :)01:18
lifelesswe've done a lot of scalability work since 200701:33
lifelessmany more things that only look at small subsets of history01:33
lifelessstill need to fix inventories to not be full-tree-objects01:34
NfNitLooplifeless: Looks like someone beat me to it (by a year or so) reporting case insensitive fs issues.    https://bugs.launchpad.net/bzr/+bug/7774401:34
ubottuLaunchpad bug 77744 in bzr "win32 bzr is confused by filename case changes" [High,Confirmed]01:34
NfNitLoopI pasted my test as well.01:34
lifelessNfNitLoop: thanks01:34
mwhudson*cough* bzr log *cough*01:37
NfNitLoopmwhudson: eh?01:37
mwhudsonjust carping at lifeless's "many more things that only look at small subsets of history"01:38
NfNitLoopaaah.01:38
lifelessmwhudson: *many* not all01:45
lifelessmwhudson: if you compare what we _used_ to do01:45
mwhudsonyeah, it's much better, i'm just being annoying01:46
lifelessgo merge the loggerhead search integration branch or something01:46
fullermdBoy, that's sad.  missing took 26 seconds.  pull took 9.01:56
NfNitLoopheh.01:56
fullermdHm.  Are these location-based aliases documented somewhere I can't find?02:03
mwhudsonfullermd: which version of bzr ?02:06
mwhudsoni know missing got some love recently02:06
fullermdbzr.dev local, 1.5 remote.02:07
mwhudsonhm02:08
mwhudsonshould be new enough :/02:08
lifelessbkor: ping02:19
lifelessspiv: ping02:20
spivlifeless: pong02:20
lifelessdid you end up having time to look at the gnome hooks?02:21
AfClifeless: (I suspect Olav will be asleep)02:21
lifelessAfC: so do I but it never hurts to try :)02:21
spivgnome hooks?02:22
fullermdSure.  You don't want 'em just wandering around the garden unsupervised...02:23
lifelessspiv: yes - the ones they run on svn, which we'd need to support02:24
spivAh, no, I hadn't looked.02:27
lifelesscould I entice you to look? You've done some server-hook stuff before..02:28
igcmorning02:28
lifelesshi igc02:30
* spiv looks02:31
Odd_Blokelifeless: Apologies if I just spammed you with LP merge requests, I was playing around with the interface and didn't realise it generated emails.02:31
spivstaging.launchpad.net is a handy sandbox for experimenting with.02:32
JamesB192I am trying to misuse bzr as a versioned backup program, I have created the remote and local branches, and am running a server for the remote. Is there a tutorial for this type of misuse or do I have to RT(Entire)FM? ps using bzr send I get the error 'bzr: ERROR: No mail-to address specified.' how do I make it go away?02:32
Odd_Blokespiv: Well, the merge requests are valid, so it doesn't matter if they're in LP proper.  I just didn't intend to send lifeless a number of emails (which largely mirror on-list discussion anyway).02:33
lifelessOdd_Bloke: :)02:33
lifelessJamesB192: well bzr send is used to create emails, you probably want bzr push02:34
JamesB192Ah, OK.02:35
Odd_Blokelifeless: Did you get a merge request (not via LP) that I sent a little while ago.  I CC'd the ML but haven't seen any sign of it and am wondering if it got through.02:37
lifelessyesterday?02:37
Odd_BlokeHold on, I'll find a timestamp.02:37
lifelessor earlier today, cause I saw one yesterday and one earlier today02:37
Odd_Blokelifeless: This one was sent, according to GMail, on the last hour (so around 40 minutes ago).02:38
Odd_BlokeBut I'm using GMail via IMAP, which can occasionally be a bit funky.02:38
Odd_BlokeSubject was "[PQM/MERGE] Remove Arch-style naming from tests".02:39
lifelessyes02:40
lifelessuhm, I think its fine02:40
Odd_BlokeOK, good.02:40
Odd_BlokeThe reason I asked was because I was going to reply to it to mention that it depends on my 'fix-tests' branch, but haven't had the chance to do so yet.02:40
Odd_BlokeThen I started playing with LP. :p02:41
lifeless:)02:41
spivlifeless: well, I've looked.  The post_change_branch_tip hook should be able to do the post-commit actions fairly straightforwardly I think.02:43
spivlifeless: (and thanks to my push work it turns out that that hook *does* get run server-side now!)02:43
spivlifeless: but we probably need to add a pre_change_branch_tip hook as well.02:44
spivlifeless: because there's a fair bit of checking of the commit before it is accepted (there must be a log message, PO files should be syntactically correct, etc).02:45
lifelessspiv: I'm really sorry that I hadn't drawn it more visibly to your attention earlier; I think you were in protocol-3 space02:45
spivYeah, I probably was at that time.02:45
spivI don't think adding infrastructure for a pre_change_branch_tip hook should be too hard.02:46
spivAlso, pre-1.6 clients won't trigger that hook, because they will be using VFS RPCs to update the last revision info.  I'm not sure how much that will matter.02:48
lifelessspiv: any chance for GUADEC? :P02:48
lifelessspiv: well, we could add a version check policy on the server?02:48
spivIf it does matter, we could probably hack up a plugin for the server that traps that VFS call and invokes the right hook(s).02:48
spivHmm, we could do that, I suppose, by e.g. writing a plugin so that the server will reject non-protocol-3.02:50
lifelessspiv: don't client give their verison now ?02:50
spivProbably no easier than hooking VFS calls that change */.bzr/branch/last-revision, though.02:51
spivThey do, but as a string.02:51
spivThat header was intended for logging rather than greater-than/less-than version comparisons.02:51
spivBut protocol-3 happens to be new in 1.6, as is that verb.02:51
spivI'd rather not get into comparing strings like "1.6b3" and "1.7" and "1.10".02:53
lifelessright02:53
lifelessbut isn't the string taken from the string made from the tuple ?02:54
spivIt is bzrlib.__version__, yeah.02:54
spivI'd rather introduce a new header if we do that, though.02:54
spivSo we keep the concepts of user-agent-label and protocol-level-I-speak separate.02:55
spivThe current header is "Software version", and is intended to be the former.02:56
spivMaybe I should just rename it to "User agent" :)02:56
lifelessright02:56
lifelessbut -02:57
lifelessthere are two levels of protocol02:57
lifelessthere is 'how I encode'02:57
lifelessand there is 'what verbs I will try'02:57
spivWe can add another header pretty painlessly, but we should think about how we want it to work and what use cases we want it to satisfy.02:57
lifelessanyhow02:57
lifelessI would like to be able to say to bkor: 'bzr X on server, bzr X or > on client, plugin Y on server'02:58
spivIdeally, we shouldn't need to rely on the client to indicate what verbs it will try, we should just DTRT based on the verbs they do try :)02:58
lifelessand have : ported checks from svn run reasonably fast and appropriately, and reliably.02:58
spivPorting the checks from SVN will take a bit of effort.  Not gargantuan, but not trivial either.02:59
lifelessyah02:59
lifelessI'm sure bkor would be happy to do that bit03:00
spivAlthough "poke the viewcvs so that it knows about the new revision" bit will hopefully be unnecessary with loggerhead :)03:00
lifeless(though perhaps not as happy as if we did it :P)03:00
lifelessnow for the argh! bit. the DVCS talk is on monday :)03:01
spivWell, I'd be happy to help port them.  Realistically it'll probably be easier for us to work with them than for either side to try port them alone.03:01
spivOk, so you'd like the pre-commit capability done ASAP?03:01
lifelessif its doable this week, then yes. otherwise no - we can say we know what it will take and its coming03:01
spivWell, I don't think it'll be hard.  I'll spend an hour or so on it to see if it really is feasible that quickly.03:02
lifelesssweet03:03
spivI wouldn't be totally shocked if there's a couple of unexpected bumps between here and having it done, but I wouldn't be shocked if it's plain sailing either.  We'll see :)03:04
jamlifeless: any updates on btree? I haven't seen any commits or posts since I left :)04:05
lifelessjam: just doing C parsing for _leaf_nodes04:16
lifelessjam: 60% of that 110 seconds is claimed to be in the parsing04:16
jamlifeless: sure04:16
jamIf you consider... it takes 1s to read all nodes (iter_all)04:17
jamand we get maybe 100-200 nodes per leaf04:17
jamand we have a 50% cache rate04:17
jam200 * .5 * 1 = 100s04:17
jamlifeless: pyrex or raw C?04:17
lifelesspyrex04:18
lifelessadapting _knit_load_data04:18
jam:)04:19
lifelessI'm not sure its wrong04:19
lifelessbut profilers -  meh04:19
lifelessanyhow, finding out is relatively cheap04:19
lifelesswhat dance did you do tonight?04:20
lifelessits disconcerting that the three-level test kicks in before the progress bar debounce04:21
jamwe did rumba and waltz tonight, focusing on underarm turn and breakaway 5-something04:36
jam5position whatever, where your foot is crossed behind the other04:36
jamlifeless: yeah, the "nothing is happening" is why I generally run with -v04:37
jamlifeless: So I'm poking around at our bloom stuff, and I was noticing that our bottom level rows have more nodes than I think you give them credit for04:37
jamI'm seeing bloom filters with 9,000 entries04:38
jamI think the bottom level is < 100, but you have at least that many in the internal node04:38
jamSo to be useful, we would need bloom filters of ... 9000 bytes04:38
jamNow, this is for the biggest pack in all packs04:39
lifelesswheee thats quite some compression04:39
lifelessoh right04:39
lifelessyes, I was saying that only the bottom level of filter is really useful04:39
jamlifeless:  that *is* the bottom04:39
jamleaf nodes + 1 internal = 9000 records per internal node04:40
jamOtherwise you only have leaf nodes04:40
lifelessoh04:40
jamand if you've already read them ...04:40
jamso the *only* time these are useful is when you have 1 root node, because you didn't fill it all the way04:40
=== lamont` is now known as lamont
lifelesseh, this doesn't make sense to me04:40
jamlifeless: each internal node can map to 100 other nodes04:41
jamright?04:41
lifelesshow many keys are in each leaf?, and how many leaves per internal node04:41
jamAnd each leaf node can hold 9004:41
lifelessso, 9K yes04:41
lifelessbut - we *are* seeing IO avoidance already04:41
lifelessI don't know what our FPR is in practice04:41
jamI get approximately the same values by just using "Num nodes / row_length" manually looking at the headers04:41
jamlifeless: we aren't getting any hits on the big packs04:42
jamit is only packs with < 9k records total04:42
jamso you have a single root node04:42
lifelessjam: ah, interesting theory04:42
lifelessjam: making indexbench tell us this would be good04:42
jamlifeless: -Dindex will print out the bloom statistics for every finalize04:42
lifelessalso, trying say a 512byte filter - which will push out some nodes from the internal04:42
jamFinished node 1 with bloom filter <BloomSHA1 @ 0x3b3b690: 2048 bits, 3635 entries, 0.6 b/e, 100.0% gray>.04:42
jamlifeless: the only problem is the finish_node() has no idea what level it is at, so I had to hack in another debug statement before it gets called04:43
lifelessjam: yes, I added that :P. What I mean is at the external level, to tell us what the aggregate usefulness is of the bottom internal row04:43
jamso, there is one other case that it slightly helps, which is the 'last added' node.04:44
jambecause that one is also not always full04:44
lifelessstill, minimal04:46
lifelessok, there is someting for you to play with04:46
lifelessI shelved the pyx code contents pushed the rest04:47
lifelessjam: ^04:49
jamoh, and iix fits more than tix does into each leaf node04:49
jamyeah, I saw the commit,04:49
jamI bumped up the bloom to 1K, and we still get 7K entries, and 98.8% full04:50
jamWrote: 4710400 with 1K blooms instead of 4706304 with 256 byte blooms04:50
jamso only added 1 page in all of that output :)04:51
jamI guess we have some room to spare04:51
lifelessstill, 98% is not saving much04:53
lifeless2K?04:53
lifeless(meep)04:53
jamwell, we have a few other ones that start hitting 45% full, which is "optimal"04:53
jamI'll try 2K next04:53
jambut I'm running the benchmarks first04:53
jammeep?04:53
jamlifeless: note the 'gray level' isn't == FPR04:53
lifelessjam: its the number of bits on; 2% is the number that can possibly miss, and we get 5 chances at that per value04:55
jamright04:55
lifelessjam: so 10% on average, or 'not saving much' :)04:55
jamsure, but 10% >> 2%04:55
lifelesstrue04:55
lifelessSo, I wasn't translating all the way up to the FPR because we both know the maths :)04:56
jamI'm going to give a shot at 2K when this test run finishes, I forgot to supply --no-graph04:56
lifelessanyhow, meep was simply expressing dismay at 2K/4K being bloom04:56
lifelessmay also find the chunk code is starting to generate more slack space at that fraction too04:57
lifelessyay gcc04:58
lifeless_parse_btree_c.c:91: warning: â defined but not used04:58
lifeless_so_ not helpful04:58
jamwell, I just hit AssertionError: Somehow we ended up with too much compressed data, 4221 > 409604:58
jamwith 2K bloom filters :)04:58
lifelessjam: I think that my reserved hack is not quite solid enough04:59
jamI'm not quite sure why, as I'm using "2*capacity"04:59
jamI guess maybe we don't get our 2:1 compression with < 2K bytes to work with04:59
jamdropping to 1.505:00
jamultimately, I think we need to make blooms too big to really be useful, which was something I felt before05:02
jamIt might be a bit better with the md5 bloom05:02
jamhard to say at these levels ...05:02
jamlifeless: I can see that 2k blooms work "better" than 1k blooms for miss torture05:04
jam309k bloom misses, versus 282k bloom misses05:04
jamand it saves ... 13.2s => 12.6s05:04
jamsearch_from_revid is *slower* 1.597 => 1.63905:05
jamget_components is faster 15.143 => 14.39405:05
jamwith 24.4k hits versus 19.8k hits05:05
lifelessjam: well the bloom gets compressed05:07
lifelessjam: but a grey one won't compress *that* well05:07
jamwell, a 100% grey compresses very well05:07
jamall 1s :)05:07
lifelessbut is useless :)05:07
lifelessalso, 100% grey == black!05:08
jamyeah, unfortunately optimal blooms don't compress well05:08
jamlifeless: black ... or white depending on your terminal color05:08
jamand whether you consider 1 whiter or blacker than 005:08
jamI'm seeing 90% grey at the level 1 nodes for the big packs, and we are down 13k => 8k entries for iix, and 9k => 4.6k for tix05:08
jamwith 75%  for tix05:09
jamand a corresponding large increase in l1 nodes05:09
lifelessso broadly05:09
lifelesswe can - not use a bloom05:09
lifeless - use a bloom for the entire table, and page it in <some sensible> size05:09
jamI would say if we want to use a bloom, it needs to be on a page of its own *next to* the node mapping page05:10
lifelessuse blooms for the bottom row only (giving use better fan out high up the tree05:10
jam4096 bytes for 9k records would give us ~4 bits / entry05:11
jam(3.64)05:11
jamwhich is in the ~20% FPR range05:11
jamlifeless: the one advantage of a whole-pack bloom is that you know what pages to read in, as soon as you know how big the bloom is05:12
jamfor as many keys as you want to check05:12
jamso while you are right05:12
jamthat it would be 3-round-trips to get down to the almost leaf node05:13
jamit is only 1 round-trip, but more total data05:13
lifelessjam: actually, I was comparing against no-blooms :)05:13
jamand for what we want, doesn't scale terribly well with number of keys05:13
lifelessso aiming for very low FPR is one approach05:14
lifelessanother approach to analysing this is to say:05:14
lifelesshow much IO do we add (for each scenario) by having the bloom, whether it is a global, or bottom-internal-only, or whatever. And how much do we save?05:15
lifeless10% unset is around 50% FPR (more or less)05:15
lifelessfor halve the pointer count in the internal node05:16
lifelessif we strip the bloom from higher nodes05:16
lifelesswe've doubled our bottom internal node row count05:16
jamlifeless: but we don't have many intermediate nodes anyway05:16
jamif we figure a bloom-less node is 1:100 fan out05:17
lifelessjam: right, b+Tree structure for the win05:17
jamand a bloom one is 1:5005:17
lifelessits still waaay faster than bisection to locate an individual key05:17
jamand the tips are... ~10005:17
lifelessjam: anyhow, my point is to compare IO load, not to compare a specific FPR05:17
jamyou have to have 500,000 nodes before it starts getting interesting05:18
jamlifeless: so... what is saves us is searching for missing keys in the bottom most layer05:18
jamwhich helps 'miss torture' but not much else05:18
jamhmm... you might consider using them for small packs05:20
jamas you could even aggregate them if you wanted to05:20
lifelessso miss_torture is trying to simulate something I think we see in real world05:20
lifelesswhich the other tests don't yet show05:20
lifelessanything with CompositeGraphIndex in there will start to show it05:21
jamlifeless: I think 'search_from_revid' is a reasonable approximation05:21
jamand it benefits more from having fewer internal nodes05:21
jamand removing the CPU overhead of computing sha1s to compare against the bloom05:22
jamI'm a bit curious about start+end keys at this point05:23
jamIt would be the same 50% overhead05:23
jambut would we get better filtering than bloom05:23
jam(10%)05:23
lifelessI don't think so05:24
lifelessalso bloom will be getting nearly 50% filtering05:24
lifeless(at 10% unset bits)05:24
lifelesserm, well, 1-0.9^5 or something05:24
lifeless43%05:25
jamlifeless: Well, removing the blooms entirely (page_size = 16 bytes), I get 10.550s for miss torture05:27
poolielifeless: can you help me work the glidepath for stacking?05:28
jamwhich is down from 13s at 1k, and 12s at 2k05:28
poolieafaics there is nothing no more needing review05:28
poolieso i'd like to do some tweaks/merges05:28
lifelesspoolie: oh dang, I fgort to do the annotate performance test05:29
lifelessjam: 16 bytes?05:29
jamlifeless: just something to make them ignored05:29
jamWe don't have a way to just turn them off right now05:30
jamthe point is that they a) aren't being used during read, and b) aren't taking up much space05:30
poolielifeless: i don't mind doing that test05:30
pooliebut i'd like to know the overall map05:30
poolieif i just work through from the bottom up and merge them will we be done?05:31
lifelesspoolie: yes, my shallow branch loom has them all except aarons policy work05:31
lifelesspoolie: working from bottom up will bring in the features05:31
poolieok05:32
poolieany tips, or suggestions of anything better to do?05:32
lifelesspoolie: and the bug with 'bzr branch not-stacking-format --stacked localpath' is still something I need to fix (by changing the format on the fly'05:32
lifelesspoolie: for annotate, if its dog slow, undo the delete and do if(len(knit._fallback_vfs)) else: old_code05:32
poolieright05:33
lifelesspoolie: other than that, no surprises that I know of05:33
mwhudsonjam: heh, your bzr-service c client looks pretty similar to mine in some ways05:35
jammwhudson: yeah, but i wrote that 2.5 years ago :)05:35
jamjust never caught on, I guess05:35
mwhudsonwe must have similar levels of c (in)experience05:35
jamprobably win32 lacking os.fork() didn't help05:35
mwhudsoni guess doing something fancy with ptys would make some degree of sense05:39
mlhhow light could you make the client in python?05:42
mlhnever mind, I just noticed client.py :-)05:43
jammlh: pretty light :)05:43
jammwhudson: I remember the big off-put05:43
jamgpg signing05:43
jamIt would prompt you for the signature in the original shell05:44
jamnot the one you were in05:44
jamand fixing *that* wasn't worth my effort05:44
mlhI guess all state has to be passed every request .. and the bze service would have to be changed likewise05:44
mwhudsonjam: i think doing the stdout/stderr overriding in a more unixy way might help there05:45
mwhudsonjam: but yeah, effort05:45
jammwhudson: gpg talks to the tty directly, just like ssh05:46
jamI *think* you might be able to set GPG_TTY05:47
jambut then you have to start passing env vars to the back end, etc.05:47
mwhudsonjam: forkpty, maybe?05:47
mwhudsonyou can make another file descriptor the controlling terminal for your process *somehow*, i'm sure05:48
pooliemwhudson: you must close the existing one then the next tty you open will become yours by default iirc05:48
poolieor something like that05:49
poolieyou might need to change session group?05:49
pooliei do have a book that describes this if you really care05:49
mwhudsoni have apue somewhere05:49
mwhudsonbut i'm very unlikely to care enough to work on this05:49
poolie'linux application development' also has several bags of this crack05:49
poolieor whatever crack comes in. tubes?05:49
mwhudsoni semi-enjoy unix-hackery on this level, but not really enough to put actual work in05:50
mwhudsonpoolie: have you seen pyrepl?05:50
jamright, poolie, play innocent05:51
jamAnyway, => sleepytime05:51
jamhave a good evening05:51
lifelessgnight05:51
poolienight john05:51
pooliemwhudson: no, i haven't, also python.net seems to be down05:51
mwhudsonyeah, it's some weird-ass virtual machine slice these days and doesn't work very well05:52
mwhudsoni guess i could put the bzrlib apidocs on people.ubuntu.com05:52
lifelessok06:03
lifeless7 seconds saved06:03
lifelessby parsing just the key in C06:03
lifelessclearly faster, I'll finish the conversion06:03
catsclawHi all06:30
catsclawMy last chance to get Bazaar working the way I need it before I give up and go back to SVN.06:30
gourhuh06:30
catsclawDoes anyone know a way to get Loggerhead working though the fastcgi wrapper for wcgi?06:31
catsclawOr whatever TurboGears uses?06:32
bob2you tried and it didn't work?06:32
catsclawI've got no idea how to do it.  The Loggerhead instructions assume you've got it running as a daemon06:32
catsclawThere's no mention of any other way of doing it.06:33
mwhudsonsome coding will be required06:33
mwhudsonfrom loggerhead.apps.filesystem import BranchesFromFileServer06:34
mwhudsonBranchesFromFileServer('/path') <- there's your wsgi app06:34
pygimorning06:36
pooliehello pygi06:41
Odd_BlokeWhee, I've got automated bisection working.06:47
pooliehello Odd_Bloke06:47
pooliein pqm?06:47
Odd_BlokeNope, in the bisect plugin.06:48
Odd_BlokeI've been tidying up my development directory and stumbled on some stuff I started at the London sprint.06:49
jameshOdd_Bloke: can it bisect a graph?06:49
lifelessOdd_Bloke: cool06:50
Odd_Blokejamesh: I dunno, I'll test.06:50
Odd_BlokeIt's just hooking into existing bisect stuff.06:51
Odd_BlokeThe majority of this patch is a while loop. :p06:51
Odd_BlokeIt's not quick on bzr.dev.06:53
Odd_BlokeOh, and it's bombed with an encoding issue.06:54
Odd_BlokeProbably Lukas' fault. :p06:54
Odd_Blokejamesh: It'll find a dotted revision, if that's what you meant by 'bisect a graph'.06:58
jameshOdd_Bloke: I guess what I meant was to use the graph when working out what revisions to test06:59
Odd_Blokejamesh: I don't know.  Jeff Licquia wrote most of it, I've just plugged in the necessary bits to get automation.07:00
jameshOdd_Bloke: if you keep the assumption that "one revision causes the breakage", each successful test indicates that the revision's entire ancestry is clean, and every failed test indicates that every other revision that includes this one in its revision history is broken07:00
jameshrather than treating it as a simple linear sequence of revisions you can cut in the middle07:01
Odd_BlokeRight, I suspect it just cuts it, but I don't actually know either way.07:01
lifelessI think cutting in the middle is fine for left-hand07:01
igchi pygi. Thanks for your blog encouraging more interop between the DVCSs. For large projects, dynamic interop will be slow but I think there's promise in using fastimport/export for keeping high-performing mirrors around and synched07:01
lifelessso bisect (mainline), then bisect(new in branch)07:02
jameshhow does git-bisect handle it?07:02
lifelessnot entirely sure07:03
lifelessok, saved 30/120 ish seconds07:04
pooliespiv, ping?07:04
lifelessspiv: so, are the hooks boom or bust?07:11
gourpygi: my experience is that fastimport fails with darcs...07:12
spivlifeless: boom07:13
lifelesscool07:14
lifelessI have iter_random_one down to 78.722,07:14
lifelessjust by parsing faster07:14
Odd_BlokeIt looks like bisect does restart on the branch when it bisects to a merge revision.07:18
Odd_BlokeWhat word can I use to refer to { trees, branches, repositories }?  Elements?08:15
luksthingies?08:15
luks:)08:15
=== Toksyuryel` is now known as Toksyuryel
lifelessOdd_Bloke: objects? components?08:19
igcthat's it from me today. Night all08:25
lifelesshmmm08:42
lifelessnight igc08:42
lifelessI wonder what the gc does with swapped out pages08:43
beunohowdy lifeless08:45
lifelesshi beuno08:47
lifelesslh search merged yet? (<am keen>)08:48
beunoheh, I promise I'll review the current code today, and send it off to the list so mwhudson feels more pressured  :)08:48
beunoI've showered and slept, so today should be more productive08:49
lifelesslol08:49
lifelesswhere are you?08:49
beunoCanonical08:49
lifelessLondon?08:50
beuno16 hour on a plane, went straight to the meeting08:50
beunoyeap08:50
lifelesscool, didn't even know there was a meeting ;)08:50
lifelessyou going to GUADEC?08:50
beunobzr-unrelated stuff08:50
lifelesssounds fun :)08:51
beunoI don't think so, I'm here for a few days (may end up staying longer though)08:51
beunoit is!08:51
beunoGuadec is in Spain, isn't it?08:52
lifelessturkey08:52
lifelessnext week08:52
lifelessmonday !08:52
beunoah, then I'm sure I'm not going08:53
beunoI do still have to make some things pretty for Jc2k08:53
lifeless:)08:53
beunoI hope I can get to that this weekend08:53
lifelesslol08:57
lifelessBTreeIndex: iter_random_one in 199.008,08:57
beunoI don't have a backlog, how much is it without your BTreeIndex magic?08:58
lifelessdunno yet08:58
lifelessits new08:58
lifelessits actually iter_random_one_reopen08:58
lifelessand - much longer - still going09:02
beunooh, cool. mwhudson go the new version of LH back up again in LP09:04
beunoand it's fast!09:04
mwhudsonstill using mega ****wads of ram09:06
mwhudsonbut at least that isn't affecting the rest of the codehosting any more09:07
beunomwhudson, more or less then before?09:07
lifelessstill going09:07
lifelessGraphIndex: iter_random_one in 794.916,09:10
mwhudsonbeuno: well, different09:10
mwhudsonbeuno: it's probably growing more slowly09:10
mwhudsonbeuno: if it was using this much on the old machine it would have been killed by now09:10
beunoah, not very encouraging09:11
lifelessmwhudson: kudos09:11
mwhudsonbeuno: still, the sysadmins are much happier :)09:11
beunomwhudson, is there some way you can get more information on what's eating up most of the ram?  if not, is there anyone in Canonical's office I can stalk to do so?09:11
lifelessbeuno: the sysadmins during london's day09:12
lifelessbeuno: elmo is the boss sysadmin09:12
beunoright, but you threw hardware at the problem, which isn't ideal as we can't send free hardware with each LH download  :p09:12
mwhudsonbeuno: probably not without adding some code09:12
mwhudsonbeuno: no one else is running a site remotely like LP yet, fortunately09:12
lifelessbeuno: being *able* to throw hardware at it is a feature09:13
beunomwhudson, well, the guy that opened up the 100% CPU bug maybe09:13
Jc2khmmm pretty things :)09:13
mwhudsonbeuno: the obvious suspect for ram-chewage is all the whole history data we store09:14
mwhudsonif it's that, and i guess one could add some code to estimate it, it probably wouldn't be hard to store it much more compactly09:15
beunoJc2k, :)   how's LH running on your server?  is it ram-friendly enough?09:15
Jc2kindeed, its been fine09:15
beunothat's good news!  also considering that you're using search too09:16
lifelessyes, but search is good :)09:16
lifeless(/me stops wanking)09:16
beunolol09:16
Jc2k:)09:17
lifelessI tried search with BTree09:18
lifelessmassively bigger index09:18
lifelessbut faster still09:18
lifelessso there is room I think for having the last page not round to 4K09:18
lifelessjam: ^09:18
lifeless(search has _many_ very small indices09:19
pygiigc, ;)09:19
pygigour, well, file a bug with them? :)09:19
gourpygi: https://bugs.launchpad.net/bzr-fastimport/+bug/23217709:21
ubottuLaunchpad bug 232177 in bzr-fastimport "Better darcs support needed" [Undecided,New]09:21
spivlifeless: hooks patch sent to list09:22
lifelessspiv: rocking!09:23
pygigour, isn't that a darcs problem with fastexport rather?09:23
gourpygi: darcs-to-git and darcs2git, yes09:24
lifelessspiv: I've approved; one thought though09:26
lifelessspiv: perhaps the hook catpure logic could be pulled up09:26
gourpygi: the point is darcs --> bzr conversion09:26
lifelesspoolie: ping09:26
spivlifeless: in the tests?  Yeah, I guess so.09:26
spivSome of the test methods are also identical.09:27
lifelessspiv: I don't think a common base class is _that_ ugly09:27
pygigour, well, I understand. What I'm asking is: Is darcs fast-export implementation correct?09:27
spivIf the common base class inherits from TestCase, and has tests methods, but is not meant to be run, it's a bit ugly.09:29
gourpygi: dunno. tailor is atm the only tool capable of darcs{1,2} --> bzr09:30
=== brilliantout is now known as brilliantnut
* spiv goes for a swim09:31
poolielifeless: pong, off the phone now09:32
pygiigc, we will see what happens, I'd certainly like if people would be able to collaborate even if they disagree on some stuff09:33
lifelesspoolie: feel like another call ?09:33
poolie:-}09:33
poolielet me get a cuppa and i'll call you09:34
lifelessK09:34
gourpygi: let'em choose whatever dvcs as long as it's called bzr :-)09:34
pygigour, hehe09:37
lifelessspiv: is there a simple recipe for 'give me a 300ms local server'09:37
lifelessspiv: ?09:37
lifelessspiv: what we do there is not give it test methods, but helpers :P09:46
lifelessspiv: add an intermediate class :)09:46
\shluks: ping qbzr ppa rebuild hardy ;)10:03
semslieWhen merging branches, I have some duplicate conflicts where the same file was added to both branches individually, however the files are identical. Is there a merge algorithm that will take into account that the files are the same and not detect a conflict?10:09
james_wsemslie: unfortunately not, as file joins are not implemented yet.10:11
semsliejames_w: what are file joins?10:11
james_wthey wouldn't need to be to not have a conflict, but bzr currently errs on the side of safety.10:11
james_wsemslie: bzr uses file-ids to track file identity. If a file is added independently in two different places it will get two different file ids. When they are merged this causes the conflict.10:12
james_wa file join would mark the file as having two file-ids in its history, so there would be no need to conflict.10:13
semsliejames_w: thanks10:13
=== enobrev is now known as [enobrev]
james_wresolving this conflict currently is just picking one file-id. You could have a merge algorithm that did that, and most users wouldn't care which was picked, so it's probably a safe thing to do.10:14
james_whowever, I'm not sure that there aren't issues with symmetry that could trip that up.10:14
james_wsemslie: there is a bug report open requesting this if you would like to subscribe.10:14
semslieI'll take a look10:15
semsliejames_w: do you know where I could find a description of the different merge algorithms available?10:37
james_wsemslie: I don't, sorry.10:41
lifelesssemslie: jam is working on a plugin that accounts for this10:47
semsliethanks lifeless10:47
lifelesssemslie: it doesn't address the root cause james_w mentions10:47
lifelesssemslie: http://bzr.arbash-meinel.com/branches/bzr/1.6-dev/merge3_per_file10:48
lifeless(by plugin, I clearly mean branch)10:50
lifelesshttp://bzr.arbash-meinel.com/plugins/per_file_remerge may be useful too10:50
lifelessdunno how to make it jump etc, just saw it on the list10:51
lifelessmtaylor: hey11:08
mtaylorhi lifeless11:08
mtaylorlifeless: I was in the middle of testing something for you, wasn't I...11:09
lifelessmtaylor: dunno, were you ? ;)11:09
mtaylorlifeless: ok. good! then no!11:09
lifelessmtaylor: bzr-search has come a long way since your last attempt i think11:09
mtaylor:)11:09
mtaylorsweet. I'll pull again.11:09
lifelessalso there is now a new index layer under development11:10
lifelessshould help people with very large indices:). e.g. mysql.11:10
semsliethanks for the tips. after playing around a bit I seem to be finding that bazaar detects conflicts in places where subversion does not, which is a bit puzzling. I dont think subversion is wrong here, but it would be nice to see a good descriptions of the different merge algorithms and why they might be detecting conflicts11:10
lifelesssemslie: well, the code is authoritative, but please do file a bug saying you couldn't get the info you needed11:11
lifelesssemslie: also, if you have a particular false-conflict, if you can describe it perhaps we can help you understand why you get it11:11
lifelessmtaylor: lp:~lifeless/+junk/bzr-index211:12
mtaylorlifeless: should I pull that as a separate plugin then?11:12
mtayloror is that a branch of search?11:12
lifelessmtaylor: adds a btree based format; if you wanted to give it a spin (in a new repository, obviously), and tell me how it goes I'd love the feedback11:12
lifelessmtaylor: index2 is a new repository format11:12
lifelessmtaylor: not related directly to bzr-search at all11:13
mtayloroh. so but will it go in in plugins? or is it a branch of bzr then?11:13
lifelessplugins11:13
lifelessas 'index2'11:13
mwhudsonlifeless: have you tried index2 on any bzr-svn repos?11:14
mtaylorcool11:14
lifelessmwhudson: haven't created a rich root variation yet11:14
mwhudsonlifeless: oh right11:14
lifelessmwhudson: currently have a to-london test running though11:14
mwhudsonjust thinking that bzr-svn indices tend to be 'rather large'11:14
mtaylorImportError: No module named pybloom.pybloom11:15
mtaylorgah11:15
lifelessmtaylor: oh, also pull11:15
mtaylor:)11:15
lifelesshttp://bzr.arbash-meinel.com/plugins/pybloom/ to plugins/pybloom11:15
mwhudsonlifeless: cool11:16
lifelessmwhudson: its about 4 times faster at getting a single key out from 'go' to 'woah'11:17
lifelessmtaylor: so concretely, in case I was unclear - I'm talking about doing 'bzr init-repo --btree-plain foo'; bzr branch mysql-6.0 foo/6.0; or similar11:20
lifelessthen do log etc11:20
lifelessnot about bzr-search on the btree format - that will be basically unchanged11:21
mtaylor    raise KeyError('Key %r already registered' % key)11:21
mtaylorKeyError: "Key 'btree-plain' already registered"11:21
lifelessmtaylor: oh, one other thing - optional C extension11:21
mtaylorright11:21
lifelessin index2, do ./setup build_ext -i11:21
lifelessmtaylor: did you pull the index2 plugin twice?11:21
mtaylornope. ImportError: cannot import name _KnitGraphIndex11:21
mtaylorI get "foo" already registered sometimes when a plugin crashes spectacularly11:22
lifelessmtaylor: ah! this will want bzr.dev11:22
mtaylor:)11:22
mtaylordo we have running new-package-on-push .debs for bzr.dev yet?11:22
mtaylorbecause we need them11:22
lifelessmtaylor: I don't think we do at the moment, I agree.11:23
mtaylorkiko!!!11:23
lifelessnot kiko's problem :)11:23
mtaylorah... but how cool would it be to have a PPA auto-generate from a bzr branch, no?11:25
lifelessmtaylor: indeed11:25
mwhudsoni think this idea has been mentioned once or twice over the years...11:26
Kinnisonlifeless: cache-hot, on my smallish project, that gives me a ca. 25% speedup on 'bzr log >/dev/null'11:26
Kinnisonlifeless: nice.11:26
mtaylorPPA-from-bzr-branch++11:26
lifelessKinnison: without the C extensions?11:27
Kinnisonlifeless: I built the C extensions11:27
lifelessKinnison: cool11:27
* Kinnison tries on something bigger11:27
lifelessKinnison: should still be faster with11:27
lifeless*without*11:27
Kinnisonlifeless: testing against my local copy of bzr.dev yields a 25% improvement in bzr log too11:30
Kinnisonlifeless: really cool work11:30
james_wdoes anyone know what generates file ids like "x_Chris_Halls_<halls@debian.org>_Fri_Nov__4_10:34:47_2005_22857.16" ?11:30
lifelessKinnison: thanks11:30
lifelessjames_w: tla11:30
james_wlifeless: ah, thanks.11:31
lifelessKinnison: is 25% good ? :)11:32
Kinnisonlifeless: It's a matter of a second on my smallish dev tree11:33
lifelessso 4 to 3 ?11:33
Kinnisonlifeless: aye11:34
Kinnisonlifeless: and 8 to 6 on bzr.dev11:34
lifelessKinnison: try a cold cache comparison11:34
lifelesserm11:34
lifelessby which I mean11:34
lifelessdrop caches11:34
lifelessrun bzr info11:34
lifelessthen time bzr log11:34
Kinnisonhow do I drop the caches?11:34
lifeless$ cat bin/drop-caches11:34
lifeless#!/bin/sh11:34
lifeless# get written data to disk (not that its guaranteed)11:34
lifelesssync11:34
lifeless# (drop the unmodified pages)11:34
lifelessecho 3 | sudo dd of=/proc/sys/vm/drop_caches 2>/dev/null11:35
lifelessman, this network test is up to hours now11:36
lifelessgunna be a long benchmark11:36
mwhudsonbranching launchpad into an index2 repo is taking a good long while too11:37
Kinnisonlifeless: Irritatingly, the cold-cache time on the index2 tree is stable where it is wildly variable on the non index2 tree11:38
lifelessmwhudson: index writing is a little slower11:38
lifelessKinnison: likely the non index2 tree is split more on disk11:38
Kinnisonlifeless: placing index2 on cold-cache anywhere from 25% slower to 50% faster11:38
lifelessKinnison: new repository single pull -> packed11:38
lifelessKinnison: strange11:39
* Kinnison times cold-cache on a new copy of my test branch11:39
Kinnisonon a fresh pull it's slightly more stable, and puts them on a par11:40
Kinnisonwell within experimental error11:40
lifelessmwhudson: did it finish?11:49
mwhudsonlifeless: yeah12:00
lifelessmwhudson: is it faster?12:02
AnMaster$ bzr log --short -rtag:0.0.1-release..12:11
AnMasterbzr: ERROR: Selected log formatter only supports mainline revisions.12:11
AnMasterwhat does that mean?12:12
AnMaster-rtag:0.0.1-release.. was in same branch12:12
AnMasterother branches have been merged and such to it of course but why doesn't it work then12:12
=== emgent_ is now known as emgent
mwhudsonlifeless: yep, 20s vs 30s for log > /dev/null12:14
mwhudsonthe btree one is better packed though ofc12:14
lifelessmwhudson: 'bzr pack' in both :)12:18
mwhudsonlifeless: yeah, on that12:19
mwhudsonlifeless: they're about the same speed after the pack12:19
lifelessmwhudson: hmm :P12:21
lifelessmwhudson: the new index should degrade better, or thats the theory12:21
lifelessmwhudson: you could try upping the cache too12:21
mwhudsonlifeless: i think i might try going to bed :-p12:22
lifelessmwhudson: ciao!12:22
lifelessmtaylor: did that work for you?12:53
mtaylorlifeless: was at lunch... haven't tested yet12:53
lifelessmtaylor: no worries12:54
mtaylorlifeless: lp:bzr should get me bzr.dev, right?13:00
lifelessuhm probably :P13:00
lifeless(thats yes, yes it will(13:00
mtaylorok. good13:00
mtaylortesting now13:02
lifelesslog isn't actually a great test, I think IO to get revisions rapidly outweighs indexing, except where the index blows :P13:02
mtaylorwell, what is a good test?13:05
lifeless'doing stuff' I think :)13:05
lifelesslog will show up obvious problems :)13:05
mtaylor:)13:06
lifelesslog -r -400 or something13:11
lifelessthat should be faster13:11
mtaylorlifeless: still branching in to the new repo13:16
mtaylorlifeless: have I mentioned how much I enjoy copying 60k revs around ?13:16
lifelessmtaylor: you enjoy it a lot13:16
mtayloryes.13:16
mtaylorI'd really like to do it more13:17
lifelessplease sir13:17
lifelessmay I have another13:17
LarstiQyksi iso olut, olkaa hyvä.13:18
lifelessLarstiQ: *blink*13:18
LarstiQlifeless: about the same in Finnish :)13:18
* LarstiQ practices a bit for his extended stay in Finland from the 11th onwards13:19
LarstiQlifeless: that translates "May I have one beer please"13:19
lifelessLarstiQ: cool13:19
LarstiQbig beer even13:19
lifelessthe only sort :P13:20
lifelessbut hang on, why are you practicing asking for beer?13:20
LarstiQlifeless: ah well, this was the phrase as listed in my dictionary ;)13:20
LarstiQwould have to add the orangejuice lookup13:21
semslielifeless, james_w: turns out bazaar was doing the right thing by correctly finding the last common ancestor, while we were messing it up and checking against the wrong ancestor. problem solved, bazaar ftw :)13:37
james_wcool, good to know.13:38
semslieone thing I found was that I preferred the results of a weave merge to the default13:38
semslieI'm not sure what the implications of that is13:38
lifelessgnigt all13:43
pygihey hey folks =)14:10
vxnickHi all14:17
vxnickI was wondering if anyone knows a good way to "push" a repository to a dev server? At the moment, I have a repository setup but would like to update a live version for testing without manually uploading the files14:18
vxnickI read that using another working copy isn't the best solution, so wondered if there are any other solutions?14:18
beunovxnick, I can think od 2 ways14:19
beunothere's a push-and-update plugin which will do that14:19
vxnickoh, excellent14:19
beunoand there's the bzr-upload plugin which will *just* upload the working tree14:19
beunono other revision information except the last revision uploaded, so next time you only uploaded what has changed14:20
vxnickbeuno: thanks a lot, I'll take a look at those :)14:21
beunovxnick, you're welcome14:21
abentleyjelmer: I'd be interested to talk about the bzr-gtk Bundle Buggy some time.14:26
vxnickbeuno: bzr-upload works great, thanks again!14:32
jelmerabentley: Hi14:34
jelmerabentley: Sure, what about it?14:34
abentleyI've moved trunk to use postgres, so you may be surprised if you just update blindly.  OTOH, BB is much more stable on postgres.14:34
abentleySo I would recommend switching at some point.14:35
jelmerabentley: I already updated :-) Apart from the fact that I had to point the configuration at sqlite again it seems to still work fine14:36
abentleyCool.  Sorry about that.  The sqlite-ness has always been assumed as part of the configuration.14:36
abentleyFrankly, I'm not sure what the right way to handle this is.14:36
abentleyI could do a local.conf, but a local-prod.conf and a local-dev.conf?14:37
jelmerabentley: No worries, it was easy to deal with14:38
jelmerabentley: Any particular reason pgsql is better than sqlite or just performance?14:39
abentleyjelmer: Stability.  TG interacts poorly with the way SQLite does locking.  PG and TG play better together.14:39
jelmerabentley: ah, ok14:40
abentleyAlso, schema migration is nicer.14:40
jelmerSo far locking hasn't been a problem for us, but I'll see if I can migrate it at some point anyway.14:42
abentleyjelmer: BB seems to crash for you occasionally.  I assumed it was that.14:43
pickscrapelocking granularity leading to improved concurrency is why we moved our trac from sqlite to postgres.14:43
jelmerabentley: No, the main problem at the moment is DHCP leases expiring and DNS updating failing for some reason14:45
abentleyOh, weird.14:45
abentleyjelmer: Okay.  So I'll try not to make any changes that require Postgres, but if I goof, please let me know.14:46
jelmerabentley: Will do14:46
LaibschHi, I am trying to merge some launchpad branches14:53
Laibschhttps://code.launchpad.net/~vcs-imports/subdownloader/trunk shall go into https://code.launchpad.net/~subdownloader-developers/subdownloader/trunk14:53
LaibschHere is what I did.  Check out the second branch and cd into it14:53
LaibschThen "bzr merge lp:~vcs-imports/subdownloader/trunk" which resulted in http://rafb.net/p/rCkYQS78.html14:54
james_whi Laibsch14:56
james_wit sounds like https://bugs.edge.launchpad.net/bzr/+bug/17787414:56
ubottuLaunchpad bug 177874 in bzr "upgrading to rich-root-pack fails" [Critical,Fix released]14:56
LaibschGreat15:00
Laibschjames_w: thank you for the info15:00
taconehello, how can I print the revision number in my sourcecode ?15:04
andrea-bstacone: bzr revno?15:04
taconenot. what shuold I write in my code, to make the current revision number appear inside that file ?15:06
james_wtacone: that's not possible yet, sorry15:07
james_w1.6 might have it, if not then 1.7 I expect15:08
taconenot a bit problem :-). thank you for your answer.15:09
vxnickjames_w: isn't there another command/program to do this? I could've sworn I saw something about this in the manual for printing revision info to source code15:15
vxnickI was looking for it myself last night - it'd be nice to output the revision number to a PHP file15:15
taconevxnick: sed ? :-)15:16
vxnicktacone: yeah I've done it with that, but it'd be nice to have a post-commit hook to do it, but I'm not familiar with Python15:16
james_wbzr version-info15:17
james_wyou can hook that in to your build system to do it.15:17
vxnickActually, I used sed for subversion revision numbers, with a post-commit hook15:17
vxnickjames_w: that's the one :-)15:17
vxnickany ideas for that though?15:17
vxnicki.e. integrating into a build system15:17
james_wI've never done it, sorry15:18
vxnickfair enough15:19
vxnickthanks anyways15:19
vxnickfound a reference: http://doc.bazaar-vcs.org/bzr.0.90/en/user-guide/version_info.html15:21
AnMasterI didn't get an answer before15:34
AnMaster<AnMaster> $ bzr log --short -rtag:0.0.1-release..15:35
AnMaster<AnMaster> bzr: ERROR: Selected log formatter only supports mainline revisions.15:35
AnMaster<AnMaster> what does that mean?15:35
AnMasterdoes anyone around now know?15:35
AnMasterthe tag was in the same branch15:35
james_wAnMaster: what does "bzr log -rtag:0.0.1-release" show?15:35
james_w(no --short, no "..")15:36
AnMastera sec15:36
AnMasterhttp://rafb.net/p/RQruyr60.html15:37
james_winteresting15:38
james_wand "bzr log --short" works fine?15:38
AnMasterjames_w, no it gives the error I gave above15:38
LarstiQAnMaster: without the ..15:38
AnMasterwhen done for that tag15:38
james_weven with no -r15:38
james_w?15:39
AnMasteroh ok a sec15:39
* LarstiQ is suspecting the .. includes non-mainline revisions which --short doesn't like.15:39
AnMasterwithout any -r short format works15:39
james_wsounds like a bug to me15:39
james_wone more to try "bzr log --short -rtag:0.0.1-release"15:39
AnMasterI suspect corrupted repo on some way because the revision number from "bzr log --short -rtag:0.0.1-release" is different15:39
AnMaster449.2.20 Arvid Norlander        2007-11-1315:40
AnMaster      Relase of envbot 0.0.1!15:40
AnMasterwhy does revision number differ15:40
james_woh wow, that is odd.15:40
AnMastercorrupted repo?15:40
james_wis this a public branch?15:40
LarstiQAnMaster: I doubt that.15:40
AnMasterjames_w, well both branches are public, just sshed in to the server and there it works, server runs FreeBSD 6.3 with bzr 1.515:41
AnMasterpython 2.515:41
LarstiQAnMaster: what do you use locally?15:41
AnMastermy desktop where it gives odd results runs Linux (arch linux currently), with python 2.415:41
AnMasterbzr 1.515:41
AnMasterhowever it is mounted over nfs from a gentoo box15:42
AnMasterdoes that matter?15:42
LarstiQshouldn't.15:42
AnMasterwell let me check on the gentoo box (also bzr 1.5 and python 2.4)15:43
AnMasterok this is probably not a bug in bzr I guess...15:44
AnMasterReason.... the gentoo box now has two keyboard leds blinking (= kernel oops).... could be hardware issues on it I guess15:44
AnMaster:/15:44
AnMastersigh15:44
LarstiQah.15:44
AnMasterwell got to debug that, when I find out the cause of that I will get back to you (if it wasn't memory corruption simply)15:45
AnMaster(or harddrive issues or whatever)15:45
=== james_w_ is now known as james_w
LarstiQAnMaster: good luck15:46
AnMasterLarstiQ, I *do* have backups15:46
AnMasterdaily to tape15:46
LarstiQstill, faulty hardware sucks15:47
AnMasteryes it does15:47
AnMasterLarstiQ, anyway it could as well have been something else than hardware that crashed it, it runs X with binary nvidia driver (bleh I know, but I need 3D for various reasons)15:47
* AnMaster books into memcheck15:48
LarstiQAnMaster: we'll still be here when you've sorted it all out :)15:48
AnMasterheh15:48
viladid someone remember the url announcing mysql switch to bzr ?15:57
enobrevvila, http://elliotmurphy.com/2008/06/19/mysql-converts-to-bazaar-and-why-it-matters/15:58
enobrevoops... link's on that post, though (got that from planer bazaar)15:59
vilaenobrev: thks15:59
enobrevhttp://blogs.mysql.com/kaj/2008/06/19/version-control-thanks-bitkeeper-welcome-bazaar/15:59
=== thekorn_ is now known as thekorn
kwkHello is somebody using the Bazaar plugin for eclipse?16:20
enobrevkwk, i am16:22
enobrevon win3216:22
enobreverm, xp16:22
kwkenobrev. Ok, did you experience problems when trying to set the bazaar preferences? I'am using the plugin on ubuntu with Eclipse Ganymede and it doesn't work when trying to specify the bzr executable. A bug report is already filed (https://bugs.launchpad.net/bzr-eclipse/+bug/245136).16:24
ubottuLaunchpad bug 245136 in bzr-java-lib "Cannot use Preferences page to configure executable if existing settings are in error" [Undecided,New]16:24
enobrevkwk, nope worked ok for me on both granymede and europa.  haven't tried it on my ubuntu system yet16:25
kwkubottu: exactly. enobrev, can you please send me you configuration file from YOURWORKSPACE/.metadata/.plugins/org.vcs.bazaar.eclipse.core(if such a file exists)? The bug report says that there has to be an initial configuration file that is working. Therefore I ask.16:26
ubottukwk: Error: I am only a bot, please don't think I'm intelligent :)16:26
kwkbug 23616216:27
ubottuLaunchpad bug 236162 in bzr-eclipse "branch action is broken for absolute path " [Medium,Fix committed] https://launchpad.net/bugs/23616216:27
enobrevnice16:27
enobrevkwk, dir's empty16:28
kwkenobrev, hmm, do have any clue where the settings are located?16:28
enobrev(looking now)16:29
enobrevkwk, not sure... not seeing it anywhere16:33
kwkenobrev, OK thank you very much16:33
AnMasterLarstiQ, still there? bad ram. I guess that caused it16:34
LarstiQAnMaster: that is, if you try what you did before now, the problem doesn't surface?16:36
LarstiQAnMaster: it is of course possible that the problems were unrelated, and there is a real bug inbzr.16:36
AnMasterindeed that is the case16:37
AnMasteranyway I shut it down now, still got warranty on this ram at least16:37
=== brilliantnut is now known as brilliantout
Laibschwill "bzr get svn+ssh://rolf@svn.gnucash.org/repo/gnucash" check out all available branches?17:45
jelmerLaibsch: no, you'd need to use "bzr svn-import" for that17:46
LaibschOK17:46
LaibschThanks17:46
jelmerabentley, is there info about the merge proposal email support somewhere?17:48
Laibschjelmer: Should I even check out all branches?  I want trunk plus 2 others.  I will likely want to try and merge and later rebase them.17:49
jelmerLaibsch: In that case, I would recommend just retrieving those branches17:49
LaibschI was wondering if that would be impossible if I checked out the branches individually17:49
LaibschOK17:49
LaibschThanks17:49
jelmere.g. "bzr get svn+ssh://rolf@svn.gnucash.org/repo/gnucash/trunk" ( I think)17:49
LaibschYes, correct17:50
* jelmer wonders if the svn+ssh url means Laibsch is a gnucash developer17:50
abentleyjelmer: http://news.launchpad.net/cool-new-stuff/email-interface-to-code-review17:50
jelmerabentley, thanks17:50
Laibschjelmer: partially17:50
LaibschI have partial rw access17:50
jelmerabentley: What about submitting merge requests?17:51
abentleyjelmer: That's done through the web right now.17:51
jelmerabentley: ok - should I file a wishlist bug for being able to do that over email or is it already pleanned ?17:52
abentleyWe plan to support merge directives.  Is that what you have in mind?17:52
jelmerabentley: Yeah, being able to "bzr send" to some lp address17:53
james_wjam: hi, are you around? I have a question about the merge-into plugin.17:56
james_wjam: I'm just trying it on a dummy branch, and "merge-into" set a merge revision, but didn't seem to import the text changes.17:58
vgeddesI am having trouble setting up a dedicated smart-server, ...18:04
vgeddesI set it up like this: bzr serve --allow-writes --directory=/home/vgeddes/src/nis ...18:04
vgeddesbut `bzr log bzr://localhost//home/vgeddes/src/nis/main'18:05
vgeddesreturns `bzr: ERROR: Not a branch: "bzr://localhost/".18:05
PengMaybe // is a problem?18:05
PengAlso, you do know --allow-writes means there's no auth whatsoever, and anyone can write to your branches?18:05
PengWait.18:05
LarstiQvgeddes: try bzr log bzr://localhost/main with that --directory18:06
vgeddesyeah, thats not the problem, I tried it without the //18:06
PengSince you passed a --directory like that, bzr ser -- yeah, what he said.18:06
vgeddesha, thanks !18:06
Laibschhttp://rafb.net/p/iVSTU253.html Is that bug 177874?  How can I perform the merge?  The branches had completely separate directories, there should be no conflicts18:08
abentleyjames_w: Are you testing with a branch that has commits?18:09
james_wabentley: yeah, one commit in each18:09
jelmerLaibsch, not sure, this looks like a bug18:11
jelmerLaibsch: Can you try merging from a local copy of that branch?18:11
Laibschjelmer: How will that work?18:12
LaibschI'll check this out into $dir18:12
Laibschand then bzr merge $dir?18:12
LaibschWell, in any case, those steps lead to apparently the same failure18:17
LaibschBazaar (bzr) 1.3.1 from ahrdy18:18
Laibschhardy18:18
=== blueyed__ is now known as blueyed
pygibkor, I think you have your answer now :)19:21
jelmerLaibsch, please file a bug19:29
awilkinsVerterok: Aha19:32
Verterokawilkins: hey19:33
awilkinsI'm having trouble ; the plugin isn't initializing properly somewhere ; to get use it with a project you have to disconnect it and re-share it19:34
Verterokawilkins: are you using a build of  the latest code?19:36
awilkinsVerterok: I was just going to pull ; I'm using a slightly patched build19:37
awilkinsVerterok: With the xmloutput fix I just mailed in19:37
Verterokawilkins: yes, I meaned that :)19:37
awilkinsVerterok: Hmm, might not have revisions 163/16219:39
* Verterok checks what changes in 162-16319:40
awilkinsThere's also (undecided)  19:41
awilkins#24513619:41
Verterokawilkins: 163 is the BIG integration merge19:41
Verterok:)19:41
awilkinsStill the same trouble19:41
Verterokawilkins: revno 163 merge your plugin-dev branch and other improvements (allow selection of xmlrpc service port, etc)19:42
awilkinsI think I was on the integration branch ; I just merged it19:43
awilkinsVerterok: Alas, still same problem.19:43
Verterokawilkins: steps to reproduce? a eclipse restart?19:43
awilkinsI was going to see if being a standalone over a repo branch makes a difference19:44
awilkinsVerterok: This is the plugin running in debug from another session which is how I typically run it until I think it's stable enough for normal use19:45
awilkinsI have no idea if it's linked to https://bugs.launchpad.net/bzr-eclipse/+bug/245136 at all19:45
ubottuLaunchpad bug 245136 in bzr-java-lib "Cannot use Preferences page to configure executable if existing settings are in error" [Undecided,New]19:45
awilkinsI just added a chunk of code that sets a reasonable default for Windows (well, reasonable for my personal config....)19:46
Verterokawilkins: maybe it's related19:46
Verterokawilkins: while in debug I encountered some problems when using and oldd workspace, all gone away once I reconfigured usign the new preference page19:48
awilkinsIt springs the prefs page every time you use the share wizard ; would that be normal?19:48
Verteroknot at all19:51
awilkinsI'll trash the settings for the workspace19:52
Verterokawilkins: I'll check the preference initializer19:52
awilkinsHm, there are no settings19:53
awilkinsShould there be a file in .metadata/.plugins/org...core  ?19:53
Verterokawilkins: I don't think so, but let me double check19:55
awilkinsWhere does it store it then?19:55
Verterokawilkins: ./org.eclipse.core.runtime/.settings/org.vcs.bazaar.eclipse.ui.prefs and ./org.eclipse.core.runtime/.settings/org.vcs.bazaar.eclipse.core.prefs19:57
awilkinsOk, I've trashed those two files. Darn, should've kept them19:59
VerterokI'll do the same here and see if I can reproduce the preference reset issue19:59
awilkinsI'm seeing it right now ; I changed the default preference for the UI, not the actual setting.20:00
awilkinsSo it's displaying the .bat file and saying "cannot run program "bzr" cannot find file specified"20:01
awilkinsOr that last merge erased my changes20:01
Verterokawilkins: you chanhed the preference initializer in the UI to point to the bzr.bat?20:02
Verterokand keeps telling about bzr file20:02
Verterokdid I understood right?20:02
fbondHi.  I want to produce a patch for a changeset that removes a binary file and can be applied with the patch program.  With no VCS, `diff -Naur' would do this.  What do I use with bzr?20:02
awilkinsYes, the preference says the bat file, the error message is as if it was just trying to run "bzr" like you would on posix20:03
awilkinsAha, but if you summon the dialog AGAIN, it doesn't complain20:03
Verterokawilkins: the core plugin also haave a preference initializer :P20:04
awilkinsStills says "no client factory found" though20:04
Verterokfbond: bzr diff ?20:04
fbondVerterok: I assume you haven't tried it.20:04
Verterokfbond: I used bzr diff but I don't know if it's the same as 'diff -Naur'20:05
Verterokfbond: and I used the generated diff with patch20:05
fbondVerterok: Then your binary file isn't being removed by patch.20:06
Verterokfbond: oh, I missed the binary file part :P I never used it with binary data20:06
Verterokawilkins: that means the bzr-java-lib can create a IBazaarClient20:07
Verterokawilkins:  commandline or xmlrpc20:07
awilkinsVerterok: Ok, I patched the core initializer with the same default value ; now the projects are connected but no overlays20:08
fbondI've tried bzr diff -r X..Y --using diff --diff-options '-Nau' but that produces funny output that I can't blame patch for not accepting.20:08
awilkinsVerterok: They were previously in the "Connected/Error" state where only the disconnect operation was available20:08
awilkinsThis is XMLRPC20:08
Verterokawilkins: if you trashed all the preferences, you should enbale the decorators again20:08
awilkinsVerterok: The status decorator is enabled in the defaults20:09
Verterokawilkins: jusst disable/enbale it20:09
awilkinsVerterok: But only shows after you visit the property page, it seems.... must be in the UI defaults20:09
* awilkins restarts workspace again20:10
awilkinsOk, workspace restarted... now the projects are in the same state20:11
awilkins(Connected/Error)20:11
awilkinsNo stack traces in the console of the calling workspace20:11
awilkins(host workspace)20:12
awilkinsVerterok: Suddenly starts working after visiting the main preferences page (and not touching anything)20:12
Verterokawilkins: ohh, I see...20:12
awilkinsVerterok: Let me see if that is also true when you cancel it20:12
Verterokawilkins: I think it's only doing the setup of the client when you enter the pref. page20:13
awilkinsVerterok: The prefs being a singleton isn't going to work either ; I think that holds on both posix and windows, you just haven't run into it on posix because the default config is valid for posix20:14
awilkinsVerterok: If you visit the prefs and cancel, it doesn't show decorators20:15
awilkinsVerterok: Not for "OK" either20:15
awilkinsVerterok: Or "Apply" ...20:15
awilkinsAha,20:16
awilkinsTo get decorators, you have to visit the decorators prefs and "OK"20:16
Verterokawilkins: yes20:17
awilkinsTo get functional team menu I think you have to visit main prefs and OK20:17
Verterokawilkins: I'll try to reproduce that problem20:17
awilkinsYou don't get decorators if you visit/ok decorators WITHOUT having functional Team menu20:17
Verterokawilkins: actually I don't fully agree with the non-singleton preferences :) but this problem have more priority20:18
awilkinsVerterok: How does the prefs dialog check to see whether it holds valid prefs if the prefs are a singleton, and not set until the prefs page is valid?20:19
Verterokawilkins: the bzr-java-lib preferences are setup when the core plugin is started (valid or invalid)20:20
Verterokawilkins: in the prefs. dialog when apply/Ok the prefs are stored with the eclipse preferencestore20:20
Verterokawilkins: and applied to the BazaarClientPreferences singleton20:21
awilkinsVerterok: Yes, but the validity check in the prefs page uses the prefs to start the client - the old prefs, not the prefs in the page20:21
Verterokawilkins: ups, I missed that :P20:22
awilkinsSo if the old prefs are invalid, it's impossible to set new ones20:22
awilkinsVerterok: So by all means have a default static prefs instance but you need to be able to create a new one in the prefs page for validation and use it20:23
Verterokawilkins: heh, I forgot about the preference listener20:23
Verterokawilkins: PreferenceStoreChangeListener20:23
Verterokawilkins: that updates the preference store of the core20:29
awilkinsVerterok: Is that the bit which loads them in the first place?20:31
awilkinsVerterok: Or is it that the UI prefs are never being stored in the core?20:31
Verteroka bit of both, I think I missed the update of the client when the core/ui are updated20:32
Verterokbut the core prefs are used in the core start to update the client preferences20:32
awilkinsVerterok: The prefs are not being saved either (but they haven't changed from the defaults)20:32
* awilkins changes them20:33
awilkinsIf I can iron this out, I'll do some more testing and deploy it to my users (minus the SaveableEditorInput).20:33
Verterokawilkins: basically I missed a call to EclipseBazaarCore.updateClientPreferences() in PreferenceStoreChangeListener20:34
VerterokI think that adding a call to that should make the trick :)20:34
mgedmindid anyone ever already suggest bzr diff --color?20:34
awilkinsmgedmin: I think there is a plugin for it20:35
mgedminokay, then, did anyone ever suggest bundling it with bzr so that users could get pleasurable experience right out of the box?20:36
Verterokawilkins: I can add a prefs. change listener to the core and fire the client prefs. update when the core preferences changes20:37
awilkinsVerterok: I added the core-from-UI-prefs update line20:38
awilkinsVerterok: It fixes the prefs page but not the (Connected/Error) state on init20:39
Verterokawilkins: ok, let me know if that fixes the issue20:39
Verterokawilkins: I don't fully understand what "(Connected/Error) state on init" means20:40
Verterok:P20:40
awilkinsIt means that when you start, the project thinks it's connected to a bzr repo, but is in an error state so only the disconnect menu item is available20:41
awilkinsThis goes away after visiting the Team/Bazaar p[refs page20:42
awilkinsThe decorators remain absent until you visit the decorators pref page20:42
awilkinsBy the way, there is a difference between defaults, and your settings happening to BE the defaults20:42
Verterokawilkins: ok, the problem can be that a client can't be created, let me debug it a bit20:43
awilkinsIf you explicitly duplicate the default settings for decorators, the prefs file vanishes20:43
awilkinsIt should not ; an upgrade may change the defaults and you may not want that20:43
awilkins(IMHO)20:43
Verterokawilkins: I'm thinking in remove the executable related prefs from UI, and store it only in the core20:45
Verterok(to avoid this weird errors, and ease the manteinance)20:45
awilkinsVerterok: I would agree ; my UI prefs file is empty/absent anyway20:45
Verterokawilkins: I can confirm the error state at init20:46
=== mw is now known as mw|food
awilkinsVerterok: You have a windows box ATM?20:47
Verterokawilkins: nope, testinng on Mac OS X 10.420:47
Verterokawilkins: but I borrowed vnc access to a win XP box from beuno office (/me waves beuno)20:50
Verterokawilkins: I still need to configure bzr, Java, eclipse, but having an box with XP is a start :)20:50
awilkinsHeh, it's good that not everyone is using Ubuntu for bzr (although I like it, and it's the primary OS of the wife and her sister)20:51
awilkinsI'm using Vista ; I ran into a lovely issue with shelve ; apparently, Vista thinks that gnu patch needs admin rights because it's called "patch.exe"20:52
awilkinsIf you try and run it it either crashes or spams a UAC box20:52
awilkinsUntil you hand-edit a manifest resource into the file that tells Vista it doesn't really need Admin rights....20:53
Verterokawilkins: useful trick to know, did you added it on the wiki, your blog?20:55
Verterokawilkins: Indeed, Ubuntu is quite nice, but I primary use OS X 10.4 (my Gentoo box died a few weeks ago)20:55
awilkinsVerterok: I added it to the sourceforge bug which already described it but the solution didn't work immediately (I think it caches manifests, I had to rename the file a few times)20:56
Verterokawilkins: great :)20:58
awilkinsIf nothing else, putting solutions to things online is always a good idea because sooner or later I run into the problem again and forget how I fixed it20:58
Verterokhehe, sure20:59
Verterokawilkins: I think error state at init can be solved by calling EclipseBazaarCore.checkClient() in EclipseBazaarCore.start21:03
awilkinsRighto, back in 1 hr21:04
Verterokawilkins: seeya21:04
fbondSo, `bzr replay -r 821.. foo' should replay commits 822, 823, etc., but not revision 821, right?21:07
indigoIf i've moved a directory containing a repository and some checkouts to a different path, what can I do to fix the link from the checkouts to the repository?21:11
indigoguess i have to manually frob .bzr/branch/location21:13
indigoit's a little annoying that a trailing newline in that file breaks stuff21:14
=== mw|food is now known as mw
lifelessindigo: bzr switch NEWPATH21:37
=== jaypipes is now known as jaypipes-away
indigoi already mangled location manually; is that a problem?21:38
indigoit seems to be working..21:38
lifelesshi bkor21:38
bkorhey lifeless21:38
lifelessindigo: no problem, just letting you know the easier way :)21:38
Odd_BlokeMoin.21:38
indigoah, thanks21:38
indigotoo bad there isn't a bzr fix-bug-in-this-old-code :(21:38
lifelessindigo: hmm, I wonder :)21:39
indigoor even bzr get-this-old-code-to-compile21:39
lifelessjam: poing21:40
bkorindigo: $ moap code --help21:40
bkorcommands:21:40
bkor  develop  develop code21:40
jam lifeless: boing boing21:46
jelmerbkor, moap?21:48
bkorjelmer: http://thomas.apestaart.org/moap/trac21:48
bkorI use it for ChangeLog generation21:48
lifelessjam: what do you think of running with the new index format?21:48
lifelessjam: I have a network stress test still running overnight :X21:49
jelmerbkor, ah21:50
schmichaeldoes bzr have what Hg calls "named branches"?21:50
lifelessschmichael: all of our branches are named21:50
schmichaelhm... i don't think i'm using the right terms21:50
Pengschmichael: You can't have multiple branches in one directory.21:50
schmichaelPeng: ah, thanks21:51
lifelessschmichael: hg has a single directory with multiple heads21:51
lifelessschmichael: and the ability to name some revisions with movable labels which they then call named branches21:51
lifelessschmichael: such things being useful because they reuse the working tree and repository21:51
lifelessschmichael: we allow working tree reuse and repository sharing, but we do it by doing:21:52
lifelessbzr init-repo --no-trees REPO21:52
lifelessbzr branch THING REPO/NAME21:52
lifelessbzr checkout --lightweight REPO/NAME WORKINGTREE21:52
lifelesscd WORKINGTREE; bzr switch NAME2; bzr switch NAME3 etc21:53
schmichaelbzr switch?21:53
schmichaeli'm not familiar with what that does...21:53
jamnew this-week: http://jam-bazaar.blogspot.com/2008/07/this-week-in-bazaar.html21:53
lifelessschmichael: it switches a checkout from one branch to another21:53
schmichaellifeless: great!  thanks!21:54
lifelessschmichael: no problem :)21:54
Penghg's named branch aren't really moving labels.. They're tied into the revision's meta data.21:55
schmichaelPeng, lifeless: thanks!21:58
Pengbranches*21:59
lifelessPeng: you can commit to a named branch right?21:59
lifeless(in hg)21:59
PengI dunno. I think it might just be that when you commit, if the parent is a named branch, the new revision inherits the name.21:59
lifelessPeng: I thought it was a list of names that pointed at revision hashes22:00
schmichaellifeless: yes22:00
schmichaelwell actually i'm trying to learn the details of named branches in hg22:00
lifelessPeng: because otherwise you can't delete them22:00
schmichaelthey're new and kind of awkward22:00
Penglifeless: Correct, you can't delete them.22:01
lifelessPeng: oh, I didn't realise that. ouchies.22:01
PengI think git's named branches are basically automatically-moving tags.22:01
lifelessway to make the cost of using them permanent22:01
lifelessPeng: they are22:01
lifelessPeng: they are reasonably sensible, except for the all-in-one-place aspect22:02
lifeless(I have a bzr repo with 13K branches; don't really want that in a plain text file thanks(22:02
PengHeh.22:02
PengDoes bzr perform well if you have thousands of tags?22:03
jamlifeless: well, at one point hg's named branches was a simple 'tag' that said "and follow decendents until you have no more". And it was actually committed into the repository, I don't know if they have moved away from that yet or not.22:03
lifelessPeng: not terribly well; but tags are per-branch, not per-repository, so they are cappable and trimmable without losing history22:04
jamI think our scaling for N branches in a shared repository is quite good. I don't know that we have tuned the tag support as much22:04
jamlifeless: as for running with the current btree stuff.... we certainly can22:05
jamI was hoping to have one more poke at a whole-pack bloom filter22:05
jamSince I worked out resizing, etc.22:05
jamIt would be a single global one, so the code gets to be a bit simpler as well22:06
lifelessjam: sure, I think we can spend our respective fridays tweaking22:09
lifelessjam: I want to  validate that networking doesn't blow22:09
jamlifeless: yeah, though we have a pretty good idea that it won't22:09
lifelessdid you see iter_random_one_reload ?22:09
jamthe only thing I might add is speculative reading of extra pages over a network link22:09
jamlifeless: not specifically22:10
jamI think I saw you performance testing it22:10
lifelessdoes iter_random_one22:10
jamwith what 800s => 200s ?22:10
lifelessbut reloads the index on each key22:10
lifelessso its testing raw 'key a get' speed22:11
lifeless(e.g. no cache for either index)22:11
jamsure22:11
lifelessits been running for 12 hours now over the network :P22:11
jamlifeless: but if you really wanted to be mean, you should run "drop_caches()" inbetween22:11
jamlifeless: ouch...22:12
lifelessjam: network - what cache :P22:12
lifelessjam: (and I do)22:12
jamlifeless:  of course, that makes your machine pretty useless while it is running :)22:12
lifeless        for key in order:                                                                                 |from bzrlib.repository import format_registry as repo_registry22:12
lifeless            index.iter_entries([key]).next()                                                              |repo_registry.register_lazy(22:12
lifeless            if reload_index:                                                                              |    'Bazaar development format - btree-rich-root (needs bzr.dev from 1.6)\n',22:12
lifeless                index = factory(index._transport, index._name, index._size)                               |    'bzrlib.plugins.index2.repofmt',22:12
lifeless                drop_cache()                                                                              |    'RepositoryFormatPackBTreeRichRoot',22:12
jamum, some weird side-by-side pasting there22:12
lifelessyes, wrong vim copy command22:13
lifeless:)22:13
mwhudsonhmm, we need 'bzr unpack' to test btrees better :)22:15
jamlifeless: so... whose to blame for 12 hours worth of pain?22:15
lifelesswell22:15
lifeless99704 keys22:15
lifelesssay 3 IO's per key on btree for the larger index22:15
jamIs btree better/worse than graph at that point (I fully expect it to be better)22:15
lifeless0.3 seconds per IO -> 1 sec per key22:16
jamand is this what, you to Chinstrap?22:16
lifelessyes22:16
jamthat's about 1 day22:16
lifelessyes22:16
jam1.15 days22:16
lifelessI didn't think it out in advance you see :)22:16
lifelessso I'm going to stop it :)22:16
jamlifeless: hence why we should be doing speculative reading of extra pages22:17
lifelessand do 20 keys22:17
jama round-trip should never be < 64k, or something like that22:17
lifelessjam: so there are two things I'd like to see22:17
lifelessI'd like the last page to be allowed to be truncated22:17
lifelessso that a small index is, well, small22:17
jamsure22:17
jamI saw that in the backlog22:18
jamwhat you need is tail recursion, or whatever it was called :)22:18
lifelessand I'd like to read more internal nodes22:18
jamOtherwise if they are separate, you're going to get the same disk space regardless22:18
lifelessthey are laid out as they are to allow the read-more-than-one optimisation22:18
jamlifeless: you mean internal nodes up front ? yeah22:18
lifelessjam: for instance, reading 64K on a > 64K index in the first read22:19
lifelessand then any read covering internal nodes do the same22:19
lifelessbut only read 4K for leaf node requests22:19
jamI would just try to spread it out, such that if we request 16 4k disjoint pages, we don't actually try to get 16-64k pages22:20
lifelesse.g. do range(node, node+16)22:20
jammore of a "if there is some more room, grab these as well"22:20
lifelessjam: sure22:20
lifelessin fact22:20
lifelessthe single key workflow is probably best kept at 'minimise IO'22:20
lifelessbut when you have two or three keys being asked for you can see graph walking happening, so start being aggressive22:21
jamlifeless: interesting thought22:21
jamand probably quite reasonable22:21
lifelessjam: next thing I'm going to do though, is to write a in-place upgrader for these repository formats22:21
jamlifeless: not very hard, right? Just write the indexes to upload, rename into place?22:23
lifelessjam: roughly yes22:23
jamHave you ever considered packing indexes without packing the data?22:24
lifelessjam: create a new indices dir with the right contents, save the old format, remove the format marker, pivot the indices dirs, write the final format marker, remove the saved format marker22:24
lifelessjam: well, we didn't have indices that could be anything other than optimal. or do you mean one index N packs ?22:25
jamlifeless: right22:25
jamThe idea is to get the benefit of 1 index22:25
jamwithout the cost of moving the data around22:26
jamJust an idea that came up22:26
jamI haven't thought about it in-depth22:26
lifelessone index N packs would make ensuring integrity and so on quite a bit harder22:26
lifelessis citeseer working for you?22:27
jamlifeless: http://citeseer.ist.psu.edu/ is down22:28
lifelessdang, was going to point you at LSM trees22:28
lifelessand re-read it myself22:28
jamWell, there was also something about CSB+ trees that were supposed to be cache sensitive22:28
jambut that was more for in-memory DB22:29
jamlifeless: http://www.google.com/search?q=lsm+trees&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a22:29
jamFirst link is a postscript file on www.cs.umb.edu22:29
lifelesslets run some arbitrary postscript over the web22:30
lifelessyah thats it22:31
lifelessa bunch of similarities with what we do22:31
jamwell, we run arbitrary pdf all the time, right?22:36
lifeless:)22:37
jamlifeless: what key is best for Andrew Bennetts?22:39
lifelessspiv22:39
jamhe seems to have 3 registered with subkeys.pgp.net22:39
jamoh, sorry, that is michael hudson who has multiples22:39
jammwhudson: ^^^??22:39
jamAnd it seems he doesn't have any of them in *my* web of trust22:40
mwhudsonjam: ah right, i kept losing hard drives with private keys on them :(22:41
mwhudsonjam: the one on lp.net is right22:41
lifelessI was thinking of http://www.freenet.org.nz/python/embeddingpyrex/22:46
lifelessfor startup speed22:47
jamlifeless: except you still have to "import bzrlib" which is the whole cost22:47
jamnow if we could get pyrex to compile bzrlib....22:48
jamthat would be interesting22:48
lifelessjam: right, thats the point22:48
lifelessI'm pretty sure a single .so can provide > 1 modules22:48
lifelesswith a little love22:48
jamlifeless: well, you could have 'bzrlibmodule.so'22:49
jamand that would clearly be able to have "bzrlib.foo"22:49
jamI'm not 100% sure about "from bzrlib.foo.bar.baz import bing"22:49
lifelessloading is left to right22:50
lifelessso it should work22:50
jamwell, standard attributes would confuse the __import__ stuff, but if you tricked it into thinking they were modules22:51
lifelessjam: types.ModuleType22:54
lifelessjam: by 'trick' I hope you mean 'make them modules' :)22:54
mwhudsonthe fact that 'from os.path import join' works means this isn't too hard22:55
mwhudson(os not being a package, and os.path being around from before there _were_ packages)22:55
jammwhudson: it sure does make it hard to track down where to find the *code* for os.path.foo though :)22:58
mwhudsonjam: not as hard as pyrexing it all up :)22:59
jamEspecially when the function is "nt.lstat()" but the code for it is found in 'posixmodule.c'22:59
mwhudsonoh yes, that is a good trick22:59
lifelessjam: design thought23:03
lifelessjam: how does this sound: 'to convert repository instance Y into a Z, we use an InterRepositoryRepositoryFormat instance'23:04
jamto simplify all cut&paste you do each time?23:04
lifelesswell currently we do a full fetch23:04
lifelessso this is new code23:04
lifelessI'm proposing that as the design/lookup23:05
jamI thought we already had upgrade/downgrade infrastructure23:07
lifelesswe do23:07
lifelessMetaToMeta does23:07
lifelessif repo._format != desired_format:23:07
lifeless   init_new23:07
lifeless   new.fetch(repo)23:07
jamouch23:07
lifeless  pivot()23:07
lifelesswhich is fine, it works and is very generic23:08
lifelessand until now we haven't had a meta format which would benefit from special casing23:08
lifeless(except perhaps plain -> richroot). anyhow:23:08
lifelesswhat do you think of the approach.23:08
jamlifeless: well, interestingly enough, you already have:23:09
jam# TODO: conversions of Branch and Tree should be done by23:09
jam# InterXFormat lookups23:09
jamBut not a comment for Repository23:09
jamso... I'm okay with it, though it is a layer of abstraction, which I don't think will see a lot of benefit23:10
jamas we won't have tonnes of Repo<=>Repo converters that benefit23:10
lifelessits pluggable though, which is a win I think23:10
jamversus the work that has to be done anyway to make 'fetch()' work well.23:10
lifelesssure23:11
jamso, I'm fine with the idea, though I wouldn't work terribly hard to write the code just yet myself23:11
jamI like being able to have plugins provide special tools for their customizations23:11
jamit is just code to support, and maintain, and etc.23:12
jamFor 1 plugin which is going to be core RSN23:12
lifelessjam: well, I've written several before that would have benefited23:12
lifelessand I'm expecting we'll keep hacking on index2 for a while; its just going to be a code dump to get the first generation in to core23:13
jamlifeless: reasonable enough, if you've seen a need for it, it is reasonable to bring in23:13
jam<== is a big fan of plugins23:13
jamhaving written the original import code :)23:13
jamand a slew of plugins myself23:14
lifeless:)23:14
jamlifeless: so, would it be reasonable for me to strip out the per-internal-node bloom code23:15
jamI don't think we'll see much benefit there23:15
jamthough I can leave it if you want23:15
lifelessjam: I'd kind of like to see network impact of 50% blooms, that sort of thing23:16
jamok23:16
jamI'll leave it if you are still poking at it23:16
lifelessjam: so unless its in the way, I'd rather leave it - but o course make it not cost [much] when not using23:16
jamI was going to change how blooms get generated, but I can do so compatibly23:17
lifelessdon't worry about disk layout compatibility, anyone using this today can convert back :P23:17

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