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

lifelessit will make subunit-ls clearer, so if you get the time to review, assume its gone :)00:00
mwhudsonronny: have you read "xUnit test patterns"?00:00
lifelessspiv: stacked [merge] sent00:01
ronnymwhudson: no00:02
mwhudsonronny: the first 100 pages or so is well worth reading for provoking thoughts about testing00:03
ronnyhmm, added to my should read list00:03
mwhudsonit's unfortunate that you have to buy the other 700 pages too :)00:04
ronnyew00:04
edcrypt_igc: ping00:18
igcedcrypt_: pong00:22
edcrypt_igc: hi, I the one who made that bug report about views00:25
edcrypt_igc: what is the view-aware API to iterate on the WT?00:25
igcedcrypt_: there probably isn't one ...00:26
igcI tend to trap most things at the UI layer inside builtins.py ...00:26
igcso that the list of files is automagically passed to commands without needing to change their internals00:27
igcedcrypt_: there are exceptions though ...00:27
lifelessigc: shouldn't it filter at the tree?00:27
igcdiff comes to mind00:27
lifelessigc: so that plugins work00:27
igclifeless:it depends00:28
igcwhether to use a filtered view needs to be considered on a case by case basis00:28
edcrypt_igc: WorkingTree..inventory.iter_entries_by_dir() gives all files, but probaly I shouldn't be using it00:29
igcedcrypt_: so if you look at the code for cmd_diff in builtins.py, you'll see it passed apply_view flag down to the next layer00:30
igcedcrypt_: you certainly can use that API, you'll just need to post filter the results by seeing if the path falls inside the view or not00:31
igcthst's not hard - see the examples at the top of builtins.py (like internal_files_for_add say)00:31
igcs/thst/that/00:31
edcrypt_igc: ok, taking a look, thanks!00:32
igcnp00:32
igcedcrypt_: any you looking at fixing ls for me? :-)00:32
lifelessigc: in what cases is the answer 'no' so far?00:33
igclifeless: merge, log, info at least00:33
edcrypt_igc: hehe, maybe, I have just learned hwo to create a plugin!00:34
edcrypt_igc: _check_path_in_view()00:37
edcrypt_ops, diff._check_path_in_view()00:38
spivlifeless: reviewed, bb:approve00:40
lifelesswoo00:42
igcedcrypt_: might be good to make that a public function in views.py instead of a private one in diff.py.00:42
edcrypt_igc: indeed00:47
lifelessspiv: ok, thats sent.00:57
=== abadger19991 is now known as abadger1999
jelmerluke-jr, hi01:08
igcpoolie: fyi, here's my plan for today01:08
jelmerluke-jr, any chance you can comment on bug 326278?01:08
ubottuLaunchpad bug 326278 in bzr-svn "'bzr log' KeyError" [Undecided,Incomplete] https://launchpad.net/bugs/32627801:08
igc1. get usertest tweaked with some of the changes on the roadmap01:08
lifelessjelmer: ping01:09
jelmerlifeless, pongz0rz01:09
igc2. ping you and we'll update orchadas01:09
igc3. land content filtering after chatting with you01:09
* igc bbiab - food calling01:09
lifelessjelmer: could you do a pass over your subunit branches, and submit for merge where relevant01:11
jelmerlifeless, k01:12
lifelessthanks01:13
poolieigc, sounds good01:14
pooliemy laptop won't boot, i'm guessing because of bug 333073 in jaunty :/01:14
ubottuLaunchpad bug 333073 in linux "very slow boot with lvm-on-dmcrypt" [Undecided,New] https://launchpad.net/bugs/33307301:14
pooliethat gave me a bit of a setback01:14
pooliebut let's talk anyhow when you're done01:14
garyvdmHi - when I run bzr shelve - I get the following prompt:01:17
garyvdmShelve? [yNfq]01:17
garyvdmyes No f???? q????01:18
garyvdmWhere can I find more info. bzr help shelve does not say anything.01:18
poolieq is quit01:19
pooliedoes ? do anything?01:19
garyvdmno01:20
garyvdmno - ? seams to cause no which is the default action - lol01:20
pooliesrsl? :(01:20
mwhudsonf flips the defaults01:21
lifelessOdd_Bloke: is workng on this I thought01:21
garyvdmmwhudson - I jest tested that - f seems to do a "full" diff?01:22
mwhudsonoh01:23
mwhudsoni'm wrong then01:23
garyvdmok - it easy to figure out - but irritating.01:24
poolieit should definitely be able to give you help01:30
poolieigc, back in 501:31
=== bob2_ is now known as bob2
lifelessspiv: ok with that sent off I'm looking at the next round trip01:37
lifelessspiv: another regression - we're not using find_repository to do the iteration for us01:42
lifelesswe're walking up dirs manually01:42
spivlifeless: actually, I'm not sure if that ever worked...01:44
spivBut yes, it'd be good to fix that.01:44
spivAlso, coffee is good...01:44
* spiv does something about that01:44
lifelessI'm fairly sure it did at one time ;)01:44
lifelessbut I could be wrong01:44
spivMe too :)01:45
jmlnew small lp-open patch just sent to mailing list.01:51
* jml doubles as an IRC notification bot.01:52
mwhudson:)01:53
lifelessspiv: I want to delete InterPackToRemotePack02:04
poolieigc, i'm free now if you are02:09
poolielifeless: +1 (minus a bit for not being right there in the code atm)02:09
spivlifeless: so that was only doing two things02:17
spivlifeless: (IIRC).  calling the autopack RPC, and making sure _walk_to_common_revisions walks 50 revs at a time02:17
spivlifeless: the streaming push takes care of the former, I think the latter might be taken care of by the InterOtherToRemote?02:18
spivlifeless: if so, I don't see any reason to keep it either02:18
lifelessspiv: yeah02:21
lifelessspiv: thats why I want to delete it; and am doing so ;)02:21
spivOk.  +1 :)02:21
spivI'm glad to see the set of InterRepos shrinking for once :)02:21
lifelesshttp://paste.ubuntu.com/121655/02:22
lifelessI'd like to just toss that at pqm - pass land fail I'll look into it02:22
lifelessspiv: ^02:22
spivlifeless: sure, if it passes, then +102:27
spivlifeless: or rather, bb:approve :)02:27
mwhudsonjml: your blug reports footnote doesn't seem to exist02:36
jmlmwhudson: mea culpa02:39
mwhudsoni think i just made the annotate view in loggerhead twice as fast02:43
lifelessmwhudson: good02:44
lifeless:)02:44
mwhudsonby not calling annotate_iter twice!02:44
* mwhudson sighs02:44
lifelessmwhudson: its amazing how little things can make a difference :)02:46
lifelessmwhudson: I have a suggestion for you02:46
* mwhudson listens02:46
lifelessthis is for testing02:46
lifelesscreate a little delegate branch02:47
lifelesswhich logs all the calls made to it02:47
lifelessand has a repository object it can return which likewise does the same for the branches repository02:47
lifelessyou can do two things with this02:47
lifelesswhen asking 'why is X slow' you can see the api calls being made02:47
lifelessand secondly you can write a test that no more than a certain number of calls/exact calls etc are made02:48
mwhudsonhmm02:49
lifelessthe former is useful for exploring02:49
lifelessthe latter is useful for locking down a behaviour ratchet02:49
mwhudsoncertainly, something i've been doing lately is removing the layers between loggerhead and bzrlib02:51
mwhudsonand it was in the process of doing this that i found this problem02:52
lifelessspiv: I'd like to make RemoteRepository.*write_group* no-ops like knit/weave repositories02:58
spivlifeless: the _real_repo would still need to have a write group, though?03:00
lifelesswell03:00
spivlifeless: or are we avoiding enough vfs ops now?03:00
lifelessas a start point we may find points that break03:01
lifelessat the moment though it and repo.lock_write are triggering _ensure_real03:01
lifelessactually03:01
lifelesslock_write doesn't trigger _ensure real03:01
lifelessbut its a noop for pack repos03:01
* spiv nods03:03
lifelesslight weight commits will still need vfs03:04
lifelessbut bound commit shouldn't03:04
lifelesscalls 13 through 18 are RemoteRepository.start_write_group(), in the acceptance test03:05
lifelessspiv: ok, BranchFormat.network_name next I think03:18
lifelessspiv: ping03:18
lifelessbah03:18
lifelessspm: ping03:18
spmlifeless: pong03:18
lifelessspm: I think pqm is hung, can you check please?03:18
spmsure03:18
jmldid jelmer's clean-tree patch get reviewed?03:23
spmlifeless: it was wedged pretty good. should be rockin again03:27
lifelessspm: did you note the cause?03:27
spmlooked like the old email thing; but that didn't fix it. the sendmail was then hanging around as a defunct process. ie still wedged.03:28
lifelessok, I'll try the merge again03:28
spmdamn. it's rewedged itself. looks like on the original one too.03:33
igcpoolie: I'm back03:34
lifelessspm: ok, patch is bad anyhow, so I suggest just removing the request from me and killing the bzr child03:34
lifelessspm: you shouldn't ever kill the pqm parent when a test is wedged03:35
igcis it just me or does bazaar-vcs.org seem really slow these last few days?03:35
spmlifeless: yeah - that was a pebkac. :-( did the chroot kill without a dir specified. clobbered everything :-( x 303:36
lifelessspiv: we need a 'refresh your data' api for all repositories03:36
lifelessspiv: because this streaming push can work for knits, but we can't let it try :>03:36
poolieigc, hi?05:17
igchi polie05:18
igcpoolie:^05:18
igcpoolie: you ready to do this orchadas stuff?05:19
pooliehey05:19
pooliei am05:19
pooliei hit an ubuntu bug 332270 that stopped my laptop booting and messed up my day a bit05:19
ubottuUbuntu bug 332270 in udev "udev repeatedly generates "change" events for the same block device(s)" [High,Triaged] https://launchpad.net/bugs/33227005:19
igcpoolie: yum05:20
igcpoolie: let's start by having a quick call maybe?05:20
pooliethat's why it's called an alpha05:20
pooliegood idea05:20
pooliei'll call your home?05:20
igcsure05:21
jamlifeless: I have some theoretical reasons why multiparent with xdelta is smaller than gc, care to have a call about it tomorrow?05:22
pooliehello jam05:22
jamhi poolie05:22
jamjust heading off to bed after perusing the ~200 emails that came in over the weekend...05:23
lifelessjam: I'd be delighted05:23
jamlifeless: k, ping me when you wake up05:23
jamI'm going to sleep now05:23
lifelessjam: ciao05:35
lifelessjam: I'd expect the theoretical reason is deltas composition rather than recipes05:36
lifelessbut see recipes for why gc is fast at extraction05:36
macoum, bzr just said "bzr: ERROR: exceptions.AttributeError: children" and aborted the commit i told it to do. how do i make it successfully commit?05:37
lifelessmaco: what bzr version?05:38
maco1.1205:39
lifelessmaco: uhm05:42
lifelessmaco: is there more in ~/.bzr.log ?05:43
macolifeless: it spit out a backtrace05:52
macoi'll pastebin it05:52
maco_kernel panicked05:57
=== maco_ is now known as maco
macohttp://paste.ubuntu.com/121690/06:02
macolifeless: ^06:02
lifelessmaco: can you pastebin the output from 'bzr st' please06:09
lifeless(parent appears not to be a directory)06:09
macojust "added: .kde@"06:10
lifelessso .kde is a symlink06:11
macoi just made ~/config-backup, cd'd there, and did "bzr init" then tried to do "bzr add ~/.kde/share" and some other directories, but it didn't like that, so i made the symlink06:11
macoyes06:11
lifelessok06:11
lifelessso we'll make a bug for the error, because it shouldn't be happening; but if you're trying to backup your .kde directory, a symlink to it won't do that - bzr will version the symlink06:12
macoi didnt give it ~/.kde to version though06:12
edcrypt_igc: merge request sent (make ls aware of views)06:12
macoi gave it ~/.kde/share and ~/.kde/Autostart and ~/.kde/env06:12
lifelessyou need to either make ~/.kde a symlink to your bzr tree, or actually bzr init in ~/.kde06:12
lifelessmaco: you did 'ln -s ~/.kde' inside config-backup didn't you?06:13
macoyes06:13
igcedcrypt_: thanks!06:13
macobut then i did bzr add on .kde/share, not on all of .kde06:13
edcrypt_igc: np06:14
lifelessmaco: right, so I think I know what the bug is06:14
lifelessmaco: however fixing it won't do what you want, so give me a second to record the issue06:14
macowas trying to get around it giving "NotBranchError: Not a branch: "/home/maco/.kde/share/"." when i did "bzr add ~/.kde/share"06:14
macook06:14
poolieigc, ok, i got a report with just one tool running06:15
macois it not possible to give an absolute path to bzr add?06:15
poolienow i'll try it with some more though that will be slower06:15
lifelessmaco: no, its not possible06:15
lifelessmaco: bzr requires that all the files it versions are underneath a .bzr directory containing the 'tree' to be versioned06:16
lifelessmaco: roughly, thats where you do 'bzr init'06:16
lifelessmaco: so if you want to version ~/.kde/share, you must have done 'bzr init' in one of: ~/.kde/share, or ~/.kde, or ~06:16
lifelessmaco: I've filed a bug for the specific error you're getting, but the actual fault is in 'bzr add' :(06:18
macolifeless: ok thanks. a friend suggested avoiding putting it in ~/.kde in case of the next time i blow away ~.kde but i'll just have to remember to keep a backup of the .bzr that's in there06:19
lifelessmaco: put it in ~/.kde like so:06:19
lifelessrm -rf ~/config-backup; cd ~/.kde; bzr init; bzr add [things]; bzr commit -m "start versioning ~/.kde"; bzr push ~/config-backup06:20
igcpoolie: cool06:20
lifelessmaco: now config-backup is a backup06:20
macoah ok good idea. thanks!06:20
lifelessmy pleasure06:21
pooliehttp://benchmark.bazaar-vcs.org/usertest/summary.html06:30
macoif i do "bzr remove" it doesnt remove the file, right? just stops doing version control on it?06:46
poolieif you do rm --keep it will do that06:46
macoor well...how do i tell it to not track anything in share/apps/kmail/*/*? bzr ignore? and will that get rid of its past control of those files or not?06:49
poolieif you have already added them, and you want to just ignore them in future you need to both remove --keep and also ignore them06:49
poolieigc, still here?06:51
macook06:53
macothanks06:53
igcpoolie: yep06:53
pooliei'd like to make something that will feed usertest output into rrd06:54
poolieso we have an over-time plot of results06:54
macoer, was i supposed to ignore or remove first? bzr diff still shows stuff from those files06:54
lifelessmaco: bzr ignore ./share/apps/kmail/06:54
pooliei'd probably start with getting the total scenario time for each tool06:54
poolieand recording that each time we execute06:54
lifelessmaco: ignore and remove06:54
poolieso firstly ,is this redundant with something you've done06:57
macook thanks06:57
igcpoolie: no, I'm yet to produce rrd friendly output06:57
pooliebearing in mind it has to run on a dapper machine with no added software06:57
poolieand secondly, what should i start from?06:57
poolieoh06:57
poolieactually for the overall time, now that we're running each test separately, it's obviously easy06:58
poolieto do it from the driver script06:58
pooliei'll do that first then see how we go06:58
igcpoolie: ok06:58
igcpoolie: btw, new usertest just pushed with Description column added to the html report06:58
igcpoolie: that will reduce the # of times I need to explain what each task/action does :-)06:59
pooliescalability :)06:59
igcrev 151 also fixes the colouring when multiple projects are given in the one html report07:00
igci.e. colouring is per project, not just against the first column :-(07:00
=== chx is now known as chx_sleeping
=== picturesque is now known as domas
* igc dinner09:10
Odd_Blokelifeless: I have a branch to fix the prompt up.  I'll send it in now (as the branch it depends on has been merged now).09:44
ronnyyo10:52
Peng_lifeless: FWIW, I always run latest bzr.dev, and the streaming push work hasn't broken anything for me. I don't use stacking though.11:01
spivPeng_: that's good to know.  Does that include using bzr.dev on the server?11:18
Peng_spiv: Yes.11:34
Peng_Except for once half an hour ago, where the revisions on the client and server were incompatible, so I had to do one push over sftp.11:35
lifelessPeng_: thanks12:05
lifelessPeng_: is it faster?12:05
Peng_lifeless: Sorry, but I don't really pay attention. It takes more than 1 second, so I always do something else while it runs.12:06
lifelessPeng_: fair enough12:06
Peng_I always run it through "time", and yet I never read the results. :P12:06
lifelessLOL12:06
jelmermoin lifeless, Peng12:16
ronnylifeless: are there any plans to support custom objects in the history store at one point?12:19
Peng_jelmer: Good morning.12:19
lifelessronny: no; as we discussed before I think we'd need to see more examples of custom things before being able to design a good reliable & sufficient interface12:20
lifelessronny: so its not 'no, never' its 'no, no _plans_ at the moment, open to things as we see people doing it in plugins'12:20
ronnyk12:23
jelmerlifeless, what happened to the annotated code stuff you were discussing with James in London during the summer?12:23
jelmercan't remember the exact name you were using12:23
ronnythe main use-cases *i* see is signed tags, code-review, testresults12:28
james_wjelmer: "marks"?12:30
jelmerjames_w, yeah, that's it12:31
james_wI don't know if lifeless has done any work on it, I certainly haven't12:32
james_wI would love to have it though12:32
james_wthe thing that I'm not sure about is how to store the marks12:33
james_w"file-id hunk-start hunk-end sha-of-hunk" might work I guess12:33
lifelessjelmer: views12:43
lifelessjelmer: erm12:43
lifelessviews/filters/tags something like that12:43
lifelessmarks maybe?12:43
lifelessjames_w: yeh I started sketching htat12:43
ronnyhmm12:43
lifelesshaven't gone far; performance is a major issue first12:43
lifelessronny: so for all of those, I'd definitely help you get support in the core as hooks, so that plugins can do them12:45
lifelessand once we see what plugins *do* with those hooks look at the design for core inclusion of extensible things12:45
ronnylifeless: atm im puting together a nosetest plugin for subunit12:50
james_wlifeless: if you've committed anything I'd love to take a look12:51
james_wlifeless: I understand that it's not your first priority12:51
ronnylifeless: subunit could use a setup.py12:55
lifelessronny: yeh, though it builds native C and shell and stuff; setup.py isn't really a good fit there12:55
jelmerscons isn't either though >-)12:55
ronnylifeless: at least for the python part12:56
lifelessjelmer: scons was an awful nightmare that I regret12:56
lifelessronny: certainly thats doable yes12:56
lifelessI think there is a branch12:56
lifelessronny: http://www.somethingaboutorange.com/mrl/projects/nose/doc/plugin_interface.html#prepareTestResult12:56
lifelessprepareTestResult(self, result)12:56
lifelessseems to be the bit12:56
lifelesslp:~lifeless/subunit/filter has the latest subunit branch I was tweaking12:57
ronnywould you mind if i would put nosetest support directly into subunit ? its basically just replacing the reporter12:58
=== vednis is now known as mars
=== mvo_ is now known as mvo
lifelessronny: I'm not sure what you're asking13:15
lifelessronny: but note bug 33277013:15
ubottuLaunchpad bug 332770 in subunit "provide a nose extension to output subunit" [Undecided,New] https://launchpad.net/bugs/33277013:15
ronnylifeless: thats what i do atm13:16
lifelesswhich is to say, I'd like it if installing subunit added an option to nose [if nose is installed]13:16
lifelessI don't want subunit to depend on nose though13:16
lifelessI consider it a lower level helper13:16
ronnyok, so separate repo it is13:16
lifelessronny: hm? Not sure I follow, however I'm tired :)13:17
lifelessso - chat with you in ~ 7-8 hours13:17
ronnyk13:17
ronnycu later13:17
=== montywi|zzz is now known as montywi
=== mvo__ is now known as mvo
=== serg_ is now known as serg
=== beaumonta is now known as abeaumont
=== chx_sleeping is now known as chx
=== montywi is now known as montywi|meeting
jammorning vila, I hope you had a good weekend16:10
vilajam: hehe, hi ! Yes, pretty good, didn't touch a mouse nor a keyboard (didn't happen for a while :)16:11
vilajam: how was yours ?16:11
jamjelmer: I'm getting timeouts while trying to access a signature file on your dulwich branch16:11
jamvila: pretty good16:11
jamsat was a kids birthday party16:12
jamso it was fun to see Kareem playing with the neighbor kids16:12
jamI didn't get back to a comp until late Sunday night as well16:12
jamjelmer: lp also seems to be having problems with that branch16:12
jelmerjam: us2 seems to be under heavy load at the moment, one of the admins is looking into it16:12
jamjelmer: k. It seems funny since everything works until the .six16:13
jamvila: still looking into the mysql stuff?16:16
vilajam: on my right screen, yes16:16
vilajam: trying to find a better ftp test server on the left one16:17
vilajam: I was so close :-/ And had problems *again* with FtpStatResult and the test suite being too demanding for ftp :-/16:17
Peng_Hmm, it took 438.396 seconds to pull one revision from subvertpy. bzr-svn is still going. Did my connection hiccup?16:17
vilajam: the idea was to spend a couple of hours only on it and then address the fact that we can't test under 2.6 anymore until we avoid using medusa there which requires another one16:18
vilajam: I hate ftp16:19
vila<cough> that was rude, ftp doen't like me that much16:19
jelmerPeng_, server is having issues16:21
jamvila: Would it be easier to just get medusa working with 2.6 ?16:21
Peng_Oh. Oh! I did read backlog, just not enough to understand it. Alright. :)16:21
vilajam: no, far harder as the bug is deep down inside asyncore/asynchat or something (I suspect the problem is roughly that somewhere in an iterator str() objects are special-cased and unicode isn't, ugly business), so the idea was to just stop using medusa for >= 2.6 and find another ftp test server16:23
vilajam: I found one that doesn't require running as root, only to find that it returns an empty list when asked to list a non-existing directory and has no problem giving the *size* of a directory16:24
jamvila: why would we be using Unicode anywhere...16:24
jamat the FTP level, everything should be 8-bit strings, (I think)16:24
vilautf-8 (sorry)16:25
jamvila: we wouldn't be special casing a utf-8 string16:25
jamas it is just another 8-bit string16:25
vilabut at some point giving utf-8 means handling unicode (from memory)16:25
vilajam: I don't remember exactly the problem, certainly it was on server side, and ... well there is little we can do there :(16:25
jamvila: I don't know the failures, but everything *under* FTPTransport should be 8-bit strings. I suppose if we have a unicode file on disk there may be other issues16:26
jamvila: does everything fail?16:26
jamOr is it just a couple tests that we could say "py2.6 + unicode files + medusa is KnownFailure"16:26
jamvila: I certainly would rather you spending your time on other things :)16:26
vilaunder 2.6 with medusa, failures are about utf-8 encoded file names IIRC16:27
jamvila: exactly, so wrap tests that do exactly that with KnownFailure and get on with your life :)16:27
vilajam: I know :-/ I hoped to be done with it far quicker and then... well each bug looks like the solution was close :)16:27
eferraiuoloCan I expect the Mac OS X 10.5 Installer for bzr 1.12 soon?16:28
vilahmm, not sure we can peak under the cover to realize we are under 2.6 + medusa + whatever, the idea was to shorcut at get_transport_permutations16:28
vilaget_test_permutations I meant16:29
Peng_eferraiuolo: "tonight (European time)" according to a post on the mailing list :)16:29
eferraiuoloPeng_: thanks for the info :-)16:30
vilajam: to be precise, I have a test server that pass the test suite, with a relaxing constraints patch against bzr.dev, so that's not *that* bad :-)16:30
jamjelmer: I have a trivial patch to 'dulwich' which should help the performance of 'apply_delta'. Care to test it out?16:31
jamhttp://paste.ubuntu.com/121930/16:31
vilajam: on the bbc front all the remaining failures will require a bit of work and I wanted to start with a bzr.dev merge which raise to many conflicts to be solved quickly, so *that* was pushed out of the parrallel activities which are now back to the two mentioned above :)16:32
jamvila: sure. I'm also submitting the "trailing whitespace" fix16:32
jelmerjam, Is that against the current trunk? James also submitted a performance improvement yesterday16:32
jamwhich is going to be bad for merging into bbc16:32
jamjelmer: versus 15416:32
jamit just changes to use a list and append16:32
jamand then ''.join() at the end16:32
jelmerjam, ah, cool16:33
jelmerjam, can you "bzr send" or is it easier if I just pick up from pastebin?16:33
jamthat should avoid O(N^2) performance16:33
jamI haven't committed, but I can and I'll send it16:33
vilajam: by the way, if *you* are able to merge bzr.dev cleanly in bbc, just tell me :-)16:33
james_wnice16:33
james_wthere are probably a couple more places in that file where that approach could be used16:34
jelmerjam: Please do :-)16:34
jelmerjam, vila: Also, if you can have a look at my InterBranch patch that would be really helpful for bzr-git..16:34
* jelmer is still wondering what the magic trick is to get a patch reviewed16:35
jamjelmer: sent16:35
jelmerjam: Thanks :-)16:35
jamvila: I'm sure I'm not16:35
jamI changed some code in fetch16:35
jamwhich Robert changed with the network streaming stuff16:36
arshadhi channel16:36
jamI added a progress bar16:36
arshadwhats bazaar all about  ??16:36
vilajam: yeah, so at least you know *one* side of the conflict as opposed to None :-)16:36
jamjelmer: I think it is beer. And submitting patches that directly effect other people. The problem with InterBranch is that I haven't worked out whether the added complexity is worth the benefit for non-core code. I'll try to give it a look16:37
jamarshad: freedom :)16:37
arshad<jam>ok . . . . . .   but freedom for what ??16:38
james_wjelmer: I assume that is the cause of "AttributeError: 'module' object has no attribute 'InterBranch'" with a newer bzr-git?16:38
jamarshad: That was a trivial response. To give you a better one, how much do you *know* so I don't repeat myself16:38
jambzr is a version control system16:38
jamdo you need to know the diff from others16:39
jamwhat a vcs *is*?16:39
jametc16:39
arshadhope u wont fire me for that16:40
jamarshad: no firing, just trying to understand what info you really want16:41
jamvila: yeah, robert refactored a lot of stuff that bbc had hacked to get working :(16:42
jamSo I need to actually understand the new stream code16:42
jambefore we can really adapt it16:42
jamvila: like understanding how to get chk records as part of the new stream16:42
vilajam: The good thing is that that should address at least *one* failure :-)16:42
vilajam: ouch, not an easy bird then :-/16:43
* vila throws some stones at jam to help him :)16:43
arshadcan VCS b made as a career16:43
arshad??16:43
jelmerjames_w: yep16:43
jelmer.16:43
Peng_Doesn't CPython optimize += on strings with only one reference, making it faster than ''.join()ing a list?16:43
james_wjelmer: am I better merging that, or going back in time a little bit on bzr-git?16:44
vilaarshad: vcs == version control system, try reading http://bazaar-vcs.org a bit16:44
vilaarshad: you should get many answers there16:44
arshadwhere??16:44
jamvila: so one problem I have with your "knownFailure" change to "autopack_rpc_is_used" test. Is that you don't test anything, in case we accidentaly *fix* that.16:45
jelmerjam: It's the only way to make "bzr pull" work on remote git repositories since we can't walk the graph of remote git repositories to determine the revno16:45
jelmerjames_w, Better off merging InterBranch, without it you can't pull from remote git branches16:45
vilajam: that was quite the only possible route at that time as we were testing that the hpss autopack call was in hpss_calls16:46
vilajam: and that required some InterRepo accepting chks which wasn't the right way16:47
jamvila: not really16:47
jamyou could have put the knownFailure later16:47
jamaround the actual "x in y" test16:47
jamanyway, it is fine.16:47
jamFor right now, I'm pulling out your change, because it conflicts with the new streaming RPCs16:47
jamand I don't know how BBC will interact with that yet16:47
james_wjelmer: will InterBranch allow things like "missing" against the remote branch? I guess they may have to become a fetch to local then missing operation?16:48
vilajam: pull out ! pull out ! sounds perfectly right now that the test has changed16:49
jamvila: dammit.... we have a serious problem17:00
jamthe generic fetching code doesn't really seem to support converting on-the fly17:00
jamat least not easily17:00
jamsince it expects to be getting a stream17:01
jamthat it can just insert on the other side17:01
jamand with chk17:01
jamit has to convert the repos17:01
jamwell, convert the inventories.17:01
jelmerjames_w: It mainly allows for custom implementations of branch-to-branch operations, such as pull17:01
jelmerjames_w: right now bzr-git only overriden update_revisions(), which is the main worker used by pull17:01
jelmerjames_w, but in the end, we would indeed end up with a search_missing_revisions() and that would most likely indeed to a fetch :-/17:02
jelmerjames_w, s/to a/do a/17:02
james_wyeah, that's a pain17:03
vilajam: ouch :-/17:03
james_wjelmer: would it be at all possible to extend git's server to help with this?17:03
james_wnot in terms of would they do it, but in terms of whether git could provide the sort of information that is needed?17:04
jelmerjames_w, it would, though I'm not sure how likely such changes would be accepted upstream17:04
james_wI guess having it speak the bzr remote protocol would work :-)17:04
jelmerjames_w: :-)17:04
jelmerjames_w, Actually, that has crossed my mind.. the git server John has been working on can provide a "bzr" capability, just like "bzr svn-serve" does17:05
james_wheh17:05
james_wjelmer: also, would "bzr format-git-patch" make sense?17:05
james_wand something to then pull then back in? maybe "bzr patch" is enough17:06
jelmerjames_w, you mean "bzr send --format=git" ? >-) Yes, I think so17:06
james_wyeah, that too17:06
james_w:-)17:06
Jc2kjelmer: i thought about custom extensions to git-serve too :)17:07
james_wmaking "format-patch" and alias of "send" might be a good idea17:07
jamvila: so StreamSink *is* meant to handle some of that, but it only really is defined as handling the case where 1 fulltext == 1 inventory17:07
jamwhich is no longer true for bbc17:07
jamso I have to figure out how to work around it17:07
jamthe stream code seems to think that just "get_bytes_as('fulltext')" would be enough17:08
jamand, of course, lifeless and spiv are both sleeping right now17:08
jamI may have to punt... :(17:08
jamuntil I can talk to them and see what they were thinking of as a solution for this17:09
Ngis bzr 1.12's "st" supposed to explode on me?17:10
jelmerNg, you may want to update your copy of bzr-loom17:10
vilaNg: let me guess: it doesn't like 'verbose' and you have installed bzr-loom ? Grr, jelmer is too fast :)17:10
Ngcorrect :)17:11
vilajam: punting sounds the most reasonable thing to do, is StreamSink._extract_and_insert_inventories where the problematic assumption is being made ?17:14
jamvila: that an inventory is contained within a string17:15
jelmerjames_w, yeah, I agree17:15
jamthe idea is that you can do "read_inventory_from_string()" using the source serializer17:15
jamthe problem is that for chk repos17:15
jamyou can't just have the little bits you need17:15
jamyou have to have all the chk pages17:15
jamfor that inventory17:16
jamin order to cast up to an Inventory object17:16
jamthat can then be serialized back down into whatever format the target requires17:16
jamvila: does that make sense?17:16
vilajam: can't we just transmit the delta and build from that ? Argh, yes, not all formats can build from a delta :-/17:16
jamvila: so the issue is that "CHKRepo.get_stream()" would want to at best just send the individual pages that changde17:17
jamchanged17:17
jambut the target repo doesn't have *any* pages17:17
jamso it wouldn't know how to interpret them17:17
jamso CHKRepo.get_stream() sort of needs to do the conversion on *its* end17:17
vilajam: so either the target is chk and we send changed pages (>-/) or better the delta or the target is not and... pfff17:18
jamThe BBC logic just did "for inv in self.source_repo.iter_inventories(revs)"17:18
jamvila: right, so I can easily figure out what to do when source_format == target_format17:19
jamHowever, when source_supports_chks != target.supports_chks17:19
jamI'm a bit stymied17:19
vilaI can understand that :-/17:19
jamThe code is written such that the *target* does the conversions17:19
jamBut a Pack-0.92 repository isn't going to know what to do with a chk page17:19
jamSo I think we need a get_stream() that can tell the target what format it needs17:20
jamsorry, tell the *source*17:20
jamhmm.. maybe I can cheat and try to do that17:20
jamI just worry that I'm breaking the *spirit* of lifeless & spiv's work17:20
vilajam: better talk with them then17:21
jamthough I know they wanted to make sure that the streaming code worked with bbc17:21
jamas part of the "if it doesn't, then we haven't done the right thing"17:21
vilathere is already some XXX in remote.py17:21
vilaso may be we should just don't try to merge yet (and will regret it later :-)17:22
jamvila: well, the other 3 conflicts were easy to resolve... :)17:22
jamand if we don't merge revno 4032, when we merge 4033 we're going to have a real pain (it is the whitespace cleanup patch)17:23
vilajam: hmmm, can you resolve the last one with a hammer maybe ?17:23
jamit is easy enough to do if you merge just before17:23
jambecause then you know you can revert everything17:23
jamand do your own whitespace cleanup17:23
jamvila: yeah, I can always put big XXX and say that robert and andrew need to fix this17:24
jam:)17:24
vilajam: if we end up with test_autopack_or_streaming_rpc_is_used_when_using_hpss failing, well that will make 5 failures instead of 4, not a big deal17:24
jamvila :)17:24
vilajam: sounds like a good idea, at least they get an almost working bbc17:24
vilajam: and they may already know that can't work right now17:25
vilajam: and they may already know that bbc can't work right now17:25
jamvila: I'll also note that "supports_chk" isn't a sufficient test. As if you have different CHK repos with a different paging structure (different hash, etc)17:26
jamthen the target repo still doesn't understand the source repository17:26
jampages17:26
jam(layered on *top* of the pages is a possible delta format, which could differ but still be understood by both formats)17:26
jamlike gc+chk255 should be able to understand the wire-stream of a chk255 repo17:27
jambut chk16 != chk25517:27
jamme == :(17:27
vilajam: yup, and a delta format may be easier to serialize/deserialize for *future* formats too17:27
jamvila: I think we are talking different things17:28
jamlogical inventory diff17:28
jamversus byte-wise diff of chk page17:28
jamI think defining a "get_stream()" that can return serialized bytes of a logical inventory diff may be the way to go17:29
jamthough possibly slower than a pure chk => chk could be17:29
vilajam: sorry, I went too fast, but you were already saying the byte-wise diff of chk pages was having problems, so going with a logical inv dif... yes, what you said :)17:29
vilajam: I'm not sure you can assume that two repos have the needed pages without checking first (and it's true today, I'll be more comfortable if that wasn't required)17:30
vilajam: I'm not sure you can assume that two repos have the needed pages without checking first (and *if* it's true today, I'll be more comfortable if that wasn't required)17:30
jamof course, I don't want to have to write a logical diff format + serialized form just to get bbc working17:31
jamvila: chk pages are the same problem we have today, so I'm not specifically worried17:31
jamwe assume that if you have the inventory at revision X, then you don't need to transmit it17:31
jamin the same way, you don't need to transmit the chk pages for X17:31
jamthe issue is that if both sides have different chk serializers17:32
jamthe pages for Y don't mean anything to the other side17:32
vilaI think that defining new serialized formats shouldn't be harder than defining a % format17:32
vilaIt *is* today but it shouldn't17:32
jamvila: anytime you work on bytes-on-the-wire or bytes-on-disk it is hard17:33
jambecause you need a whole lot of direct tests17:33
vilajam: exactly17:33
jamto make sure that bzr-X.Y can talk to bzr-X.Z17:33
jamI don't see that going away17:33
vilaI worked in that direction in the transportstats plugin (not the interoperability part, but the easy defined formats)17:34
jamargh....17:37
vilajam: but the gap to go there is still rather large :-/17:37
jamI thought I had a decent workaround17:37
jamby changing the source to do the reserialization and hand it back17:37
jambut it seems the Sink always uses the source-serializer to decode the fulltext bytes17:38
jam(which sort of makes sense, but means I don't have a way to do this yet)17:38
* vila dinner17:40
jamhmm... it seems that chk_serializer's inherit from the XML serializers (perhaps wrongly, but they do)17:41
jamwhich means an ugly-ugly hack is to actually write out a xml5 format inventory to the record stream17:41
vilajam: will that make it less ugly to use composition instead of inheritance (ignoring it doing that) so that you can provide the right xml serializer ?17:45
jamvila: so the ugly hack is that we will read in the CHK inventory, bring it up all the way to a full Inventory object in memory17:46
jamand then convert it to some-semi-random not really used XML representation17:46
jamand write those bytes out on the wire17:46
jamI think I can make it work17:47
jambut it certainly isn't what I would consider the "correct" method17:47
jamOne other possibility, is that get_stream() from a CHK repo17:47
vilajam: At least you'll have some meat to talk with lifeless and spiv :)17:47
jamcould return *all* the pages17:47
jamwhich would mean the target would have enough to work with to do it on its end17:48
jambut it would have to transmit and buffer all of those pages somewhere17:48
jamuntil it got to the inv records17:48
jamand new what to do with them.17:48
vilajam: returning all the pages sounds wrong especially considering that you'll certainly ends up transmitting some of them multiple times17:48
jamvila: you can just transmit the set()17:48
jamfor revisions 10..30 send all referenced chk pages17:49
jelmerhmm17:49
vilajam: sounds better17:49
jamjelmer: ?17:49
jelmerjam, Trying to figure out what I'm doing wrong benchmarking OOo with bbc and bzr.dev17:49
jamvila: yeah, I'm still going to let robert and andrew worry about how to semi-optimize transfering between formats17:49
jelmerI'm seeing a 28x performance gain with bbc17:50
jelmerwhich seems a little excessive ;-)17:50
jamjelmer: not really17:51
jamit is an O(N^2) versus O(N) sort of change17:51
jamI don't know *what* you are benchmarking17:51
jelmerjam, import from OOo-svn into bzr17:51
jamjelmer: oh sorry, it is a log(N) versus N change17:51
jamjelmer: so still possible17:51
jamwith bzr.dev17:52
jelmerbzr.dev gives one revision every 6 or 7 seconds, bbc close to 4 per second17:52
jamwe have to generate an inventory which contains a line for *every* file17:52
jamwith bbc17:52
jamwe only have to update the few pages based on the actual change17:52
jamO(tree) operation versus O(changes)17:52
jamjelmer: also the bbc pages aren't delta compressed (yet), which means they are also faster to read, etc.17:53
jamso *faster* but not *smaller* to store17:53
jamjelmer: so my initial feeling is that you aren't doing anything wrong17:53
jamas that is really what bbc is *about(*17:53
jamI would actually expect the difference to get *more* pronounced as time goes on17:54
jamas the larger OOo gets, the size(changes) stays relatively constant for most projects17:54
jelmerright17:55
jamjelmer: well, at least if you have an optimized Inventory._make_delta() for bzr-svn17:55
jelmerjam, I do17:55
jelmerjam: Still surprised it matters this much though17:55
jelmerjam, Anyhow, I'm not complaining ;-)17:55
jelmerjam, bbc rocks \o/17:56
=== phinze_ is now known as phinze
jamjelmer: if you see igc around, I'm sure he'd be interested to hear it17:57
jamIt seems that OOo is looking again at possibly switching to a DVCS17:57
jelmerjam, This was actually why I was looking into it17:57
jelmerjam: They were seeing slow imports with bzr.dev17:57
jamjelmer: yeah, when we imported in the past, it was... 2 weeks to a month? something like that17:58
jamAlso, I wouldn't be surprised if the generic converter is actually *slower* in bzr.dev than it used to be17:58
jamas it was updated in preparation for bb17:58
jambbc17:58
jamAnd I believe Ian was looking at fast-import code in the last couple of days17:59
jamas it had also done some internal hackery for performance that may not be as relevant now17:59
jelmerbased on what I'm seeing now with bzr-svn (4 revs / second) I should be able to import OOo in 20 hours18:00
jamjelmer: that's a good number18:01
jamjelmer: is that streaming from their repository? Or do you have an svn dump locally?18:01
jelmerI have a local dump18:01
jelmerThat's mainly to avoid hammering their server too much though18:02
jelmeras the process is mainly CPU-bound18:02
jelmerjam: bzr-svn basically does one "svn log -v" followed by "svn up -rX-1:X" for each revision18:06
jelmerso while the extra roundtrip-time should have some impact, it shouldn't be significant18:07
jamjelmer: well, bandwidth and latency18:07
jamand as you say18:07
jamif you try multiple times18:07
jamyou only have to have dumped once :)18:08
jamat 4 revs/sec18:08
jamlatency becomes an issue18:08
jam250ms18:08
jama latency of 100ms and 2 round trips would cut your conversion speed in half18:08
jamcertainly didn't matter for bzr.dev at 7s/rev18:08
jelmerjam: Latency to launchpad is 10ms here, not sure how much it is to the ooo svn server18:08
jamvila: ok, I've hacked it enough that it seems to be working18:37
jamthe RPC tests still fail18:38
jamthough I think we could fix that by allowing chks to be included in the InterPackToRemotePack tests18:38
* ToyKeeper finds it a little odd that two opposite-sounding options are required to produce the desired output... bzr log --verbose --short18:47
ronnyanyone knows when lifeless will appear?19:08
mthaddonanyone know what's up with http://benchmark.bazaar-vcs.org/usertest/usertest.log ?19:12
jamronny: he usually shows up in about 2 hours19:12
jamthough he almost never actually completely logs off irc19:12
jamso I'm not sure if something changed19:12
jammthaddon: what is the problem?19:13
mthaddonjam: it seems to be debug output rather than the expected output19:13
ronnyi hacked up a inital nosetest plugin for subunit19:13
mthaddonjam: either that or the format has changed radically (it's used to generating performance graphs, so I'd need to alter my parser if the format's changed)19:14
jammthaddon: poolie or igc would be the ones to ask19:18
jamIf you want, I'll try to mention it when I talk to them later19:18
jammthaddon: best guess is that someone forgot a flag when the updated the benchmarks being run19:18
mthaddoncool, thx - I'll send them an email as well19:18
* jelmer makes a note to buy John beer at the next bzr sprint19:45
jelmerjam: Thanks for the reviews, it's much appreciated!19:46
glade88hello. is there a way to make bzr use a network proxy setting?20:37
mwhudsondoes nicolas allen irc?20:57
mwhudsonnicholas, sorry20:57
lifeless_mwhudson: I think so21:08
=== lifeless_ is now known as lifeless
pooliejam, hi21:22
Peng_Do http connections time out...ever?21:22
jammorning poolie21:22
pooliePeng_: probably, but i would say not as fast as they should21:23
pooliethey should timeout and retry21:23
pooliesince they're all idempotent21:23
pooliejam, want to talk?21:24
jamhey poolie, chatting with robert right now21:25
poolieok21:25
pooliei'll be here all day, ping me if you want a 1:121:26
james_whi poolie21:27
pooliehello21:27
mwhudsonPeng_: we occasionally had http connections hang for ridiculous amounts of time in the branch puller21:28
pooliejam, btw not sure if you saw but it looks like rockstar will go to the mysql conf21:29
Peng_mwhudson: How long?21:30
mwhudsonPeng_: days, iirc21:30
Peng_Eh. I'm at 12.5 hours so far. That sounds bad.21:30
Peng_Oh well, I have nothing better to do. :)21:31
mwhudsonwell21:32
mwhudsonkilling and starting again will probably work...21:33
Peng_Sure, but how would that be fun?21:34
=== thumper_laptop is now known as thumper
mwhudsoni'm not going to try to guess what you find fun :)21:35
* mwhudson watches pydoctor trunk process bzrlib21:38
mwhudsongawd docutils is SO SLOW21:39
=== montywi|meeting is now known as monty
lifelessjam: let me know if you want to continue the compression chat [just skype me]22:23
ronnylifeless: got an initial nose plugin for subunit wired up, currently it imports the reporter22:24
ronnylifeless: how about a convention for giving stream output/log lines after the trace?22:25
mwhudsonbeuno: hi22:26
lifelessronny: How would that map into pyunit [let alone junit etc]22:26
beunomwhudson, hiya22:26
mwhudsonbeuno: so the masses are complaining about https://bugs.edge.launchpad.net/loggerhead/+bug/25395022:27
ubottuUbuntu bug 253950 in loggerhead "Changes view slow to render with large initial import" [High,Triaged]22:27
ronnylifeless: ignore unless known otherwhise22:27
lifelessronny: no, I mean *where* would that be exposed22:27
ronnynosetest tracks things like stdin/stderr (and its nice for additional output)22:28
lifelessronny: you have a RemoteTestCase which calls result.addFailure(self, RemoteError(self.blah))22:28
mwhudsonbeuno: a simple fix is to truncate the list of added/modified/... files when the list gets more than a certain length22:28
lifelessronny: ah22:28
lifelessso; divide and conquer22:28
beunomwhudson, sure. Although, to be fair, doing it with ajax should be pretty quick as well.22:28
mwhudsonbeuno: yeah, i guess22:28
ronnycurrently my initial wire up doesnt handle that tho22:28
mwhudsonmaybe i should just try that quickly22:29
lifelessthere are two use cases here - there is 'get nose discovered tests run with output to subunit', and there is 'accept a subunit stream for display with the nose infrastructure'22:29
beunomwhudson, and we could potentially avoid getting that information at all unless needed, gaining some performance?22:29
mwhudsondoing it nicely will require some infrastructure hacking i guess22:30
ronnylifeless: i see 2 possible solutions - mangle it into the trace output, or have a new event22:30
lifelessIn terms of the former, just putting it in the comment area in the result is fine [though if people should be seeing it real time (e.g. a debugger prompt), put it in the stream in realtime.22:30
mwhudsonand some nice gifs22:30
beunomwhudson, we have most of that in lazr-js  ;)22:30
mwhudsoni should look at lazr-js i guess!22:30
lifelessfor the latter, I don't think you need to accept any random stream into nose so much as nose generated ones, so as long as you use the same approach for in as for out it should work nicely22:31
lifelessronny: yes, I see the same two things; I'm cautious about new events though22:31
mwhudsonargh22:31
mwhudsonwhen will bzr info lp:lazr-js not say "format: unnamed" ?22:31
lifelessronny: particularly things that are tricky to map into python space - like jml's testtools, I want to see what multiple projects are doing before committing to a design22:32
lifelessmwhudson:22:33
lifelessRepository branch (format: pack-0.92)22:33
lifelessI bet its info not doing the right thing with hpss branches; perhaps filing a bug would help.22:33
ronnylifeless: got a link to jml's testtools?22:34
lifelesshttps://edge.launchpad.net/testtools22:35
mwhudsonlifeless: would seem to be https://bugs.edge.launchpad.net/bzr/+bug/19608022:36
ubottuUbuntu bug 196080 in bzr "`bzr info -v bzr://host/branch` hides actual branch/repo format" [Medium,Confirmed]22:36
lifelessmwhudson: k22:37
lifelessthanks22:37
* beuno -> home22:37
beunobbiab22:37
mwhudsonbeuno: so how do i actually use lazr-js, is there documentation or a quickstart somewhere?22:37
phinzeis there any way to get bzr log to show me only the commits made on this task branch?22:45
ronnyafair bzr log -rsubmit:..22:47
ronnysee bzr help revisionspec22:47
igcjam: I've been struggling getting a good conversion of mysql and emacs to --development522:55
igcemacs fell out with a serializer bug after 10 hours22:55
igcs/out/over/22:55
igcmysql completed but then didn't work ...22:56
igcand I'm yet to track down why cos ...22:56
igcbzr check isn't fast22:56
igcjam: I'm wondering if you've had more luck converting these22:57
jamigc: I have, but I haven't done a full conversion in a while22:57
igcif so, could I ask for you to tar.gz the converted branches and put them on orcadas?22:58
igcthat's the missing piece for getting meaningful benchmark results22:58
jmlabentley: thanks for the review23:00
abentleyjml: np23:00
thropehi - numpy/scipy developers are discussing dvcs ... I pointed out bzr-svn (they were talking about the shortcomings of git-svn)23:09
thropehttp://projects.scipy.org/pipermail/scipy-dev/2009-February/011205.html23:09
thropesomeone asked "can you point us to a public svn repo where non-trivial branching is happening with bzr?" was wondering if anyone (perhaps jelmer ) could point me to this23:10
jelmerthrope, hi23:11
jelmerthrope, non-trivial branching?23:11
fullermdI thought the point of a DVCS was that ALL branching is trivial   ;>23:11
thropenot sure - thats what the person asked...23:12
thropeI dont have a lot of experience - but bzrsvn worked well for me and they were complaining about git-svn23:12
thropeI guess can anyone point to an open source project using bzr-svn 'officially' with a couple of different bzr branches in svn23:13
jelmerthrope, well, there are some projects that contain roundtripped revisions using bzr-svn23:14
jelmerthrope: it seems kindof pointless to have official bzr-svn branches though, since the official repo would always be svn, even if some developers are accessing svn using bzr23:15
throperight23:16
thropejust not sure how to respond to the guys question then23:16
jelmerthrope, if you're looking for example branches in bzr created from svn branches using bzr-svn, see http://bzr-mirror.gnome.org/23:17
thropeok thanks23:19
jelmerthrope: alternatively, I'm interested to hear about svn repositories that don't work in bzr-svn23:19
* igc out for several hours23:25
igcback later hopefully23:25
lifelessspiv: so, what shall we do today?23:30
fullermdThe same thing we do every night; try and take over the world.23:31
spivlifeless: so I'm currently wikifying my measurements from yesterday23:31
spivlifeless: after that I'm happy to head over to Epping23:31
spivlifeless: if that suits you?23:31
lifelesshornsby would be better for us today; if epping is better for you though, that is fine too23:33
spivlifeless: that's ok23:33
lifelessok, well I'll pick up food and grab a train23:34
lifelesslate morning is ok for you ?23:37
spivSure.23:40

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