/srv/irclogs.ubuntu.com/2008/12/04/#bzr.txt

speakmanit was caused by not setting whoami on the SERVER side00:11
lifelessjelmer: ping00:14
jelmerlifeless: pong00:17
lifelesstwo questions re your 440K patch:00:18
lifeless- I think you had a submit branch of bzr.dev, so its kinda hard to review :P (and note that [split-inventories][MERGE] is *much* ebetter, otherwise BB will pick it up00:19
lifeless- why do y ou need create_by_apply_delta on regular inventories? (The Repository is the appropriate interface for making a new inventory normally00:20
lifelessbbiab, car time00:21
jelmerlifeless, bzr-svn's fetch uses the lhs parent inventory00:21
awilkinsjelmer: I'm trying bzr-svn 0.4 against svn 1.5.4 and while it builds, I'm having trouble running it. I'm getting "DLL load failed: The specified module could not be found."00:45
jelmerawilkins, sorry, I'm not the right person for windows stuff00:46
awilkinsHmm, appears to be DLL names00:46
awilkinsIt's looking for libapr.dll when it's called libapr-1.dll00:47
jelmerI've heard that problem being mentioned before00:49
awilkinsIt seems to be the client.pyf00:49
lifelessjelmer: I don't follow00:50
jelmerlifeless, bzr-svn uses the lhs parent inventory when interpreting changes the server sends us00:50
lifelessjelmer: yes... ?00:50
awilkinsThe real libapr-1.dll is also being loaded00:50
jelmerlifelss: fetch itself builds up an inventory delta00:50
lifelessjelmer: this seems unrelated to my point00:50
jelmerlifeless, argh, sorry, I mixed up two patches00:51
jelmerlifeless, that first patch is moot if the second is accepted00:51
lifelessMake Repository.add_inventory_delta() return the resulting inventory.00:52
lifeless?00:52
jelmeryes, that's the second one00:52
lifelessjelmer: +100:52
lifelessjelmer: just land it00:52
jelmerlifeless, thanks00:53
awilkinsjelmer: The reason is that the APR distribution in the win32 dev pack I'm using is not the correct one01:17
awilkinsGrr, squish those SVN devs01:17
awilkinsjelmer: They are shipping 1.3 libs with 1.5.4 but the headers are the 0.9.6 versions01:19
lifelessLOL01:24
awilkinsmarkh: You around?01:26
markhawilkins: I am - hi01:26
awilkinsDo you build bzr-svn at all (and use it?_01:26
markhI build it - I don't use it much as the svn repos I use have svn:externals and svn:eol-style :(01:27
markhsetup.py should be fairly accurate with build instructions01:27
awilkinsHeh, see above about not being able to use 1.5 version with windows (if you take the distributed library pack)01:28
markhthe "python based" installer?01:28
awilkinsThey are shipping the 1.x series APR but the library pack has the 0.9 libs and headers01:28
awilkinsThe python installer doesn't even build the pyd files01:28
awilkinsI'm building my own01:28
markhyeah01:28
awilkinsIf I want to access a 1.5 repo over ra_local I'm going to have to build APR in the morning.01:29
markhawilkins: so where are you getting the apr binaries from?01:29
awilkinsThe SVN guys host a "dev pack" for windows with libs and headers in01:30
markhright - and you are building bzr-svn yourself?01:30
awilkinsThe binaries in the 1.5.4 win32 distro are the 1.3x versions01:30
awilkinsthe dev pack is 0.901:30
awilkinsYes, building bzr-svn extensions using VC++ 2003 toolkit and it's libs and headers01:31
awilkinsWhich corresponds to the compiler used to build python 2.501:31
markhso - if you follow setup.py, one of those .zip files should have exactly matching apr binaries - or I'm still a little confused :)01:31
awilkinsThe zip files do not have the right APR bits01:31
markhdon't try and use any other binaries with it01:31
markhhrm01:32
markhthey do for me01:32
awilkinsThey don't match the ones in the win32 distribution I downloaded01:32
awilkinsThey match the 1.4.6 binaries01:32
markhthe bzr win32 distro?01:32
awilkinsBut the 1.5.4 distro uses APR 1.3.x not 0.9.601:32
awilkinsAlas, the 1.5.4 dev pack has the 0.9.6 libs and headers01:33
markhOK - I last built using 1.5.2 - that package should be OK.  Note the "distro" of the version should not be relevant - you don't need anything other than the binaries bzr-svn (tries to) provide.01:34
awilkinsmarkh: I'm falling back on the path to load the DLLs from my installed SVN01:34
markhright - which is the root of the problem01:35
awilkinsmarkh: And since the libs don't match the DLLs I have it's irrelevant anyway01:35
awilkinsEven if I copied them into the same folder01:35
markhwell - binaries build from the 1.5.2 dev pack appear to work fine and be internally consistent01:35
awilkinsJolly good01:35
awilkinsI shall grab that one01:35
markhso can you build with that?01:35
markhcool01:35
awilkinsOh hold on01:36
* awilkins slaps forehead01:36
awilkinsMaybe if I take the Apache 2.0 version01:36
* awilkins checks dev pack is not different on each page01:37
markhawilkins: its quite possible 1.9 and later bzr binary builds have been made with the 1.4 svn devpacks01:37
markhsetup.py references them - even though it works with 1.5 - and that is quite possibly exactly what jam did when setting up the binary builds.01:37
* markh tries to look01:38
awilkinsIf we can get 1.5 working consistently we should use it - well, the reason I am trying is so I can get rid of the per-file properties when pushing over ra_local01:38
awilkinsI am an idiot01:39
awilkinsI've been using the apache 2.2 distro with the 2.0 devpack01:39
awilkinsIt would be helpful if they named the archives more extensively01:39
markhcool :)  it turns out 1.9 should have 1.5.4 anyway01:40
awilkinsRight, now I know, I'm turning in, I shall have another go tomorrow.01:40
* awilkins mumbles curses at management types who insist on SVN even though the rest of the team in question is using Bazaar01:41
=== kiko is now known as kiko-zzz
jammarkh, poolie: Kerguelen seems to be up, but seems to not have http access for me to download any data for packaging a 1.10rc1 installer.03:43
jamEven browsing to "http://www.google.com" fails03:44
markhjam: its not just IE broken?03:44
markhIIRc that was one of the updates :S03:44
linrunixhi04:00
markhjam: any luck?04:00
hunmonkhi guys.  does anybody know if the EPEL repo is going to get an updated version of bzr anytime soon?  looks to me like it still has only 1.304:06
linrunixmarkh: i just upload my project to launchpad04:12
linrunixthe Initial branch04:12
linrunixif somebody wanna change something to a certain file what does he has to do?04:13
linrunixlet's say he took example.py and changed something... how does he commit these changes?04:13
linrunixsorry i'm kind of confused04:14
markhlinrunix: they would create a local branch or checkout of your project, than commit those changes to that local branch or checkout.  He would then use 'bzr send' to send the changes04:14
markhor if he had permissions, he could push or checkin directly to launchpad04:14
linrunixyes he has04:14
linrunixbut what does he do?04:14
linrunixhe download the branch to his computer04:14
linrunixchange the file04:14
linrunixand commit?04:14
linrunixthe whole file04:14
markhhe probably should just do a "bzr cp lp:your_branch"04:14
markhoops04:15
markh"bzr co ..."04:15
markhthen make changes, then "bzr ci" - that is the easiest (but probably not the most flexible)04:15
markhlinrunix: check out http://doc.bazaar-vcs.org/bzr.dev/en/tutorials/tutorial.html04:16
markhlinrunix: or even better, http://bazaar-vcs.org/Workflows04:17
linrunixvery thanks04:17
linrunixmarkh: sorry i was reading but it looks like I dont understand it very well04:50
linrunixi'm just trying to learn how to use it so.. we can start coding from there04:51
markhit could be argued there are too many options :)04:51
markhoptions for ways to work04:51
linrunixi got my friend to download the branch04:51
markhhow exactly?04:51
linrunixlet me give u how04:51
linrunixbzr branch http://bazaar.launchpad.net/~linrunix/pyseleccion04:52
linrunixnow, does he have to upload his own branch to his user?04:53
markhok - so your friend can then make changes and commit as often as he likes.  When he is ready to submit the changes, he should do a "bzr merge" (in case others have changed the branch since he pulled it), then "bzr push"04:53
linrunixbzr push that's it04:53
markhthen your branch will be updated to have his changes04:53
markhanyone doing "bzr pull" etc after that will get them04:54
linrunixhe doesnt have to have the branch in his user04:54
markhhe could push it somewhere else if he wants04:54
linrunixbut to update the actual branch04:55
linrunixjust a bzr push04:55
markhif he can't push directly, or wants you to comments first, for example, he may well push to a private place.04:55
linrunixernie@intrepid:~/Desktop/trunk$ bzr push04:55
linrunixbzr: ERROR: No push location known or specified.04:55
markhyeah - first time you must say where you want to push to04:55
markhbzr doesn't assume you want to push back to the same place04:55
linrunixso taht will be  http://bazaar.launchpad.net/~linrunix/pyseleccion right?04:56
markhoften you don't - you may well want to push somewhere private04:56
markhthe same url used to pull it would be fine04:56
markhit will remember then - so "bzr push" will push back to the same spot thereafter04:56
markhbut you can obviously specify a new location any time too04:56
linrunixlike that bzr push bzr://bazaar.launchpad.net/~linrunix/pyseleccion04:57
markhthat should be fine - but the "lp:blah" version should work too04:58
* markh can't recall exactly how they all expand...04:58
linrunixbzr: ERROR: Cannot lock LockDir(lp-44825360:///~linrunix/pyseleccion/trunk/.bzr/branchlock): Transport operation not possible: readonly transport05:15
linrunixany help?05:15
linrunixtoo_short: how do I set the branch so another user can upload too?05:16
spivlinrunix: for the error, "bzr lp-login"05:19
spivlinrunix: to let other LP users commit to your branch, change it's owner to be a team rather than your user05:19
linrunixok05:20
linrunixthanks05:20
linrunixspiv: after changing a file i need to commit b4 pushing right?05:32
linrunix-m "bla bla bla" right?05:32
vilahi all07:38
VSpikehttp://pastebin.com/m6516f466 that looks a bit odd.  How did I get into that state? :)09:43
awilkinsjelmer: I resolved my bzr-svn with 1.5 svn issue ; I was using the Apache 2.2 binaries and the 2.0 devpack.10:02
awilkinsD'oh.10:02
=== doko_ is now known as doko
=== mark1 is now known as markh
awilkinsjelmer: Why does subvertpy have to go in bzrlib?12:22
awilkinsjelmer: Or somewhere other than plugins\svn .. I'm not sure I understand this so far12:26
sven sven12:31
awilkinsThis is odd, the exception handler isn't working12:54
markhevery time I've seen that it's been due to multiple copies of the same module, meaning multiple exception classes that *should* be the same...13:00
markhbugger - past midnight - I'm officially late for bed :)13:00
awilkinsmarkh: It doesn't even throw13:01
awilkinsmarkh: If you feed it a wildcard handler it never triggers13:01
awilkinsIt just spews an error to the console13:01
awilkinsIt works on a console, just not in the bzr-svn code13:01
awilkinsgrr13:01
awilkinsgnight anyway13:02
awilkinsHaving hacked my way around it, I'm running into other issues13:02
markhwell - now I'm officially late, a little later wont hurt ;)13:02
awilkins0.4 is working well, this is 0.5 :-)13:02
markhoh - still svn woes :(13:02
awilkinsHeh, the one I've run into looks more like a jelmer issue13:03
awilkins0.5 is supposed to cope with disorganised repos with evil folder histories better13:03
awilkinsI have a very large repo to test it on.13:04
awilkinsIf it successfully manages to map all the branches in it ( to the point where pulling each one results in a small revision and not over 100MB), I'll be impressed13:04
awilkinsOn the flipside I have a manager demanding I use SVN for an external repository (sob), so the highly-functional 0.4 support is very welcome13:05
awilkinsI have to migrate this huge backup folder of archived copies and turn it into a repository13:06
awilkinsConsultants are bad enough, but OLD consultants with no experience of VCS systems.....13:06
awilkinsPlus all the files are renamed with version numbers... and they all include each other. Grr.13:08
awilkinsGot that out of the way, mostly, I just need to bend my brain a bit further around which order this next set are in.13:08
awilkinsI'd go to bed13:11
awilkinsI'll pester jelmer when he's awake13:11
=== sdboyer is now known as sdboyer|vurk
jelmerawilkins, hi14:18
jelmerawilkins, subvertpy is under bzrlib.plugins.svn because it's included with the plugin14:18
awilkinsjelmer: I think I'm having a problem with the import code in svn\__init__.py14:40
awilkinsjelmer: For some reason it doesn't seem to be catching the first ImportError and trying the code in the except: block14:41
awilkinsjelmer: Once I hack my way around that, I run into a SubversionException for the case I'm trying.14:43
jelmerwhat's the error exactly?14:43
awilkinsjelmer: THe import just reports "No module named subvertpy" at the console, the error doesn't percolate to the top of the stack (presumably the plugin loader is catching it)14:44
jelmerawilkins, is subvertpy installed in the right location?14:47
awilkinsjelmer: It's nested in the svn plugin14:47
jelmerI never actually install bzr-svn myself, just run it from ~/.bazaar/plugins14:47
awilkinsAh, that may be why14:47
jelmerbzrlib/plugins/svn/subvertpy/ ?14:47
awilkinsThe "build" command of setup.py makes a different tree to the source14:48
awilkinsin the source, subvertpy is inside another subvertpy folder14:48
awilkinsI had to remove the path near line 87 to make that bit work14:49
awilkinsThe join of the path of  __file__ to subvertpy14:49
awilkinsIn the source tree it's svn/subvertpy/subvertpy14:50
jelmerI'll fix the imports, one sec14:50
awilkinsWhat really puzzled me was that the first import (before it extends the path) fails (as expected) but the exception isn't trapped ; it never gets to the bit where the path is extended.14:51
awilkinsDebugged with primitive "print" statements14:51
awilkinshttp://paste.ubuntu.com/80356/  # this doesn't work and never prints "Caught the importerror"14:53
awilkinsBut if you remove the exception handling and just go straight for extending the path it works fine.14:54
jelmerthat import should work fine in your case14:54
jelmerbecause it's a relative import14:54
jelmerit doesn't work in a couple of other cases (when importing subvertpy from bzrlib.plugins.svn.mapping3.scheme, for example)14:55
awilkinsWell, it should work, and printing __file__ confirms that it's the right file being run, but it doesn't14:56
awilkinsjelmer: Maybe I should look at stack traces more often, the problem is in ra.py15:04
awilkinsjelmer: Adding the path in svn\__init__.py  just masks it15:05
awilkinsjelmer: It seems that a number of imports in subvertpy are using the subvertpy namespace to import things that are inside the subvertpy namespace - but it can't find it because it's not on the path.15:15
awilkinsOnce you fix these up to be relative to subvertpy it works fine  ( is doing ' from __init__ import <stuff> ' acceptable ?)15:15
jelmerawilkins, that's what the sys.path.insert call is supposed to fix15:15
awilkinsjelmer: That path call only happens if the initial import fails15:16
jelmerit's not correct in your case though15:16
jelmerawilkins, relative imports don't work, since it means you can't import any subvertpy stuff from python modules that are not in the top-level code of bzr-svn15:16
jelmeras there is no ".." in imports15:16
awilkinsOk, so it needs to always add subvertpy to the path regardless then?15:17
jelmeror use bzrlib.plugins.svn.subvertpy everywhere15:18
jelmerawilkins, to work around it, you should be able to move subvertpy to the top-level for now15:18
jammarkh: No luck on kerguelen. IE is busted with "No Module Found", but bzr with http:// urls is giving Couldn't resolve host 'bazaar-vcs.org'.15:23
jamCould be a DNS issue15:23
awilkinsjelmer: Moving that package also seems to fix my SubversionException15:26
jelmerawilkins, so everything works now?15:37
awilkinsjelmer: It would appear to.15:37
awilkinsjelmer: Hmm, that's disapointing ; something in 0.4 is a real memory hog16:07
awilkinsI tried pushing a branch to a fresh svn repo and on reaching the third revisions it eats 1.3GB of memory16:07
awilkinsNow, it is a big revision, but the entire bzr repo is less than 65MB16:07
jelmerWhat about 0.5 ?16:07
awilkinsI think 0.5 was doing it to (but I didn't know whether to write that off as running against a Bazaar with no extensions built)16:08
awilkinsIt rapidly pushes the machine into swap at which point it just crawls16:09
awilkinsLast I tried it, pulling big repos wasn't a problem16:09
awilkinsBut maybe pushing is different16:09
awilkinsI mean, pulling still eats a few 100MB16:10
awilkinsI'm using 0.4 with 1.9 and 0.5 with bzr.dev (no extensions built)16:10
jelmerthe code that handles some of this stuff is a lot different between 0.4 and 0.516:10
jelmeralthough 0.4 shouldn't be leaking that much either16:10
awilkinsDoes 1.10 rc1 have "foreign" ?16:11
jelmeryes16:11
awilkinsI suppose it's marked as compatble in the code, that answers my question16:11
awilkinsBah, no installer anyway :-)16:11
jelmerImporting bzr-svn or bzr.dev into svn works fine here, btw, no heavy memory usage16:12
jelmerI wonder what's making it problematic for you16:12
awilkinsIt's a lot more paths and size than bzr.dev16:12
lifelessyo16:13
awilkinsbzr.dev is 1013 files and ~15MB16:13
jelmerhey lifeless16:13
jelmerlifeless, travelling in some strange part of the world or just awake at night?16:14
awilkinsThis is 6237 paths and 62.5 MB16:14
lifelessuds16:14
awilkinsAnd most of that happens in a single revision (which it seems to be having trouble with)16:14
jelmerahh, of course16:14
awilkinsI think that one revision has about 3600 paths in it and most of that data16:15
jelmerawilkins, ah, that may be slow indeed16:15
awilkinsPulling similar sizes FROM svn repos  (and larger) doesn't seem to cause the same explosion of memory16:15
jelmerall texts for the commit have to be kept in memory during push16:20
jelmerall changed texts, that is16:20
awilkinsOw16:20
awilkinsHmm, that's still only 65 MB though?16:20
awilkinsI realise that overhead is important but... 1.25 GB of it?16:21
lifelessjelmer: all at once? Can't you callback on each separately?16:22
jelmerawilkins: I suspect there's more going on16:22
awilkinsAs do I :-)16:22
jelmerlifeless, it can be done a bit more lazily16:22
awilkinsIt consumes the memory very quickly on reaching that third revision16:23
jelmerlifeless, but I doubt that's really the problem here16:23
awilkinsjelmer: There are quite a few merges in either direction on this branch, would that affect it?16:26
awilkinsWell, not by the third revision (duh)16:26
awilkinsRight, time for a shower and a quick forage for wife-food16:27
awilkinsI shall come back later16:27
=== awilkins is now known as awilkins_away
jelmerawilkins_away, should't matter16:29
jelmerpython really sucks when it comes to debugging memory usage :-/16:29
* Tak s/debugging //, get kicked from channel16:30
lifelessTak: it is higher on memory usage than some lower level languages, due to various choices; but it should be ok for nearly everything, as long as you don't leak :)16:33
lifeless(where a leak could be contained to a single function but still be very large)16:33
TakI know, I'm only kidding16:33
Takbesides, I'm a ruby fan, I don't have any room to complain16:34
lifelessheh!16:34
LarstiQjelmer: iirc I've been happy with http://guppy-pe.sourceforge.net/ in the past16:42
evarlastcan I get a log for a folder in a branch? am I stupid for wanting to do so?16:50
NfNitLoopevarlast: I was wanting to do that just the other day.16:52
NfNitLoopI didn't find a way to do so, though.16:52
Takhmm - it works for a branch from a svn repo16:53
NfNitLoopright, you can bzr log <branch>16:54
NfNitLoopbut not bzr log <subdir>16:54
NfNitLoopor, if you do, you just get a single revision for when the dir was created.16:54
NfNitLoopnot when all files within that dir were last modified.16:54
TakI mean, it works at the directory level for a branch from an svn repo16:55
jamlifeless: any chance you could look at: http://bundlebuggy.aaronbentley.com/project/bzr/request/%3C4935F649.2010706%40arbash-meinel.com%3E16:56
jamI'd like to base the rest of my work on it16:56
jamsince it makes the map/unmap "stable"16:56
lifelessjam: sure16:57
jamthx16:57
lifelessupgrading to intrepid right now, and I'm on leave today16:57
jamsure16:58
jamIt isn't something you have to do16:58
lifelessif you think its ok, I suggest you build on iti anyhow16:58
jambut since martin, you, and spiv are all afk...16:58
lifelessor even land it, and we review it later16:58
jamI guess I'll go for that, then.17:00
kjcoleAny instructions on removing a damaged knit file w/o consequence?  I have determined that the contents of the file are something I removed from the repository long ago.17:08
kjcoleI'm just looking for a way to cascade it's removal without screwing up bzr.17:08
lifelesskjcole: so, if the file is used by *any* revision still in the repository, bzr will be unhappy whena ccessing that revision17:09
lifelessthe easiest way to have a completely clean repo is to make a new one and branch everything into it17:09
kjcolelifeless: I tried branching.  No luck.17:10
lifelesskjcole: it errored?17:10
kjcolelifeless: Yep.17:10
lifelesskjcole: ok. do you have any idea of how the damage occured?17:11
kjcolelifeless: "bzr check" reveals a zlib.error "invalid distance too far back"17:11
kjcolelifeless: No idea how it occurred, but it occcured a long way back: The file in question was removed in revision 3, and the repository's up to revision 80.17:12
lifelesskjcole: ok. do you have another copy of it anywhere?17:13
kjcolelifeless: I only learned of it while trying to move the repository from an old dapper machine w/ bzr 0.8.2 to a hardy machine w/ a more current bzr.17:13
kjcolelifeless: Of the repository? No.17:13
lifelessok17:13
jelmerLarstiQ, I couldn't get guppy to work and the project appears to've been dead since 200517:14
lifelessso you have a damaged data file for revision's 1 and 217:14
lifelessand the rest is fine.17:15
lifeless(as far as you know)17:15
kjcolelifeless: I guess.  Since only a single knit file gives an error, and there are two other knit files with the same starting name...17:15
kjcolelifeless: (I'm gonna check the dates on those files.  BRB)17:16
kjcolelifeless: all created on the same day.  (It's been a while, but what I believe I did was bzr init, add everything in an existing directory tree, commit, and then weed out the few things I didn't want.17:19
kjcolelifeless: (all on the same day).17:19
lifelessok17:20
lifelessso I suspect a disk bit error, as its data that bzr has had no reason to touch for a very long time17:20
kjcolelifeless: The damaged file isn't something I would have changed -- it was part of the Python Library Reference docs that was inadvertently sitting in the tree.17:21
lifelesskjcole: the easiest thing to do would be to trim revision 1 and 2 - by rebasing the rest of the branch17:21
lifelesskjcole: exactly, its data that was probably written fine, but not read from for several years17:22
kjcolelifeless: This sounds promising.  Thanks.17:22
lifelessI believe someone posted to the list a recipe to do this, they didn't have a damaged repo,but rather had text they couldn't show people and needed to eliminate; same principle though17:23
LarstiQjelmer: hmm17:23
LarstiQjelmer: I'm reasonably sure it was guppy that I used a couple of months ago to debug memory issues.17:23
LarstiQjelmer: but I'll look it up after dinner.17:23
kjcolelifeless: Oook.  If worse comes to worse, since I don't intend to move backwards on this, I'll try to generate a history report (log plus list of files affected) and just "rm -rf .bzr" and start again.17:25
kjcolelifeless: But I wanted to salvage what I could first.17:25
lifelesskjcole: you should be able to salvage everything but the damaged revs.17:25
beunolifeless, hey hey. Are you in SFO yet?17:26
kjcolelifeless: to the list archives, then -- I hope there was a decent subject line. ;-)17:26
lifelessbeuno: yes17:26
beunolifeless, cool. We're heading towards the UDS hotel today17:26
kjcolelifeless: Thanks again.  Later.17:27
lifelesskjcole: anytime17:27
lifelessbeuno: cool17:28
=== mw_ is now known as mw
vilajelmer: regarding bug #303959, I'm done with the fixes I could make to bzr. Have you seen my last comment ? Does that sounds right ?17:32
ubottuLaunchpad bug 303959 in bzr "missing redirect handler: no repository found when pulling a branch from bzr-playground" [High,Fix committed] https://launchpad.net/bugs/30395917:32
vilalifeless: it turns out it was a bit more work than anticipated but I think the result was worth it (IMHO)17:33
lifelessvila: the key question for me is 'can jc2k pull'17:33
vilaif jc2k == bug reporter: return True17:34
lifelessJohn Carr17:35
vilaSee the last bug comment for a more elaborate answer17:35
lifelessalso, 'return jc2k == bug_reporter'17:35
vilahehe17:35
lifelessI've read it now17:37
lifelessyes, I concur, bzr-svn should handle foo->foo/ as 'cannot be a svn repo'17:37
vilaalso, 'ireturn jc2k == bug_reporter' doesn't cover the implicit else: return None :)17:38
lifelessit returns False istead17:39
vilawhich isn't the answer I wanted to give :)17:39
Jc2ko_O17:41
Jc2kbug_reporter.state == 'amused'17:41
vilaJc2k: did you try my patch ?17:41
Jc2kvila: not yet. just got home, in a bit of a rush..17:41
lifelessjelmer: ping17:41
jelmerlifeless, pong17:42
vila bug_reporter.state == 'checking_later_I_promise' :-)17:42
Jc2kvila: is it in bzr.dev?17:42
Jc2kotherwise me needs somewhere to pull or grab patch from17:42
vilanot yet, but it is in the branch associated with th bug: lp:~vila/bzr/303959-redirection17:42
Jc2kooh shiny17:44
vilaJc2k: feeback very welcome since I can't reproduce the bug with my actual setup17:44
Jc2kwill spin in next 45 minutes if i can, otherwise it will be on my todo for asap17:44
lifelessvila: am I right that in theory this bug is fixable just via bzr-svn?17:45
lifeless[the actual reported fault, I mean]17:45
jelmerlifeless, yes17:45
lifelessjelmer: hi17:46
vilalifeless: totally17:46
lifelessjelmer: so pinging re this bug; also how did split-inv work for you;17:46
jelmerlifeless, split inv seems to work fine, especially now those two changes are in17:46
jelmerI also noticed that CHKInventory.has_id() is quick while CHKInventory.__contains__() isn't17:46
lifelessfaster/slower/can't-tell-yet?17:46
jelmerIn percentages, it's definitely faster (smaller percent of work is now in updating the inventory)17:47
lifelessjelmer: __contains__ isn't defined on CHKInventory :P17:48
jelmerlifeless, I was seeing references to __iter__17:48
lifelessoh right17:48
lifelessprobably an implicit behaviour17:48
lifelessI'll move the __contains__ definition17:48
jelmerlifeless, the remaining culprits are:17:49
jelmer- Repository.add_inventory_delta() (22%)17:49
jelmer- VersionedFile.add_lines() (15.59%)17:51
jelmer- VersionedFile.get_record_stream() (13%)17:51
lifeless22% is still quite high17:53
lifelessfix for __contains__ pushed17:53
lifelesswhat does that 22% break down into?17:54
jelmerlet me just run it again locally17:55
rockstarlifeless, holy crap, why are you awake!?18:31
lifelessI'm in mountain view18:31
rockstarlifeless, okay, that makes more sense.  :)18:32
lifelessawake is not the right term though18:32
rockstarlifeless, about the memory middleware, I can land it, but it's a SERIOUS hack.18:32
lifelessrockstar: is it in its own module?18:32
rockstarBasically, it reads it's own memory usage from proc18:33
rockstarlifeless, yes, loggerhead requires a flag to use it.18:33
lifelessrockstar: bzr has a function to do that btw18:33
jelmerlifeless, new results:18:33
rockstarlifeless, bzr has a serious lack of documentation.  :)18:33
jelmeradd_inventory_delta(): 13%18:33
jelmerCHKInventory.children: 36.12%18:34
jelmerVF.add_lines(): 21%18:34
rockstarlifeless, one of these days, I'm going to start doing things on my TODO list, and writing docs for bzr is on there.18:34
jelmerVF.get_record_stream(): 14.46%18:34
lifelessrockstar: we have docs :> problem is knowing what to look for :)18:35
jelmerthe rest is (obviously) bzr-svn overhead18:35
lifelessrockstar: bzrlib.trace.debug_memory18:35
rockstarlifeless, I think that Launchpad Code team kinda has that problem too.  Those guys are REAL slackers.  :)18:35
lifelessrockstar: probably wants patching to accept a callback function18:35
rockstarlifeless, great, I'll take a look at it.18:36
lifelessanyhow18:36
lifelessI woud land it if its ugliness is isolated18:36
lifelessjelmer: are those percent-of-total?18:37
lifelessand do you mean CHKInventoryDirectory.children ?18:38
=== Mario_ is now known as pygi
jelmerlifeless, yes18:55
jelmerlifeless, they are percentages of total18:55
lifelesswhat are the callers of .children?18:56
jelmerbzr-svn itself uses it to recursively remove entries, and to find the file id a file had in the lhs parent inventory18:57
lifelessfor the latter, path2id is better18:57
lifelessfor the former, can you enlarge? I thought you used an inventory delta now?18:58
jelmerexcept I have to find the id based on the parent file id and the current file name18:58
jelmerlifeless, yes, I do use an inventory delta, but inventory deltas require all entries that are removed to be mentioned explicitly18:58
lifelessjelmer: ok18:58
lifelessso back to finding the id , you have old_parent_id, new_file_name ?18:59
jelmeractually, the other way around18:59
jelmernew_parent_id, old_filename18:59
lifelessthis is in the case of a reparenting?19:00
lifelessand is old-filename the basename or path_from_tree_root19:01
jelmerold-filename is the basename19:04
jelmerI can work around it and only check children in case there is a reparenting19:05
jelmerbut it surprises me a bit .children is so slow, even though it could've cached that data19:05
jelmer(since this is a from-scratch import, and all the inventory entries have been added in this session)19:06
lifelessjelmer: entry.children is dynamically populated19:06
lifelessapply_by_create starts with a fresh cache19:07
lifelessjelmer: so, you have new_parent_id, old_basename - and do you know what the old_parent_id was?19:08
lifeless(i'm trying to understand whats really going on here)19:08
lifelesswe have a (parent_id, basename) -> file_id index in development419:08
lifelessits not really exposed directly, but if it fits your needs we can make sure it is19:09
jelmerthat is *exactly* what I would need here19:09
lifelessbbs I hope19:09
lifelessjelmer: do an isintance and have a poke at it then19:09
lifelesssee CHKInventoryDirectory.children for example code19:09
jelmerThanks19:10
lifelessjelmer: I wasn't sure it would help though because you have a new,old pair rather than new,new or old,old19:27
jelmerlifeless, what's the easiest way to query parent_id_basename_to_file_id for this sort of information?19:44
jelmerI see a iteritems(), but I'd rather avoid that if possible..19:45
jelmerlifeless, in a lot of cases, it will actually be old,old19:54
jamlifeless: I also noticed create_by_apply_delta being a bit slow for the mysql conversion, (about 50% of total time), and I'm guessing it is because we start with a fresh cache each time.20:23
jamWell, CHKRepo.apply_inventory_delta() reads the basis revision_tree from scratch20:24
jamwhich means it has to page in everything20:24
jameven if it just paged in that one20:24
lifelessjelmer: iteritems([(id, name)])20:25
lifelessjam: it needs a page cache not an entry cache I think, for this particular use case20:25
jamlifeless: I think we need *something* :)20:26
lifelessjam: sure20:26
jamThere are several bits that may effect this20:26
jam1) hash tries shrink the tree depth, so we probably won't have as many pages to bring in20:27
lifelessjam: what mysql conversion are you referencing in this conversation btw20:27
jamconverting my mysql repo to --dev420:27
lifelesskk20:27
jamThe current tries are about 9 nodes deep20:27
jamw/ something like 18 node changes per commit20:27
jamlet me double check20:27
jamaverage of 18.8 inv changes per revision20:28
jamaverage depth of 6 for the file_id=>entry20:29
jamand depth of 9 for pid,name=>file_id20:29
jammax depth 17, 19 respectively20:29
lifelessjam: lets hook in it and then perf test; we can change our minds :)20:30
jamwith an average of 3.8 texts per commit20:30
jam2) a page cache would make accessing the pages cheaper20:30
jamthe problem is figuring out what the lifetime is20:30
lifelessjelmer: iteritems with a filter should be very efficient20:31
jamsince it seems like it should be shared between all the CHKInventories at least20:31
lifelessjelmer: so you can actually query all your changes for a commit at once20:31
jelmerlifeless, thanks, iteritems() seems to work20:32
* jelmer does another lsprof run20:32
jelmerunscientifically speaking, it seems to be faster20:33
lifeless:P20:34
beunoso...20:38
beunoanyone know what could cause this: http://paste.ubuntu.com/80499/20:39
beunonew error for me20:39
lifelessjelmer: jelmer for the 'recursive file id gathering'20:40
beunoah, bug 30385620:40
ubottuLaunchpad bug 303856 in bzr "caching writes to pack repository causes ShortReadvError on pushing stacked branch" [High,Fix committed] https://launchpad.net/bugs/30385620:40
=== thumper_laptop is now known as thumper
jelmerlifeless, the recursive file id gathering doesn't affect performance I think20:40
beunomwhudson, ping20:41
jelmernot significantly, I mean20:41
jelmerlifeless, It only gets called in the rare situation that you remove an entire subtree20:41
jelmerlifeless, the other code (parent_id,basename->file_id) gets called at least once for each changed file20:41
lifelessjelmer: yeah, you can write a recursive query just on that index though20:43
lifelessjelmer: that will avoid processing all the entry data for the removed files20:43
jelmerlifeless, ah, cool20:44
lifelessjelmer: so did you get an lsprof result with the updated code?20:51
jelmeralmost done, just 300 more revisions left20:51
* jelmer uses the vala svn repository for testing these days20:52
lifelessjelmer: what are vala's dimensios20:52
jelmer2400 revisions, 817 files in the last revision20:53
lifelessso small :)20:54
lifelessbeuno: update your bzr, you will be fine20:54
jelmerlifeless, well, this used to take a few hours with bzr-svn :-)20:54
lifelessjelmer: ah20:55
lifelessjelmer: I think you will like CommitBuilder.record_iter_changes20:55
jelmeranyway, results are in:20:55
jelmerseems this just isn't a signifcant factor anymore..20:56
beunolifeless, doing that now...20:56
beunocrappy hotel wireless20:57
jelmerVF.get_record_stream(): 25%20:57
jelmerRepository.add_inventory_delta(): 18%20:57
jelmerVF.add_lines(): 30%20:57
jelmersvn file parsing, etc; 12%20:59
jelmerthe rest is overhead from bzr-svn itself20:59
jelmerlifeless: in other words: please can we have Inventory.parent_basename2id() ?21:00
lifelessjem er, lets make it generalish21:03
=== bac is now known as bac_afk
lifelesse.g. Inventory.iter_child_ids([(parentid, None_or_asename...])21:05
lifelessthe same interface as iteritems on the dict21:06
lifelessthat can be easily implemented on Inventory, and on CHKInventory is a trivial thunk21:06
jelmersure21:06
lifelessit (return self.parent_id_basename_to_childid.iteritems(query))21:06
lifelessjelmer: if you wanted to doa patch for bzr.dev adding that for Inventory, I'd be delighted to review it.21:08
jelmerYeah, I'll have a look at doing that21:09
jelmerlifeless: create_by_apply_delta() is slow mainly because of CHKMap.apply_delta() (11%) and CHKInventory.__getitem__ (5.8%)21:11
lifelessso, the 11% is the delta application21:13
lifelessmake sure you're running up to date brisbane-core21:13
lifelessuhm21:13
lifelesscan you drill into those a little further? or post a callgrind file ?21:13
jelmerCHKMap.map() takes 7.6%21:14
lifelesswithin the 11%?21:15
jelmerNo, out of the total21:15
jelmerso ~ 70% of CHKmap.apply_delta()21:15
jelmerhttp://samba.org/~jelmer/bzr/vala.callgrind21:16
lifelessyes, but is all that from apply_delta I mean21:16
jelmeryes, it's all from apply_delta21:16
jelmerunless I'm interpreting the view kcachegrind gives me wrong21:16
lifelessoh nice, kcachegrind got a facelift21:18
lifelessso 2000 delta calls becomes 14K map calls21:22
lifelessand 17K map calls21:23
lifelesssorry 14K __getitem__ calls before21:23
lifelessand that 17K becomes 58K with recursive handoffs21:25
lifelessbut _iter_nodes is 70%21:25
lifeless(relative)21:25
lifelessand get_record_stream is 63% of that21:25
lifelessso if you wanted to do an experiment21:26
lifelessadd a global cache (using the LRUCache) in chk_map.py21:26
lifelesswhenever a page is read21:27
lifelessadd the page under the CHK21:27
lifelesse.g. sha1:123456789012347890 -> page_bytes21:27
=== bac_afk is now known as bac
lifelessand in _iter_nodes lookup pages there first21:27
lifelessmake it a decent size, say 2M == 512 items21:28
jelmerlifeless: It's going to take me a while to do that, given that I'm not familiar with that code. Do you perhaps have those changes ready ?21:29
lifelesslet me take a quick toilet break and I'll whip it up21:29
jelmeror can you point out what exactly to insert, etc?21:29
jelmerthanks21:29
`mouseydoes anyone know if you can diff a single file when using tortoisebzr? everytime I try to diff revisions it shows a diff of every single modified file21:33
beunohttp://tech.slashdot.org/article.pl?sid=08/12/04/162522621:33
beunogittorrent?21:34
lifeless`mousey: right mouse on the file perhaps?21:41
lifelessjam: ping21:44
lifelessjam: you use get_record_stream directly quite a bit; I'd like to avoid that if we could, helper function on $object - like the _read_bytes one perhaps21:44
lifelessjam: also, why do you use an adapter rather than just asking for get_bytes_as('fulltext') ? You have asked for them to be fulltextable always21:45
lifelessjelmer: pushing a read record cache now, writes-into-cache in a second21:55
lifelessjelmer: give it a spin22:00
lifelessjelmer: - still here?22:09
arrbee/topic22:13
`mouseylifeless: yeah, I've tried the right mouse, and it shows the revisions where the file was modifier, however doing a diff on 2 revisions will show every file that was changed between the 2 revisions22:21
`mouseyi'm not sure if it's a bug or an intended feature22:22
lifelessif you're entering the historic diff from a single-file, I'd call it a bug, but if you're entering from a directory, its usualy to show the recursive diff22:22
lifelessjelmer: ping22:23
markhjam: did you have any luck with that box?22:23
`mouseyyeah, it sounds like a bug. I'll see if I can fix it and supply a patch22:23
`mouseyoh, also, is it possible to kick off an external merge program when diffing a single file from tortoisebzr?22:24
lifeless`mousey: I don't know22:24
Rollyyou can with the command line22:36
Rollymaybe you could alias the diff command22:37
lifelessjelmer: ping22:38
markhjam: apparently not :)  it appears there is no dns22:42
jelmerlifeless, re22:43
jelmerlifeless, are you still there as well ? :-)22:44
jelmerVF.get_record_stream(): 25%22:44
lifelessjelmer: yes22:44
jelmerVF.add_lines(): 37%22:44
jelmerRepo.add_inventory_delta(): 10.78%22:44
jelmersvn overhead: 12%22:44
jelmerthat's with your first revision22:44
lifelessjelmer: is that a significant improvement?22:44
jelmerlifeless, add_inventory_delta() is down 7%22:44
lifelessgood22:44
lifelessok, use the second rev, should be better still22:44
mwhudsonbeuno: hi22:45
jelmerlifeless, running22:46
mwhudsonbeuno: pong pong22:50
lifelessis it :cvar: to epydoc a class variable?22:53
mwhudsonlifeless: yes22:54
beunomwhudson, hi hi!23:05
beunowhat can you tell me about bug 30385623:05
ubottuLaunchpad bug 303856 in bzr "caching writes to pack repository causes ShortReadvError on pushing stacked branch" [High,Fix committed] https://launchpad.net/bugs/30385623:05
beunoI upgraded to the latest bzr nightly23:06
beunobut it still broke23:06
beunoI had to delete and push again23:06
mwhudsonbeuno: it was caused by an interaction between the new autopack code and some caching23:06
beunomwhudson, and it23:07
mwhudsonit was disabled in the 1.10 branch at least23:07
beunoit's suppose to be fixed in trunk?23:07
jelmerlifeless, last change doesn't seem to've helped much23:07
mwhudsondunno, bzr log --short | less and read i guess :)23:07
lifelessjelmer: interesting; are you sure the first run only had the first patch ? :)23:07
jelmerget_record_stream() -> 25%, add_inventory_delta() -> 11%, add_lines() -> 36%23:07
jelmerlifeless, perhaps the first run had the second patch as well23:08
beunomwhudson, heh, ok23:08
lifelessjelmer: ok23:08
beunomwhudson, did you happen to peak at my email about LH?23:08
mwhudsonbeuno: only peek23:08
lifelessso 25% reading from disk, 36% writing to disk (will incur a read as well, for every write), and 11% in metadata23:09
beunoright, so I haven't tricked anyone into fixing it yet23:09
lifelessjelmer: is < 50% of the time in bzrlib ?23:09
jelmerlifeless: basically, yep23:09
mwhudsonbeuno: i'll read it more thoroughly next week i guess23:10
beunomwhudson, I hope to make time to fix it by then. We'll see23:11
beunoit would be good to rollout the latest version on LP soon-ish23:11
lifelessjelmer: well, I'm happy with bzrlib being less than half the time23:12
lifelesslower is better of course23:12
jelmerlifeless, well, 25%+36%+11% > 50%23:13
lifelessjelmer: add_lines uses get_record_stream23:14
lifelessjelmer: I'm not sure those figures are summable; can you post the callgrind?23:14
jelmerlifeless, according to callgrind it uses get_content_maps but not get_record_stream()23:14
jelmerhttp://samba.org/~jelmer/bzr/vala.callgrind23:14
jelmerback in ~3023:15
lifelesskk23:16
lifelessjelmer: there is definitely still overlap23:19
lifelessapply_delta -> get_record stream23:19
lifelessand -> add_lines23:19
lifelesswhy does fetch call get_record_stream?23:20
lifelessjelmer: I will be back, but afk for a bit (heading to hotel)23:38
=== TheMuso_ is now known as TheMuso
jelmerlifeless, fetch calls get_record_stream() to fetch the data so it can apply the svn delta to it23:57
jelmerat the moment, I only have an implementation of the svn delta algorithm on streams23:57
jelmerbytestreams, that is, not line-streams23:58
jelmerif there's some easy way around that, I'm interested :-)23:59

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