[00:14] <mwhudson> poolie: yes, i can reproduce with standalone trees
[00:14] <poolie> wow
[00:14]  * mwhudson biles another fiug
[00:14] <poolie> this is kind of surprising
[00:15] <mwhudson> yes
[00:15] <poolie> it's probably shallow but i'm surprised it has not been hit before
[00:17] <mwhudson> https://bugs.edge.launchpad.net/bzr/+bug/283479
[00:23] <mwhudson> poolie: oh, i know what's going on
[00:23] <mwhudson> poolie: unlock is trying to unlock all of the repositories
[00:23] <poolie> yes, i know :)
[00:23] <mwhudson>             for repo in self._fallback_repositories:
[00:23] <mwhudson>                 repo.unlock()
[00:23] <mwhudson> ok, i hadn't figured this out yet :)
[00:23] <poolie> the question is, why was the fallback repository not locked
[00:24] <poolie> or actually, why does it ever work
[00:24] <mwhudson> well, nothing locks it
[00:24] <poolie> i guess because we normally change it without locking the branch
[00:24] <poolie> which i think is actually a bug
[00:24] <mwhudson> see the other bug i filed today :)
[00:28] <mwhudson> poolie: i changed the description of the bug to be more honest :)
[00:34] <mwhudson> poolie: i guess the fix is to make set_stacked_on_location @need_write_lock and then lock the added repository somehow or other
[00:34] <mwhudson> but still leave the fallback repo unlocked when you open a branch
[00:35] <mwhudson> (unless now is the time to make "open and write lock a branch" a more primitive concept ...)
[00:36] <poolie> i agree up to <mwhudson> but still leave the fallback repo unlocked when you open a branch
[00:44] <lifeless> abentley: hey, do you know of code to go from iter_changes <-> inventory_delta ?
[00:45] <lifeless> (that is, to transform an inventory delta into a valid iter_changes output (without include_unchanged or want_unversioned); and/or vice vera to generate an inventory delta when given a iter_changes iterator
[00:47] <abentley> lifeless: Can't think of anything off the top of my head.  Though TreeTransform can emit both iter_changes and inventory_delta.
[00:47] <lifeless> abentley: I'm looking at making faster deltas between inventories given the capabilities of CHKInventory
[00:48] <lifeless> abentley: but I don't want to expose inventory centric API's :)
[00:49] <pdf23ds> It would be nice if the commit command exposed the timestamp parameter of the commit object, as that way I could write my importer program using the bzr commandline.
[00:49] <abentley> lifeless: I always figured inventory_delta -> iter_changes was a lossy conversion, so I don't know about going backward.
[00:49] <pdf23ds> I think I have a patch that should do it to builtins.py. Is there a way I can apply that to a binary windows download?
[00:52] <lifeless> pdf23ds: if you're writing an importer I really encourage you to use the bzrlib api and python
[00:52] <lifeless> pdf23ds: as for changing the windows binary, I think you can edit the zip contents
[00:53] <pdf23ds> My converter is for svn and extremely hacky. I doubt anyone else would be interested.
[00:53] <lifeless> abentley: so, add_inventory_delta is 20 times faster than add_inventory, currently
[00:53] <pdf23ds> Would I need to compile to a .pyo?
[00:53] <lifeless> pdf23ds: have you tried bzr-svn ?
[00:54] <pdf23ds> I have a multiple repository setup with many weird renames and only a few revisions. I don't want to even bother.
[00:54] <pdf23ds> Multiple project repository, that is.
[00:54] <lifeless> ok, well up to you
[00:55] <lifeless> anyhow, I'd  remove the pyo and  pyc for the file you edit in the zip
[00:57] <pdf23ds> Cool, it works.
[00:57] <pdf23ds> Thanks.
[00:58] <pdf23ds> Mercurial has that option, but I'm not going to go with mercurial because I don't like the branching as much.
[00:59] <pdf23ds> Where would I request that this feature be added?
[01:00] <lifeless> pdf23ds: file a bug in launchpad.net/bzr
[01:00] <lifeless> however, we want the CLI to be good for humans, for scripting we encourage the use of python directly, it helps keep the UI cleaner
[01:02] <pdf23ds> Well, I program mainly in C# and don't really enjoy python. I wouldn't want to do much work in python.
[01:02] <lifeless> I believe there are C# bindings floating around
[01:02] <lifeless> anyhow, please file the bug
[01:02] <lifeless> with your patch
[01:03] <lifeless> and you've gotten your conversion done now right? which is a one-time thing
[01:03] <pdf23ds> Well, it's an interactive and painstaking conversion, but it's now on its way.
[01:03] <pdf23ds> I won't really need the patch after that.
[01:04] <pdf23ds> Or probably need to do any other hacking on bzr. :)
[01:04] <pdf23ds> But I'm glad it's python and not C or Haskell. :)
[01:07] <pdf23ds> Ugh. stupid registration.
[01:07] <pdf23ds> I'll do it for the sake of open source.
[01:10] <pdf23ds> BTW, the view/annotate thing gives an error clicking on builtin.py from launchpad web source browser, but I can download the file. Should I report a bug on that one too?
[01:17] <pdf23ds> IRC sure is useful.
[02:31] <lifeless> abentley: if you're around
[02:31] <lifeless> abentley: I'd love feedback on the RFC I just sent about install_deltas
[02:33] <abentley> lifeless: You weren't very clear on whether this was deltas for everything or just for inventories.  It definitely seems reasonable if just for deltas.
[02:33] <abentley> if just for *inventories*.
[02:35] <lifeless> abentley: good point; I was thinking of deltas of the inventory, and asking the tree for iter_file_bytes when new texts are needed
[02:36] <abentley> lifeless: And Revisions and Signatures would be fulltexts?
[02:36] <lifeless> revision would be an object
[02:36] <lifeless> signatures are the bytes of the signature as in install_revisions
[02:37] <abentley> lifeless: So is the "deltas" parameter really an iterable of tuples?
[02:38] <lifeless> yah
[02:38] <lifeless> each tuple contains all the data for an individual revision - revision, signature, tree, basis_rev, inventory_delta
[02:39] <lifeless> an alternative signature Iw as thinking off
[02:39] <lifeless> *of*
[02:40] <lifeless> was to pass in the source repo
[02:40] <abentley> lifeless: It seems like you could calculate the delta from the tree itself, no?
[02:40] <lifeless> and not pass the tree object in
[02:41] <lifeless> abentley: you can, and I have an install_revisions version that does this, but its not as efficient, because as its currently structured we check everything in the tree, and do the delta against the target repo not the source
[02:41] <lifeless> abentley: I'm wary of changing the behaviour of install_revisions, I'd rather add a new method that is explicitly delta based than find someone depends on a corner case of install revisions
[02:42] <abentley> lifeless: There's no Tree method that can calculate a delta efficiently (at least under ideal conditions)?
[02:43] <lifeless> abentley: there are two issues; one is that the ideal tree to calculate the delta against may not be present in the set being copied
[02:43] <lifeless> abentley: secondly is that the idea tree to calculate against may be representation dependent - that is:
[02:43] <lifeless> time(make_delta(Tree-rev1-repoA, Tree-rev2-repoA)) may be much smaller than
[02:44] <lifeless> time(make_delta(Tree-rev1-repoB, Tree-rev2-repoA))
[02:44] <lifeless> less abstractly
[02:45] <lifeless> for xml inventories, doing a iteritems on the _byid attribute is very fast; for CHK inventories, doing that is very slow (because you page in all the pages of the two inventories)
[02:45] <lifeless> for chk inventories, walking to common pointers is very fast
[02:46] <abentley> lifeless: If you take a source repository, it seems a lot like Repository.fetch
[02:46] <lifeless> for xml_inventory <-> chk_inventory its worst case of all - you have to load the entirety of both inventories, and chk inventories require more IO to load a full single inventory (because its fragmented)
[02:46] <lifeless> abentley: (optionally taking a source repo) it does start to look a lot like fetch; thats why I decided against doing that
[02:48] <lifeless> abentley: on the other hand, perhaps I should just doing fetch-cleanups so that this can happen more totally within the normal fetch structure. (I'm looking at this for fetch from pack-0.92->chkinventory)
[02:49] <abentley> lifeless: I think that might be better.  Interfaces with iterables of tuples make me nervous, for some reason.
[02:50] <lifeless> abentley: well, install_revisions() takes a iterable of tuples
[02:50] <lifeless> abentley: I was patterning off that in that respect
[02:51] <abentley> That's true.  I was actually thinking of iter_changes.
[02:52] <abentley> lifeless: The fetch API doesn't care what two consenting repositories do behind closed doors, so I think it's a good way to achieve flexibility.
[02:52] <lifeless> abentley: right; note that fetch() is already involved here
[02:53] <lifeless> abentley: fetch -> InterDifferingSerializer -> install_revisions
[02:53] <lifeless> abentley: what was in my head was to change that to fetch -> InterDifferingSerializer -> install_revision_deltas
[02:53] <lifeless> abentley: the main thing being to move away from size_tree being embedded in the API
[02:53] <abentley> lifeless: But you could replace InterDifferingSerializer with InterDeltaLovingRepositories.
[02:54] <lifeless> abentley: sure, it still will either have, or want to use, a function/method that operates on deltas
[02:55] <lifeless> abentley: and there is no reason for it to only match delta loving repositories IMO
[02:55] <abentley> lifeless: Sure, but it has the option of doing *all* the file texts, then *all* the inventories, etc.
[02:56] <lifeless> abentley: well, InterDifferingSerializer has that option too doesn't it ?
[02:58] <abentley> lifeless: Yes, and it would look much cleaner if install_revisions wasn't involved.
[02:59] <lifeless> abentley: right; so thats what I'm proposing to do: to change IDS to not use install_revisions; and to use a new method that focuses on deltas instead
[02:59] <lifeless> abentley: another approach is to start working on the repository level streaming stuff again
[02:59] <abentley> I don't understand why you want to do it that way, instead of implementing it directly on IDS.
[03:01] <lifeless> abentley: I think I'm assuming that there may be some repo centric code involved to get best performance
[03:01] <lifeless> abentley: so putting that on repo lets it be interface tested easilly
[03:02] <lifeless> I may be drawing the lines early/wrng
[03:03] <lifeless> abentley: also for reuse
[03:04] <lifeless> something embedded in the inter-object is harder for e.g. importers, bundles, etc to use
[03:04] <abentley> lifeless: If Repo is an input, it's similarly difficult for importers, bundles, etc.
[03:05] <lifeless> abentley: right; note that I didn't include Repo as an input
[03:05] <lifeless> abentley: I *considered* it
[03:09] <abentley> lifeless: Yeah, and we were discussing that option, weren't we?
[03:09] <lifeless> abentley: oh, I didn't click that it was a sub-discussion :P
[03:10] <lifeless> abentley: anyhow, the discussion has been great
[03:10] <abentley> I guess, you know, a 5-tuple makes me uneasy.
[03:10] <lifeless> yah
[03:10] <lifeless> its close to an object is definitely better
[03:11] <abentley> Yup.
[03:11] <lifeless> its one-per-rev, so object creation count is bounded by history
[03:11] <lifeless> I'm comfortable making this objects
[03:11] <abentley> Or perhaps a dict with namespaces?
[03:11] <lifeless> a dict would be faster than an object
[03:12] <abentley> lifeless: Yeah, object creation isn't that expensive here.
[03:12] <lifeless> lets say a dict for now, and a private-but-tested method
[03:12] <lifeless> once it stabilises a bit, we can go for an object if we want to
[03:13] <abentley> lifeless: You'll lose ordering, and lose the ability to take a generator as input.  Is that okay?
[03:14] <lifeless> abentley: oh uhm clarity: I was proposing an iterator of dicts
[03:14] <lifeless> each dict has the data for a single revision
[03:14] <lifeless> the transform being (5-tuple -> dict)
[03:15] <abentley> lifeless: I mean that the dict would hold the entire input.
[03:15] <lifeless> abentley: oh
[03:15] <abentley> That's why I said "namespaced".
[03:15] <lifeless> abentley: I think that will not work due to memory
[03:15] <abentley> But your approach sounds fine.
[03:15] <lifeless> abentley: ok cool; yay compromise
[03:16] <lifeless> thanks
[03:16] <abentley> lifeless: np
[04:02] <poolie_> lifeless, spiv, i'm going to read https://code.edge.launchpad.net/~spiv/bzr-usertest/exit_codes/+merge/1309 unless you're already on it
[04:03] <lifeless> poolie_: thanks, that would be useful
[04:03] <lifeless> poolie_: if you're in a reviewing mood
[04:03] <lifeless> I have a commit-uses-delta patch needs review too
[04:03] <poolie_> lp reviews have more reasonable urls than BB
[04:13] <poolie_> spiv, are you around?
[04:17] <spiv> I am.
[04:29] <poolie_> nm, i'm replying in launchpad
[04:37] <poolie_> spiv, it's approved with mumblings
[04:55] <poolie_> lifeless, orcadas may be better now; i'd changed the script to separate out stderr and i think it was not getting into the right file
[04:55] <poolie_> let me know
[04:55] <poolie_> the pulls are still pretty slow
[05:41] <lifeless> poolie_: yes, thts why I'm working on pull :P
[05:42] <poolie_> :)
[06:09] <spiv> poolie_: could you merge http://people.ubuntu.com/~andrew/bzr/push-unlock-1.8 to 1.8 for 1.8 final?  I sent a mail to the list a while back asking for someone with permission to merge it, and I just realised it hasn't happened yet.
[06:09] <poolie_> sure
[06:10] <spiv> poolie_: thanks
[06:39] <vila> hi all
[06:49] <poolie_> hi vila
[06:59] <vila> poolie_: ping
[07:10] <lifeless> gnight all
[07:13] <gour> night
[09:05] <poolie_> hi
[09:17] <poolie_> lifeless, nice explanation of formats
[09:28] <lifeless> poolie_: thanks; felt compelled to reply to s turnbull
[09:29] <vila> poolie_: ping
[09:30] <poolie_> hi vila
[09:30] <vila> lifeless: One thing worth mentioning on the subject is that everything changes
[09:30] <vila> Being able to handle these changes is what matters
[09:30] <vila> but overall, very nice summary, thanks for that :)
[09:31] <jml> lifeless: hi
[09:32] <poolie_> that's a good way to put it vila
[09:32] <jml> lifeless: would now be a good time to get subunit and testresources into pyunit-friends?
[09:32] <poolie_> i think the experience of upgrades and ui could be better
[09:32] <poolie_> i think the bug about it is 90302
[09:32] <poolie_> not sure when we'll get to it though
[09:32] <poolie_> btw http://benchmark.bazaar-vcs.org/ now shows the machine load
[09:34] <vila> poolie_: You couldn't even dream of making such a comment if bzr haven't already experienceS in upgrades... and really, *by default* nobody *has* to care about our formats most of the time
[09:34] <jml> vila: I have to care about formats most of the time.
[09:34] <vila> jml: You're not the average bzr user :-)
[09:34] <jml> :)
[09:35] <vila> jml: Of course *you* have to care, but aren't you happy that 'bzr upgrade' exists ?
[09:35] <jml> vila: very happy, actually.
[09:36] <vila> Man, when bzr-1.6 begun to warn me about all my old branches still using old formats, I was just surprised there was so many, but none of the upgrades (like in None) has a single problem
[09:36] <a_c_m> is it possable to commit a "nothing changed" revision? We have several repro's and we want their revision id's to stay in sync
[09:37] <jml> a_c_m: it is possible (bzr commit --unchanged) but that sounds like a strange thing to want.
[09:37] <jml> a_c_m: why do you want the revnos to be the same?
[09:39] <vila> ubottu: bug #90302
[09:39] <a_c_m> jml: we have 3 repro's for each project, /code /files and /database
[09:40] <a_c_m> jml: dev's only have commit access to /code, but the dev server pushes out to /files /code /database
[09:42] <a_c_m> jml: were still trying to work out the best process for what we need to do...
[09:42] <jml> a_c_m: *nod*
[09:43] <jml> a_c_m: what do you hope to gain from synchronizing revnos?
[09:43] <a_c_m> jml: being able to pull a full site (code, files and db) by knowing the revision number
[09:44] <a_c_m> jml: else they will get out of sync, and it will be harder to get a stapshot
[09:44] <a_c_m> no?
[09:44] <poolie_> a_c_m, hm, interesnting
[09:45] <poolie_> there is commit --unchanged which will do this
[09:45] <poolie_> you should probably also set append_revisions_only=True in the branch conf to stop people pushing over the branches and getting them out of sync
[09:47] <a_c_m> wow, i've just tested... i didnt think bzr could do partial commits ie from sub folders. That might solve the problem no?
[09:48] <a_c_m> if we just dont give write access to the /database and /files folders...
[09:49] <a_c_m> if they try to commit, from / it will just fail. but if they commit from /code - all will be well ?
[09:52] <poolie_> a_c_m, you can do this in the working copy
[09:52] <poolie_> the server can't enforce those permissions
[09:52] <a_c_m> ahh
[09:52] <poolie_> though it would be feasible to write a server side hook that does check it
[09:52] <poolie_> not so hard but you would need to learn a little bit about the bzrlib api
[09:54] <a_c_m> poolie_: it think its going to be simpler to use multi-repositories.
[09:54] <a_c_m> poolie_: ugg...
[09:56] <poolie_> hm
[09:57] <poolie_> how strong do you need the security to be? how about a shell hook in the non-developer checkouts that just makes sure they've only changed the files they're meant to?
[09:58] <a_c_m> poolie_: humm, could be but it needs to be really simple and cross system (mac, linux and windowS)
[09:59] <poolie_> so just to back up a bit
[09:59] <poolie_> if people are committing to these things independently, how do you know which version of the code goes with which version of the db?
[10:00] <a_c_m> let me back up and explain the situation
[10:04] <a_c_m> ugg its quite intricate... bear with me
[10:08] <a_c_m> 3 repro's - code, database and files. Developers need to check out all 3, but only every update code, the dev server can be triggered to sync, which means, pulling in code and committing database and files. Developers should never be able to commit to files and database, except to keep the revision numbers in sync.
[10:09] <a_c_m> looking at it, your solution of a single repro with a server side hook is probably my favorite, how long might that take someone who knows what they are doing?
[10:12] <matkor> hmmm how long bzr reconciel may work ? It's 10min already at and of bar ....
[10:13] <AfC> matkor: (is the CPU still being used, or is it idle?)
[10:14] <poolie_> a_c_m, so what does the server do when it commits to the database and files?
[10:14] <poolie_> i guess i'm wondering: if there's no strict dependency between them
[10:15] <poolie_> why not just have say a 'deployment' branch of all three, and push to that when it's ready to go out
[10:15] <poolie_> similarly for 'staging' and whatever
[10:22] <matkor> AfC: CPU still used
[10:30] <a_c_m> so after a quick chat with poolie_ (many thanks) i'm going to try to clarify my problem again
[10:32] <poolie_> a_c_m, so the content in the database that's committed by the server - where does that come from?
[10:32] <poolie_> do people also log in to the server running the master db and make changes there?
[10:32] <a_c_m> yes
[10:32] <a_c_m> via drupal's main interface
[10:33] <a_c_m> then we hope to have a sync.php script which dumps the db and performs the sync with the various repro's/folders
[10:38] <a_c_m> ok, apologies for re-iterating what i'm trying to achieve, but i think i have it in a understandable format now :)
[10:39] <a_c_m> Were building out the development process for a new Drupal site. We want the DEV server to only ever be updated by a script which pulls from BZR, so no manual editing ever happens.
[10:39] <a_c_m> Drupal is brilliant but has a challenges, it stores a lot of config information in its database, so this needs to be backed up as well. For this reason we are thinking we need 3 repros (or folders), CODE, DATABSE and FILES.
[10:39] <a_c_m> The developers should be able to check out all 3, but only every COMMIT to CODE. The DEV server will have a script on it which will dump the database and then COMMIT the user generate files to FILES and the database dump to DATABASE, after that it pulls in the CODE from bzr.
[10:39] <a_c_m> With their code now on the DEV server, they log onto it and perform any of the db changes they need via the main drupal interface, once done, they commit thier chagnes again by re-running the sync script.
[10:40] <a_c_m> Question is, how can i best achive this with BZR?
[10:44] <poolie_> i think you should start by just having 3 branches, and committing to each of them either when you change the master db or whatever
[10:44] <poolie_> it's possible that the code will get out of sync with the drupal config, but i don't think that problem is actually technically soluble
[10:45] <a_c_m> yeah, i'm starting to see that...
[10:45] <a_c_m> oh, how about a post commit hook on the CODE repro ? which fires off a ﻿--unchanged commit on the other 2?
[10:45] <a_c_m> (to keep the revisions in sync)
[10:46] <a_c_m> i think, it might be ok to just have CODE and FILES (and store the db in FILES)
[10:47] <a_c_m> so there would need to be the corresponding hook on FILES to trigger a ﻿--unchanged on CODE...
[10:47] <a_c_m> but that might do it ?
[10:58] <vila> matkor: repository size is the main factor (overly simplifying), what is yours ?
[11:10] <matkor> vila: 121 [MB] .. it's now 1h of cpu time but progressbar is back in middle after "Inventory regenerated." message ...
[11:11] <vila> matkor: it can take far longer than 1 hour, feel free to kill it and run it at night
[13:27] <vila> guilhembi_: ping
[13:28] <guilhembi_> vila: pong
[14:04] <uws> jelmer: pulling from webkit svn into my bzr branch using bzr-svn 0.4.13 icw bzr 1.8rc1 is very slow
[14:04] <uws> jelmer: I remember to have had performance issues before.
[14:19] <jelmer> uws, can you run with -Dtransport and see which steps are slow (by looking at ~/.bzr.log) ?
[14:19] <jelmer> or perhaps, just pastebin ~/.bzr.log somewhere?
[14:21] <uws> jelmer: running with -Dtransport now
[14:21] <uws> determining changes 23541/37602
[14:21] <uws> ^^ takes as while as well...
[14:24] <uws> jelmer: each "svn update" takes time, and it's mostly cpu bound
[14:24] <uws> 260.253  svn update -r36507:36508
[14:24] <uws> 267.228  svn update -r36508:36509
[14:25] <uws> jelmer: Aii... if I cancel and retry (as I did with -Dtransport) previously pulled revisions from the interrupted "bzr pull" are lost it seems... :S
[14:28] <jelmer> uws, yes, that's right because of the way bzr works
[14:29] <jelmer> uws, bzr-svn stores revisions in groups of 100 I think
[14:31] <uws> jelmer: Ok, I'll just leave it running for a while then :)
[14:32] <uws> jelmer: I'm running   "bzr -Dtransport pull"  right now, but there's not much debug info in .bzr.log, just the "svn update" lines and a few "XYZ copied from ABC" messages.
[14:35] <jelmer> uws, and that's the step that's slow?
[14:36] <glade88> hello.. If I have pushed a code once to a branch and I add a component to one of the subfolders of the code on my hard drive, how do I make the new change?
[14:37] <glade88> I have done: bzr commit -m "Added plugin"
[14:37] <uws> jelmer: between 5 and 15 seconds in between each svn update line
[14:37] <glade88> and the bzr push <branch>
[14:37] <jelmer> uws, could it be that the server is just slow?
[14:37] <uws> jelmer: sometimes even a lot more, ~30s
[14:38] <uws> jelmer: could as well be... it has been faster before ;)
[14:48] <uws> jelmer: But if it's the SVN server being slow, why is bzr eating all my cpu :)
[14:53] <jelmer> uws, ah, hmm
[14:54] <jelmer> uws, I guess you'd better wait for 0.5 in that case, that should be a lot faster
[16:47] <abentley> vila: Is there an SSH smart server we can use for testing?
[16:48] <vila> I don't think so
[16:49] <abentley> vila: Drat.  Makes it hard to test what user bzr+ssh is using...
[16:49] <vila> abentley: I know the feeling :-/
[16:49] <a_c_m> hey all
[16:50] <vila> I ahve vague plans to add some in the lp:~vila/bzr/local_test_server plugin but didn't find the time so far
[16:50] <a_c_m> anyone know why 'bzr ci -m "test" ' wouldnt work in a php exec() statment, but 'bzr status' does?
[16:55] <vila> jam: ping
[17:15] <abentley> vila: OTOH, maybe I don't need a successful bzr+ssh operation...
[17:16] <vila> as in whitebox testing that will attempt to connect with the right user ?
[17:17] <vila> s/that/& you/
[17:17] <abentley> vila: right.
[17:21] <vila> abentley: ha ! I just re-read the FIXME at the end of test_config.py :-/
[17:21] <jelmer> james_w, I can reproduce Ted's problem now as well
[17:22] <abentley> vila: Agreed :-/
[17:28] <james_w> jelmer: do you know what the cause is?
[17:29] <james_w> jelmer: did you also see the bug about the notification icon not being a notification?
[17:29] <jelmer> it's only started appearing recently so I suspect it's indeed some upstream change
[17:30] <vila> abentley: I suppose your need is urgent ? Because I have less vague plans to implement http auth servers in lp:~vila/bzr/local-test-server and bzr+http, I never thought about ssh but that may be possible (but beware of the caveats I encoutered when trying to do ftp servers)
[17:30] <jelmer> james_w, Yes, I saw it but I'm not sure I agree with the submitter
[17:30] <james_w> I kind of do
[17:30] <james_w> I think there will be more complaints about it
[17:31] <vila> abentley: May be you can just plug an *existing*, running bzr+ssh server like I do in this plugin
[17:31] <abentley> vila: not deadly urgent, but Launchpad developers have been barking their shins on it.
[17:32]  * vila search for barking their shins...
[17:32] <abentley> barking-their-shins~=banging-their-shins
[17:33] <vila> Hu hu, should be the rough equivalent of the french "pleurer leur mere" :)
[17:34] <abentley> Raining their mother?
[17:34] <vila> crying :)
[17:34] <jelmer> (-:
[17:34] <jelmer> james_w: it's not just there for notification, also to allow you to e.g. enable gateway to LAN
[17:34] <vila> raining is pleuvoir
[17:35] <jelmer> james_w, perhaps it should just be disabled by default
[17:35] <abentley> vila: Right.
[17:35] <james_w> jelmer: yeah, I think that would be better.
[17:45] <vila> Woohoo ! Fixing bug #277537 with bzr reconcile requires 20 h, I was down to 2h10 last night with a dedicated plugin, and now I'm down to 312 *seconds*
[17:46]  * vila had to share :)
[17:46] <vila> jam: ping ping ^
[17:48] <LarstiQ> woh
[17:48] <LarstiQ> vila: it's fair to say it wasn't entirely optimized? :)
[17:48] <vila> LarstiQ: Hold on ! I didn't optimize reconcile, I did a specific reconciliation
[17:49] <vila> for a specific bug applicable only on specific repos based on results acquired with a bzr check that needded 32 hours
[17:49] <vila> but yet... :)
[17:50] <LarstiQ> vila: seeing as I have repositories with the exact same problem, I'm still interested :)
[18:03] <a_c_m> anyone know what the return status of 3 means (or ideally where i can find a list of what the return status numbers mean?)
[18:04] <LarstiQ> a_c_m: the same as diff(1), iirc 3 is modified
[18:05] <LarstiQ> hmm, maybe not
[18:06] <LarstiQ> a_c_m: right, 1 is modifications present in `bzr diff`, and 3 in general for bzr is an error occurred
[18:06] <a_c_m> LarstiQ: i'm trying to call bzr from php via exec... and getting that...
[18:06] <a_c_m> any ideas?
[18:06] <LarstiQ> a_c_m: I'd look at the output of bzr
[18:07] <vila> if bzr returns 3 you should find something in stderr (or the php equivalent)
[18:07] <a_c_m> vila: LarstiQ: bzr --version works... bzr status ... returns nothing, but when i run the same command in a shell, it works fine
[18:08] <LarstiQ> a_c_m: bzrlib/errors.py, EXIT_OK=0, EXIT_ERROR=3, EXIT_INTERNAL_ERROR=4
[18:08] <a_c_m> LarstiQ: humm ok.
[18:09] <LarstiQ> a_c_m: common causes, running `bzr st` while not in a branch
[18:09] <vila> a_c_m: I don't know php but you need to get back the output from stderr and stdout, that's where bzr will explain why it fails
[18:09] <a_c_m> LarstiQ: humm ok will do some exsautive testing... thanks
[18:09] <a_c_m> vila: thanks too
[18:10] <LarstiQ> a_c_m: which makes sense in an exec context. Are you sure the cwd is what it is supposed to be? (In other cases, the environment might not be what you think it is)
[18:12] <a_c_m> LarstiQ: thats the thing i've tried full urls e.g. /usr/bin/bzr st /home/me/foo/dir/
[18:12] <a_c_m> LarstiQ: still exists with 3
[18:13] <LarstiQ> a_c_m: and /home/me/foo/dir/ is actually a branch?
[18:14] <LarstiQ> a_c_m: if that works in the shell, I'm not sure what is different with php
[18:14] <a_c_m> LarstiQ: yeah works in shell
[18:14] <a_c_m> :(
[18:14] <LarstiQ> a_c_m: you could also check ~/.bzr.log
[18:14] <a_c_m> LarstiQ: aaah looking
[18:25] <a_c_m> LarstiQ: the plot thickens! bzr info work...
[19:25] <a_c_m> LarstiQ: worked it out
[19:25] <LarstiQ> a_c_m: what was it?
[19:25] <a_c_m> LarstiQ: it was due to the www-data user (who was doing the exec())
[19:25] <a_c_m> thier home dir was /var/www
[19:26] <a_c_m> which www-data doesnt have write access to, so couldnt make the .bazzar folder
[19:27] <LarstiQ> ~/.bazaar/ you mean?
[19:27] <a_c_m> yeah
[19:27] <LarstiQ> ah yes
[19:27] <a_c_m> as www-data is homed to /var/www
[19:31] <LarstiQ> a_c_m: how did you figure this out?
[19:37] <a_c_m> exec('whoami')
[19:38] <a_c_m> then su www-data
[19:38] <a_c_m> and then tried doing the same commands
[19:38] <a_c_m> i also get "No handlers could be found for logger "bzr"" message
[19:38] <a_c_m> but it doesnt seems to matter
[21:38] <jelmer> w00t
[21:39] <jelmer> "bzr svn-serve" can now natively provide svn checkouts from bzr branches
[21:39] <jelmer> and it's *fast*
[21:40] <jelmer> not as fast as svn itself obviously, but < 15 seconds locally for bzr.dev
[21:40] <Odd_Bloke> jelmer: So I do 'bzr svn-serve my_branch' and then can 'svn checkout' that branch?
[21:40] <jelmer> Odd_Bloke, yes
[21:40] <jelmer> e.g.  svn co svn://145.97.197.14/trunk bzr.dev-trunk
[21:40] <jelmer> (that's running with bzr.dev now)
[21:41] <jelmer> It's not as quick as locally as I haven't added zlib support yet
[21:43] <Odd_Bloke> 21:41:58 < lamby> Has it been tested with git-svn? *g*
[21:44] <jelmer> It provides only a subset of the svn smart server commands, but there's no reason why that shouldn't work :-)
[21:44] <jelmer> in particular, it can't do incremental updates yet, only full checkouts
[21:44] <jelmer> which would be a bit of an obstacle for git-svn ;-)
[21:45] <thumper> jelmer: why is this good?
[21:45] <thumper> jelmer: I'm just wondering who is going to use this functionality
[21:46] <jelmer> thumper: It means being able to provide svn access to users while migrating to bzr
[21:46] <thumper> does git offer this?
[21:46] <jelmer> thumper: E.g. you can use the netbeans svn plugin with a bzr repository
[21:47] <thumper> ah, that's kinda nice
[21:47] <LarstiQ> thumper: ie, leverage all of the 3rd party svn tools (but I guess you already got that)
[21:47]  * thumper nods
[21:47] <jelmer> thumper, also, it allows users who are already familiar with svn a way to check out the source code of a project in bzr without having to install or learn bzr
[21:48] <thumper> and we all know there are lots of svn users out there
[21:48] <jelmer> this last bit was one of the concerns within the Samba team while we were considering various DVCSes
[21:48] <jelmer> thumper, Git doesn't have anything like this as far as I know
[21:50] <Verterok> jelmer: WOW! that's awesome!
[21:55] <jelmer> it's also a bit faster than "bzr co --lightweight", 1m11 vs 3m07 here
[21:59] <LarstiQ> jelmer: have you analysed what makes the difference?
[22:01] <jelmer> no, but I suspect it's because bzr co --lightweight hasn't been optimised yet
[22:02] <jelmer> LarstiQ, svn co basically means sending all the tree contents without requiring acks from the client until everything is received
[22:03] <LarstiQ> jelmer: right, so I was wondering if it's over the wire roundtrips/fileformat, or perhaps that svn_serve does less work client side, or what
[22:06] <jelmer> LarstiQ, both
[22:06] <jelmer> the number of round trips is far less with svnserve (4)
[22:07] <jelmer> and there's no dedicated verb for Repository.revision_tree() in the bzr smart server
[22:07] <mwhudson> jelmer: wow, cool
[22:08] <wingo-tp> good day bzr hackers!
[22:09] <wingo-tp> lifeless.
[22:09] <wingo-tp> can i interest you in a bug
[22:09] <wingo-tp> bugs are a good source of protein
[22:09] <wingo-tp> https://bugs.launchpad.net/bzr/+bug/239499
[22:11] <LeoNerd> Hrm... bzr doesn't seem to like ControlMaster shared ssh
[22:11] <LeoNerd> Control socket connect(/home/leo/var/run/ssh-master-leo@cel.leo:22.sock): Connection refused
[22:11] <LeoNerd> srw------- 1 leo leo 0 2008-10-13 00:42 ssh-master-leo@cel.leo:22.sock
[22:12] <LarstiQ> LeoNerd: I did use the combination in the past
[22:12] <LeoNerd> Ya.. I'm sure it has worked
[22:13] <LeoNerd> 28109 connect(3, {sa_family=AF_FILE, path="/home/leo/var/run/ssh-master-leo@cel.leo:22.sock"...}, 51) = -1 ECONNREFUSED (Connection refused)
[22:15] <jam> LarstiQ: 'bzr co --lightweight' still does all the work locally (so it has to read the indexes, request the deltas, etc.)
[22:16] <jam> I believe spiv was going to implement a smart verb for "get_record_stream()" which would allow us to stream the texts directly to the client
[22:16] <jam> along with other benefits
[22:16] <LarstiQ> jam: yet it doesn't store any of those?
[22:16] <LarstiQ> that's ... suboptimal
[22:16] <jam> "store any of those" ?
[22:16] <jam> the deltas, yeah
[22:17] <LarstiQ> sorry, too broad
[22:17] <LarstiQ> jam: in delta form, or just deflated?
[22:18] <jam> LarstiQ: I think it can depend on the parameters for 'get_record_stream()'
[22:20] <jam> but for building a working tree, it would set the "give me fulltexts".
[22:21] <jam> As yet, we don't have a habit of having the bzr:// protocol do deflate
[22:21] <jam> it *could*, but if you are tunneling over ssh, it typically does it for you
[22:28] <james_w> jelmer: hey, only just got round to looking at the bzr-gtk changes, sorry.
[22:28] <james_w> jelmer: does the change require that bzr-stats be installed during the build?
[22:29] <james_w> jelmer: or is that the "is_versioned" thing?
[22:30] <jelmer> james_w, It's required while creating the .orig.tar.gz
[22:31] <james_w> ok
[22:31] <james_w> I was going to re-use the 0.95 .orig.tar.gz
[22:32] <jelmer> you should be able to just add a patch that adds the pickle file
[22:33] <james_w> is the pickle file binary?
[22:34] <jelmer> nope
[22:34] <james_w> there is a credits.pickle file already
[22:34] <james_w> does it just need installing?
[22:34] <jelmer> yeah
[22:34] <jelmer> the changes I mentioned yesterday should take care of that
[22:36] <james_w> http://paste.ubuntu.com/58061/
[22:36] <james_w> that'd the diff I extracted from what you said
[22:36] <james_w> sorry for being slow
[22:37] <jelmer> did I include r607 ?
[22:38] <james_w> ah, just got the range wrong, I'm sure
[22:40] <james_w> ah, much better, thanks
[22:45] <poolie_> hi
[22:45] <james_w> thanks jelmer, I've just uploaded the change to install what's there, I'll sync up after release
[22:45] <james_w> hi poolie_
[22:48] <wingo-tp> going to sleep -- but lifeless, i really would appreciate a look at that repo corruption bug -- I've had it for months at this point
[22:49] <Peng_> jelmer: ping?
[22:49] <jelmer> Peng_, pong
[22:51] <Peng_> jelmer: Hi. I have a bzr-svn 0.4 issue: if I 'bzr branch' from an svn checkout, it builds the branch, but tracebacks when building the working tree with "AttributeError: 'SvnWorkingTree' object has no attribute '_transport'".
[22:51] <awilkins> jelmer: bzr svn-serve ooh
[22:51] <Peng_> I should file a bug, right? :P
[22:51] <jelmer> Peng_: There's already a bug open about it - it's fixed in trunk
[22:52] <Peng_> jelmer: Ah, OK. :)
[22:52] <jelmer> 'morning poolie_
[22:52] <Peng_> jelmer: Should I use the trunk with bzr.dev? Is it fairly stable?
[22:53] <poolie_> hi jelmer
[22:53] <jelmer> Peng_, no, trunk is still unstable at this point. it will eat your cat, etc
[22:53] <Peng_> OK. I like my cat.
[22:53] <Peng_> I totally didn't think to search the bug database. Whoops.
[22:54]  * awilkins thinks your cat is nice. With ketchup and fries.
[23:08] <fullermd> You're crazy.  Ketchup is all wrong for cat.  Need something mayo-based.
[23:11] <woeye> hi all
[23:11] <awilkins> Step 1: Gut, clean, and defur cat  2) Rub skin with salt, cumin, and oil  3) Spitroast on fire.
[23:11] <fullermd> There's certainly room for a variety of opinions.  There is, after all, more than one way to skin a cat.
[23:12] <fullermd> Way #28: Krazy Glue and an electric toothbrush.
[23:14] <awilkins> Way #79: Tie a pot magnet to it's tail and throw it into the Large Hadron Collider
[23:18] <davidstrauss> Is it possible/sane to checkout from another checkout?
[23:19] <fullermd> I doubt it would be sane, whatever else it may be.
[23:21] <davidstrauss> fullermd: What would you recommend for running a dev -> staging -> production flow?
[23:21] <fullermd> Way too broad   :)
[23:21] <davidstrauss> make dex and production both checkout of staging?
[23:22] <davidstrauss> dev*
[23:22] <fullermd> In MY flows, dev is local thing to the developer in whatever fashion, staging (well, doesn't exist, but the closest analog) and production are just different places that the files are copied by a developer.
[23:23] <fullermd> But I don't have any of the three being branches or anything.  Version control doesn't touch deployment.
[23:24] <fullermd> If they were, presumably they'd be different branches, and changes were moved up the tree as they were considered to advance.
[23:25] <fullermd> e.g., devs would have whatever dev stuff they were dev'ing, staging would be a branch presumed-cooked dev bits were merged into, and production would be periodically pull'd staging.
[23:26] <fullermd> But the best (or even 5th-best) answer depends pretty directly on exactly what and how you're dev'ing, what your deployment mechanism and schedule look like, yada yada.
[23:35] <davidstrauss> fullermd: thanks anyway :-)
[23:38] <lifeless> davidstrauss: if you want a waterfall of sucessively more tested locations
[23:39] <lifeless> davidstrauss: I would use pull and branches
[23:39] <davidstrauss> thanks
[23:39] <lifeless> because you may wish temporary divergence, for cherrypicking/emergency bugfixes in e.g. prod
[23:50] <davidstrauss> Easier question: how can I get a listing of the pending updates? In svn, I use svn status --show-updates.
[23:51] <bob2> bzr missing
[23:51] <bob2> oh, for a checkout?
[23:51] <davidstrauss> bob2: yes, for a checkout
[23:55] <awilkins> davidstrauss: bzr missing --theirs
[23:55] <awilkins> davidstrauss: THat's just reviiosn logs though
[23:55] <spiv> Hmm, bzr missing probably should work in checkouts.
[23:55] <awilkins> you can do status netween 2 branches, that should work
[23:55] <davidstrauss> spiv: when i run it in a checkout, i get "bzr: ERROR: No peer location known or specified."
[23:55] <spiv> awilkins: that doesn't appear to report revisions in the branch that aren't yet in the checkout
[23:56] <spiv> davidstrauss: sorry, I meant "it ought to be fixed to work", not that "it should already work for you" :)
[23:59] <spiv> davidstrauss: you can do "bzr missing --theirs BRANCH", where BRANCH is the path or url of the branch the checkout is of.
[23:59] <spiv> I thought there was an easier way, but I can't remember what it is.