[00:00] beuno: FWIW, my branch is at http://bzr.mattnordhoff.com/loggerhead/loggerhead/358322-sql-dirs/ . LP hasn't mirrored the latest revisions yet. [00:02] Peng_, cool. Looking good [00:03] I'll send a merge proposal in 40 minutes after LP mirrors it again. :\ [00:03] lifeless: I have to go, but I'll keep searching tomorrow. From what I can see, the code is getting my credentials but it's getting lost somewhere. [00:04] Thanks for the help. [00:05] blfgomes: ok; please do file a bug [00:05] as vila may know the answer [00:05] I will [00:05] see ya [01:22] morning all [01:22] G'morning! [01:30] lifeless: you may have already got a bug/todo about this [01:30] lifeless: but it would be really great if there could be something like a commit message associated with each thread of a loom. [01:32] jml: there should be a bug [01:32] jml: as I want that [01:37] arse. [01:37] I can't upgrade a loomified branch6 format branch. [01:44] lifeless: how do you get a log of the commits in a thead? [01:44] thread [01:45] bzr log -r thread:..-1 [01:45] not quite what you want [01:46] file a bug [01:46] loom needs someone to just spend a couple of weeks on it [01:52] I'd say more than a couple. [01:52] but maybe not a lot more :) [01:54] bzr: ERROR: Start revision not found in left-hand history of end revision. [01:54] nice [01:56] da fuck [01:56] is that from thread:..-1? [01:57] oh, you'll want to set -n0 or whatever it is probably [01:57] I suspect the log work done hasn't taken looms into consideration [01:57] in a loom the left-hand-history is the work done on the thread [01:57] and up-thread does merges into the thread [01:58] file a bug [02:00] on bzr? [02:02] yes [02:02] task on both, if like [02:08] * jml discovers another bug :) [02:14] lifeless: https://bugs.edge.launchpad.net/bzr/+bug/362667 [02:14] Ubuntu bug 362667 in bzr-loom "Pushing a rich-root loom as a stacked branch is very, very slow" [Undecided,New] [02:14] jml: yes [02:23] lifeless: know of a work around? [02:23] jml: try sftp:// [02:24] jml: also have a look at your hpss activity [02:24] lifeless: still the same as on the bug report. [02:30] jml: its asking for one rev at a time [02:30] lifeless: handy. [02:30] lifeless: the sftp push took ~260s [02:30] yup [02:31] we have optimisations for regular branches loom is probably unintentionally disabling [02:53] * Peng_ makes random trivial changes to lp:loggerhead. [02:53] It was never a good idea to give me access to it. I do stuff like this all the time. :D [02:55] is it just me or is the "userdoc driven design" thread getting too much in to particular cases too early? [02:55] poolie: thats what that design pattern does IME [02:55] the pattern of writing user documentation first? [02:56] i would have attributed it more to having an open email thread [02:56] yes [02:56] documentation isn't goal level, it makes assumptions about constraints, internals, ffacilities etc [03:08] evening [03:11] Hi. :) [03:53] Hi folks. Can anyone verify that symlinks work with bzr on cygwin? I find that they don't work with Windows and bzr. [04:37] * igc lunch [06:40] poolie: Heya, I heard we're possibly working on very similar projects. [06:40] poolie: I've been basically copying the APIs from bzrlib.options and bzrlib.commands and making a tool that can be used to create applications with a bzr-like command-oriented interface. [06:40] poolie: jml mentioned you were working on something similar; the bits I have so far are at launchpad.net/commandant. [06:42] jkakar: I've been making bzr libs command internals more modular [06:43] jkakar: such that i have a branch which allows completely replacing the ui [06:43] lifeless: Nice. I started by trying to use the bits from bzrlib.commands and friends. [06:43] lifeless: It took me several hours to build a working prototype of my application (much of that involved learning about bzrlib) and included some heinous monkey patches. [06:44] lifeless: Once I had the basic prototype using bzrlib working I decided it would be too terrible to continue, and, at the time, I wasn't interested in spending the time it would take to "fix" bzrlib. [06:44] heh [06:44] lifeless: So I reimplemented the basic prototype from scratch using TDD. It took me exactly 16 minutes. I've been building on that base. :) [06:44] well :) [06:44] we're somewhat phobic about external dependencies [06:45] I can understand why. [06:45] but I'm happy to get bzrlib to the point you can use it reliably [06:45] ideally: [06:45] import bzrlib.commands [06:45] o/` I get by with a little help from your deps o/` [06:45] bzrlib.commands.Command.hooks['find_commands'].clear() [06:45] That'd be cool. I've basically been implementing almost exactly the same APIs as bzrlib.commands and bzrlib.options, so that the possibility of merging our bits stays, well, a possibility. :) [06:46] That and I like the command APIs in bzr, so why reinvent the wheel? [06:46] lazr.command [06:46] do it. [06:46] bzrlib.commands.Command.hooks.install_named_hook('find_commands', command_loader(__name__)) [06:46] Nice. [06:47] its approximately that in my pending Commands.as_hooks branch [06:47] I have some decisions and cleanups to make [07:10] hi all [07:39] poolie: ping [07:39] vila, hi! [08:03] spiv: wow, how long did that analysis take ?:) [08:14] lifeless: longer than I thought! [08:15] lifeless: I just concocted a shorter example that exhibits the behaviour. [08:16] surely just a long list of non-interned strings is enough [08:17] lifeless: it has to be a long list of objects that refer to each other, such that the C stack grows with each object dealloc [08:17] lifeless: e.g. a linked list [08:17] right [08:17] lifeless: and guess what data structure jam was stress-testing? ;) [08:17] an actual list :) [08:17] not a vector [08:18] Right. "list", not "list". ;) [08:19] but also reduce(range(8192), lambda x:[x]) [08:22] lifeless: probably, but it's hard to observe the behaviour without using __del__ or weakrefs to observe when dealloc happens. [08:23] lifeless: http://rafb.net/p/C3wWeG57.html [10:01] is there an option to bzr push to choose an older tree format? [10:01] say I want to push to a server which only has bzr 0.11 [10:10] abentley: Can you just tell me when the Nested Trees feature is expected to be released? I mean can you give me an estimation about the targeted bazaar version? [11:02] quicksilver: you can "bzr init --knit URL" (or --weave? It's been a while...) first, then push to that. You may not be able to use bzr+ssh with a server that old (but SFTP should be nearly as good compared to bzr+ssh with a 0.11 server...). [11:03] or I could bzr init on the remote server and then push to it? [11:04] Right. [11:04] bzr push will preserve the format of an existing branch. [11:08] * quicksilver nods [11:08] I hadn't thought of initing an empty branch, for some reason [11:08] I only thought of initing a populated branch [11:08] and didn't want ot lose history :) === ivan is now known as Guest21648 === Guest21648 is now known as ivan [12:54] I've just tried to push a branch (of bzr.dev) with two small commits to lp. Noticed that it claimed to use a default stacking dir, but was transferring huge amounts of data, like what seemed to be the whole repo. Progress stayed at "Transferring:Walking content. 24366/24366", only data and speed got adjusted. I canceled, tried again, same thing. Is there something wrong with stacking? [13:14] MvG: can you pastebin "bzr info -v" of your local branch please? === mario__ is now known as pygi [13:15] james_w: http://rafb.net/p/hxYeuO24.html [13:15] Branch format 6 [13:16] So the format doesn't support stacked repos, and the upstream repo was created using the same format? [13:17] bug 356699 I expect [13:17] Launchpad bug 356699 in bzr "not stacking when pushing to launchpad" [Undecided,New] https://launchpad.net/bugs/356699 [13:19] Looks like my guy, yes. [13:20] How can I remove a remote repo, to re-create it in a stacked format? [13:20] you can delete it from the launchpad web UI [13:21] go to branch page and click on the little dustbin next to the branch title [13:21] however, that may not be enough, you may need to upload your local branch to have it work [13:22] What formats do support stacking? 1.9? [13:23] 1.6 and later [13:25] Doesn't look good. :-( [14:07] Hi! [14:07] Is there really no netbeans-plugin in devopment? :) [14:09] Hi all, a question: is there a way to reparent a branch? That is: I've branched off http://foo/branch/trunk, which is also accessible as bzr+ssh://foo/bzr/branch/trunk. Is there a way to change the parent location without needing to also rebranch all children? Thanks! [14:09] bzr pull --remember newurl [14:09] hi kinkie [14:09] ok. Thanks! [14:09] or hack .bzr/branch/branch.conf [14:09] MvG: just noticed your patch [14:09] Hi jelmer :D [14:09] * kinkie would prefer not to hack if possible :D [14:10] MvG: it seems like it would be useful to have a common helper function that can take a BzrDir and return an instance of the default format compatible with that BzrDir [14:11] MvG: "bzr upgrade" already does this by itself at the moment [14:22] hey, I'm trying to install bazaar on OS X. I've just installed python 2.6.2, but it's still asking me to update to 2.5, what up with that? [14:27] * SamB wishes bzr would say how the branches have diverged [14:37] SamB: bzr missing ? [14:37] jelmer: hmm. [14:37] maybe if "bzr pull" would suggest that? [14:38] would there be a reason not to have it do that? [14:38] SamB: no, that seems like a good suggestion [14:38] SamB: perhaps it can also say how many revisions have diverged on each side [14:38] hmm. [14:38] well, I'll just make the patch to suggest "bzr missing" [14:40] jonnydee: I can't give anything precise. I'm expecting it to land in weeks or a few months. [14:42] _fmt = ("These branches have diverged." [14:42] + " Use the missing command to see how." [14:42] " Use the merge command to reconcile them.") [14:42] how does that look? [14:42] abently: thanx for your answer :) "few months" to wait for such a great feature is no problem for me. best regards, jonnydee :D === sabdfl1 is now known as sabdfl [14:43] jelmer: is that a good way to say it, do you think? [14:46] SamB: I think so [14:47] jam: ping [14:47] jam: I have an idea [14:48] hmm, is there a simple way to say "only run the self tests for bzr (and it's included plugins)" ? [14:48] jam: for BTreeIndexBuilder, I suggest we create a bloom when inserting keys into it. We can choose a pretty big bloom size. [14:48] jam: and when we spill, we only probe fallback indices for keys if the big bloom says the key might be preesent in the index at all [14:49] SamB: BZR_PLUGIN_PATH=/dev/null bzr --selftest [14:49] I think [14:49] or that, + tests for a given plugin? [14:49] oh ... but without skipping the loading of plugins [14:50] yelly: it probably means that you have multipl copies of plugins [14:50] yelly: it probably means that you have multipl copies of **python** [14:50] lifeless: how would I find out? [14:51] yelly: are you using the dmg installer? [14:51] (you may want to see whether the plugins you have installed break the plain bzr tests without actually running their own tests, no?) [14:51] lifeless: so you are thinking to create an in-memory only bloom? [14:51] yeah [14:51] you need ~1 byte per object to have a decent bloom hit rate [14:51] so for 100k keys, that is 100-200kB in memory [14:51] yelly: I'm not sure; I don't have a macos X box [14:51] not too bad [14:52] jam: right, way <<< 20bytes or 200 [14:52] for 500k keys (launchpad currently) that is about 1MB [14:52] still "decent" [14:52] although, come to think of it, i prob should be logging out before i start worrying ;) [14:52] sometimes your so tired you forget the basics [14:53] I'll get back if it doesn't work out [14:53] thanks all [14:53] yelly: file a bug in the bug tracker or something if you don't get an answer once you are awake :) [14:53] lifeless: I'll also note that in my testing, resizing a bloom "works", but is inefficient, so you sort of want to pre-allocate a large size [14:53] jam: its a concept; if you want to play with it and see if it flies [14:53] right, I was thinking to start by testing with just a 10MB fixed size thing [14:54] or even 1MB [14:54] if you avoid probing until you have most of the keys in, the remainder shouldn't be able to thrash the cache or whatever it is that they are doing [14:54] [I'm separately analysing that issue, I have a lsprof generating data now... its quite a large dataset [14:55] the index build has been running since about 10am [14:55] its now midnight [14:56] jam: I wouldn't resize; I'd cascade [14:58] jam: start with size N; if it gets too dirty, create a Y-scaled up bloom; when thats dirty, YYN, etc [14:58] lifeless: are you saying insert all the keys from scratch? [14:58] jam: no [14:59] jam: insert into the new bloom new keys [14:59] when being asked for a key, check all the blooms === abentley1 is now known as abentley [15:14] jam: anyhooo, way past bedtime [15:14] jam: just felt it was a fairly useful insight into our needs here that we could test easil [15:14] y [15:14] hope it helps [15:17] what do I do with a merge directive to get it into bzr.dev (hopefully)? [15:20] is there a pyrex-less "buildbot" (or whatever you use to do automated tests)? [15:23] SamB: post it to the list in an attachment, in a subject starting with [MERGE] [15:23] SamB: HACKING.txt in the source tree should describe the process in detail [15:24] SamB: we don't use buildbot, but we do have a PQM instance that runs the full test suite (including pyrex extensions) before allowing a commit to the trunk. [15:24] jam: that was a wacky gc problem [15:25] jam: I'm about to go to bed, but I'm inclined to think it's a bug in Python [15:25] spiv: maybe you should also test *without* pyrex installed ? [15:25] (if you're going to let people install that way, anyway) [15:25] SamB: all of our dual implementations are meant to have thorough implementation tests [15:25] which are run whether pyrex has been run or not [15:26] hmm. [15:26] If we are missing a test, then we are missing a test [15:26] but you shouldn't have to run everything as a bzr command to test an interface [15:26] SamB: we write the unit tests in such a way that the pure python implementations are always tested with the exact same tests that are applied to the pyrex implementations. [15:26] * SamB got a lot of output from the test suite though [15:26] SamB: it's always possible there are gaps in the coverage :) [15:27] does that include running the blackbox tests with the pyrex variants not being loaded? [15:27] SamB: but I don't think we've had much trouble with bugs like "X only works with pyrex bits built" [15:27] SamB: no [15:27] well, see, that's the sort of thing I mean [15:27] run ALL tests with NO pyrex bits, too [15:28] SamB: the point of running the same unit test suite for the two implementations is so that we can confidently then run other tests like blackbox with just one implementation, because they are the same. [15:28] SamB: *proven* to be the same, thanks to the tests... [15:28] well, if the tests proved that, that would be fine ;-) [15:28] SamB: the potential gap is if the automatic "use pyrex, else use plain python" logic fails. [15:28] but I happen to know some mathematics [15:28] (Or just a vanilla gap in the unit tests) [15:28] and I don't think that's how proofs work ;-) [15:29] Ok, "proven" is too strong a word. [15:29] well, yes, that would be a "vanilla gap" [15:29] But "very high confidence" [15:29] the unit tests can't prove that everything uses the tested interface ;-) [15:30] the problems I'm thinking you might miss are perhaps more likely to be in the other tests than anywhere else ;-) [15:30] So far, this strategy has worked very well; it hasn't let much (any?) bugs of the sort you are worried about slip through, and it doesn't require running large fractions of our test suite twice just to exercise a tiny fraction of the code. [15:30] I'm seeing stuff like: [15:30] SamB: any time you have multiple implementations, there is a temptation to run higher level tests against all implementations. [15:31] However, we have 10 repository formats, 5 branch formats, 5 transports, etc [15:31] so you get into running the tests 10*5*5*xxx times [15:31] so we rely on having good interface tests [15:31] I think this is because the unit tests are pretty good, and because the "use pyrex if available, otherwise use plain python fallback" logic is pretty simple, so the risks of it failing are pretty small... and if it does, then it fails in a very straighforward way. [15:31] well, yes, I'm not worried about that logic [15:31] if it fails, I'll know [15:32] SamB: Also, in at least some of the permutations of pyrex I test, I also test that the abstraction function is correct [15:32] Specifically, I do stuff like: [15:32] if pyrex_is_available: self.assertIs(function, pyrex_function) [15:32] To now that the logic that is permuting is at least getting the right one on this test run [15:33] admitedly that doesn't test both halves of the possibility during test time [15:33] * SamB woners why he gets this: [15:33] ERROR: blackbox.test_branch.TestRemoteBranch.test_branch_local_remote [15:33] 'str' object has no attribute 'get' [15:33] jam: I suppose we could temporarily muck with sys.modules if we really wanted too... [15:33] spiv: yeah, but then you have to re-import everything/ run bzr in a subprocess, etc. [15:33] jam: you don't *have* to [15:33] SamB: if you could pastebin a full traceback, it makes it easier [15:33] !paste [15:34] pastebin is a service to post multiple-lined texts so you don't flood the channel. The Ubuntu pastebin is at http://paste.ubuntu.com (make sure you give us the URL for your paste - see also the channel topic) [15:34] jam: how do I get selftest to give full tracebacks ? [15:34] jam: but it's a bit fiddly, yeah. [15:34] SamB: when it finishes, it does [15:34] SamB: it reports them when the run finishes [15:34] spiv: I guess you could nuke the module under test, right? [15:34] oh. that could take a while! [15:34] SamB: You can run just one test by doing "bzr selftest TEST_NAME" [15:34] SamB: that specific error looks like something is getting a string when we are expecting a dict [15:35] SamB: (you can even use a regex, plus other fancy stuff) [15:35] SamB: you can even do that while another bzr selftest is running, we isolate our tests properly :) [15:36] SamB: btw, when I run that exact test here, it succeeds with or without the extensions built... [15:37] http://paste.ubuntu.com/152835/ [15:37] hmm [15:38] jam: what plugins do you have ? [15:39] wait, that doesn't seem to be it [15:39] SamB: that directly points to a bug in the bzr-svn plugin [15:39] oh it does ? [15:40] /home/naesten/.bazaar/plugins/svn/transport.py [15:40] line 78 [15:40] oh, yeah, now I see it [15:40] jelmer: ^^ didn't the credential handling change a bit recently? [15:40] maybe I'm using the wrong branch === abentley1 is now known as abentley [15:44] hmm. this message doesn't wrap nicely. [15:46] SamB: that's because it's so short [15:46] SamB: it doesn't need to wrap [15:46] len("hmm. this message doesn't wrap nicely.") == 38; who has a terminal that narrow? === nevans1 is now known as nevans [15:52] exarkun: not THAT one [15:52] SamB: Oh. [15:52] the branches-have-diverged one, with my additions [15:53] where should I add a \n ... [15:57] is there a way to dump a bzr repo to svn? === lamont` is now known as lamont [16:02] night all [16:10] igc1: good night ! [16:29] lifeless: i decided not to put any further efford into subunit, hope you find someone that cares enough to enhance the nose plugin [16:38] is there a way to dump a bzr repo to svn? [16:40] SamB: please update your instance of bzr-svn [16:40] SamB: You should at least get a different error these days [16:40] ehazlett: bzr push [16:42] jelmer: thx [16:43] jelmer: do i have to specify any arguments; it just created a new branch [16:43] jelmer: nvmd... :) [16:45] what i'm trying to do is import the bzr branch into hg -- the only way i can see to do it is to dump to svn... anyone have any other ideas? [16:49] !cvs import [16:49] Sorry, I don't know anything about cvs import [16:50] !cvs migration [16:50] Sorry, I don't know anything about cvs migration [16:56] ehazlett: have you tried tailor? === rockstar` is now known as rockstar [16:57] ehazlett: also, the mercurial folks might have better ideas about this [16:57] jelmer: no i will try it -- yeah, i can't seem to get an answer... [17:16] SamB: ? [17:20] Quick question if I can. Can bzr maintain hard links between the source and repo? Is this possible without the bazaar server running(IE. push/pull/merge with another individual, or to an FTP server?) I am looking for a solution to maintain audio sessions where the session files are plain text, but the audio files I only want to commit once due to time constraints and the software would hard link to those files as it uses them. [17:25] jam: ping, quick feedback about conversion to dev6, [17:26] even with xml8 patched same time, same memory consumption.... [17:27] ...argh, of course since I ran with the same *unpatched* bzr >-/ time for some vacations really :-( [17:34] I'm being stupid today [17:34] what's the bzr command to see the diff between two branches? [17:34] bzr diff foo-a foo-b # gives ERROR: Files are in different branches [17:35] do I have to run the merge speculatively and examine the diff? [17:36] quicksilver: bzr diff --old --new [17:37] both are optional [17:37] quicksilver: or you can use 'bzr merge --preview' [17:37] vila++ [17:38] quicksilver: of course redirecting 'bzr merge --preview' in an emacs buffer and issuing M-x diff-mode there.... [17:38] ...is a pretty good cherry-picker :) [17:38] yes of course [17:39] you didn't think I was considering doing this outside emacs, I hope? [17:39] what kind of man do you take me for? [17:39] no of course :-) [18:39] lifeless: I've filed a bug report regarding that authentication issue [20:24] is it possible to use bzr with Python 2.3.4? [20:25] I don't think so. [20:28] bleh. ok. i need to figure out svn or something then. [20:28] thanks [20:46] LarstiQ: any news for the etiquette guide on http://bazaar-vcs.org/Scenarios ? [20:46] (just checking randomly) [20:46] nekohayo: no sorry, no progress [20:46] ok [20:46] item 45 on my todo list fwiw [20:47] oh you have an ordered todo list [20:48] is that a particular app? [20:49] nekohayo: I use yagtd [21:15] is it possible to get a single file with bzr (I'm only interested in a specific file, and I don't want to do a whole checkout of a branch)? [21:17] Yes, with export. [21:19] or cat [21:19] export? what would be the command? [21:20] Oh yeah. I was probably thinking of cat... [21:20] Though a glance at the help suggests it won't actually work... [21:21] can the file be on a remote server? [21:21] No way to tell it to use some branch other than one you're in. Export should be able to do it though. [21:21] Though I don't know how the output will look for a single file... [21:22] I would guess it will end up looking like the tree with everything but that file (and its containing dirs) deleted, but... [21:23] fullermd: I remember fixing remote cat bugs [21:23] (just lp: that doesn't take it) [21:25] Oh, I guess it does. The help is very unclear on that though. You'd never know other than by trying. [21:27] yeah, bzr cat sftp://host/path/to/branch/path/to/file worked [21:28] bzr cat bzr://bzr.bugzilla.org/selenium/3.4/t/test_sudo_session.tbzr: ERROR: u'bzr://bzr.bugzilla.org/selenium/3.4/t/test_sudo_session.t' is not present in revision lpsolit@gmail.com-20090415114310-63op6fa1unrk58xf [21:28] what does it mean? :) [21:29] oh, typo [21:29] pfff [21:29] ls can help you catch that: [21:29] % bzr ls bzr://bzr.bugzilla.org/selenium/3.4/ | grep test_sudo_session [21:29] bzr://bzr.bugzilla.org/selenium/3.4/t/test_sudo_sessions.t [21:29] yes, I forgot the final s [21:30] is there a way to redirect it to a file rather than my screen? [21:30] cat --file or something? [21:30] cat > file? [21:30] Well, generally with the shell... [21:30] Though I guess it probably should grow a -o. [21:30] yes, I had > file in mind, but I wondered if there was an argument for cat ;) [21:32] anyway, this is working great, thanks a lot :) [21:33] last question: can I download 2 files at once using cat? [21:33] or should I loop over each file I want? [21:33] LpSolit: Try it and see. :D [21:33] haha [21:33] LpSolit: It should be possible; it shouldn't need a write lock or anything. [21:33] when someone knows, it's so much faster ;) [21:34] ok, I think I have all the information I need. Thanks again! Very helpful! :) [21:36] * LarstiQ thought trying was faster than asking [21:37] Well, if someone answers immediately, that's probably faster. [21:38] hmja, if you're already in your irc client and don't have /exec [21:39] Well, y'never know. He might be an emacs user, and so unable to fit anything else on the machine unless he exits it... [21:39] tsk :P === bob2 is now known as Guest10433 [22:53] ronny: fair enough, thanks [22:54] lifeless: i'll either go for py.test extensions or wire something up that can be feed directly into a shell [22:56] ronny: sure [22:56] jam: around? === luke-jr_ is now known as luke-jr [23:56] jelmer: ping