[00:02] bash? People still use that? :p [00:02] *BSD? People still use that? ;) [00:03] * fullermd is single-handedly keeping it from dying. [00:03] keyboards? [00:03] "The keyboard. How quaint." [00:03] (People still use those?) [00:04] does anyone know what irc nick marius uses? [00:06] 99 round trips to push a new trivial branch [00:06] lifeless: amanic [00:06] abentley: thanks [00:07] Take one down, pass it around... [00:07] fullermd: yeah looking at that :) [00:07] vila: ping [00:07] Next format: 'bottlesofbeer-core' [00:11] fullermd, Odd_Bloke: :) === abentley1 is now known as abentley [00:41] this is weird [00:41] pqm hates my branch, but the failing test passes locally >< === ameoba_ is now known as ameoba [00:50] lifeless: which test? [00:52] branch_implementations.test_branch.TestTestCaseWithBranch.test_branch_format_matches_bzrdir_branch_format(RemoteBranchFormat-v2) [00:52] branch_implementations.test_branch.TestTestCaseWithBranch.test_branch_format_matches_bzrdir_branch_format(RemoteBranchFormat-default) passes [00:52] which adds to the oddity [00:53] lifeless: oops. let me just remove the "fail-lifeless'-branches-spuriously" config option from bzr pqm.... :-P [00:59] spm: pqm runs make check yes? [01:00] lifeless: yup (verified) [01:00] python 2.4? [01:02] Python 2.4.3 [01:02] in the chroot as in [01:03] thanks === orospakr` is now known as orospakr [01:37] I have a repository object that is on my local filesystem [01:37] and I want to pull in some revisions from a remote branch [01:37] without creating a branch locally [01:37] how do I do this? [01:38] thumper: Shared repositories are purely a storage mechanism. [01:38] Which is to say: there isn't a way. [01:38] Odd_Bloke: well, abentley told me there was a way :) [01:38] But branching into the shared repo and then deleting the branch should have the desired effect. [01:38] Odd_Bloke: and I think jamesh has done the before [01:39] Actually, 'bzr pull -r revid:... ' might do it. [01:39] repository.fetch() perhaps? [01:39] And it's certainly possible in bzrlib. [01:40] (Which it now occurs to me you might have been talking about. >.<) [01:40] jamesh: ta [01:41] ah [01:41] ha [01:41] y'know what [01:41] this code is written already [01:42] * thumper smacks himself [01:43] Howdy, I'm having trouble deciding how to convert my svn repo... where to draw the branch lines, basically. [01:43] thumper: the code I did for that bzr-gnomeserver plugin? [01:43] jamesh: no, it came from a gobby session I had with abentley [01:44] thumper: ah. I think I did something like this in that gnomeserver plugin to make sure a repository contained all the revisions from another repository without creating a branch. [01:44] jamesh: yeah, I remember you writing it [01:45] jamesh: I'm working on my version of your old pending reviews [01:45] script [01:45] making it launchpadlib aware? [01:45] yep [01:45] I have all the launchpadlib bits in place now [01:45] or will have very shortly [01:45] cool. are you allowed to make that code public yet? [01:46] I've got top-level dirs in SVN like app/ and lib1/ lib2/. The libs are used by app/ but also could be used without app/ [01:46] jamesh: it will be public as soon as it is written [01:46] Best to put all three in one repo? or three separate repos? [01:46] jamesh: users will be able to run it locally [01:48] hmm.. Branch.open doesn't like lp: style urls [01:48] load plugins maybe? [01:49] yep, that did it [01:50] Any advice? [01:51] baxissimo: 'bzr svn-import SVN-REPO-ROOT BZR-REPO-ROOT' [01:52] lifeless: q isn't what command to use but whether it's better in general to have three .bzrs for three related but independent things, or one .bzr containing all three. [01:53] baxissimo: I don't think there is a general answer to the question [01:53] I frequently make changes to the libs same time as the app, so like being able to have all changes committed with one commit. [01:54] But I'd also like to be able to branch just a lib or just the app. [01:54] Is it the case I have to pick one or the other of those capabilities? [01:55] yes [01:55] (sorry) [01:56] Ok. No, that's helpful. Now I can stop looking for how to get both at once. :-) [01:57] Any chance of "bzr externals" at some point a la svn externals? [01:59] I.e. have multiple branched locations collected in a single directory tree so that one update/commit/pull will hit all the locations. [01:59] I think you mean "branch" not "repository" btw :) [01:59] baxissimo: not yet, but there is some hope we'll get something soon [01:59] you can do that with the repo-push or multi-pull plugins [02:00] bob2: grr. Ok what do I call the stuff that's in a .bzr dir? [02:00] bob2: That actually contains all the history [02:02] baxissimo: .bzr/repository is a repository [02:02] baxissimo: .bzr/branch is a branch :) [02:02] it might be simpler to just forget about repositories entirely [02:03] baxissimo: a .bzr can have either or both of these things (and more besides, like working trees [.bzr/checkout], search indices [.bzr/bzr-search], etc) [02:03] bob2: ok. I mostly meant "a place where all the history actually lives" as opposed to one of those lightweight or stacked branches that doesn't actually contain any history. [02:04] baxissimo: that is indeed a repository [02:05] bob2: I'll check out those repo-push and multi-pull plugins. [02:05] they don't give you commit coherency [02:05] which was one of the things you asked for [02:05] lifeless: so what do you call the .bzr dir that can have all of that? [02:06] baxissimo: a .bzr dir [02:06] (literally, in the code its 'BzrDir') [02:06] lifeless: .bzr dir. Ok. I'll see if I can remember that one at least. :-) [02:06] baxissimo: you can't 'push' or 'checkout' or 'clone' or run nearly any UI commands just on a '.bzr' dir though - you generally have to have a branch [.bzr/branch] to run any UI commands [02:07] baxissimo: bzr is very focus on branch level operations [02:08] lifeless: ok I was focusing on the .bzr dirs since they seem to be the easiest way to see if the files I have are all part of one branch or come from separate branches. [02:08] baxissimo: 'info' and 'branches' are two commands you might like [02:09] lifeless: ok, but I can see right from Explorer if there's a .bzr or not without typing any commands. :-) [02:09] Should we still be using curl or is it time to stop building with that? [02:10] lifeless: what did you mean by "no commit consistency" -- that I'll have to issue commit once for each branch even with those plugins? [02:10] baxissimo: exactly [02:11] AfC: ask vila on the list - he knows all https :) [02:11] lifeless: so they make it so pulling/updating can be done with one command? [02:11] yes [02:13] lifeless: um, oh, right. I was using bzr:// so I guess curl doesn't come into it. [02:14] lifeless: I was a bit surprised to see it sitting for 40 seconds at 0/7805 while it downloaded something huge and then over about 3 seconds cycled through all the integers up to 7805 and moved onto the next thing that it sat at 0/ for a while. [02:15] lifeless: I naively wondered if the to-curl-or-not-to-curl thing was to blame. [02:15] AfC: what release? [02:15] 1.12 [02:15] lifeless: ^ [02:15] AfC: and were you seeing network download counters? [02:15] no [02:15] lifeless: come to think of it, having seen a download counter in a pull was why I tried the raw branch [02:15] lifeless: wanting to see what it said. Let me try again. [02:16] thats odd, I was sure there was a patch to do network counters for bzr*:// [02:16] Does bzrtools work on Windows? The lack of a .zip is usually a bad sign. [02:16] * AfC notes that there seems to be an awful lot getting packed onto that progress line. I wonder if a standard 80 char wide terminal isn't wide enough [02:19] Nope [02:19] Doh, [/me smacks forehead] looks like bzrtools are installed by default with the Windows installer. [02:19] that's not a problem [02:21] lifeless: I'd have to guess that the download counter only works over http transport. [02:21] And indeed 80 columns is NOT wide enough. Yetch. [02:22] lifeless: yeah. It's http only (in 1.12, anyway) [02:23] AttributeError: 'RemoteBranch' object has no attribute 'supports_rich_root' [02:23] poos [02:23] thumper: branches don't affect rich root support [02:24] thumper: what are you doing? [02:28] There's a patch for hpss download counters, but I didn't get time to decide how it should interact with vila's socket-wrapping approach for the HTTP ones. [02:28] lifeless,bob2: ok, seems like repo-push isn't what I want. I don't want to "push all branches to another [single] location", I'd want to push all branches to their different respective locations. [02:28] So I decided against rushing it into 1.12 late in the release cycle. [02:28] But multi-pull looks good. Thx for the pointer. [02:29] baxissimo: that's what repo-push does [02:30] bob2: the command description makes it sound like it only works with 1 destination location. [02:30] thumper: jml: mwhudson: lp:foo through proxies - http://docs.python.org/library/xmlrpclib.html#example-of-client-usage [02:30] baxissimo: yes... [02:30] jamesh just dug that up [02:31] baxissimo: /local/foo/liba -> /remote/whatever/liba, /local/foo/libb -> /remote/whatever/libb [02:31] ideally, at least, it was broken last time I tried it [02:32] bob2: ok, so you couldn't have a --> /remote/whatever/a b --> /somewhere/else/something/b then? [02:32] lifeless: repository.fetch from a branch [02:33] thumper: b = Branch.open('remote') [02:33] refs = b.get_last_revision_info()[0] + b.tags.get_tags_dict().values() [02:33] for ref in refs: target.fetch(b.repository, ref) [02:34] * thumper tries [02:34] or something ~= to that [02:37] AttributeError: 'RemoteBranch' object has no attribute 'get_last_revision_info' [02:37] last_revision()? [02:38] last_revision_info(), or sure, last_revision() [02:41] does bzr tag it's revisions in lp:bzr? [02:41] 'cause I'm not seeing any using Branch.open('lp:bzr').get_tag_dict() [02:41] insert a .tags in there too === _[PUPPETS]Gonzo is now known as [PUPPETS]Gonzo [02:47] thumper: there is something weird with pqm, they don't propogate through the merge process [02:47] thumper: in the general case, tags for releases aren't in trunk anyhow [02:47] thumper: anyhow, see that link above? [02:48] there is a bug/limitation in the bzr-lp plugin which it allows fixing [02:48] which one? [02:48] the docs.python.org one? [02:49] yes [02:59] thumper: bug 330823 - its a dup of a much older one [02:59] Launchpad bug 330823 in bzr "Branching from Launchpad (direct via http) fails behind HTTP/DNS proxy" [Undecided,New] https://launchpad.net/bugs/330823 [03:06] base = graph.find_unique_lca(rev1, rev2) [03:06] why does this raise ObjectNotLocked? [03:07] thumper: because your backing repository isn't locked [03:07] lifeless: and I lock and unlock how? [03:07] we used to autolock but had too many cases of 'its slow because its continually refreshing the object list' [03:08] tree|branch|repository.lock_read(), unlock() [03:09] * igc heads off for lunch & medical stuff [03:10] thumper: why do you need that though? [03:10] lifeless: ;-) you'll see [03:11] bzrlib.errors.NoCommonAncestor: Revisions have no common ancestor: [03:11] I don't believe it [03:13] how can I manually confirm? [03:13] I think it is lying to me [03:14] lifeless: I wonder if 2.4 supports that: http://www.python.org/doc/2.4.4/lib/module-xmlrpclib.html [03:15] jml: if it doesn't, we could version-check [03:15] lifeless: anyway, I *think* I knew about that already :) [03:17] abentley: ping [03:17] * thumper calculates time zones [03:17] * thumper thinks abentley may still be up [03:17] thumper: you can traverse the graph by hand, but its not lying to you [03:18] lifeless: the graph is obviously not complete [03:18] lifeless: as the revisions are related [03:18] baxissimo: you can, but afaik repo-push nor multi-pull will do it for you [03:18] thumper: or something; but without some details on what you're doing I can't comment sensibly [03:18] lifeless: I have a repo with no branches but a bunch of revisions [03:19] lifeless: which I have populated with repository.fetch yadda yadda [03:19] baxissimo: in practice 'for dir in *(/); (cd $dir ; bzr pus) ; done' may suffice [03:19] lifeless: I'm trying to generate preview diffs without using working trees [03:19] lifeless: abentley tried to give me an outline [03:19] lifeless: and we're close [03:19] lifeless: I've got it so I get the repository populated with the revisions [03:20] lifeless: but I need to work out the lca to pass into the 3 trees merger [03:20] lifeless: or preview tree thingy [03:20] lifeless: I'm at the stage of trying to find the lca [03:21] thumper: and why are you sure the revisions are related? [03:22] lifeless: because I branched one from the other [03:22] lifeless: one is lp:pqm [03:22] lifeless: and the other is one of my pqm branches [03:22] lifeless: so I'm pretty sure they are related [03:22] well [03:22] make sure you're using the right key type [03:23] if graph is repository.get_graph(), its a simple string otherwise its a key tuple [03:24] rev1, rev2 = repo.get_revisions(['my-revid', 'trunk-reviid']) # not real revids [03:24] I used repository.get_graph() [03:24] base = graph.find_unique_lca(rev1, rev2) [03:24] secondly, you don't need a shared repo for this sort of thing if you have recent repositories you can just add a temporary fallback repo during the calculation [03:25] lifeless: lets just say I have a local copy of all the revisions [03:25] sure, just letting you know :P [03:25] so why does the graph not think they are related? [03:26] We really should improve the "here's a traceback, please file a bzr bug" message to peek at the traceback to see if a plugin is obviously involved, and if so blame the plugin rather than bzr... [03:26] lifeless: can you please take a look at https://bugs.launchpad.net/bugs/330823 [03:26] Ubuntu bug 330823 in bzr "Branching from Launchpad (direct via http) fails behind HTTP/DNS proxy" [Undecided,New] [03:26] thumper: You rang? [03:27] jml: in what sense [03:27] abentley: yes, I'm having mad issues [03:27] thumper: lol [03:27] abentley: I have my local repo with revisions now [03:28] abentley: but the graph doesn't seem to think that the two revs are related [03:28] jml: oh its a more complex report than I knew [03:29] thumper: Well, it's possible they're not... [03:29] abentley: the branches that they are from are related [03:29] How are you creating them? [03:30] abentley: pulled from real branches [03:30] thumper: Can you run bzr find-merge-base against them? [03:30] thumper: oh [03:30] thumper: don't pass in revision objects [03:31] thumper: pass in revision ids [03:31] grr [03:31] nearly everything works in terms of identifiers [03:31] full revision objects are expensive when not needed [03:31] the docstring says revision not revision_id [03:31] so I assumed revision objects [03:31] fair enough [03:32] thumper: Sorry, I'm a bit sloppy with that distinction. [03:32] hah [03:32] have a base now [03:33] * thumper attempts to generate a preview diff [03:33] hey, anyone know if/when a osx 10.5 installer will be available for 1.12 [03:33] abentley: where does the preview tree code live? [03:34] kkubasik: i saw some swearing in here about bzr-svn on os x, so hopefully soon [03:34] slash, I'm totally willing to build it if anyone can point me to how the 1.11 package was built [03:34] thumper: In transform.py, but you won't use it directly. [03:34] mwhudson: thanks! [03:34] abentley: so given base_id, rev1_id, and rev_2 id [03:34] abentley: and a repo [03:34] abentley: what do I do to generate the treeless diff? [03:35] thumper: Instantiate a Merge3merger [03:35] found in? [03:35] merge? [03:35] thumper: merge.py [03:35] thumper: have you seen http://pastebin.ubuntu.com/119504/ ? [03:35] (from my lpreview hackery( [03:35] kkubasik: there is already one uploaded last I checked [03:36] thumper: You'll need to get RevisionTrees for all the revisions first. [03:36] abentley: a Merge3Merger wants working trees [03:36] me has a shiny loggerhead branch he wants everyone to try! [03:36] ah, only a 10.4 one here: https://edge.launchpad.net/bzr/1.12/1.12 [03:36] not sure why [03:36] lp:~mwhudson/loggerhead/unified-by-default-sbs-by-ajax [03:36] thumper: Yeah, but you can get away with just revisiontrees. [03:36] or if it matters [03:37] abentley: RevisionTrees are created how? [03:37] mwhudson: I have no real trees [03:37] thumper: Repository.revision_tree [03:37] thumper: repository.revision_trees([revision_id1, revision_id2]) [03:37] thumper: neither does that code [03:38] jam:at https://launchpad.net/bzr/+download ? [03:38] branch.basis_tree() == branch.repository.revision_tree(branch.last_revision()) [03:38] I can't find one.... [03:39] thumper: Make sure you pass in do_merge=False. [03:39] mwhudson: I don't have a branch [03:39] thumper: but you have a repository and a revision tree [03:39] kkubasik: On the page you linked, I see: Bazaar-1.12-OSX10.4-universal.dmg [03:39] thumper: but you have a repository and a revision id [03:39] (rather) [03:39] but you're right that I don't see a 10.5 one [03:40] lifeless: thanks [03:40] jam: yeah, i need OSX10.5 [03:41] hmm [03:41] KeyError: 'pop(): dictionary is empty' [03:41] line 1694, in _iter_inventory_xmls [03:41] chunks = text_chunks.pop(key) [03:41] that is attempting repo.revision_trees [03:42] Why doesn't this work?: bzr svn-import --trees http://svn.dsource.org/projects/multiarray/trunk/multiarray/dflat [03:42] thumper: that's odd-- it should just fail if it can't find the right inventories. [03:44] :( [03:44] thumper: Did you pass revision_ids in as a list? [03:44] yes [03:45] base_tree, rev1_tree, rev2_tree = repo.revision_trees(base, rev1, rev2) [03:45] hang on [03:45] wrong line [03:45] thumper: That should be repo.revision_trees([base, rev1, rev2]) [03:45] base_tree, rev1_tree, rev2_tree = repo.revision_trees([base, rev1, rev2]) [03:45] I tried the first after the second [03:45] but it failed with wrong number of args [03:46] base, rev1 and rev2 are all revision ids [03:47] thumper: Can you put a pdb in _iter_inventory_xmls where it's looping through records? [03:47] * thumper wonders which bzrlib he's using [03:48] abentley: I'm in the interactive interpreter right now [03:48] so I should just be able to invoke pdb [03:48] and set a break point right? [03:48] thumper: Could be. I always do it the hard way :-) [03:49] ok [03:49] abentley: do you want to skype? [03:50] thumper: sure. [04:12] baxissimo: file a bug on bzr-svn [04:13] spiv: is making a repo with init-repo first a requirement? [04:13] baxissimo: not [04:13] "no", rather [04:14] spiv: Ok. I'll file a bug. [04:14] baxissimo: cool. jelmer's pretty good at fixing them :) [04:18] Can someone tell me why I get this response from launchpad-login ? http://dpaste.com/121983/ [04:19] jblount: hmm, because of a bug with progress bars [04:20] its not being ifnished() [04:20] spiv: submitted https://bugs.launchpad.net/bzr/+bug/330832 [04:20] Ubuntu bug 330832 in bzr "svn-import doesn't import anything" [Undecided,New] [04:21] jblount: I don't think that bug has been reported yet [04:21] * jblount heads off to LP [04:21] or possibly its reporting when there isn't a progress bar? [04:21] lifeless: I could take a video if you like, but it does go into "progress bar mode" briefly and then report the paste. [04:26] fwif http://etc.joshuablount.com/bzr-launchpad-login-weirdness.ogv [04:27] jblount: heh [04:27] you have far too much bandwidth [04:27] Are those progress bar warnings disabled in release builds? [04:28] Peng_: not yet [04:28] lifeless: :) [04:28] ...That's unfortunate. [04:28] perhaps using "script" might produce a more australia-friendly recording [04:29] actually, that is a fairly small ogv [04:29] 49KB [05:41] jblount: is that perfectly reproducible? [05:41] and thanks for the video, i think that's the first time i've seen one used in a bug report [06:15] If I have branches foo/ and bar/ how can I reorganize that so bar is under foo -- like foo/bar? [06:16] merge keeps telling me they have no common ancestor. [06:21] oh... bzr merge -r0..-1 is the magic I'm looking for. [06:22] Dang, I merged into the wrong place. Is there an undo? [06:23] baxissimo: bzr revert [06:24] baxissimo: probably you want to just make a checkout of bar under foo [06:25] foo/ already has foo/baz and foo/bif as part of the same branch though. [06:25] poolie: bzr revert ... very nice. [06:30] So ... think about it more actually maybe what I'd rather do is break baz and bif into their own branches. They are all pretty independent. [06:37] baxissimo: there is a merge-into plugin too [06:39] lifeless: that sounds like what I'm after. But I guess it pretty much just does a merge 0..-1. [07:01] hi all [07:03] hi vila! [07:04] Is there an efficient way to unmerge a branch? [07:05] davidstrauss: bzr revert I think [07:05] baxissimo: I mean one that's long committed. [07:07] davidstrauss: you can uncommit [07:07] The merge is about 20 commits down. [07:59] Can I somehow change a repo to --no-trees after it's already created? [08:01] baxissimo: right now not through bzr [08:01] however, you can simply touch .bzr/repository/no-working-trees [08:02] jfroy: What about http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html#remove-tree [08:02] that operates on a branch [08:02] Or do you mean shared storage [08:02] oh [08:02] I think baxissimo was asking about the --no-trees option for repositories [08:03] I have a shared repo that I just filled up with a bunch of different branches. [08:03] Well "repository" can mean many things in Bazaar. [08:03] No :p [08:03] A repository is what gets made by init-repo :p [08:03] Now I'm thinking I'd like to convert all those branches to --no-trees style. [08:04] jfroy: No. "A branch consists of the state of a project, including all of its history. All branches have a repository associated..." [08:04] baxissimo: touching that file will turn on the no trees option on the repo. [08:04] jfroy: And not all branches use shared storage. [08:04] You'll need to remove-tree on any existing branch however [08:04] jfroy: remove-tree before or after touching the file? [08:05] davidstrauss: don't actually consider that relevant. Branches may have internal storage of their deltas or use external storage e.g. a repository [08:05] jfroy: The fact that there's a command "init-repo" doesn't change that all revision storage, branch-local or not, are called "repositories." [08:05] Saying that "branches may contain a repository" just confuses things. [08:05] IMO [08:05] But, I suppose, "shared storage" is more accurate. [08:05] jfroy: Well, then the docs need updating, because the quote I pulled was from them. [08:05] I'm aware of that. [08:05] "All branches have a repository associated" [08:05] http://doc.bazaar-vcs.org/bzr.dev/en/user-reference/bzr_man.html#remove-tree [08:06] But the confusion about bzr shared repositories is well known... [08:06] bzr terminology is definitely confusing. [08:06] Which is rather unfortunate. [08:06] baxissimo: it isn't, once you have clearly separate things [08:06] And "shared storage" doesn't mean it's a repository in the collaborative "main line" sense, either. [08:07] It's shared by many branches. [08:07] I use shared storage on my laptop to avoid pulling revisions twice for my own dev branches [08:07] And yes, again, the terminology isn't as clear as it could be. [08:07] But the concepts are, however. [08:07] jfroy: Also: "Repositories in Bazaar are where committed information is stored." [08:07] jfroy: That is true of non-shared storage, as well. [08:08] I ind that quote, again, unfortunate. [08:08] *find [08:08] It's unnecessarily confusing. [08:08] And: "By default just running 'bzr init' will create a repository" [08:08] Repositories are such an unimportant, technicality of bzr. [08:08] The core concept is that of a branch. [08:08] Agreed [08:08] init creates a branch [08:09] repository has clearly defined semantics by virtue of other, past VCS [08:09] All I'm doing is quoting the docs [08:09] I know [08:09] I think it would help if the words were more often coupled with their concrete implementation [08:09] :| [08:09] Like a repository is generally implemented as a .bzr/repository directory containing the data. [08:09] And saying I'm justified for not assuming removing a tree from a repository means from shared storage ;-) [08:10] That helps demystify the terms I think. [08:10] Bazaar should stop using the term repository entirely, I think [08:10] I agree [08:10] well a tree is its own thing [08:10] Yes [08:10] And instead .... "revision store" or something liek that. [08:11] a "bazaar", so to speak [08:11] What would you call it instead? [08:11] jfroy: Just saying that "How do I remove (a) tree(s) from a repository?" is an ambiguous question with current terminology. [08:11] *rimshot* [08:12] It is, unfortunately. [08:12] Unless you have a shared mainline. Then it's a cathedral. ;-) [08:12] :-) [08:12] I think it's just wrong, repositories can't have working trees :) [08:12] And they don't! [08:12] branches do [08:12] but the repository no-tree option affects branches pushed to the repository [08:12] it's a pragmatic option [08:12] that's a configuration option [08:12] that lives in a poorly defined semantic space [08:12] not a tree [08:13] I personally think the term repository makes perfect sense [08:13] I'd rather have Bazaar kill shared storage and merely use a shared revision cache. I don't care about disk space. I care about performance. [08:13] I meant the option is there because it provides a solution for storage of remote branches on a server that don't need working trees. [08:14] No, I think shared storage is great. [08:14] And disk space can be saved pretty effectively with stacked branches, anyway [08:14] It's a powerful tool to optimize your branch storage. [08:14] However, I agree there needs to be an automatic *cache* fallback. [08:14] Shared storage is inherently flawed because of the impossibility of safe garbage collection. [08:15] The use case of "branch remote branch, branch local branch" needs to be addressed perfectly with 2 branch commands at optimum speed, no matter the user configuration. [08:15] jfroy: I think what davidstrauss is trying to say is that if there was a global (per user, whatever) revision store then no one would need to ever think about setting up the structure where a shared repository can work. [08:15] you have the same problem with stacked branches [08:15] It's a do-or-die use case IMO. [08:15] And since most people screw that up the first time, and changing to it later is also a pain in the ass, I tend to support the notion. [08:15] AfC: Correct, at least for the sake of performance. [08:15] unless you store list of branches in the repository, it's impossible to do gc [08:15] That's an interesting point. [08:16] I also agree with davidstrauss [08:16] But I think that revision store should be a cache, not canonical storage. [08:16] I should be able to safely delete or gc it. [08:16] davidstrauss: well, if you mean performance as in "not setting things up in such a way that causes you do duplicate network I/O" then sure. [08:16] davidstrauss: But otherwise, if anything, such a hypothetical global one shot revision store would slow things down by the mere fact of having [way] more revisions in it that need indexing and searching through than a given individual project would have. [08:16] ehm, where would it store revisions then? [08:17] luks: locally with the branch [08:17] luks: the cache would be to save network I/O [08:17] davidstrauss: what's the point of revision store then? [08:17] shared revision storage saves a ton of time for local branching as well, however [08:18] revisions have globally universal IDs, a local cache of the last X MB of revisions I pulled would do wonders for my frequent branching of drupal [08:18] davidstrauss: all that said, if you go ahead and `bzr init-repo ~` you'll have your global revision store. [08:18] davidstrauss: so if you have 5 branches of the same project, instead of having them stored once, you have stored them 6 times? [08:18] disks may be orders of magnitude faster than network, but they're still slow [08:18] that's insane, IMO [08:18] AfC: http://fourkitchens.com/blog/2009/02/09/no-brainer-shared-branch-storage-your-workstation [08:18] local branching within a shared repository is nearly instantaneous, as it should be [08:18] davidstrauss: and given that you have enough knowledge to be having this conversation, why on earth have you not just used a shared repository at .. or wherever as the developers of Bazaar want you to do? [08:19] luks: The idea that the shared storage accumulates cruft that I can't clean up bothers me. [08:19] it may be worthwhile to have bzr gc [08:19] AfC: That's exactly what the guide I linked (that I also wrote) describes [08:19] AfC: And I do that [08:19] davidstrauss: fine. So what's the problem? [08:19] davidstrauss: more than duplicating the data all over the disk? [08:19] what about some kind of automatic branch stacking ? [08:19] AfC: It's clunky [08:20] I think branch stacking is the real answer, combined with multi-level caching. [08:20] local automatic branch stacking ? [08:20] I'd say that it's additional mental load that users of the other DVCS don't have to deal with [08:20] I don't like branch stacking at all [08:20] suppose that I branch http://foo.bar/baz into ~/mybranches/baz [08:21] Branch stacking is bad now because it's not horizon-based. [08:21] I want to have the full history right there where I'm working [08:21] You should have a certain amount of history [08:21] and then try to branch again from the same location, it can try to stack it on the branch in ~/mybranches/baz [08:21] asabil: Yes, but you're still thinking from the perspective of a user who knows Bazaar internals. [08:21] davidstrauss: how so ? [08:22] asabil: You know that you can branch locally and stack off that for efficiency. [08:22] davidstrauss: no, that can be automatic [08:22] asabil: To search for a local branch to stack off of? [08:22] the cache can keep a (remote branch => local branch) [08:23] and stack based on that information [08:23] asabil: That's basically what I mean. [08:23] or not even stack, just copy the revisions from the local branch [08:24] Now, I'm always thinking from the perspective of Drupal developers. We want to branch cheaply, have a bit of local history, and not have to think too hard about it. [08:24] davidstrauss: I see your point [08:24] And almost everyone will branch from the master server. [08:25] Only advanced users would think to branch locally and re-branch from that or use shared storage. [08:25] I don't see how running bzr init-repo _once_ is a problem [08:25] Once merged, we typically delete the local branch. [08:25] luks: It continues to grow, and you can't gc it. [08:26] luks: Nor is there an obvious method for gc'ing it that we could implement. [08:26] davidstrauss: I uncommit or develop dead-end branches very rarely [08:26] so I don't find that a problem [08:27] luks: the current approach used by bzr, is to *just work* by sacrificing the performance [08:27] the proposed approach is the *just work* by sacrificing the disk space usage [08:27] well, you could do a breath-first traversal of the fs starting at the root of the shared repository, build a set of live branches, then delete any changeset no longer required by the set of branches you found. [08:27] But that may be a time consuming process. [08:27] jfroy: And incorrect. [08:28] jfroy: You can move a branch using shared storage to a non-child location from the shared storage. [08:28] asabil: using any tool without reading at least it's basic documenation is wrong, IMO [08:28] you would destroy that branch [08:28] jfroy: Yes, and that's unacceptable for safe gc. [08:28] you need to push it outside the scope of the shared repository, at which point it has a complete history [08:28] asabil: if the user can't find out that running bzr init-repo is an important step, there is a bug in the documentation [08:29] When you have a community as large as Drupal's, we can depend on most users not reading the docs. [08:29] davidstrauss: ehm, you can? [08:29] which means any branch not under the root of the shared repository can effectively be considered "no stored in this repository", which would let you find dead-ends in the histories, e.g. deleted branches, [08:29] davidstrauss: if you move the branch, it will be broken [08:29] luks: I'd say it is a bug in the human behavior :p [08:30] luks: I disagree there [08:30] the *less* mental load you *force* on your user, the better [08:30] luks: Don't branches using shared storage refer to their shared storage with an absolute path? [08:30] bzr is worse than hg and git in that respect, period. [08:30] luks: do you read the documentation of the appliances you buy ? [08:30] davidstrauss: no [08:30] davidstrauss: they just traverse directorties until they find a repository [08:30] luks: when you create them [08:30] luks: but what if you move them later? [08:31] davidstrauss: outside of the repository, using mv? you have a problem [08:31] they break if you move them above the shared repo [08:31] IIRC anywhere under the shared repo is fine [08:31] asabil: yes, I do [08:31] :) [08:31] not all of it [08:31] but the "how to start" parts [08:31] luks: you are far more diligent than most people then :p [08:32] well, it takes longer to figure it out myself than to read it [08:32] I'd also like to remind one of the strongest argument of bzr over its competition is ease of use (particular w/r to git) [08:32] bzr by default works just fine [08:32] The need to know about, understand and setup share repositories, even once, takes away from that. [08:33] Interesting. They do fail if you move them, despite claiming to refer to the shared storage using an abs. path on creation. [08:33] if it's too slow, it's because the usert didn't read the docs [08:33] luks: but unacceptably slowly [08:33] that answer is arrogant, to some extent [08:33] jfroy: at that point the user will be forced to read the docuemntation [08:33] you can't use svn/hg/git/csv without setting up a repository [08:34] you *can* do that with bzr [08:34] luks: You can git init in place. [08:34] luks: The difference is that git inherently uses shared branch storage because of its branching model. [08:34] davidstrauss: that sets up a shared repository as well [08:34] jfroy: the core devs are looking into making the first impressions better [08:34] thumper: I'm certain they are [08:34] jfroy: which does include better stories around shared repos and inital working [08:34] luks: There's no such thing as non-shared git branch storage AFAIK [08:35] davidstrauss: right, neither there is for subversion, for example [08:35] correct [08:35] thumper: I don't care what the solution is. I care about the use case. "Branch from a remote branch, then branch locally is way slower under Bazaar if you don't care / know about shared repositories." [08:36] That use case should be as simply as "bzr branch http://... foo; bzr branch foo bar" [08:36] Nothing less. [08:36] *Nothing more. [08:36] A cache would solve that. [08:36] *as simple [08:37] davidstrauss: or implicitly initializing a shared repository in the parent when checking out a remote branch [08:37] jfroy: I understand [08:37] Especially if the answer I'm getting for the flaws in shared storage is that disk space doesn't matter if it makes life easier. [08:37] jfroy: in the parent directory? [08:37] I think there is a place for discussion on the how, but now the need to do something. [08:37] oh [08:37] davidstrauss: the best would be to write a plugin that does what you want [08:37] I dislike plug-ins. [08:37] and hopefully it will become part of the core [08:37] This ought to be in core. [08:37] It's yet more stuff to worry about to get going. [08:37] jfroy: well, bzr loves them :-| [08:37] Some things should be plugins. [08:38] plug-ins are fantastic to expand on the program and integrate bzr [08:38] davidstrauss: yes, but it would be a very good proof of concept [08:38] I agree that the core story needs to be better [08:38] But there's so much good stuff in them that you basically need bzr distros at this point. [08:38] as do almost all the core devs [08:38] The fundamental code to pull revisions quickly should not be a plugin. [08:38] if you have a really strong opinion, let kfogel know [08:38] davidstrauss: I agree ! but you have to start somewhere [08:38] hi emmajane [08:39] I think having this would come at the price of making bzr less flexible [08:39] davidstrauss: discussions don't lead to anything [08:39] thumper, morning :) [08:39] asabil: Understood. We have a similar philosophy in Drupal. Try it out in contrib, and we might migrate it to core. [08:39] davidstrauss: then apply that philosophy to bzr :p [08:39] luks: How would a ~/.bzrcache or something cost flexibility? [08:39] luks: I'm not certain about that. bzr could establish a heuristic for branch history storage that maintains its flexibility. [08:40] davidstrauss: bzr-svn already uses a cache, you can take a look at it [08:40] davidstrauss: it forces you to certain workflows [08:40] luks: I'm not suggesting removing shared storage, at least right now. [08:40] the cache would take a lot of space, and it wouldn't be possible to have it on every machine [08:40] luks: The cache would be used when you're not using shared storage. [08:40] there are e.g. deployment machines, where you would explictly not want it [08:41] luks: And there could be an option to not use one, possibly on the user level. [08:41] wait wait [08:41] davidstrauss: are you talking about a revision cache ? [08:41] well, this seems just wrong to me [08:41] I agree with david on those principles. [08:41] it is, after all, only an extension of the current mechanism. [08:41] asabil: Yes, one bzr can check before pulling from a remote server. [08:41] Where bzr will search for shared storage, and if that search fail store history in the branch itself. [08:41] davidstrauss: I would rather create a remote -> local uri mapping cache [08:41] asabil: So, the result of not using shared storage would be wasted disk but not much lost performance. [08:42] A cache would only introduce an additional step in that process. [08:42] *with the caveat that by definition a cache can be deleted safely at any time* [08:42] jfroy: Which is very good. [08:42] And that, I think, is the biggest problem of a per-user cache. [08:42] No, it's a very difficult design problem w/r to bzr. [08:42] davidstrauss: that way you don't need to store the revisions in the cache [08:42] jfroy: I can already see users downloading hundrets of bzr data, just to see how the code looks like, then deleting it [08:42] it essentially means history duplication and atomicity nightmares. [08:43] jfroy: what will happen with the cache? [08:43] jfroy: How could you have atomicity nightmares? Revisions are keyed with globally unique IDs. [08:43] er, +megabytes [08:43] jfroy: It's a cache designers dream. [08:43] Implicitly, if the cache can be deleted, you need to store revisions elsewhere as well, don't you? [08:43] designer's* [08:43] Hence, 2 FS operations. [08:44] jfroy: Yes, but the cost of the FS operations is trivial compared to Internet I/O. [08:44] granted, if the operation on the cache fails, then the cache will simply be missing data, which by design is not an issue [08:44] I disagree to some extent with that. [08:44] Disk operations are costly in time and energy. [08:44] davidstrauss: this going in circles, if the FS operation is cheap, why not use standalone repositories? [08:44] Less so than network, but they are. [08:45] luks: Because you end up downloading all revisions over and over again. [08:45] also, note that we're looking at shrinking the size of repos by nearly an order of magnitude [08:45] davidstrauss: no, you end up copying the data from your disk [08:45] luks: Are we talking with or without caching? [08:45] I've been down the cache route before with 'arch', and I think its a sign of a different problem if you need one [08:45] For example, if I'm using a laptop on battery to do some hacking on the move, I would want all software on my computer to do as little IO of any kind as possible. [08:45] davidstrauss: assuming this is about "bzr branch http://.. foo; bzr branch foo bar" [08:45] davidstrauss: without [08:45] So I'm certainly not ready to call disk IO "cheap". [08:46] luks: No, it's about repeatedly branching from a remote URL. [08:46] luks: Which is the common case for large projects with many contributors. [08:46] davidstrauss: is it because shared repos are too hard to setup? / not default? [08:46] davidstrauss: mmm this suggests 2 problems, possibly [08:46] davidstrauss: if so thats under discussion at the moment anyway [08:46] perhaps we could have a remote branch cache [08:47] davidstrauss: well, you lost me there. I think think that case needs special handling at all [08:47] used only on protocols that are known to be "remote" [08:47] if the developer is branching from the URL multiple times, they should know about shared repositores [08:47] then we can worry about fast local branching as a separate concern, to be addressed perhaps in tandem with this remote branch cache. [08:47] lifeless: I'm trying to think about what would happen if Drupal moved to bzr. [08:48] lifeless: The common case for developers would be to branch from a remote URL. We cannot expect most users to create shared storage. [08:48] lifeless: How can we make that fast? [08:48] davidstrauss: branching from CSV requires you to re-download the data as well, is it that different? [08:48] CVS [08:48] luks: CVS checkouts are lightweight. [08:49] luks: And you can do lightweight checkouts with bzr, but that defeats the point of DVCS. [08:49] davidstrauss: well, the first thing that can make it fast is to download less; branch --stacked [currently slow due to a bug in the memory/IO tradeoff algorithm, in line for a fix in the next couple of weeks I suspect] [08:50] will download only enough to reconstruct the tree locally; thats about the same as a cvs / svn initial checkout [08:50] lifeless: True, but is there a way to branch --stacked and download a little history (but not nearly all)? [08:50] davidstrauss: yes, --stacked could [should in fact for the branch case] do that [08:50] One of the boons of DVCS is being able to work effectively offline. [08:50] note that --stacked doesn't work offline [08:50] lifeless: indeed [08:51] If would be great to have the horizon stuff implemented [08:51] secondly, as I note, we have a new repo format which in some trials is 1/7th the size of current repositories [08:51] wow, congrats :-) [08:51] lifeless: is that the new compression stuff I've seen people talk about? [08:51] and performs equivalently for log/commit/annotate [08:51] stacking with horizons could plausibly work offline for recent history [08:52] jfroy: yes, the groupcompress plugin [*not* ready for end users] [08:52] I believe in eating your own dogfood :p [08:52] davidstrauss: indeed, but I'd rather talk about things that are nearly-complete rather than 'talked about but noone working on' [08:52] Something just bugs me about the idea of offline-usable branches continuously growing larger, no matter how well we compress the data. [08:52] It's incredibly painful (distasteful, you could say), but it's a great motivation to file bugs / fix bugs. [08:53] jfroy: oh sure, but groupcompress is being revised - its like working on zlib, you dogfood but you don't keep your tars in it, until you freeze the format :) [08:53] lifeless: oh we do that all the time, and it leads to pain :p [08:54] davidstrauss: I think its reasonable for repeat contributors to run some command to get a local working area [08:54] fair enough [08:54] davidstrauss: now, I definitely think we need a better, default, story in core [08:55] I vote for bzr getem'branch http://... [08:55] lifeless: What exactly do you mean by "story"? [08:55] but its easy enough to have a plugin that makes a local shared repo and does a branch into it [08:55] davidstrauss: use case, I believe [08:55] davidstrauss: user story, top level 'this is how it works' [08:55] ah [08:55] one path through a use case, if you like [08:55] lifeless: I've been drafting some on my blog from a Drupal perspective. [08:56] [no conditionals] [08:56] indeed, a plugin could even replace "branch" and add logic to it to always enforce a shared repository, for example. [08:56] davidstrauss: e.g. bzr drupal-setup c:\src\drupal 6 [08:57] I don't think we can expect our normal contributors to install plugins. [08:58] lifeless: incidentally, I've been convincing myself that bzr needs a command to install plug-in as well as a plug-in index [08:58] btw, I was elected today to the Drupal Association, and I'm discussion VCS tools with the rest of the infrastructure team now. [08:58] (or plug-in index mechanism, which would allow for internal plug-ins) [08:58] discussing* [08:58] jfroy: yes, there is a hook in bzr to discover plugins when a user runs a missing command, and this could install. We've put that there with the intent that people can do this [08:59] I had no idea that was in place. [08:59] I think it should download random code from the web and run it with no verification. [08:59] But, a "bzr install-plugin foo" would be great [08:59] But only on the Windows client. [08:59] jfroy: see doc/developers/plugin-api.txt for the declaritive data that lets my plugin-info plugin tell you the metadata [08:59] jfroy: most of the bits are there just needs a little glue [08:59] innnnnteresting [09:00] jfroy: the reason its a hook and not a run-random-code is because on e.g. Ubuntu you should really call into apt to install a plugin, because thats validated, signed code etc [09:00] rather than random bits off the net [09:00] ah yes, that's quite true [09:00] davidstrauss: http://drupal.org/node/147789 talks about a bunch of tools to setup [09:00] it is unfortunately useless to Mac OS X and Windows developers [09:00] I've got to admit that I just (socially-) engineered around this whole issue by making it *very* clear to people wanting to checkout our project that they have to go through the steps to create a shared repository. Having done that, they never duplicate the network traffic again. [09:01] AfC: yes, that works quite well, having experience with it [09:01] I wrote steps to start using bzr with my project at Apple [09:01] It's a bit of a pain to force that at the beginning, but it's now down to "Follow those instructions, and things will work great". "Yeah, but I did...". "No. Delete that, and try again. Follow these instructions..." [09:01] davidstrauss: I don't see that downloading a tiny .exe and running it on windows would be hard; you expect your contributors to know SQL and a long list of other tools [09:01] Which includes each and every command to run, copy-pastable to a terminal [09:01] it really is about the only reliable solution to get everyone a sane working environment [09:01] davidstrauss: but! like I say, I think bzr's core does need to improve [09:02] lifeless: I have a hard enough time betting devs to download Bazaar itself: http://fourkitchens.com/blog/2009/02/17/developer-preview-materialized-views [09:02] OTOH does tortoise-bzr give an easy clicky clicky to do stuff? [09:02] Part of what makes it "hard" is that they are following instructions that seem really arcane. But since it's so entirely worth it, I've done my best to front load the issue. [09:02] "Oh, and for those of us who don't have bzr, how do we get this magical code? :-)" [09:02] "And a tarball would indeed be much appreciated :)" [09:02] davidstrauss: do you have a loggerhead instance? (or are your branches registered with launchpad?) [09:02] These are serious core devs from Drupal. [09:02] lifeless: http://vcs.fourkitchens.com/ [09:03] lifeless: We host everything [09:03] urg, loggerhead [09:03] *the pain* [09:03] it's dandy for your own branch on your own machine with a local apache [09:03] It would be great if loggerhead allowed tarball downloads (via bzr export) from branches. [09:03] it doesn't work on a central sharing server with 1000s of users [09:03] that well [09:04] (each with their own set of branches) [09:04] davidstrauss: its meant to [09:04] davidstrauss, that's a branch for LH which does that. Still needs some cleanups, but it's landing is immanent [09:04] hello [09:04] I patched bzr's core to support that [09:04] beuno: JFDI [09:04] beuno: otherwise your core cleanups will make that branch bitrot, not good. [09:04] beuno: what's that branch? [09:05] lifeless, it needs an option to disable it, or many users will hunt me down and kill me [09:05] beuno: why? [09:05] lifeless, server resources? [09:05] beuno: and we know them all, can't be that hard) [09:05] it ought to cache the exports [09:05] beuno: compared to the cost of running loggerhead in the first place, I don't think anyone will notice [09:05] davidstrauss, https://code.edge.launchpad.net/~danigm/loggerhead/loggerhead/+merge/3266 [09:06] BzrFastExport keeps saying to me: "Fixing recursive rename for ./dir/foo.bar". [09:06] Is there a way to fix these recursive renames once for all? [09:07] lifeless, exporting mysql-server qoul problably not be the best thing in the world for LPs sedrvers [09:07] beuno: didn't we add this like june last year? [09:07] beuno: it should be totally fine, for folk that are hosting branches of mysql-server [09:07] we did, I never got to it :( [09:07] so someone in the community did [09:07] beuno: don't let the perfect be the enemy of the good [09:08] hi beuno [09:08] beuno: I'd be more worried about robots following the links [09:08] ok, let's make a deal. I'll tweak that branch and land it with the config option before Sunday :) [09:08] I have a real problem with getting deeply involved with all open source tools I use. :-/ [09:08] hiya poolie [09:08] Bazaar is not proving to be an exception. [09:08] :-P [09:08] beuno: than about having an option to turn it off completely. [09:08] davidstrauss: I love users like you :) [09:09] I'd contribute more, but I barely know Python [09:09] lifeless, we already have a way to specify a robots.txt, so that's a little bit less of a problem [09:09] beuno: in which case, what user has asked to have this unmerged feature configurable ? [09:09] lifeless, the reviewer of that branch, rockstar [09:09] and myself :) [09:10] It sounds like a nice "poor man's" release builder [09:10] we have enough performance issues at it is, so if we're going to add this, I'd like to make it optional [09:10] on by default [09:10] but optional [09:10] beuno: well he says its a concern [09:10] not very hard, just need to plug in a config option to bazaar.conf [09:11] lifeless, he's also across the table from me, and it's a blockable concern [09:11] etierh way, I'll make that fix myself by sunday, or erge as is [09:11] sound good? [09:11] beuno: I'm happy with that, in this specific case. [09:11] *either [09:12] good, I'll take it [09:12] but I really would like to point out that folk hosting big branches have big resources ;) [09:12] and they are more likely to want the feature (capability >> no capability) than not [09:13] I know at leasy one big hosting facility that doesn't fall in line with that ;) [09:13] Speaking as a Drupal.org infrastructure guy, I think we should be able to turn it off. [09:13] in terms of performance, actually measuring it should show its pretty fast FWIW. Its actually basically what bzr downloads trigger [09:14] davidstrauss: ok, well thats fair enough then :) I was just objecting against strawmen objections. [09:14] <- unwell today, so extra ornery [09:14] lifeless: Understood, but big projects create their own tarballs for users to download. [09:15] lifeless: And we do things like synching them to CDNs. [09:15] davidstrauss: sure. As far as caching exported tarballs from loggerhead; I think that would be a useful (configurable by giving it a place to put em) feature [09:17] yeah, just cache them with the revid as their name (but serve them with a saner name) [09:17] I'm less concerned about caching if you can just turn it off. [09:17] I will note that by default bzr should simply be fast enough to do it on the fly [09:19] lifeless: Even gzipping the data would be a horrible server load for a project like MySQL. [09:20] How about uncompressed tarballs then? [09:21] gzip is pretty cheap, as long as you don't use pythons GZipFile [09:21] which sets -9 :P [09:21] bandwidth can also be a problem [09:22] that's one of the reasons we've got this option turned off on git.samba.org [09:22] jelmer: people downloading tarballs they don't need? [09:22] jelmer: or robots? [09:22] lifeless: robots, and people downloading tarballs from cronjobs [09:22] are bzr up and bzr update meant to do different things? cause they just did [09:23] lifeless: maybe caused by the fact they don't know how to do keep a checkout with git, but still :-P [09:23] Mez: due to an unfortunate thinko, 'bzr up' is an alias for 'bzr up-thread' [09:23] Mez: it will be getting fixed [09:23] jelmer: yes well, don't get me started on *that* topic :) [09:24] lifeless... that's internal? because it seems neither bzr up or bzr update will restore a working copy [09:24] Mez: what do you mean 'restore a working copy' [09:24] Mez: You restore working copies with revert. [09:24] Mez: If you mean like "svn up" does [09:24] lifeliess [09:24] Mez: Just be careful [09:25] lifeless: no, the .bzr folder is there, but there is no working tree... we need the files from the tree [09:25] Mez: That's bzr checkout [09:25] Mez: or you can export the branch to elsewhere [09:25] davidstrauss: bzr revert seems to work [09:26] Mez: 'bzr checkout .' is likely what you want. Note that if you the .bzr dir is on a remote server, you may be better of looking at either loggerhead (web history viewer) or 'bzr-upload' [09:26] * Mez shrugs [09:26] poolie: I was unwell all day today [09:26] it's from a checkout where people cocked up :D [09:27] poolie: this is advance warning, if I feel == or worse tomorrow, I'll be calling in sick, well not calling in precisely :) [09:27] lifeless: Where do you work? [09:27] davidstrauss: @ canonical [09:27] lifeless: I mean physically [09:27] Oh, like most canonical folk, from home. I live in Sydney [09:27] ah [09:28] lifeless: hope you feel better soon [09:28] poolie: so do I :) [09:28] lifeless: I'm not sure I really believe them, but it's supposed to actually be sunny tomorrow. Maybe that'll help. [09:29] AfC: I'm reasonably sure its not drectly weather related, but who knows [09:29] throat closed up, raw-feeling, feverish, snuffly [09:30] They even have a name for it where I grew up. "Seasonal Disaffective Disorder" or some such. Also known as "holy cow I need to get the hell away from the bleak misery of winter and go sit on a beach somewhere." [09:30] Grog! [09:30] (so I did :)) [09:30] AfC: :) [09:30] Affective [09:30] SAD [09:30] ah [09:30] I knew something didn't sound right there. [09:30] jml: btw, I acked your subunit review with a full reply branch changes etc [09:30] lifeless: I'm headed to bed. Hope you feel better tomorrow. :-) [09:31] jml: if you can ack-me-back I'd love that [09:31] davidstrauss: gnight, thanks [09:31] (Kerosene, propylene glycol, rum, scumm, axle grease, battery acid, pepperoni. Grog. It's good for you.) [09:31] Lo-lan-do: VM? [09:32] Er, yeah. That was sort of a quote from Monkey Island, a game I mostly play in scummvm :-) [09:37] ok, halt() [09:37] night all [09:38] moin [09:39] g'night lifeless === jonnydee is now known as Guest63706 [09:57] yo [09:57] is there a way to sign tags in bzr? [09:58] ronny: no, tags are just simple name -> revision_id map in bzr [10:02] would it be reasonable to have a hook so that plugins can set revision properties at commit time? [10:02] or is that already possible? [10:11] james_w: start_commit can do everything (while pre_commit cannot touch some things). Is that the hook you're looking for? [10:12] jelmer: ping? [10:12] jelmer: is there any need to keep dulwich compatible to old pythons? [10:13] ronny: How old is old? [10:13] a simple one like commit_message_template would be nice [10:13] but pre_commit might work [10:14] Peng_: <2.5, preferable <2.6 [10:16] nope, it would need a new hook [11:49] ronny: My aim was to be compatible with 2.4 and up [11:49] ronny: Since that means being able to use generators [11:50] ronny: is there anything in particular that breaks 2.4 at the moment? [11:50] jelmer: with breaks 2.4 and annotations break 2.5 [11:50] ronny: hmm, where is dulwich using either? [11:51] ronny: I'm running 2.5 at home, so it shouldn't require any 2.6 features yet :-) [11:51] jelmer: i started to hack simple tools that compile python code down to c [11:52] works best with annotated code cause inference is hell [11:54] I should do research before asking this, but anyway: Isn't Git libifying itself? Why rewrite it in Python instead of writing bindings for that? [11:54] ronny: no cython/pyrex ? [11:55] Peng_: there is something, but it's not ready for prime time yet [11:55] jelmer: it wont be possible to give those sane backends for jython/ironpython [11:55] jelmer: and they wont run out of the box [11:55] Peng_: also, the git formats, etc. are pretty simple [11:55] Peng_: and writing them in Python means they'll work on Windows OOTB [11:56] jelmer: Okay. Thanks for the answer. :) [11:58] jelmer: well, annotations help, and annotation decorators would suck as they would add complexity for detection [12:00] ronny: I wouldn't mind depending on annotations at some point, but preferably not before Python2.6 is available somehow in the main linux distro's [12:02] ok [12:02] gmm [12:03] kinda sad it doesnt go into the next ubuntu [12:03] i think fedora already has it [12:04] Debian unstable/testing will have it soon as well [12:04] I wasn't aware yet it wasn't going into Jaunty :-/ [12:04] it does have it, but not as the default [12:04] or am I reading http://packages.ubuntu.com/jaunty/python2.6 wrong? [12:04] jelmer: oh, im not sure, i just asumed cause its not yet there [12:05] luks: ah, that must've been added recently [12:05] same situation happened when 2.5 was released, 2.4 was the default for a long time [12:05] very recent i think [12:06] 13 Feb 2009, according to the changelog === serg__ is now known as serg === sabdfl1 is now known as sabdfl [14:00] night all [14:00] night igc [14:04] igc: night [14:17] jam: ping [14:17] morning vi [14:17] vila: [14:17] jam: I'm not your editor :) [14:17] I'm even your reviewer today :) [14:17] morning vila's emacs [14:19] anyway, I didn't mean to derail your question. What's up ? [14:20] jam: 'bzr gblame bzrlib/tree.py 985' and scrollback a little === kiko-afk is now known as kiko [14:21] jam: until the previous elif, choking isn't it ? [14:22] That's the cause of the bt.test_merge.TestMergerEntriesLCAOnDisk.test_nested_tree_subtree_renamed_and_modified failure in bbc because the indentation has been fixed in bbc [14:23] And the commit comment for the patch that introduced that test proves that the author had some doubts :) [14:23] bzr gblame bzrlib/tests/test_merge.py 2636 & [14:25] AIUI, the wrong indentation predates your test, so I'm not sure about how to fix. Obviously tree.py must be fixed like in bbc, but what about the test ? subtrees semantics are unclear for me and fixing *that* will be time-consuming and again put me off bbc :-/ [14:25] vila: the "elif from_kind == 'tree_reference'" looks like it should be lined up with the other elifs [14:26] jam: yes, it's done in bbc [14:26] jam: that's why the above test fails there and not in trunk [14:26] jam: at the time you wrote the test I think the bug was there in trunk and you didn't realize it (but given your commit comment, were not satisfied either :) [14:29] vila: so just change the test to expect "True" [14:29] ('sub-tree-root', True, ..) [14:30] hehe, you didn't try to run it don't you :-) [14:31] it fails in the wt.revert() [14:32] well it didn't fail, it errors I should have said [14:32] with: ImmortalPendingDeletion: Unable to delete transform temporary directory /tmp/testbzr-x7bubL.tmp/bzrlib.tests.test_merge.TestMergerEntriesLCAOnDisk.test_nested_tree_subtree_renamed_and_modified/work/tree/.bzr/checkout/pending-deletion. Please examine /tmp/testbzr-x7bubL.tmp/bzrlib.tests.test_merge.TestMergerEntriesLCAOnDisk.test_nested_tree_subtree_renamed_and_modified/work/tree/.bzr/checkout/pending-deletion to see if it contains any [14:32] files you wish to keep, and delete it when you are done. [14:34] And from there it's really unclear to decide where the bug is, is is in the test because you used some operation that is guarded somewhere else when tree references are present or are there other bugs that were hidden by the wrong indentation in iter_changes... [14:35] That's the question I pinged you for :) Well, the first past at least: do you see something wrong in that test ? [14:35] s/past/part/ [14:36] Otherwise I think I'll just follow up to Larstiq and abentley [14:36] Immortal pending deletion? What's that, rm -f /dev/duncan-mcleod? [14:37] That would be UniqueImmortalPendingDeletion (there can be only one!) [14:37] There *should* be only one, but see what happens when you define your constraints when the database is already populated? [14:38] Lo-lan-do: the .bzr/checkout/pending-deletion is supposed to be cleaned up [14:38] if it is still around it "didn't die" [14:38] which means the previous command failed in some bad way [14:38] vila: my guess is that other code that handles subtrees is broken [14:40] vila: and changing False => True, and changing the indentation causes the test to *pass* (on bzr.dev) here [14:40] So I would say... fix it in bzr.dev, get that submitted [14:40] and then we'll try to figure out why it breaks in bbc [14:40] vila: btw, any feedback on my --dev5 patch? [14:41] I'm willing to just merge it to bbc [14:41] but it would be nice to have someone look at it first [14:41] jam: there is another reason for why it fails in bbc, I'm on it [14:41] jam: czj:approve [14:41] czj? [14:41] czj is sexier than bb (younger at least :) [14:41] vila: anyway, for a fix like this, I'd rather see it happen in bzr.dev, before we do it in brisbane-core [14:43] anything that can be cleanly split out is something that ends up under constant PQM monitoring :) [14:43] jam: agreed, that's why I tried to reproduce it in bzr.dev as soon as I realized the root cause (but until now I was parallel pbd stepping and didn't realize it didn't fail in the same way) [14:43] and less to review when bbc lands [14:43] jam: understood [14:43] glad to see you working on bbc test suite, though :) [14:44] jam: by the way, if you merge from bbc, be aware that we both fix some failing tests in different ways, that should conflict in an obvious way [14:44] k [14:45] jam: it appears that my setup is still incomplete, my commits on bbc didn't get posted to bzr-commits (they were trivial enough to be push and I thought you got feedback by the ML hence my lack of "noise" about them) [14:49] jam: err, it errors out in bzr.dev here >-/ [14:50] it seems my fix isn't complete yet anyway... [14:50] I forgot to actually change the inventory serialization, and only changed the chk_map serialization... [14:50] fixing [14:51] (I'm glad I double checked that, though for a different reason) [14:51] * mvo thinks the new progress bar is sweet [14:51] mvo: I agree it is quite a bit better than the old one [14:52] mvo: did you said some days ago or was it someone else ? [14:52] I just upgraded my bzr, I see it for the first time (and it seems to be more accurate as well) [14:53] mvo: far more accurate yes, did you see the IO rate for some operations ? [14:53] yes! [14:53] I need to do some big commits now so that it actually stays a bit longer :) [14:53] mvo: it's not complete yet, only some protocols are implemented so far so don't be surprised [14:54] thanks vila [14:54] mvo: that's a team thing, I deserve only a little part :-) [14:55] * mvo hugs the team and vila [14:56] jam: can you confirm you made the test pass with bzr.dev@4017 ? [14:56] vila: this change: http://paste.ubuntu.com/119711/ [14:56] applied to bzr.dev 4011 [14:56] I'll upgrade now [14:57] wth [14:58] you know what... I may have run the wrong one [14:58] (wrong bzr) [14:58] I sure hope so (kind of :/ [14:58] yeah, it fails 2x now [14:58] once in giving the wrong result [14:58] a second time in giving Immortal... [14:59] vila: shall I leave it to you? Or do you need me to work on it? [14:59] jam: I think I'll bring the issue on the ML instead to leave it to the ones working on subtrees [15:00] They ought to run into it anyway at some point so it should help them [15:02] vila, just to check, if you run "bzr selftest -s X -s Y" it runs the X tests before the Y ones, right? [15:02] jam: it doesn't care about the order at all :-) The execution order is.... roughly the loading order [15:03] if you switch them and use --list you can confirm that [15:03] and --list will give you the running order too [15:04] dang [15:04] oh well, it is probably alphabetical [15:04] since that is how we list things [15:05] it can change at each '.' depending on how the module load its tests [15:05] parametrized tests can also come in vastly different orders [15:05] sure, but I'm just doing bt.XXX [15:05] anyway, it doesn't really matter [15:05] I just have about 500 tests I run for chk branches [15:05] At that level, yes alphabetical [15:06] and it is nice to know that if it fails in Y I don't have to run X tests agaig [15:06] again [15:11] what am I doing wrong here? http://paste2.org/p/149615 [15:12] it looks like you have a Branch objects whose "self.base" is None [15:12] is it, perhaps, a bzr-svn branch? [15:14] Hi! [15:14] how can i install the webdav plugin for bazaar? [15:15] SiCuTDeUx_: "mkdir -p ~/.bazaar/plugins; cd ~/.bazaar/plugins; bzr co lp:bzr-webdav webdav" [15:18] that's ala? [15:18] *all? [15:20] SiCuTDeUx_: generally [15:20] I won't absolutely guarantee it, but that is a general way to install plugins [15:32] vila: btw, did I mention I packaged bzr-webdav for Ubuntu? [15:32] jam: bzr-svn should set self.base properly [15:33] jelmer: wow, no, thanks. Did you do that for debian too or is it ubuntu only ? Do you have public branch for that ? [15:34] vila: it's for Ubuntu only at the moment, but it'll go into Debian as well [15:34] jelmer, ? [15:34] vila: James reviewed and advocated bzr-webdav last night, so it should end up in Jaunty [15:34] jelmer, where can i find it? [15:35] vila: there should be a packaging branch here: http://bzr.debian.org/pkg-bazaar/bzr-webdav/ubuntu [15:35] i use 8.10 [15:35] James as in james_w ? :-) [15:35] it is empty jelmer [15:35] SiCuTDeUx_: I'll upload a new package to my PPA [15:36] SiCuTDeUx_: it's a bzr packaging branch [15:36] jelmer, nice [15:36] vila: there very same [15:39] jelmer: your ppa contains webdav_1.6.0, there was an update for bzr1.12 and the plugin version is now 1.12 too to reflect that [15:40] The revno for webdav is 62 [15:40] vila: I haven't uploaded a recent version to PPA yet [15:40] vila: only to REVU, am preparing to re-upload to PPA [15:40] jelmer: no problem, I was mentioning just in case [15:42] vila, thanks :) [15:42] emmajane: *I* thank you :) [15:43] vila, I thought it might make sense to link to that document from the plugin page/ [15:43] ? [15:44] emmajane: oops, forgot that one :) I printed your mail and read it in bed yesterday and then forgot that part :) [15:45] vila: any chance you can tag releases in bzr-webdav? That makes my live as packager a bit easier [15:45] vila, *chuckle* I'm not sure it was quite worthy of bed time reading. [15:46] james_w: is there any harm in me uploading a version of bzr-webdav to REVU that merges a new upstream ? [15:46] jelmer: there are several things I'd like to discuss about packaging branches, I'll try to mail about it [15:46] james_w: or will I automatically lose the advocation [15:46] james_w: ? [15:46] you will, but I can re-review [15:46] emmajane: hehe, but there, I knew I could read it peacefully :) [15:46] vila, hehe [15:47] james_w, jelmer : the change is really minor FWIW [15:48] vila, Ultimately I think it would be nice to extend all of the plugins to have a little bit more information; and also for the workflows to have an "in five minutes" tied to each. I'm slowly working my way through the ones that I know. [15:49] james_w: ok, I'll reupload in that case - thanks [15:49] vila, also: I'm talking about the plugin for my Bazaar presentation at SCaLE this weekend. I only talk about it briefly so I wanted to have the documentation available for people who wanted to give it a try. [15:51] jelmer: unfortunately I may not be able to re-review in time though, sorry [15:51] perhaps you are better seeking advocation on #ubuntu-motu now, and then I will sponsor an upload once it is in [15:52] james_w: ok [15:52] james_w: will do [15:58] emmajane: http://bazaar-vcs.org/BzrPlugins updated, feel free to change it and good luck for your talk ! [15:59] Thanks!! :) [16:01] * emmajane heads out. [16:01] thanks again, vila for looking through the tutorial! [16:03] jelmer: I'm trying out yet another md-bzr backend [16:03] * vila hugs his little daughter cause she needs love just right now and he just got some to share :) [16:04] Tak: other than bzr-xmloutput? [16:04] * jelmer hopes the new monodevelop enters sid soon.. [16:04] yeah, I'm using bzrlib via pinvokes into libpython [16:06] jam: oh, belated response to your response: no, it's a branch from lp [16:07] I can get the push location successfully, but not the submit branch or the parent branch [16:09] vila: so the reason *not* to use 0xFFFFFFFF is because it casts up to PyLong [16:09] which are pretty slow [16:09] and we call the function a lot [16:10] * vila feels depressed [16:10] :-) [16:10] for now, I'll leave your fix, because I don't feel like worrying about it until we have to [16:10] but I figured I'd point that out [16:10] ha good [16:11] In reality, I think if performance there becomes an issue, we'll just write an extension [16:11] jam: We'll end up coding that in C at one point anyway [16:11] because struct.pack is + '\x00'.join is never that good [16:11] lol, heard the echo on the wire ? [16:11] I just type faster :) [16:13] however, it *would* be reasonable to do that for dirstate === jelmer_ is now known as jelmer [16:13] since it is not a performance critical section of code [16:13] feel free to submit a patch to bzr.dev [16:13] ): [16:13] :) [16:14] vila: does it seem reasonable to just have each AbstractAuthHandler provide a variable that says whether it needs a username? [16:14] vila: inv_as_lines has now landed. --dev5 is now the only new format. [16:15] SiCuTDeUx_: looks like the new version is now available in PPA [16:15] jelmer: sounds reasonable without seeing the code, if you propose it *hacking* the code, that should be good :) [16:16] SiCuTDeUx_: you'll need bzr 1.12 [16:16] vila: Don't worry, there'll be a patch for you to review soon ;-) [16:16] jam: ok [16:22] Anyone using Homeplug? [16:33] We just started our migration from svn to bzr by using svn2bzr.py. Our repo in svn was 22MB, in bzr it is 382MB. Is there some kind of housekeeping I'm supposed to run? I can't imagine bzr needing a 15-fold of the disk space. [16:34] emile: Try 'bzr pack'. === mvo__ is now known as mvo [16:40] emile: did you have a lot of binary files in your svn repo? (bzr's delta for binaries isn't as efficient as svn's) [16:40] though 22 => 382 seems a bit extreme, regardless [16:40] Maybe svn2bzr.py didn't use a shared repo? [16:41] oh, and bzr-svn is generally preferred to svn2bzr, just as a heads up [16:41] Lo-lan-do: certainly could be [16:42] Odd_Bloke: I tried "bzr pack /path/to/repo", no change in size [16:43] jam: I'll try bzr-svn. There were some bins, but it isn't the bulk of the repo [16:43] emile: How messy is your SVN repo? [16:43] Lo-lan-do: I don't understand? [16:43] awilkins: messy in what regard? [16:44] emile: Project layout, esp. history of project layout [16:45] awilkins: nope, one branch, two tags, and the bulk of the work on trunk. There's just 50 or so revisions in the svn repo. [16:45] emile: Ok, sounds tidy compared to my 14k revisions and 1.5GB of repo [16:45] Most of that is alas, PNGs and DOC files [16:46] awilkins: Ah, make that 108 revs. Anyhow, shouldn't be significant at these numbers I reckon. We're just starting out this project on vcs. [16:47] jam: I thought bzr-svn was a like connection of sorts? We're looking to abandon svn. [16:48] emile: it is still the best converter [16:48] highest fidelity, etc [16:48] and the most actively developed, probably also the fastest [16:48] jam: "highest fidelity" in what regard? Should I be expecting loss? [16:49] emile: the big issue is with tracking what a branch is, and when they occurred, etc. [16:49] the actual content probably never differs [16:49] but the revision ancestry can be difficult to follow [16:50] again, your repo doesn't sound complex enough to cause problems. [16:50] I'd still recommend bzr-svn [16:50] I see. We can actually discard the one branch. Maybe even the tags. [16:51] emile: I would just try converting again with bzr-svn [16:51] there are certain ways you can convert which might cause bloat, and I'm not sure how bzr2svn does it [16:51] If it is hard to get set up, I can try to talk you through alternative setups for bzr2svn, it just doesn't seem specifically worth it [16:52] * awilkins would also use bzr-svn [16:53] It's a one-time task, so I don't really mind. I'm trying to get bzr-svn set up, I don't have root access so I'm going to have to get bzr-svn installed in my home dir [16:54] At least it's *nix, it's a pig to build on Windows [16:54] Although there is allegedly a version in the exe-flavoured installer [16:57] jam: ok, bzr-svn has run its setup. Something showed up in /var/www/opt. So what next? [16:59] emile: "bzr svn-import $SOURCE" [16:59] or at least "bzr help svn-import" [17:01] it says "No help can be found". I've set my pythonpath, I can import bzrlib. === cody-somerville_ is now known as cody-somerville [17:02] emile: it means you haven't properly installed bzr-svn yet [17:02] how did you "install" it? [17:03] $ ./setup.py install --prefix /var/www/opt [17:03] $ export PYTHONPATH=/var/www/opt/lib/python2.4/site-packages:$PYTHONPATH [17:04] you're correct, the following fails: from bzrlib.plugins import svn [17:07] emile: so I think the easier way to install is: [17:07] cd ~/.bazaar/plugins [17:07] bzr co "bzr [17:07] bzr co "bzr-svn" svn [17:07] cd svn [17:07] python setup.py build_ext -i [17:07] Depending on what "bzr-svn" you are grabbing [17:08] (also, newer versions of bzr-svn also require you to build the "subvertpy" library) [17:09] the bzr co yields "bzr: ERROR: Not a branch: "/home/hnse/.bazaar/plugins/bzr-svn/"." [17:09] I think John means "bzr co lp:bzr-svn svn" [17:10] slow, but it's doing something... [17:11] OK, running build_ext, no errors, but "bzr plugins" doesn't list svn [17:12] Logged in and out, now I "bzr plugins" says "Unable to load plugin 'svn' from '/home/hnse/.bazaar/plugins'" [17:13] emile: you need the subvertpy python module as well [17:15] what will be easiest? Grabbing an older bzr-svn version, or installing subvertpy (in a non-standard location) [17:15] jelmer: can you just build subvertpy in the bzr-svn directory? [17:16] jam: will check, it's coming in from launchpad now [17:17] emile: installing subvertpy somewhere in PYTHONPATH should be easiest [17:17] jam: atm it's not possible, bzr-svn no longer modifies sys.path [17:19] drat, it needs apr-config, which is not installed [17:20] emile: yeah, it needs the subversion development libraries as well :-/ [17:20] jelmer: but doesn't it do "import subvertpy"? [17:20] which means that if it is in the same dir, it should just find it? [17:21] emile: you can try an older version of bzr-svn, but it will probably mean downgrading your version of bzr [17:21] jam: yeah, but bzr-svn has subpackages [17:21] jelmer: damn. I have no root access to this machine, so I can't downgrade *or* upgrade. I suppose bzr repos are portable? Could I do the migration elsewhere and put the repo back? [17:22] emile: yes, you can convert anywhere [17:22] emile: ok, so basically installing a plugin into your PYTHONPATH doesn't really work, because we don't search PYTHONPATH (though you could add it to BZR_PLUGIN_PATH), installing subvertpy should be on PYTHONPATH [17:22] emile: if you want, you can have one of us do the conversion [17:22] though it means exposing the repo to someone [17:23] jam: appreciate it, but I can't, my manager would freak out [17:24] Oops, gotta run, thanks guys! I'll check back in later [17:27] jam: ok, in the situation above, b.base is a file:// url [17:45] Tak: that shouldn't really be a problem, then. The issue it is bringing up is that it is trying to work with a path which is None [17:45] which I don't quite understand [17:46] hmm... different base [17:46] just a sec [17:46] Tak: what platform are you on? [17:47] debian x86 [17:47] We seem to have this trap: [17:47] if base is None: [17:47] base = os.path.expanduser("~") [17:47] What does: python -c "import os; print os.path.expanduser('~')" give you? [17:48] my homedir [17:48] well, one thing to try [17:48] export BZR_HOME="$HOME" [17:49] Otherwise I don't really understand why we are getting None there [17:53] same thing with BZR_HOME set [17:54] it only seems to happen with get_submit_branch and get_public_branch [17:54] parent and push location seem to be fine === chx is now known as chx_sleeping [17:58] jam: ping, just fix the same crc32 problem for _search_key_16 (test_search_key_16 fails on 64, succeeds on 32) [17:59] jam: but I now realize that I broke compatibility for dev5, since you should be the only one affected how big a problem is it ? [17:59] vila: hmm.. I would have thought the abs() would have been enough there [17:59] but I guess I understand why not [17:59] actually, you can take out "abs()" if you switch to using 0xFFFF... [18:00] jam: I thought abs() was ok too until the test broke and I realized I was wrong [18:00] jam: that's what I did [18:00] k [18:00] no problems here [18:00] good [18:00] I recreate them all the time :) [18:00] ./bzr selftest -s bt.test_chk_map.TestMap.test_map_splits_with_longer_key [18:00] ERROR: test_chk_map.TestMap.test_map_splits_with_longer_key [18:00] maximum recursion depth exceeded while getting the str of an object [18:01] jam: rings a bell ? [18:01] jam: it's in a map -> _split -> map -> map chain [18:01] IIRC I added explicit tests for "splitting doesn't cause infinite recursion" [18:01] so there is certainly a different issue here [18:01] well, still an issue, obviously [18:02] but I'd like to understand why [18:02] vila: "bt.test_chk" passes here [18:02] jam: Holy cow ! It breaks here on both 32 and 64 8-) [18:03] well, I haven't updated to the latest bbc [18:04] It was failing before I fixed the crc32 [18:04] And bt.test_chk says: FAILED (failures=1, errors=1) [18:04] File "/net/bigmamac/Volumes/home/vila/src/bzr/experimental/brisbane-core/bzrlib/tests/test_chk_map.py", line 1176, in assertSearchKey16 [18:04] self.assertEqual(expected, chk_map._search_key_16(key)) [18:04] AssertionError: not equal: [18:04] a = '738C9ADF' [18:04] b = '8C736521' [18:04] is the other one [18:05] jam: got a moment? [18:05] mneptok: nope, I pre-empted it :) [18:05] kidding, no urgency from me :) [18:05] mneptok: what's up? [18:06] vila: could i convince you to commit a k: line-able offense? >;) [18:06] jam: some "commit --fixes" questions. [18:07] hunh [18:07] vila: it passes at revno 3821 [18:07] * vila wonders what 'a k: line-able offense' means... [18:07] so something you've done recently broke it [18:07] kfogel: ahoy sailor [18:07] why do we have http://bazaar-vcs.org/Documentation and a separate "official documentation site" http://doc.bazaar-vcs.org/ [18:07] perhaps either your "assert" patch, or your "search_key_16" one. [18:07] vila: "something that would get you banned from the network" (so i can then steal jam) ;) [18:07] mneptok: doing a draft of a new bzr home page right now, which is leading to lots of questions/cleanups about other pages :-). [18:08] mneptok: Ohhhh Kkkkk === jelmer_ is now known as Guest94594 [18:08] kfogel: some are wiki documentation, doc.bazaa is built from the source tree [18:08] plus referencing 3rd-party docs/tutorials, etc. [18:08] vila: hence my wink [18:08] mneptok: so what are you trying to do with --fixes ? [18:09] jam: hmmmm. okay, so the seams of our automation are showing to the user, sounds like :-). [18:09] mneptok: I got the wink but not the joke ;-) [18:09] Not necessarily worth cleaning up right now, but worth fixing if we can. [18:09] kfogel: I don't think all documentation should be bundled into the bzr source tree... do you? [18:09] jam: huh? no, never thought that [18:09] vila: my humor is like that. obtuse until you "get" it. and then it's just unfunny. ;) [18:09] So I think there is still worth in having a Wiki page that can reference things we haven't bundled [18:10] jam: ? [18:10] Whether we should be calling the stuff from source "doc.bazaar..." perhaps [18:10] jam: couple of things: [18:10] jam: the question was about "commit --fixes" referencing multiple bugs as fixed. [18:10] jam: one, the so-called "official documentation site" is really talking about developer and reference documentation, not other kinds of documentation, it sounds like. [18:10] mneptok: '--fixes' is a list option, so I'm pretty sure you can supply it multiple tiems [18:10] times [18:11] Since the Users Guide is by far the most needed bit of documentation, than which all others pale in comparison to, a user would naturally expect it to live on the official documentation site. [18:11] bzr commit --fixes lp:1 --fixes lp:2 [18:11] etc [18:11] jam: sorry, misphrased [18:11] jam: right right. i didn't realize it was a list [18:11] (that's pretty sweet) [18:11] mneptok: I don't see that the help text really *tells* you it can be supplied multiple times [18:11] jam: what I'm getting at is: docs is just docs, users don't care where they came from, but right now it looks to a user like our docs are split across two sites. [18:12] mneptok: so certainly there is a bug report & fix waiting for your name [18:12] jam: your hints are as subtle as a flying mallet. :) [18:13] and .... on the to-do [18:13] thanks [18:13] jam: anyway, it will be less important when those globes-on-external-links go away. :-) [18:14] kfogel: so, you're welcome to clean it up as you see fit, but I think non-vetted documentation is still worth having [18:14] and once vetted we can bring it into the bzr source tree [18:14] I don't really care how that is organized [18:15] vila: revno 3822 breaks '-s bt.test_chk' for me [18:15] shame on you :) [18:16] jam: I see that, amazing (I mean the fix is amazingly simple but I'd like to understand it :) [18:16] vila: you changed: "common = prefix[:pos+1]" to "common = prefix[:pos]" [18:16] jam: "bzr help bugs" does say that "Note: As you provide a short name for each tracker, you can specify one or more bugs in one or more trackers at commit time if you wish." [18:16] jam: until you said that, I never even knew that in-source-tree vs in-wiki meant vetted vs non-vetted. I think if a user sees something on a website with "bazaar-vcs.org" in its name, the user will assume it's reasonably vetted. I don't think anyone but a few developers is even conscious of what docs are in the source tree. [18:16] kfogel: well, I do watch the emails about updates to the wiki [18:16] but it *is* still a wiki [18:16] jam: I thought I have that covered with the tests I added when removing the asserts, I need to find the right test to add :) [18:17] vila: just add direct tests to the "common_prefix" code [18:17] It is a class method anyway [18:17] look at that 3822 diff again ;-) [18:17] jam: I understand. I'm just saying that we don't have a choice about what users regard as "vetted". If it's on the site, they'll trust it -- they're not tracing the source back to this or that location. So if we're maintaining these distinctions with the idea that it's meaningful to users, that's probably not working... [18:18] vila: the problem is that you aren't asserting *what* the common prefix is [18:18] jam: I do now :) [18:18] so for "beg" versus "begin" I would guess it is returning "be" [18:19] which wasn't being detected [18:23] vila: so did that fix it? [18:23] and when are you committing that to core :) [18:23] sure [18:27] jam: argh family NMI, I'll commit the fix later tonight :-/ [18:28] vila: then I'll fix it now [18:28] since I need a non-broken brisbane-core [18:28] no wait, almost there [18:28] vila: enjoy your family time, though [18:28] (certainly don't postpone family for this, it isn't that hard to fix) [18:28] but the tests are already updated too here [18:31] jam: pushed (and that's why we want full test suite passing everywhere :-) [18:41] Jc2k: I'm interested in helping out with bzr-*-pack, what would be a good way for me to help? [18:43] Lo-lan-do: thats up to you! [18:44] Lo-lan-do: writing test cases would be awesome [18:44] but even reproducable bug reports would be welcome [18:45] vila: of course, in your haste you left in a "import pdb;" but I'll fix that :) [18:45] Jc2k: I'll try using it first then :-) Is there any doc? [18:45] Lo-lan-do: ooh, docs would be nice too. [18:46] I'll take that as a "no". [18:46] the gist is you install the bzr-git plugin and then set the bzr-*-pack scripts up so git finds them instead of its own git-*-pack. [18:46] then it should *just work* [18:47] A symlink to ~/bin/git-*-pack would do the trick? [18:48] Lo-lan-do: well thats the icky bit, it probably wouldnt - i dont think .bashrc/.profile is respected when doing "ssh host git-program-name" [18:48] I see. /usr/local/bin it is then. [18:50] mneptok: hi [18:50] About --fixes; Can one also use --fixes=lp:444,lp:3333 ? [18:51] Anyway, better documentation for 'bzr help commit' would be appreciated [18:51] montwi: I think you can specify --fixes multiple times [18:51] works, but a little more cumbersome; Best would be to allow both things [18:55] montwi: well, it is possible that bugfixes have commas in them [18:56] how can bug fix numbers have commas in them ? [18:57] aren't the bug numbers just an incremental serie ? [18:59] On LP maybe. [18:59] But there are other bug trackers, you know :-) [18:59] Okay, opinions: "screen shots" -- one word or two? [18:59] then make an option --multi-fixes that supports both [19:01] kfogel: One. [19:01] Odd_Bloke: ok, sold [19:03] * fullermd was going to say 'two'... === chx_sleeping is now known as chx [19:03] Especially if you're running multi-head, because then you get "screens shot". [19:04] And "screensshot" is a bit too Gollum. [19:04] it's still one logical screen imo [19:09] Tak: it gets a bit weird if you have different sized monitors, though [19:09] Jc2k: __init__() takes exactly 2 arguments (1 given) / Unable to load plugin 'git' from '/home/roland/.bazaar/plugins' [19:09] Jc2k: Does that ring a bell? [19:09] Lo-lan-do: you need a newer bzr [19:10] >> 1.11? [19:10] yeah [19:11] Um. I actually have 1.12-1. [19:11] Lo-lan-do: what bzr-git do you have? [19:11] you might need a newer bzr-git instead :-) [19:11] Straight out from http://bazaar.launchpad.net/%7Ejohncarr/bzr-git/git-serve/ rev "215: John Carr 2009-01-26 Merge upstream" [19:12] * Lo-lan-do tries from trunk [19:12] I suspect John may have to merge trunk [19:12] *nod* havent merged in a bit. [19:12] Ah, better. [19:16] Blah. It seems I need to install the plugin to /usr/local or something, it doesn't seem to find bzrlib.plugins.git.server otherwise. [19:17] Nope. Not better. [19:18] Ah, installing to /usr works slightly better -- only to stop later by not finding bzrlib.plugins.git.foreign. [19:26] jelmer, Jc2k: http://pastebin.com/d705b5138 [19:40] Also http://pastebin.com/d319f3cde :-( [19:42] Lo-lan-do: thanks [19:44] Seomething seems to expect normal bzr revids to start with a particular prefix, which they... don't. [19:45] (The bzrtest is a standalone branch of the simplest "bzr init;date>foo;bzr add;bzr commit -mbar" variety) [19:45] Lo-lan-do: yes, it only works with revisions pushed from git afaiu [19:45] this is the roundtripping I mentioned yesterday [19:46] Oh damn. I misunderstood that part then. [19:47] So it's currently only usable as a storage backend for git, with read-only for bzr clients? [19:49] * Lo-lan-do ponders [19:49] Jc2k: ^ [19:51] *nod* [19:51] in theory you can dpush to it.. [19:51] :P [19:54] Any clue what I'd need to do to fix that? [19:54] As far as I understood, git revids are hashes of their contents, so presumably they could be computed on the fly, right? [19:55] Lo-lan-do: so consider git ls-remote [19:55] it just lists the tip sha1s of each branch [19:56] to satisfy this on the fly, we not only need to sha the commit, but the inventory and all of the blobs. and not just for the top commit, but *all* parent commits going back to the origin. [19:56] I get the same error. [19:56] of course you do, its just the easy part of git pull [19:57] just saying, you cant do it on the fly, too expensive. we need to build a lookaside cache of sha to bzr rev id [19:57] I guess all that data could be cached, but yeah, I see the problem. [19:59] my branch has the beginnings of a cache [20:00] That's good. If it had the end of the cache, you'd already have run out. [20:02] * Lo-lan-do tries following the code === jfroy|work is now known as jfroy === RAOF_ is now known as RAOF [20:43] what's the bzrlib equivalent of `bzr branch`? Branch.clone? [20:48] Tak: sprout [20:49] that'll do WT as well when applicable? [20:49] Tak: yes [20:53] cool, thanks [20:58] poolie: I still have some symptoms; I am coding ok at the moment, but I'm going to stay fairly submarine today; if I go downhill I'll let you know === kiko is now known as kiko-phone [21:29] okay weird lock issue doing a netcat bounce with bzr+ssh [21:30] is there any way of checking manually for lock data? [21:30] phinze: bzr info [21:30] blank [21:30] (no locks) [21:31] hmm oh the lock is actually on the remote branch [21:31] lemme go there and do it === bac is now known as fakestevejobs [21:31] bzr info should work === fakestevejobs is now known as bac [21:32] moin lifeless [21:32] yeah because of the bounce the lock-url looks like chroot-3079972620:///path/to/repo/and/branch/.bzr/branch/lock [21:32] ah that bug [21:32] bzr break-lock :push will work, i think [21:32] hi jelmer [21:33] jelmer: can subvertpy tell me infos about moves in the svn workdir? [21:33] mwhudson: nice! ty [21:34] ronny: only about copies [21:34] * phinze is all about breaking locks [21:34] lifeless: wrt bug 330928, what do you expect bzr-svn to do differently? [21:34] Launchpad bug 330928 in bzr-svn "1.12 bzr help commands failed" [Undecided,New] https://launchpad.net/bugs/330928 [21:34] jelmer: so i'd have to infer moves via copy + remove? [21:35] ronny: yeah, although I wouldn't mind seeing a utility function for inferring moves in subvertpy [21:36] strange problem with merge [21:36] jelmer: I thought I put it in the bug: the absence of a dependency shouldn't cause noise on operations that don't need the plugins functionality [21:36] I upgrade just my own mysql-maria trees to bzr version 1.9; The original on launchpad is the previous versions [21:37] now I get a lot of conflicts, even on easy stuff when doing a merge [21:37] The question: Can one get different merges than before becasue of version 1.9 ? [21:37] jelmer: you don't need subvertpy to have a command object with help text :) [21:38] I mean with with the 1.9 "A branch and pack based repository that uses btree index" [21:39] mwhudson: montwi question, oculd that be related to the fixup script? [21:40] in some cases, I have a conflict but now .BASE file [21:40] lifeless: i'm not completely sure what you mean by "fixup script" but instinct says "no" [21:40] mwhudson: didn't you just forward the output of a script run on all the mysql branches? [21:41] mwhudson: can't seem to find that bug reported -- should i file one for the lock message to suggest break-lock :push? [21:41] lifeless: oh [21:41] lifeless: yes, i guess that is possible [21:41] phinze: it's certainly reported [21:41] montwi: no, the 1.9 formats don't change the data model. However a seperate task has been done recently [21:41] phinze: https://bugs.edge.launchpad.net/bzr/+bug/250451 [21:41] Ubuntu bug 250451 in bzr "bzr suggests wrong URL for break-lock with a LP hosted branch" [High,Confirmed] [21:41] lifeless: tell me... [21:41] oh dear. Monty meets Robert. i'm pretty sure this day is mentioned in Revelations. :) [21:42] montwi: there was a bug in the initial conversion of mysql to bzr [21:42] mneptok: we've met before [21:42] https://bugs.edge.launchpad.net/bzr/+bug/277537 [21:42] Ubuntu bug 277537 in bzr "annotate says revision modified file, "bzr diff -c" widly contradicts" [High,Fix released] [21:42] * montwi waits with high antipation for a simple, elegant solution that doesn't require hours of work on my side [21:42] lifeless: oh good! [21:43] we recently ran the script to fix the damage to the repositories hosted on launchpad [21:43] lifeless: yeah, I want to review it over the next couple of days [21:43] montwi: I would guess that running the fixup script on your copy of any branches is the right answer, but I wasn't personally involved [21:43] vila: hello! [21:44] i didn't think running this script should have had far-reaching consequences though from what i was told [21:44] so I should revert the merge, run the script and try the merge again ? === mtaylor_ is now known as mtaylor [21:44] montwi: are you using --weave merges? [21:44] montwi: that is my first inclination, yes. vila: or jam: have more detail on the specific issues [21:44] no, just bzr merge [21:45] then i _think_ it should be something else, 'cause the fix only affects the per-file graph but the merge3merger doesn't look at that afaik [21:48] montwi: I'll poke quickly at this; can you run 'bzr revision-info' in both branches(source and target) for the merge [21:48] montwi: I'm just steting up a work area now [21:48] 2674 monty@askmonty.org-20090218144051-xtg0ki3hbhosiqk7 [21:49] is it lp:mysql-server to get trunk ? [21:49] sorry, don't have both trees [21:49] montwi: that ok, URL for the second is fine [21:50] or url's for both [21:50] i just did a 'bzr revert', how do i undo the revert? [21:51] I am basicly doing a merge with the bzr+ssh://bazaar.launchpad.net/~monty/maria/1.5 and the lp:~mysql/mysql-server/mysql-maria trees [21:51] So I have a copy of the 1.5 tree here and then I did: [21:51] bzr merge lp:~mysql/mysql-server/mysql-maria [21:52] kirkland: you don't? any files reverted are backed up with ~ pattern suffixes [21:52] kirkland: with a nasty shell script probably; revert leaves the changes in *~#~ files [21:52] lifeless: okay [21:52] better question [21:52] kirkland: if you had a pending merge, you can put that back by just doing the merge again [21:52] let's say i'm currently on revision 320 [21:52] i want to prune only revision 315 [21:52] I just got a lot more conflicts that expected and some have looked strange. Unfortunately I resolved a lot before starting to think something is wrong [21:53] and leave everything else untouched [21:53] what's the best way to do that? [21:53] kirkland: 'bzr merge -r 315..314 .' [21:53] will check if I can find one file that includes not resolved conflicts that should have been resolved [21:53] lifeless: brilliant [21:53] lifeless: thanks. [21:59] does bzr do any logging setup at import time? [21:59] mwhudson: no [21:59] hm [21:59] mwhudson: its hard to undo that sort of thing, due to python.logging.sucking.hard [21:59] montwi: nearly up to testing [22:00] mwhudson: you can call 'bzrlib.trace.enable_default_logging()" [22:00] hello [22:01] hi poolie1 [22:01] lifeless: ok, take it easy [22:01] jam: yeah, but... [22:01] let me work out what i'm really complaining about first i guess :) [22:01] lifeless: just found something odd with groupcompress [22:01] lifeless: thanks === poolie1 is now known as poolie [22:02] I put together code to support "negative" offsets [22:02] found one file that shows the strangeness [22:02] so that rather than giving the bytes since-start, you can give bytes before current endpoint [22:02] lifeless: mysql-test/extra/rpl_tests/rpl_log.test [22:02] the weird thing is that before zlib, it should save something like 44kB [22:03] but *after* zlib, I actually see an increase in size of ~120kB [22:03] Here the .OTHER and .THIS files are almost identical but the .BASE file is very differnt from either of the files === kiko-phone is now known as kiko [22:03] it's almost as it's from and older version [22:03] montwi: ah, maybe you _should_ be using --weave or --lca to merge [22:04] the overall least common ancestor can end up being surprisingly old [22:04] jam: interesting; I presume you figured that that will be smaller to encode? [22:04] jam: I expect that its larger because bytes-from-start is probably a repeating pattern [22:04] Shouldn't one normally get the .BASE from the last merge ? [22:04] lifeless: well it is shorter for raw (uncompressed) bytes [22:04] but you're probably right [22:06] anyway, it was worth exploring [22:06] montwi: nope [22:06] well, maybe normally [22:06] I also notice that for the chk invs, we have a trailing "insert" which is always followed by an insert of the final newline [22:06] montwi: ok, I get 128 conflicts, so trivially reproduced :) [22:06] anyway, i'll let robert explain with science rather than guessing [22:06] montwi: it goes off the top but: [22:06] lifeless: does it give a "criss-cross" warning? [22:06] Warning: criss-cross merge encountered. See bzr help criss-cross. [22:06] jam: :) [22:07] hence use --weave [22:07] jam: perhaps that should be down the bottom/also at the bottom ? [22:07] I have already resolved some conflicts, so can I do bzr remerge on the rest ? [22:07] lifeless: we just need to either auto-switch it on [22:08] or use per-file graphs for merge3 [22:08] bzr remerge --weave ? [22:08] montwi: should work [22:09] thanks; will try [22:09] montwi: I think so; I just repeated the merge with --weave, got 40 conflicts [22:10] ok, down to 41 conflicts, sounds much better [22:10] montwi: and mysql-test/extra/rpl_tests/rpl_log.test is not conflicted [22:10] is there any way to convert a rich-root repo to non rich root ? [22:10] asabil: no [22:10] jelmer, hi [22:11] asabil: not in terms of 'downgrade and merge with folk that hadn't upgraded' [22:11] lifeless: I want to convert a repo completely [22:11] lifeless: yes, rpl_log.test is ok [22:11] why is weave not default ? [22:11] I am the only owner of the repo and related branches [22:12] asabil: if you're already on rich root, it should work fine - just stay with that format [22:12] lifeless: I am trying to write a filter-branch thingie [22:12] I'll ask the recurring question: when's rich-root becoming default? [22:12] but when I call Tree.revert [22:12] I hit a ValueError: Cannot have multiple roots. [22:12] in rich-root repositories [22:12] lifeless: any obvious reasons why include/maria.h doesn't have a .BASE file ? [22:13] it's has an OTHER in THIS file [22:13] montwi: I don't think --weave generates .BASE files [22:13] I may be wrong [22:13] lifeless: any idea ? [22:13] asabil: a bug in your code I suspect [22:14] lifeless: that's definitely the case, but is there any doc that would help me understanding the issue [22:14] why the code works with non rich root ? and doesn't with rich root ? [22:15] montwi: in fact, maria.h isn't conflicted for me at all [22:15] strange. I had a conflict [22:16] trivial conflict to resolve, but still strange that we get different answers [22:16] montwi: you remerged after doing some edits [22:17] but I didn't commit [22:17] so shouldn't remerge have used the original (kind of reverted) file ? [22:17] I'm not 100% sure if it looks at your edits or not [22:17] just noticed I am using bzr 1.10; Will update to bzr 1.12 at once [22:17] its not a command I use much [22:18] I used 1.11 in this test [22:18] lifeless: no problem, the issue is resolved for that file. will see if same things happesn for files I didn't touch before [22:21] mtaylor: when are you upgrading your main repos to 1.9 :) [22:22] lifeless: when you say "my main repos" ... are you referring to MySQL [22:22] mtaylor: and drizzle, unless its already 1.9 [22:22] lifeless: drizzle is on 1.6 ... I just haven't gotten around to 1.9 upgrade yet [22:23] lifeless: I'm pinging chad about 1.9 for mysql [22:23] jam: hi again. I tried a conversion (bzr svn-import subversion bazaar) on another system, and this time the bzr repo was actually smaller than the original svn repo. How can I confirm everything went OK? If I cd into the created directory and do "bzr log", I get: bzr: ERROR: Not a branch: "/home/emile/PW/bazaar/.bzr/branch/" [22:24] emile: the repo isn't a branch. there should be subdirectories which *are* branches, though [22:24] bazaar/trunk [22:24] for example [22:26] Hey ho, and so there is! It's even kept the commit logs! The tags subdir isn't present, however. Not a major biggie, but if it can be preserved... [22:26] emile: "bzr tags -d bazaar/trunk" [22:26] I believe we convert tags as real "tags" and not as directorise [22:26] directories/branches [22:28] awseome. Time for me to start digging through the docs, as you can see I'll have a few svn-isms to shake loose ;) [22:31] lifeless: did you get a conflict with mysql-test/mysql-test-run.pl [22:31] this didn't have a .BASE for me either [22:31] montwi: not sure, I removed the test area already :( [22:32] jam: does --weave output .BASE ? === jfroy is now known as jfroy|coalmines [22:33] ok, looks like I don't have any .BASE files [22:33] not good as it makes life harder [22:34] lifeless: i don't think --weave even really has a sane concept of base [22:34] it's not a three way merge === jfroy|coalmines is now known as jfroy|bunnysuit === jfroy|bunnysuit is now known as jfroy [23:10] merge done, now running test. will push in the morning if test suite goes trough [23:13] sorry, wrong channel ... === montwi is now known as montywi|sleep [23:33] does anyone see the problem with this code: http://bazaar.launchpad.net/~asabil/%2Bjunk/bzr-filter-branch/annotate/head%3A/__init__.py ? [23:34] I get the following traceback: http://pastebin.ca/1341535