/srv/irclogs.ubuntu.com/2010/05/21/#bzr.txt

LorIs there some estimate of when nested (by-reference) trees will become a supported feature?00:33
fryguy_is there any way to get a list of files that would be applied in a merge without applying it? `bzr merge --preview` shows a diff, but I'd like to see the files (more like a --pretend?)00:41
idnaras a quick fix, you could pipe the diff through diffstat00:42
fryguy_is that a unix command?00:47
fryguy_i ended up just applying the merge and piping stderr to a file, and then reverting it00:48
AfCfryguy_: yes, it's in a package you can install. The "diffstat" package, as it happens.00:58
fryguy_i'm on windows :(00:59
KilrooI feel your pain01:00
fryguy_well, I do like developing on windows. c# is a lot of fun.. so it's not all bad01:01
KilrooI did like C# okay.01:03
idnarah, might be harder to get diffstat on windows01:03
KilrooDidn't much care for codebehind, but C# was good.01:03
igcmorning01:27
KilrooRandom thought of the moment: I think the decentralized-but-not-quite-distributed development model is far more easily supported by bzr than by any other vcs I've encountered.01:46
KilrooOr to put it another way, I like bound branches.01:47
mneptoktake up bonsai as a hobby.01:48
mneptok;)01:48
KilrooLulz.01:49
poolieKilroo, it's true02:02
spivlifeless: yeah, I saw that GIL message.  My guess is it doesn't have much relevance for us02:23
spivlifeless: because our common case atm is pull from bzr+ssh, which shouldn't involve any threads.02:24
lifelessbeep, wrong02:24
lifelessor perhaps02:25
lifelessI was thinking paramiko for a second02:25
lifelessbut then I remembered that paramiko isn't used for bzr+ssh02:25
lifelesshowever02:25
spivRight.02:25
lifelesswe do have a threading handshake-thunk in the server streaming and client streaming code02:25
lifelessdon't we ?02:25
lifelessconverting reads to generators02:25
spivWe do use threads for insert02:25
lifelessand generators to writes02:25
spivAnd for builtin TCP serve.02:25
lifelessright, TCP serve very obviously has threads02:26
spivNo thread for get_stream*, just insert_stream*02:26
lifelessso02:26
lifelessif the client doesn't read its buffer enough02:26
lifelessclient side buffer fills up02:26
spivBut we've been observing apparent oddness with get_stream02:27
lifelessos socket buffer is full - network will back off02:27
lifelessyes, oddness to02:27
lifelesstoo02:27
lifelessI filed a couple of bugs I want to chase down, as branch time is hurting the distro02:27
spivEven in the inserter case, there's no fixed size buffer.02:27
spivAs the network thread receives bytes it unwraps them from the HPSS layer and pushes them onto a Queue.Queue02:28
spivWhich "should" be fast, assuming the other thread(s) aren't starving the network thread of CPU time.02:29
spivYeah, I saw the bugs, they are marked Critical after all ;)02:29
lifelessoh good, for some reason I thought we had a fixedish queue02:29
lifelessthe reason the GIL thing stood out to me was that it describes networking threads getting starved out of proportion to the cpu load - AIUI02:30
spivWell, from reading from a pipe, we are a bit pessimistic, lots of small reads to avoid blocking.02:30
spivWhen reading from a socket we just always grab 4k or something.02:31
lifelessis bzr+ssh considered to be a pipe or socket ?02:31
spivA pipe.02:31
spivAnyway, for the bugs you filed, they are streaming from LP, so no threads in the server bzr involved.02:31
lifelessargh02:31
lifelessmaybe I should fix02:32
lifelessConflict: can't delete bzrlib/plugins/bash_completion because it is not empty.  Not deleting.02:32
lifelessfirst02:32
lifelessas its breaking the workflow for 2.0->2.1->trunk merges02:32
spivlifeless: you would make many people happy02:32
* lifeless gets out the economy sized yak shaver02:32
spivlifeless: I suggest "moving bzrlib/plugins/bash_completion to lost+found/" ;)02:32
nDuffHmm. I have a project where I'm interested in determining if any files in a large tree revert to prior states, and being able to scan said directory for changes quickly/efficiently; however, I _don't_ need to be able to retrieve content associated with said former states, just enough metadata to identify them.02:35
* nDuff is pondering whether bzrlib can be pervented to the purpose. :)02:35
lifelessso, you're happy with a lost+found directory approach ?02:35
lifelessperhaps bzr-lost+found, so as not to collide with the fs one02:35
lifelessnDuff: sure, you could use the dirstate module, or perhaps even working tree 4, directly.02:35
lifelessyou may find some areas where we are a bit fuzzy on layers - but we'd be delighted to sharpen them up to serve your purpose02:36
mkanatlifeless: You could just do .saved or something, too.02:36
mkanatlifeless: Somewhat like rpm does.02:36
spivlifeless: I'm happy with any improvement02:38
nDufflifeless, thanks for the encouragement -- I was already reading through the pydoc for bzrlib.dirstate, and will look into the API to the working tree code as well.02:38
spivlifeless: I think in practice most people will routinely delete everything in lost+found, and maybe rarely rescue one or two files from it02:39
lifelessmkanat: are there docs on precisely what rpm does ?02:39
mkanatlifeless: Good question.02:39
spivlifeless: but "rm -r lost+found" is a much easier way to recover a sane tree than the current situation02:40
mkanatlifeless: Brief search finds an email mention briefly: http://www.redhat.com/archives/rpm-list/2001-July/msg00213.html02:40
spivSo, I guess I am happy with the lost+found approach :)02:40
=== AfC1 is now known as AfC
spivmkanat: that doesn't seem to address this situation (that a managed directory is being deleted; what should happen if there are unmanaged files in it?)02:41
lifelessmkanat: so, we do ok on single files02:41
thumperhey02:41
mkanatlifeless: Yeah.02:41
thumperI just noticed that kdiff3 is back02:41
thumperhow can I use it to resolve merge conflicts?02:41
lifelessmkanat: we're talking about the case where we want to delete a directory X containing a file X/Y that is not versioned02:41
thumperis it easy?02:42
lifelessmkanat: or is versioned and is modified02:42
lifelessmkanat: the proposal is to move the entire path under a top level bzr-lost+found directory02:42
mkanatlifeless: Well, if it only contains unversioned files and is being deleted, then it's fairly easy to just say "make it .moved or .saved" or something.02:42
lifelessmkanat: and say that we've done that02:42
mkanatlifeless: I imagine that's the most common case--that's the one I've hit.02:43
lifelessmkanat: 99% of the time [NotAMetric statistic] its just a .pyc file so the entire thing should be deleted02:43
lifelessat the moment though, we leave the directory in place, and it gets in the way when you switch back02:43
mkanatlifeless: Unless it's some configuration file that's important to the functioning of some customization on a branch that you're merging into, or something like that.02:43
lifelessmkanat: which is why moving it under a different directory is better - the common case is to nuke all the things; the uncommon case is to want to add the containing directory again and put the file back02:44
lifelessmkanat: sure thats why we can't delete the file outright02:44
mkanatlifeless: Okay. Might want to call it bzr-deleted or something like that, for clarity.02:45
mkanatOr -removed.02:45
mkanatlifeless: I think it will be somewhat surprising behavior, though.02:45
lifelessI'm not sure thats more or less clear02:45
lifelessmkanat: the current behaviour sucks :)02:45
mkanatlifeless: I think lost+found definitely won't be clear to people who don't have that on their OS.02:46
mkanatlifeless: I think I'd find it somewhat more intuitive to rename the directory in place.02:47
lifelesswhat do you mean ?02:47
mkanatlifeless: I mean, if I were looking for where my files went, and I actually needed them.02:48
mkanatlifeless: I could also nuke them with clean-tree, which is how I nuke things now anyhow.02:48
lifelessso we print out whats happening02:48
mkanatlifeless: But bzr prints out so much stuff when merging, it might get lost.02:48
lifelessmkanat: it doesn't on switch, IME02:48
mkanatlifeless: Oh, that's true.02:49
lifelessmkanat: this is primarily an issue for switch, because you're often changing between radically different code bases.02:49
mkanatlifeless: I think I encountered it with "up" once, maybe, when I was updating with local commits.02:50
lifelesswe could introduce the concept of precious files and say 'ignored files can be deleted willynilly', and treat unversioned unignored files as precious [thereby avoiding an initial config file], but we'd still have an issue with that config file story, for intance.02:50
mkanatlifeless: Yeah.02:50
mkanatlifeless: I'm just thinking about the case where, let's say I have two or three of those directories, I switch, and then I do "bzr status", and I see only one directory that I never added.02:51
mkanatlifeless: I think treating it like a contents conflict and making it .moved would be more in line with what I normally expect bzr to do.02:52
lifelessdo this02:53
lifelesssit in bzr.dev02:53
lifelessbzr switch 2.102:53
lifelessbzr switch 2.002:53
lifeless[using whatever layout you want :)]02:53
lifelessoh, but dp a 'bzr selftest nothingtodo' at each step, to compile pyc files02:54
mkanatOkay.02:54
lifelessspiv: the 2.0->2.1 merge could use a NEWS merge magic to move the new items in 2.0.unreleased to 2.1.unreleased02:55
lifelessspiv: any ideas how? file a bug ?02:55
lifelesswe should squelch /usr/lib/pymodules/python2.6/lazr/uri/__init__.py:19: UserWarning: Module launchpadlib was already imported from /usr/lib/pymodules/python2.6/launchpadlib/__init__.py, but /usr/lib/pymodules/python2.6 is being added to sys.path02:57
lifeless  import pkg_resources02:57
lifeless too02:58
lifelessactualy, lazr should02:58
spivlifeless: that would be good, file a bug03:02
lifelessI did already, weeks back03:02
lifelessnow to find it03:02
mkanatlifeless: Ah, okay.03:02
mkanatlifeless: (I just went through the process.)03:02
spivlifeless: there's the related case of "new item in feature branch, when merged to trunk (or stable branch) move to right place"03:02
mkanatlifeless: See, I think that if there were anything important in there, and they were in a deep directory structure, trying to sync them back into the right place from a lost+found directory would be difficult.03:03
lifelessmkanat: cp -r lost+found/foo ./ would do it quite well03:04
spivlifeless: you're possibly thinking of bug 517490?03:04
lifelessmkanat: where foo is a top level dir there, not the whole path03:04
ubot5Launchpad bug 517490 in Bazaar "news_merge confused by added sections (affected: 1, heat: 6)" [Low,In progress] https://launchpad.net/bugs/51749003:04
mkanatlifeless: On *nix, if you're familiar enough with the command line.03:04
lifelessmkanat: explorer will permit copying to merge things too03:05
mkanatlifeless: True. Does the OS X interface, also?03:05
lifelessmkanat: I believe so03:05
mkanatlifeless: Okay.03:05
mkanatlifeless: Well, why not just not consider them conflicts?03:05
mkanatlifeless: That is, just leave them where they are, unversioned, and don't add a conflict.03:06
lifelessmkanat: thats what we do at the moment, and that is annoying us03:06
lifelessspiv: no03:06
mkanatlifeless: Is that new since 2.0? (I see conflicts in bzr status.)03:06
lifelessspiv: grab 2.1 from lp, merge in 2.0. there is a small conflict - resolve that [its not what I'm talking about]. Then compare the result to what I committed in lifeless/bzr/2.103:06
mkanatlifeless: I see how it gets annoying when you move back to bzr.dev.03:07
mkanatlifeless: Renaming them to .moved or .saved would work too, though, wouldn't it? You could do .saved.1 if there was already a .saved there.03:07
spivlifeless: I agree that isn't 51749003:08
spivlifeless: just that it's the closest I remember you filing03:08
lifelessmkanat: so if we renamed them to .moved or .saved, (the dir that is), we'd have less issues with successive switching back03:09
lifelessbut we'd still clock up an impressive amount of cruft03:09
mkanatlifeless: Yeah, true.03:09
mkanatlifeless: And in the switch case, you probably don't want that stuff sticking around, usually.03:10
mkanatlifeless: What if switching puts that directory in .bzrignore though?03:10
lifelessideally we'd just delete the dir - but that needs more info than we have [today], or a change in the definition of 'what bzr does to ignored files'03:10
lifelessmkanat: so in branch A its versioned and B its unversioned and ignored ? we still promise not to delete files we can't recreate03:11
mkanatOkay.03:11
mkanatSo we use the versioning status of it in branch B to decide whether it goes in lost+found?03:11
mkanatI understand the convenience of it. I still think that it will be surprising to people who don't know the rationale, though.03:11
spivmkanat: I think some surprise is inevitable, given the constraints.03:13
lifelessso the current concept I have in my head is:03:13
lifelesswhen a directory is deleted by a transform and it has children we can't dispose of gracefully, we move the directory <somewhere>03:13
lifelessunlike files *most* conflicts of this nature will be because of build products / editor temporary files (including ones bzr makes) and so on.03:14
lifelesse.g. __init__.py~1~03:14
lifelessI think Tom may have had it right when he had precious files, in arch.03:15
lifelessso a question here is, is it better to do this now, or do precious files first, or just one of the two things03:15
lifelessif we just do precious files (or junk files - they are symmetrical enough), we could gracefully dispose of more directories.03:16
lifelessand the thing wouldn't be as fantastically annoying03:16
lifelessif we just move directories we can't dispose of further than we do today, we won't get conflicts switching back and forth, but we will still pile up the cruft03:17
lifelessif we do both, we won't get conflicts, and we won't pile up as much cruft03:17
spivAvoiding cruft is less important than avoiding conflicts.03:18
lifelessso, I think, I'm going to just make these conflicts a little harsher - to dir.deleted03:18
lifelessif thats not enough we can go for a single place to move the cruft, and-or junk|precious file categorisation03:18
lifelessmkanat: thanks for asking all those questions03:19
mkanatlifeless: Thanks for having the conversation with me. :-)03:19
spivIf you do dir.deleted, make sure it still solves the problem with multiple levels of deleted dir, each with unmanaged files.03:19
lifelessspiv: naturally - I already had that on my mental tests to write list03:21
lifelessspiv: so - did you see what I mean with the 2.0->2.1 merge?03:21
spivlifeless: I haven't yet run those commands, but the description made sense.03:23
lifelessspiv: so, I should file a bug ? Basically I want to copy upwards new things to show where they arrive in the series03:23
spivlifeless: yes03:24
lifelessis there a tag for this03:24
spivI thought there was, but it doesn't seem to exist anymore.03:25
lifelesshttps://bugs.edge.launchpad.net/bzr/+bug/58363003:34
ubot5Launchpad bug 583630 in Bazaar "Support the news mangling we do when merging up across series in newsmerge (affected: 1, heat: 0)" [Wishlist,Confirmed]03:34
lifelessspiv: https://bugs.edge.launchpad.net/launchpadlib/+bug/552419 is the warning to squelch bug03:37
ubot5Launchpad bug 552419 in python-launchpadlib (Ubuntu) "Multiple module import warning from ubuntu-bug (affected: 5, heat: 30)" [Undecided,Confirmed]03:37
spivlifeless: ?03:38
lifelessspiv: the launchpadlib already imported thing I was saying we should suppress03:38
lifelessjust FYI - gary closed it as invalid, need to find out why03:39
spivI'm still lacking context, I don't recall noticing that bug myself.03:39
lifelessoh03:39
lifelessare you running lucid ?03:39
spivYes.03:39
lifelesscan you please run feed-pqm bzr (from trunk)03:40
lifelessI see this:03:40
spivWhen would I notice it?  Using hydrazine?  Or just lp:... lookups?03:40
lifeless./feed-pqm bzr03:40
lifeless/usr/lib/pymodules/python2.6/lazr/restfulclient/__init__.py:19: UserWarning: Module launchpadlib was already imported from /usr/lib/pymodules/python2.6/launchpadlib/__init__.py, but /usr/lib/pymodules/python2.6 is being added to sys.path03:40
lifeless  import pkg_resources03:40
lifelessloaded existing credentials03:40
lifelessbzr lp-propose03:40
lifelessetc03:40
lifelesslp: lookup doesn't use launchpad apis.03:40
lifeless./feed-pqm bzr03:40
spivYeah, that's what I thought.03:40
lifeless/usr/lib/pymodules/python2.6/lazr/restfulclient/__init__.py:19: UserWarning: Module launchpadlib was already imported from /usr/lib/pymodules/python2.6/launchpadlib/__init__.py, but /usr/lib/pymodules/python2.6 is being added to sys.path03:40
lifeless  import pkg_resources03:40
lifelessbah pastefail03:40
lifelessloaded existing credentials03:40
spivI don't see that with hydrazine trunk.03:42
lifelessok, thats *interesting*03:42
lifelessfresh lucid install ?03:42
lifelesswhat version of setuptools? do you have the launchpad ppa ?03:42
spivDepends on what you mean by fresh ;)03:42
spivRecently upgraded to lucid (< 1 month), but the system as a whole was originally installed >3 years ago, IIRC.03:43
lifelessok, not fresh :)03:43
lifelesswell, will need to dig deeper03:43
spivpython-setuptools 0.6.10-4ubuntu103:44
spivI don't think I have the launchpad PPA03:44
lifelessand pkg-resources?03:53
lifelesshmm03:53
lifelesspossibly pycentral or whatever to blame to03:53
lifelesstoo03:53
spivSame version of pkg-resources03:54
lifelessok03:54
lifelesssomething to track down later03:54
lifelessfor now; time to go pickup bank card, fuel the car - do the stuff that got truncated before03:55
lifelesswon't be long03:55
* igc lunch04:10
lifelessI need a teddy bear04:46
lifelessspiv: got a minute04:46
lifelessactually scratch that, XXX time.04:47
lifelessspiv: so we might want to move to 64K reads on pipes and sockets when we're in streaming mode05:55
lifelesskeep the buffers as empty as possible05:55
lifelessor for cleverness value, figure out the current buffer size regularly and start reading in that size05:55
lifelesscan scale up quite large05:55
spivYeah.05:55
lifelessMBs05:55
spivAlthough at some point large reads may start hitting perf issues in our code05:56
spmziggy bytes!05:56
spivDue to relatively naïve string splitting, etc.05:56
lifeless\o/ partial branch fail -> uploading entire bzr now.05:56
lifelessspiv: yeah. OTOH if we find those we can fix em05:56
spivRight.  Just something we should be aware of.05:57
=== tchan1 is now known as tchan
lifeless:(06:20
lifeless:!bzr push lp://staging/~lifeless/bzr/propose-accepted06:20
lifeless119387kB    74kB/s | Fetching revisions:Inserting stream06:20
lifelessspiv: another data point, we're doing many small writes in that push ^06:34
lifelesswrite(7, "b\0\0\f\346B3289\ntexts\n\ngroupcompress-"..., 3307) = 330706:34
spivlifeless: Hmm :(06:37
spivI thought we'd fixed that :(06:38
lifeless- 207016kB     0kB/s | Fetching revisions:Inserting stream06:40
lifelessa tad excessive, methinks06:40
spivFor bzr.dev?  Oof.06:41
lifelessyeas06:41
lifelessnow I get to test my patch06:42
lifelessYAK SHAVING06:42
spivI hear you have particularly woolly yaks in NZ.06:42
lifelesshmm, trunk is unhappy for lp-propose06:44
lifelesshowever, dinner, then digging.06:44
lifelessNotFound: Object: <canonical.launchpad.systemhomes.WebServiceApplication object at 0x6d90d90>, name: u'1.0'06:44
lifeless <>06:45
lifelessback07:53
lifelessok, so lp-propose in trunk is failing to get an OAuth token07:54
lifelessmgz: did you do the edge->production mass change?08:02
* lifeless needs to find it again08:02
mgzhttp://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev/revision/5244/bzrlib/plugins/launchpad/lp_propose.py08:02
mgzrevert that, see if it magically fixes it08:02
lifelessmgz: it does08:02
lifelessmgz: or rather, reverting the entire patch fixed it08:02
mgzokay, so, either I didn't know what I was doing and broke something, or a change is needed elsewhere as well08:03
lifelessmgz: possibly/probably the latter. Or cached credentials may be at fault.08:03
lifelessmgz: I propose to:08:03
lifeless - back it out now [so dailies don't get broken etc]08:03
mgzcan you see if just backing out that line is sufficient?08:04
lifelesssure08:04
mgznarrows down what needs looking at. if it's just that, nix it.08:04
lifelessyeah, that makes it work for me08:06
lifelesshttps://code.edge.launchpad.net/~lifeless/bzr/propose-accepted/+merge/2574708:06
lifelessmgz: so, roll back that one change and you'll inwestigate ?08:09
mgzyeah, revert that file then, and maybe someone who knows launchpadlib can say what was wrong08:10
lifelessI think its probably something to do with the beta->1.0 change. Or something.08:10
mgzor yeah, I can poke further08:10
lifelessso, I think the key elements are:08:10
lifelesslets open a bug on this08:10
lifelessso we can close the one about xmlrpc08:10
mgzright, makes sense.08:11
lifelessI'll do that08:11
mgzare there any elements not done for the current bug? it's filed against three projects.08:11
lifelesswhats the current bug # ?08:11
lifeless58167008:12
mgz...I just spent fifteen seconds failing to copy that from my address bar >_<08:12
mgzmouse/keyboard coordination lacking08:12
lifeless:)08:13
lifelesshttps://bugs.edge.launchpad.net/bzr/+bug/58366708:13
ubot5Launchpad bug 583667 in Bazaar "bzr talks to edge API servers to propose merges etc (affected: 1, heat: 0)" [Wishlist,Confirmed]08:13
* mgz unedges the url to subscribe08:14
lifelessalso, naughty, the 581760 change didn't have NEWS entry.08:14
lifelessplease always put stuff in NEWS if it is going to matter to anyone.08:14
mgzdidn't really seem user-facing to me, but maybe it is08:14
lifelessnew cached credentials08:15
lifelessevery user having to re-auth against lp is fairly user facing :)08:15
mgzah.08:15
lifelessnow, arguably we should use the same token file on edge and prod08:15
lifelessI'll file a bug on that in a sec.08:15
=== radoe_ is now known as radoe
lifelessmgz: https://code.edge.launchpad.net/~lifeless/bzr/lp-propose-host/+merge/25749 review kplease08:22
mgzdone.08:27
lifelessoh also - for judging whether to put something in NEWS08:31
lifelesswe have a programming userbase too; so 'user facing' really means 'end user or plugin/api consumer or devs-should-know'08:31
lifelessif that makes sense08:31
mgzhm, sure.08:34
spivWe even have an "Internals" section in NEWS08:42
spivFor changes likely to be significant for other bzrlib devs, I guess, even if it's not strictly meant to affect end users or 3rd party code.08:43
lifelessmgz: anyhow, enough said about it - I think you need to dial up the 'tell people about it' sensitivity a bit and its all good.08:54
igcnight all09:13
lifelessgnight09:19
mgzhmpf, need to get some of my harder stuff to a landable state, not just doing these ten-minute changes10:04
lifelesstrue10:17
lifelessand I'm going to encourage you on the testtools exception encoding thing too.10:17
lifelessthough I think its temporarily under control10:18
mgzI'm struggling to write that in a non-black magic way10:18
lifelessif you want a teddy bear, tell me your thoughts10:18
lifelessI'm utterly failing to do $fridaynight10:19
mgzwell, to change how testtools formats the traceback, I'm adding a method _exc_info_to_unicode to TestResult10:19
mgzwhich is basically just _exc_info_to_str but with traceback.format_exception swapped out10:20
mgzbut means I need to to do one of 1) duplicate the function, 2) monkey-patch, 3) crazy low level stuff10:21
mgzand it only gets more squiggly from there10:22
mgzthe bits that need to be change are scattered across unittest, traceback, and linecache and not in any coherant manner10:24
lifelessok10:24
lifelessso lets start at the bottom10:24
lifelesswe know we want a fixed linecache ?10:24
lifelesslets say we have a fixed_linecache module10:24
lifelesswhich we use and wraps linecache10:24
lifelessignoring how we choose to use it, it can be tested well there, yes ?10:25
mgzhm, yeah, the other option I was considering there was giving it promoted tuples, which also store the file encoding10:25
lifelesssure, that seems orthogonal to where you put the adaption stuff10:25
lifelesssomewhere we need the code that fixes linecache10:25
lifelessso lets get that solid with tests.10:25
lifelessthen a fixed traceback, with tests. We could use mocking or dependency injection, or just integration tests for that.10:26
mgzwas it selftest you suggested as a template for whole-source-module tests?10:26
mgztest_selftest that is10:26
lifelessoh10:26
lifelessbzrlib's test_plugins does something like that10:26
lifelessas does testrepository10:27
lifelesstestrepository uses testresources... hmm10:27
mgza, testrepository, that was it10:27
lifelessjml: how would you feel about testtools growing a make check dep on testresources?10:27
mgzbut yeah, the test_plugins way makes sense to me10:27
jmllifeless: fine by me.10:28
mgzthis is going to be 90% corner cases, but should all end up making sense, and cover the common(ish) case of locale'd os messages10:28
jmllifeless: I kind of half-think they should be one project anyway10:30
lifelessmgz: ok, so you could use either - have a look at both. If you want to use testresources, I'll happily have the generic resources from testrepository lifted up into testresources in a new resources package, or something.10:30
lifelessjml: possibly10:30
lifelessman, today was a bug filing day10:30
mgzI see you've done an impressive number10:30
mgzfive or so just from lp-propose investigations10:31
lifelessGaryvdM: actually bzr-search wasn't quite fixed; Its fixed now.10:34
GaryvdMlifeless: cool10:42
lifelessspiv: apparently resolve --take-other will delete the dir and its contents11:12
lifelessthis is tolerable but still ... icky, I think11:13
* lifeless pops up a level11:17
=== mrevell is now known as mrevell-lunch
=== mrevell-lunch is now known as mrevell
lifelessjam: gmorning13:15
GaryvdMamanica: Mow about hacking together this Sunday?14:55
GaryvdMamanica: Is your wife busy?14:55
bialixmow?14:57
GaryvdMHi bialix14:57
bialixhey Gary :-)14:57
jammorning lifeless15:09
jamPeng__: history-db just landed in trunk, if you want to check it out :)15:09
amanicahi GaryvdM :-) , I'll have to check with her, but I'm keen to get some things done this weekend. will have to let you know15:10
bialixhey amanica! how's your trip back?15:11
GaryvdMamanica: Ack15:11
amanicahi bialix, I slept like a baby in the plane. it still took me a couple of days to recover15:11
amanicabialix, I used some of the russian you tought me today15:12
bialixyep, the same here15:12
bialixoh, nice15:12
amanicagood to here15:12
bialixyou make your coleage shy?15:12
amanicano :-) , but she said she "isn't lazy!"15:12
bialixwork hard, don't be lazy!15:12
amanicayep :)15:12
bialixlol15:12
bialixand what you said?15:13
amanicaI told her the story about why I thought about learning that in russian15:14
amanicaher russian is a bit rusted though.15:14
amanicabialix, you never tought me how to say goodbye15:15
bialixbye == poka15:16
amanicawow15:16
bialixor even paka15:16
amanicacool15:16
bialixgoodbye is longer15:16
bialixdo svidanya15:16
bialixdirect translation: for next meeting15:17
amanicacool thanks15:17
GaryvdMbialix, amanica: qannotate now has Stable Scroll®15:19
amanicaGaryvdM sweet!15:20
GaryvdMbialix, amanica : It also trys to keep the selection stable, but is a bit iffy if the selection is inside a modified hunk15:21
bialixStable Scroll?15:22
GaryvdMbialix: If you change revision/refresh/change encoding, it keeps you scroll position.15:22
GaryvdM*your15:23
bialixCOOOOOOOOOL!15:23
beunoremoved:15:25
beuno loggerhead/wholehistory.py15:25
beuno\o/15:25
* GaryvdM must take a look at history-db to see if it can be used in qlog15:26
GaryvdMjam: You said earlier that history-db landed in trunk. Is that in loggerhead?15:27
jamGaryvdM: yes15:27
nigelbIf I want to import a cvs repository to bzr to dissect commits, how do I go about it?15:38
jamnigelb: cvs2bzr would be my suggestion15:38
jamin the cvs2svn project15:38
nigelbjam: is there documentation somwhere I can refer to while it installs??15:39
jamNot sure offhand15:39
nigelbno problem,s I'll look at man :)15:39
jamalso, you probably want bzr-fastimport15:40
=== deryck is now known as deryck[lunch]
nigelbwell, now the problem is cvs2bzr fails because I dont' have a cvsroot directory, sigh15:43
jamit expects you have the raw repo, I believe15:44
nigelbgreat.  I only have an annonymous checkout15:46
nigelbNothing I can do in that case?15:46
jamask launchpad to import it for you?15:48
nigelbjust for dissecting a commit, wouldn't that be abuse? ;)15:49
jamhow much history do you want?15:49
jamlp doesn't really mind15:49
jamthe project might even already be there :)15:49
nigelbthere is a bug fixed between 1.2.2 and 1.2.3 release and cvs isn't friendly enough to examine the thing15:50
nigelbthe project uses source forge15:50
nigelbjam: as you said, there is a project16:14
nigelband I just requested code import. :)16:14
=== IslandUsurper is now known as IslandUsurperAFK
=== JFo is now known as JFo-swap
bialix  File "C:\Python25\lib\site-packages\testtools\content.py", line 91, in <lambda>16:51
bialix    content_type, lambda: [value.encode("utf8")])16:51
bialixUnicodeDecodeError: 'ascii' codec can't decode byte 0xd2 in position 425: ordinal not in range(128)16:51
bialixand what I should do?16:52
=== deryck[lunch] is now known as deryck
jelmerbialix: it looks like value is a plain string and not a unicode string16:56
vilabialix: ping mgz ;-)16:56
bialixyes, it is16:56
bialixI'm trying to write test for diff16:57
bialixthere is only plain strings16:57
bialixbut with non-ascii characters16:57
bialixmgz: ping!16:57
=== beuno is now known as beuno-lunch
bialixvila: what I can do about this problem?17:05
bialixI'm sure my test is correct now, but I can't go further17:06
vilabialix: use pdb to identify the string17:08
bialixwhich string?17:08
vilaI think there is an env variable to make selftest call pdb on execptions17:08
vilabialix: value17:08
vilabialix: the one that is failing17:08
bialixjust print was enough17:10
bialixfound17:10
* mtaylor thinks bzr launchpad-login should grab info from launchpad and set bzr whoami... would make getting set up on a new box quicker17:32
jelmermtaylor: or the other way around perhaps17:36
jelmermtaylor: it could just ask launchpad for the credentials associated with the current users id17:37
jelmernot the credentials but the username17:37
jelmerhaving launchpad provide your credentials for you is probably not such a good idea :-)17:37
mtaylorgood point17:37
=== IslandUsurperAFK is now known as IslandUsurper
=== beuno-lunch is now known as beuno
GaryvdMjam: Hi18:17
GaryvdMjam: I'm trying to grork history-db18:17
jamhi GaryvdM18:17
GaryvdMjam: Is there a README?18:17
GaryvdMjam: I have some questions, I don't want bug you if there are docs I should read first. The only doc I could find is dotted_revno_caching.txt18:21
jamGaryvdM: that's the only doc I know of :). What are you looking for?18:21
jamQuerier is what you are going to want to be using18:21
GaryvdMjam: How do I get it to create and populate a db?18:22
GaryvdMjam: Does it update on tip change or read?18:22
GaryvdMjam: or revision fetch?18:23
jamGaryvdM: history-db has hooks to auto-update on tip changed18:23
jamhowever, anytime you use Querier, it also ensures that the data has been imported18:24
jam(Querier.ensure_branch_tip() will import if it hasn't already)18:24
jamYou might want to use "bzrlib.plugins.history_db._get_querier" which will cache a Querier object on the Branch object18:25
GaryvdMjam: Cool, so if you do a tip change with out the plugin, things will be ok.18:25
jamyep18:25
GaryvdMjam: How do I get it to create and populate a db?18:25
jamThe way the plugin is written, it will manage a db if you set "history_db_path=XXX"18:26
jamIf you want qbzr to depend on it existing, then we can look at having a custom field (loggerhead does this)18:26
GaryvdMjam: enviroment var, or config?18:27
jamconfig18:27
nigelbok, so LP cannot import from sourcforge? running into issues because anonoymous access still requires a password :/18:27
GaryvdMjam: I plan to make qlog use it if availible, else work the old way18:27
jamnigelb: I'm pretty sure you can import from the https:// anon access18:29
jamAt least, google shows other projects being imported from there18:29
jamGaryvdM: so one option is to use Branch apis that history-db interacts with18:29
jamsuch as Branch.iter_merged_revisions()18:29
nigelbjam: hm, I'll read that up18:29
jam(iter_merge_sorted() ?)18:29
GaryvdMjam: ack18:30
GaryvdMjam: can history db's be shared accross branches and repos?18:30
nigelbjam: um, ok I can't find anything for that :(18:38
jamGaryvdM: yes, and it is intended to be used that way18:38
jam(it was intentionally designed to share history between branches)18:39
GaryvdMjam: You have a cmd_history_db_create, but it's not registered.18:41
jamGaryvdM: it should be, as I use it18:42
jamhmm. I wonder if I deleted the registration by accident when I removed some other stuff18:42
jamprobably18:42
lifeless<early> moin18:42
GaryvdMHi lifeless, wow, very early.18:43
jamGaryvdM: restored18:43
GaryvdMjam: I'll check for you18:43
GaryvdMoh - og18:43
GaryvdM*ok18:43
jamI got rid of a bunch of them, accidentally included this one18:43
lifelessGaryvdM: yes, sleep fail.18:47
lifelesstail end of jetlag getting its revenge, I think.18:47
GaryvdM~/bzr/bzr.dev $ bzr history-db-create18:47
GaryvdMbzr: ERROR: sqlite3.OperationalError: unable to open database file18:47
GaryvdMjam: Must I create it my self with sqlite?18:47
GaryvdMlifeless: sorry to hear that18:48
jamGaryvdM: no, it should create it itself, but you have to tell it where with --db or by setting history_db_path=XXX18:48
GaryvdMI'm like jelmer - no fail once I get to bed, but I fail alot in getting to bed18:49
GaryvdMjam: I did18:49
jambzr history-db-create --db=test.db -d .18:49
jamtry that18:49
GaryvdMjam: global config in ~/.bazaar/bazaar.conf18:49
jelmerGaryvdM: lol :-)18:49
GaryvdMok18:49
jelmerthat's a nice way of putting it18:49
jamhmm... still should have worked18:50
jamdoes the *directory* where you wanted to create the db exist?18:50
jamI only create the db itself18:50
GaryvdMjam: command worke18:50
GaryvdMjam: let me check18:50
=== joerg_ is now known as joerg
GaryvdMjam: sorry - I had a typo in my .conf18:51
jam:)18:51
lifelessjam: the brain in 2 days ;P18:52
jamlifeless: nice. I should have mentioned that a lot of the mobs don't see a lot of use.18:54
lifeless:>18:54
jamAt high level, it tends to be ichi swarm because of all the towers18:54
jamand fast rebuild time18:54
jamand 2 ichi == 1 crabatron, but they build in <1/2 the time18:55
lifelessah18:55
lifelessdesigning games is hard18:55
lifelessdesigning is hard18:55
=== khmarbaise_ is now known as khmarbaise
* GaryvdM curses backyard monsters..... (I'm addicted...)18:55
lifelessthats it, friend request for you.18:56
jamI'm just waiting for Robert to come out of protection so I can raise his town :)18:56
lifelessraise or raze :P18:57
GaryvdMdam - just got the trogen, and ackpected...19:00
GaryvdM*accepted19:00
GaryvdMlifeless: Your yard is very neat - I wish I could restart...19:04
lifelessGaryvdM: you can move things19:05
lifelessGaryvdM: long click on something19:05
GaryvdMAh - that is very cool19:06
lifelessmy yard is probably sillyly laid out and jam will toast me19:12
lifelessbut perhaps not19:12
jamlifeless: well, it depends what level your towers are :)19:12
lifeless5 ?19:13
jambut generally, you need overlapping fire on towers19:13
jamor i can send 20+ mobs to take the towers down one-at-a-time19:13
lifelessI wish the fire zone showed19:13
lifelessI *think* my snipes are all overlapping19:13
jamabsolutely, I really miss that from DD19:13
jamsnipers are excellent at taking out non tower attackers19:14
jamusually only 1-shot 1-kill19:14
MethsWhich game is this?19:15
jambut it takes 4 shots to kill an ichi with a level 5 tower19:15
jamMeths: Backyard Monsters, (a facebook game)19:15
jamand I can build something like 40 ichis for one go19:15
jamoh, and upgrading the flinger should take low priority19:15
jamyou can fling multiple times19:15
jamlifeless: on the flip side, a full aoe tower takes 20 hits, but can kill all 40 ichis at once19:16
jamanyway, nothing really stands against multiple waves19:16
GaryvdMjam: Could we add a branch lines table, or is there an easy to query for it?20:08
jamdoesn't that only matter when you have them expanded?20:09
GaryvdMjam: If the rev no in dotted_revno in 3 fields, we could SELECT UNIQUE on the first 2. Would that be fast?20:09
GaryvdMjam: hmm - intresting point20:09
jamso certainly we should think about what you need20:10
jamBut if you expand, and see that there is 1.2.100, you can certainly send another query for 1.2.1-9920:10
jamwhich should be pretty cheap given the existing apis20:10
jamthey can all be done in parallel20:11
GaryvdMjam: could I query for 1.2.* ?20:11
jamnot going through Querier20:12
jamprobably could from an SQL perspective, would have to think about it20:12
jamI think so20:12
jambut until you expand, you don't know if you want 1.2 or 10.5020:13
GaryvdMjam: with current schema a LIKE, but 3 fields would be cheaper20:13
GaryvdM^ query for 1.2.*20:13
GaryvdMjam: logic would be like this:20:14
jamGaryvdM: the cost is going to be in walking the mainline, since you need to exclude other branches, etc.20:14
jamI don't think SELECT UNIQUE vs LIKE is going to be a big deal20:14
GaryvdMjam: I was thinking of to queries: select unique was to get a list of branch lines (which I might not need)20:16
GaryvdMlike was for getting the revisions in a branch line.20:17
GaryvdMand LIKE would not be needed for that if the rev no was stored as 3 fields20:18
GaryvdMI'm trying to think about what we load in to mem, and when....20:19
jamGaryvdM: so we can certainly discuss how qbzr could look20:19
jamlike just grabbing the mainline to fill a page to start20:20
jamand then using 'iter_merge_sorted' when expanding a node20:20
jamto get just what was merged into that rev20:20
jamand possibly filling out the rest of the branch line20:20
jamI'm not sure if the latter is needed or not20:20
jamvs just having a 'tail' pointer that could be expanded20:20
GaryvdMjam: yes - was just about to say that20:20
GaryvdMfor branches like emacs and OOo20:21
jamAnd iter_merge_sorted() is available on Branch and optimized today by bzr-history-db20:21
jamso it would allow you not to directly think about bzr-history-db20:21
jambranch already caches its merge sorted result20:21
jamso it will be cheaper if you have it, but okay if you don't20:21
jamok== no worse than today I tihnk20:22
jamloggerhead couldn't because it doesn't hold onto a branch between requests20:22
GaryvdMjam: I create a fake merge rev for viewing multiple branches, and branches with pending merges. Could we add a revision and its merge sort, with the revid a hash of the parnent ids?20:23
jamGaryvdM: you could certainly do something like that20:24
jamnot sure how to inject that into Importer20:25
jambut i'm sure we could find a way20:25
GaryvdMjam: Cool - I think this could work well.....20:25
=== davidstrauss_ is now known as davidstrauss
=== james_w` is now known as james_w
=== verterok_ is now known as verterok
exarkunAre repositories safe for concurrent access?23:09
lifelessyes23:10
exarkunHooray.  Thanks.23:11
lifelesswhy do you ask?23:15
exarkunCoz I'm about to have a repo shared between multiple mostly-uncoordinated actors doing checkouts of various things23:23
exarkunSo I'd like for the repo to not end up corrupted by this. :)23:23
exarkunDo you know if the same goes for the stuff in ~/.cache/bazaar/svn?  Coz I'm checking out from an svn repo.23:24
* exarkun waits ages for the initial 'bzr checkout' to complete so he can see what happens next23:27
lifelessless so but enough23:29
lifelessone particular bit that isn't safe is ~/.bazaar/locations.conf23:29
lifelesswhich bzr-svn writes to (once per repo I think)23:29
lifelessthere is a bug on this23:29
exarkunyea, I filed that one23:32
exarkunHumm23:36
exarkunIs it okay if my 'bzr checkout' gets SIGKILL'd?  I mean, if I start it over again, does it pick up where it left off, or does it have to start from scratch?23:37
exarkunIt was still working through the write-to-.bzr/repository/upload/ step when it got killed23:37
exarkun(my build system is configured to think 1200 seconds without output means something is broken :/)23:38
lifelessexarkun: the various components are created in a safe order but generally you'll start over. If you're using bzr-svn it does repository insertions in batches23:38
exarkunI'm just doing "bzr checkout svn://...", I'm not sure if that's bzr-svn or not, but I guess so?23:38
lifelessif you're using a shared repositroy and bzr-svn, it will resume from ~ where it left off23:38
lifelessthats bzr-svn23:38
lifelessyou're using a shared repository if you've done 'bzr init-repo' somewhere above the directory you're checking out into23:39
exarkunYea, that's what I've done23:39
lifelessin which case it should resume for you23:43
lifelessif this is twisted... you can also seed repo with an already converted branch by pulling that into it anywhere23:43

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