[00:04] hello [00:13] jam: i'm not sure i understand [00:24] mwhudson: this is for stacking? [00:29] lifeless: yeah [00:34] i guess i could only change BranchFormat7.open [00:35] and do most of what bzrdir.open_branch does myself === arjenAU2 is now known as arjenAU [00:52] lifeless: i replied to your mail [01:05] mwhudson: a hook to alter is less disruptive than a signature change which will propogate many levels deep [01:06] indeed [01:07] but conceptually [01:07] if you change open I'd rather see a 'transform_fallback' parameter rather than disable/enable [01:07] with the transform being required to return a url when given a url [01:08] fair enough [01:08] changing open appears to be a can of worms though [01:08] so i'm going to give a hook a go [01:09] lifeless: what do you think the hook should do? [01:09] that is, you can't disable stacking, but you can change the pointer [01:09] take a url, give a url, or take a url, give a repository, or ... ? [01:11] you need something that takes a url beca use you want to get there before url connection is attempted [01:11] indeed [01:11] I think its easier to allow url->url [01:11] because then these transforms can stack [01:11] point [01:17] lifeless: something roughly like this? http://pastebin.ubuntu.com/55463/ [01:18] mwhudson: so will it be acceptable to you that if you can't open the stacked-on branch at all, then you can't deal with the stacked branch at all? [01:19] poolie: yes, i think so [01:19] (i mean, i _guess_ you could just return the url of an empty branch backed on to a memorytransport as from the hook if you really wanted to be evil) [01:19] so i think that means launchpad can't do anything with branches that are stacked on locations not on launchpad? [01:20] i don't think that'd be a good idea [01:20] if launchpad can't open the branch, what can you do? [01:21] poolie: if people do 'bzr push lp:whatever --stacked-on http://somerandomhost.com/trunk i think it's ok *for now* for this to not work [01:21] ok [01:21] * jml agrees with mwh [01:22] i think that's fine, and it's good to be clear about ti [01:22] it8 [01:22] it** [01:22] mwhudson: s/should/must/ [01:22] lifeless: right [01:22] also please check None is not returned or something like that [01:23] lifeless: makes sense [01:23] mwhudson: re that hook, it seems like you should perhaps pass the stacked branch url too [01:23] poolie: yes, probably [01:23] poolie: or the stacked branch itself, maybe [01:23] mwhudson: there's also external documentation of hooks that should be updated [01:24] maybe, probably, though it deserves a warning that it's half-baked [01:24] certainly [01:47] curious... anyone looked at long term memory usage of bzr/api consumers? [01:47] noticed an annoying trend of loggerhead/trac-bzr both developing heavy leaks, wondering if others have seen it for alternative apps [01:51] ferringb: I suspect those are the only long-running consumers that we have. [01:51] Though I don't know how the Eclipse plugin does it, and there is 'bzr shell' in bzrtools. [01:53] ferringb: its likely python memory fragmentation, though it could be a genuine leak [01:54] ferringb: I suspect bzr itself isn't leaking, based on previous tests [02:03] lifeless: I doubt it's memory fragmentation [02:03] actually I know it's not [02:04] have at least one reproducible ~18/20MB leak [02:04] if it were fragmentation, it would level off at some point (very least the growth wouldn't stay linear) [02:04] ferringb: ok [02:04] either way, setting up to heappy it, just wondering if anyone else has seen odd behaviour [02:05] loggerhead on launchpad has trouble from time to time [02:05] much better since the big overhaul [02:05] yeah, upgraded recently, been happy w/ the results for the most part [02:05] lifeless: curious, launchpad allow the misc cralwers to scrape loggerhead pages? [02:07] I think its blocked [02:07] back soon, doofing [02:07] There's the utf8 cache in bzrlib.cache_utf8 that bzrlib.osutils.safe_revision_id uses, if an unbounded number of revision IDs get seen by the process that would grow without bound... [02:09] spiv: rough size of utf8 cache entries? [02:12] # of revisions * (length of an average revision id + 40 bytes) [02:12] (where 40 bytes is a guesstimate of the size of the overhead of a PyString object plus keeping a dict entry or two) [02:13] Hmm, maybe length of a revision id * 2, because I guess the cache keeps the unicode and the str version. [02:13] Basically, 20MB would be a pretty huge number of entries in that cache! [02:18] lifeless, poolie: i just sent a bundle to the list [02:19] with an inappropriate subject, wahoo [02:20] * mwhudson resends [02:21] spiv: by my math with your numbers, it only takes 67K revisions to hit 20MB [02:23] jam: Well, that's not so impossible. But if one process is repeatedly leaking 20MB at a time, that still adds up pretty quickly to an unusually huge number of revisions. [02:23] paths too [02:25] poolie: ? [02:27] jam: your abbreviations are unclear to me [02:27] jam: I didn't reply to your first mail about readahead in btree indices because I read your mail as saying you weren't done [02:27] I'm not, I was asking for comments, though [02:28] markh: hi [02:28] jam: "seems worth investigating" [02:28] jam: though, please consider with gc repositories [02:28] poolie: hi. Can you think of an example of some "doctest-ish mappings" I could use as a kindof "template"? [02:28] jam: which for text reconstruction, have a radically different read pattern [02:28] last I tried gc, performance was pretty abysmal [02:29] at least for the 'fetch' case [02:29] jam: yes, and we know why :P [02:29] and it would have the same structure for "log" [02:29] since those aren't compressed anyway [02:29] yes [02:29] I'm not sure what they would look like exactly. I would have thought normal unittests that use the api would be easier? [02:30] (but I've never quite drank the doctest kool-aid :) [02:30] doctest-- [02:31] "doctest == testable documentation" in my book, and its not clear that is what we are doing [02:31] but - I'm not trying to argue the merits of that, but if doctests are desired a template would help alot. [02:31] markh: whats the context here btw? [02:32] case sensitivity [02:32] blackbox tests? [02:32] that's what I would have thought. Poolie suggested " Maybe a good place to begin would be with a kind of doctest-ish description of what mappings are meant to occur and where." [02:33] markh: I would translate that as write some docs about the problem [02:33] write some docs that have quoted fragments of code [02:33] markh: but yeah, I think chat to poolie at this point [02:34] i don't mean that they should necessarily be executable, because doctest other than as testable documentation has some drawbacks [02:34] did you read alexander's wiki page? [02:35] maybe "black-box doctests"? ie, quote shell commands using bzr rather than code? [02:35] I read the wiki page after sending my initial mail. Its fairly good but a little light on specifics. [02:35] It also fails to address that windows isn't truly case-insentitive generally - its closer to "case retaining" [02:36] case preserving case insensitive is the usual description [02:36] ie, the case of the filename is retained, but any case can be used to access it. [02:36] right - and the wiki doesn't make that distinction. [02:36] so i made that (perhaps too vague) suggestion because i think we need to converge from the somewhat general document on the one hand with actual code on the other [02:36] eg, FAT truly is case-insensitive IIUC [02:37] but i don't know if people genuinely agree where those tests should go [02:37] markh: VFAT isn't, and real FAT can store arbitrary bytes, its up the fs layer on top :P [02:37] lifeless: OK - the FAT FS layer on windows is truly case insensitive IIUC :) [02:37] VFAT is awesomely the worst of both worlds. You can have both File1 and file1 in the same directory, but windows will only see one. :) [02:38] markh: I'm pretty sure that if you put a FAT fs into current windows, it treats it as VFAT just for kicks [02:38] poolie: so a reasonable first step would be docs that demonstrate the problem and identify the preferred solution, but doesn't actually identify code that might need changing? [02:39] those docs could then be turned into regular black-box tests and then the impl can be determined? [02:40] right [02:41] ok cool, thanks. [02:41] i think they could possibly actually be run as doctests [02:41] treating them as "this is a testable document of how we're generally handling case sensitivity" [02:41] I'd be strongly tempted to just write blackbox tests for specific commands [02:42] maybe, but I fear the doctests then get pollued with 'open('foo').close() etc to actually setup the test trees etc, but I haven't looked any many of the existing doctests yet. [02:42] doctests are viciously harsh to work with when you need filesystem support [02:42] you can spend days just getting things to work right [02:42] yeah [02:42] right [02:43] by strongly tempted, I actually mean, you couldn't pay me to write this sort of thing as a doctest [02:43] so, to be clear, i'm suggesting a document that has some code or command examples, even if they're not actually executable [02:43] a pseudocode doctest [02:43] don't worry, you couldn't pay me enough to have me try to make you do it :) [02:43] :P [02:46] hmm, 1.8.1 removes MutableTree.get_file_with_stat() ? [02:46] s/1.8.1/1.8rc1/ [02:47] jelmer, really, i thought it was added? [02:48] I must be too tired to read the traceback right [02:48] yeah, never mind me [02:48] jelmer: thats new, part of commit race closing [02:48] bzr-rebase doesn't provide MapTree.get_file_with_stat() yet [02:49] thats more likely :) [02:49] spiv: seen https://bugs.edge.launchpad.net/bzr/+bug/278673 ? [02:49] Launchpad bug 278673 in launchpad-bazaar "Traceback when uploading to an invalid location" [Undecided,Triaged] [02:50] I'll fix it tomorrow when I'm actually awake... [02:50] spiv: i have the feeling it might be fixed in bzr.dev by now [02:50] g'night [02:52] mwhudson: Actually, I suspect it isn't [02:53] spiv: slacker [02:53] :) [02:53] Nope, I don't think it is. [03:16] spiv: not a process as much as a request via trac-bzr [03:16] spiv: reasonably sure trac-bzr in general has it's own issues, but either way tracing it (finally got my hijacker working again) [03:37] I'm doing a merge and getting a contents conflict on a file [03:37] thing is, the file doesn't exist in the branch being merged into. [03:38] what's the deal?\ [03:38] jml: it used to exist [03:39] jml: left side change -> delete [03:39] jml: right side change -> modify [03:39] lifeless: thanks. [03:39] lifeless: can we turn you into a "bzr explain-conflict" plugin? :) [03:40] spiv: no [03:40] spiv: but you can patch the conflict system to explain itself more [03:42] lifeless: if I try to get the log for the path, I get: bzr: ERROR: Path does not have any revision history [03:44] lifeless: AIUI, this conflicts with your theory. [03:47] * spiv -> lunch [03:48] * jml is perplexed [04:07] jml: deep history is not checked [04:08] jml: try ls -r ancestor:other-branch [04:09] lifeless: it's in the list. [04:09] lifeless: but that doesn't help me learn why it was deleted. [04:10] log -v might [04:10] or log -m '\bbasename\b' === jamesh_ is now known as jamesh [04:12] lifeless: by 'basename', you mean os.path.basename(), right? [04:12] no results. [04:16] shame, they didn't mention the file while commiting its delete [04:18] jml: log -v is probably the key [04:19] jml: one possible thing is 'rm foo; add foo; commit; [04:19] lifeless: log -v doesn't give any results either. [04:19] jml: the file is in the branch? [04:20] lifeless: no. [04:20] jml: is it in trunk ? [04:20] lifeless: yes. [04:20] lifeless: merging trunk into the branch raises the conflict. [04:20] and log -v in the branch doesn't show it being deleted anywhere ? [04:21] lifeless: that's right. 'bzr log -v path/to/file' says bzr: ERROR: Path does not have any revision history [04:21] that command is useless for this [04:21] I mean literally 'log -v' [04:21] log PATH needs PATH to be in the WT, or *the last commit* only. [04:21] 2-commits back and the path won't be found [04:24] can i get someone to look at http://bundlebuggy.aaronbentley.com/project/bzr/request/%3C48ED5C67.9020408%40canonical.com%3E please? [04:24] lifeless: ok, so log -v and grep? [04:24] jml: yes [04:24] * jml tries [04:24] jml: btw I would have said 'log FILE' if that was what I meant :) [04:25] mwhudson: i'll look [04:25] poolie: thanks [04:26] i set up an rdesktop-accessible windows vm for testing and packgaing [04:26] mwhudson: +1 [04:27] poolie: thanks [04:28] lifeless: is there some way I can do this without generating the log for the entire history of this branch? [04:28] jml: -r -1..ancestor:otherbranch [04:28] jml: but it will take just as long [04:28] jml: so don't interrupt what you are doing [04:30] lifeless: ok. [04:31] jml: (log incrementally generates output, so the time-to-find-first-reference is identical) [04:31] lifeless: incidentally, I think Bazaar could handle this use case better. [04:31] indeed [04:31] I'd like bzr search to index changes better [04:31] and the inventory work I'm doing at the moment should help too [04:32] lifeless: would that make 'bzr log removed_file' do something? [04:32] jml: no more than it does today [04:32] :( [04:32] jml: searching all the way to the dawn of time is what it doesn't do today [04:33] jml: and its hard to justify that it should do that by default, because that will always be somewhat expensive [04:33] jml: however, a search index could do it fast [04:33] lifeless: I'd settle for 'bzr log --deleted FILE' or similar [04:33] and if the search tech advances sufficiently we can make it be part of core [04:34] or something that gave me the revno of when it was deleted. [04:37] learning why a file was deleted seems to be a good thing for a version control to help you do. [04:41] sure === abadger19991 is now known as abadger1999 [05:40] abentley: shelf 2 sounds very cool [05:40] spiv: Thanks. [05:41] abentley: hi [05:42] jam: thanks for the ppa packaging updates and documentation! [05:42] lifeless: Hi. [05:42] abentley: got time to chat about your new tree method? [05:42] i have some queries but i guess you may be gone [05:42] lifeless: A bit. Gotta be up early for a chat with sabdfl. [05:43] abentley: ok. well basically I feel like its making things vis-a-vis inventory less clear, without actually reducing inventory usage; I'd rather see things just using inventory directly than via that method. But - I have context for what drove it etc, and I'd like to understand those reasons. [05:44] s/have context/have no context/ [05:44] lifeless: We haven't officially deprecated inventory, but I hope we'll be able to. [05:45] lifeless: PreviewTree doesn't have one, because I thought it would be a good way to push that process along. [05:46] lifeless: It's somewhat a cheat to get the InventoryEntry without having an Inventory. [05:46] abentley: right, thats why I think its less clear, without being better in any other way [05:47] lifeless: It's better in that I don't have to implement PreviewTree.inventory [05:47] lifeless: We talked about this on the list in just the past week. [05:47] lifeless: jam was especially in favour of it. [05:48] ok [05:48] do you remember the thread name? I should read it and reply I guess [05:48] shelf2 sounds nice [05:48] and I do want you to get this patch in [05:48] also [05:48] woo [05:48] all tests passsing on my split inv format [05:49] lifeless: great stuff. [05:49] lifeless: Thread was: [MERGE] Enable merging into PreviewTree [05:50] lifeless: The other way I can avoid implementing PreviewTree.inventory is to use Tree.iter_entries_by_dir to get single entries. [05:50] lifeless: Would you prefer that? poolie's distaste with that pattern inspired this patch. [05:52] let me read that thread; at this point I would say implementing a trivial inventory subclass (you only need to override __getitem__ and __iter__ probably) is likely clearer and not much more code [05:55] lifeless: Okay, catch you later. [05:56] abentley: I'll reply to the older thread [06:39] poolie: want a chat? [06:39] lifeless: yes, but this time i'm really playing squash at 5 [06:39] :P [06:40] sure whenever then [06:40] markh: if you're still here, are there any docs on building windows installers/packages? [06:40] grab me tomorrow morning if you like [06:40] now's fine, at least briefly [06:40] poolie: in general its usually "setup.py install" [06:40] that's all? [06:40] poolie: ok ringing asap [06:41] that's the theory :) You will need the appropriate MS compiler installed, but you don't even need to make sure its in your environment [06:44] poolie: some packages have extra requirements - eg, bzr-svn needs the apache runtime libs installed somewhere and env vars set to point at it - but setup.py documents that [06:45] (not to mention the svn libs themselves :) [06:50] So, I have a basic question. And I can't find the answer around the interwebs. What's the difference between init and init-repo. What's their interaction when both of them are used? [06:51] Wyverny: try 'bzr help repositories' [06:51] I have that open. [06:51] "By default just running 'bzr init' will create a repository within the new branch but it is possible to create a shared repository which allows multiple branches to share their information in the same location. When a new branch is created it will first look to see if there is a containing shared repository it can use." [06:52] "To create a shared repository use the init-repository command" [06:53] so usually you would create a shared repo in /src/myproject, then use 'bzr init' to create branches *under* /src/myproject [06:53] all the branches would then share the same repo [06:54] I see. I get it. Thanks. I knew it was something simple. [06:59] Can there be only a single .bzrignore? Or can I have one per branch? [06:59] it is only per-branch [06:59] (as a file in the root of each branch) [07:00] Oh, great. [07:02] Simple questions, simple answers. I'd buy you guys a beer if you were around ;) [07:04] in an hour I'll have one for you anyway ;) [07:05] hi all [07:57] hey, I want to setup my own system so that I can have multiple devvies access a bzr repo for push, but want to secure it... [07:57] I don't want to have to setup SSH account for them, and dont want anything that encroaches my security on my system... [07:57] any ideas? (I'm looking for something similar to how svn does users over HTTP preferably) [07:58] Mez: afaik, ssh or ftp are your only options. [07:59] which means setting up new user accounts :9 [07:59] Mez: you can restrict it so that the devs don't get shells on your computer [08:00] jml, I know that... but I don't want to have more UNIX accounts that I have to manage and secure [08:00] Mez: *nod* [08:01] Mez: although, as a non-sysadmin I'm curious, why do you think that UNIX accounts are more difficult to manage than htpasswd and authz files? [08:01] because they're covered in my audits ;) [08:02] Mez: ah hah. [08:02] ciao [08:03] lifeless: cya [08:03] Mez: so, if this is an open source project, you can host the branches on Launchpad for free. [08:03] Mez: but I am filing a bug *right now* about this :) [08:03] jml, yeah, it is, but I don't want to push it out to public till it's code-ready at the moment [08:04] jml, feel free to subscribe my nick to tbe bug [08:05] Mez: done. [08:06] Mez: incidentally, are you aware of Launchpad's +junk feature? I often push branches to ~jml/+junk/whatever when I don't feel they are ready for public consumption. [08:07] (I understand there are different levels of "not read") [08:07] ready, rather. [08:09] Mez: FWIW, there are SSH/SFTP servers that don't use UNIX accounts. They're not necessarily easy to setup, though... [08:10] spiv, exactly [08:12] spiv, names? [08:13] Mez: Some assembly required (i.e. hacking), but you can build such things with Twisted Conch. You could probably do it with paramiko too. [08:13] I wouldn't be surprised if there are others, although I've never looked. [08:14] (I know it's possible with Twisted, because I've done so... that code is now part of what runs bazaar.launchpad.net) [08:17] spiv, i'm not really that good with python [08:18] Mez: "just use +junk branches on Launchpad" is a pretty good answer for branches of experimental open source projects, though. [08:18] I guess I understated when I said "not necessarily easy to setup" :) [08:18] spiv, release a user friendly version of the code for bazaar.launchpad.net ;) [08:19] Mez: working on it. [08:19] jml, ? [08:20] Mez: Launchpad is scheduled to be open sourced in the next year. [08:20] yeah, yeah, I know [08:21] (spiv originally wrote bazaar.launchpad.net, but I've been maintaining it for the last couple of years) [08:22] anyway, it's time for me to leave the computer and enjoy the sunlight. [08:23] jml: good plan [08:24] Hooray, I have usertest reliably running multiple runs of its 'network' suite, including starting & stopping a bzr server. (And as a bonus, using --strict.) [08:25] * spiv runs it with a simulated 500ms latency loopback network device on bzr.dev and 1.7.1 [08:37] spiv, could coh not be used to have br serve work as an ssh server which has a file in the branch that lists the people with access's h keys (like an authorized keys) [09:01] For today's controversial and incorrect suggestion: Dropping support for Python 2.5 :D [09:05] hello [09:05] hey spiv, well done! [09:05] Mez: that would be nice [09:06] not so hard to do, as we already have an ssh server used in testing [09:07] poolie, Id write it if I knew how [09:08] if you'd like to try we can help you [09:08] haha, I can probably get it to the point where it makes a server, and authenticates, but getting it to interact with bzr is the hard part [09:09] so StubSSHServer in tests/blackbox/test_serve.py is probably close to what we need... [09:10] argh [09:10] Im not even going to TRY and do a branch on here [09:11] * Mez wonders if the eeePC would be able to cope and decides to do a lightweight CO instead [09:16] poolie, actually, yeah, it could probably work from that [09:19] poolie... if i could send you this as a script that took a couple of arguments, would you guys be able to integrate it somehow? [09:23] well, send through or post to the pastebin what you come up with, and w'll try to help [09:51] Mez: I would like "bzr serve" to be able to run a simple SSH daemon, I think that would be neat. [09:52] Mez: if you make any progress towards that, please do post it here or send it to the mailing list [09:53] poolie: http://rafb.net/p/flZlui28.html is the summary report with 500ms latency and the 'network' test suite from usertest trunk [09:54] poolie: no surprises (mostly the same, bzr.dev a little bit better in a few cases). [09:54] poolie: oh, and those are the results from running on a bzr.dev repo. [09:55] * spiv -> dinner [09:55] i wonder why the AddTasks ones were so much slower? [09:55] well done though, that's great [09:55] is the patch up for review? [10:05] spiv, but wouldnt that cause issues for people using it in its current state? [10:06] Mez: presumably it would listen for ssh on a different port [10:06] aswell... [10:06] (as the current functionality of bzr serve) [10:08] Mez: there's already talk of having bzr serve --http run a webserver, making the command more of a swiss army knife [10:08] ah, kk [10:09] JOAT functionality ;) [10:12] bzr serve uses the I/O of the socket right, so, if i wired that up to have SSH auth on the front end, then I could hopefully, just pass the stream into that, and make a new protocol name that makes bzr auth with SSH first, and then use the "normal" protocol... right? [10:13] right [10:13] yay :D makes life sooooo much easier then [10:13] it may be easiest to have the serve process spawn off a subprocess connected up over pipes [10:14] argh, confusing, but i think I know what you mean [10:14] but to be fair, doing it that way means I shouldnt have to do too much "fake ssh" and it'd work nicely [10:14] (can use relative paths!) [10:15] hey Mez [10:16] hey james_w :D how're things/ [10:16] good thanks, you? [10:16] tired [10:16] should be asleep by now ;) [10:17] but i always stay awake on my days off ;) [10:21] poolie, though I doubt you'd be happy with me pulling in conch as a dependency ? [10:21] use paramiko, we already depend on it [10:22] * Mez doesnt know how to do it with paramiko though :0 [10:23] more learning :-0 [10:36] gonna sleep, will look at it later [10:59] poolie: Not sure why AddTask is slower, judging from http://benchmark.bazaar-vcs.org/usertest/log/usertest.log it's probably just noise. === mark1 is now known as markh [11:45] thanks spivvo [11:45] night [12:39] abentley: Shelf 2 sounds really cool. :) I've been wanting a git-gui-esque tool for commits, and this should make it much easier. [12:45] hya. i'm getting the following error when trying to push to a (stacked) branch on LP: [12:45] bzr: ERROR: Must end write group before releasing write lock on KnitPackRepository('bzr+ssh://intellectronica@bazaar.launchpad.net/%7Eintellectronica/launchpad/me-too-ui-updates/.bzr/repository/') [12:45] any idea what this might be? [12:46] abentley: ^^^ [12:49] intellectronica: I have a patch to fix that bug [12:49] spiv: is that something that i can apply locally, or something that would need to happen on the server? [12:50] intellectronica: https://bugs.edge.launchpad.net/bzr/+bug/230902, http://bundlebuggy.aaronbentley.com/project/bzr/request/%3C20081008054310.GC19754%40steerpike.home.puzzling.org%3E [12:50] Launchpad bug 230902 in launchpad-bazaar "BzrError: Must end write group before releasing write lock on KnitPackRepository" [Undecided,Confirmed] [12:50] intellectronica: local [12:50] intellectronica: note that fixing that bug won't make things work, exactly. It'll just let us see what the real underlying error is, rather than this secondary error. [12:51] spiv: ok, i'll give it a try. thanks! [12:51] intellectronica: My guess is you'll see an error like the one stub reported in the comments of that bug (i.e. what he saw after applying my fix) [12:52] intellectronica: If so, I don't have any insight into that, but following up with abentley and/or filing a bzr bug would be appropriate. [12:53] b.t.w this only happens if i try to push to the existing branch. pushing to a new branch in the same repository works fine [12:53] intellectronica: a -Dhpss trace *might* give a hint [12:54] * spiv -> bed [12:54] intellectronica: I'd love to hear how it goes, though. [12:54] spiv: sure, i'll update when i have more info [12:54] good night [12:54] intellectronica: thanks! [12:56] lifeless: awake :-\? [13:02] http://code.mumak.net/2008/10/more-bzr-hacking.html --- what are "working trees"? [13:04] intellectronica: It's worth noting that initial push and subsequent pushes use quite different code paths. [13:04] idnar: what SVN calls the working copy, basically. i.e. files on disk that you can look at, edit, and run commands like "commit" and "revert" on. [13:05] abentley: i don't know if this is relevant. i pushed to that branch many times. the last time just a few minutes before it stopped working [13:05] With that patch applied, the real error won't be masked, and we'll have more hope of solving it. [13:05] intellectronica, abentley: random sleepy thought: maybe autopacking in a stacked repo does something funny? [13:05] * spiv -> really sleep! [13:06] spiv: Does autopacking in general still do something funny? [13:06] (if autopacking is occuring, the .bzr.log will say so) [13:06] spiv: how does that differ from a bound branch? [13:06] I know jam had a patch for that. [13:07] idnar: They're completely different concepts. A bound branch does not necessarily have any files that you can edit, commit, etc. [13:08] I guess I'm just confused about terminology [13:09] A working tree is just the collection of files that that you can edit, commit, etc. It may be in the same place as your branch. It may be in a different place. [13:09] okay [13:10] and how do "repositories" work? [13:15] man [13:15] maybe it would be easier if I forgot everything I thought I already knew about bzr and started again [13:15] I'm reading some docs now, and nothing seems familiar :P [14:17] idnar: I've admined SVN repos for years, and it took me a few days to get a handle on DVCS [14:18] awilkins: I'm familiar with half a dozen DVCS tools, and I use them on a regular basis [14:19] it's just that bzr has changed so much since I last used it [14:19] Ah, yes, the pace doth quicken most fleetly [14:19] I started around 0.9, I think it's jsut got better rather than scarier since then :-) [14:20] last time I used bzr, it didn't even work at all on win32 due to assumptions about path delimiters [14:20] Since about 1.6 it's even been quite nippy on windows [14:20] Although it still makes you green when you bzr st the same tree on Linux and get the rsponse back in less than a second [14:27] OTOH, Mercurial still doesn't work for my project on windows because of the escaping-caps-with-underscores-in-long-paths thing [14:27] I'm a darcs user most of the time [14:28] I tend to stick with things that work well on win32, alas. [14:28] Does darcs? [14:28] I haven't run into any issues [14:29] it can be a bit tricky to get ssh working, but that's not really darcs's fault [14:29] I've had success with bzr+ssh on windows [14:29] Also with bzr+http over IIS [14:29] You're right about SSH being a PITA though [14:30] anyhow, to be candid, I prefer hg to bzr in situations where darcs isn't appropriate [14:31] but then, bzr has launchpad integration [14:31] Fair enough ; I never used it long enough to try it for the aforementioned reason [14:31] which is cheating, but it's pretty darn convenient [14:31] I had a project that needed good, easy merges [14:31] and of course, there are plenty of projects where I don't get to choose the VCS tool [14:31] SVN wouldn't cut it, and was too slow [14:31] so I need to know how to use pretty much everything :P [14:32] Hg I tried next, but epic fail oin long paths with lots of caps in [14:32] honestly, part of my preference for hg is probably just that my mental image of bzr is still circa 0.6 or whatever where everything sucked [14:32] There's work on long paths in hg. [14:32] git was too immature at the time (on win32) [14:32] (like, horrifically awful network performance) [14:32] And still is, IMHO [14:33] (git, immature on win32, that is) [14:33] man, git [14:33] I have no opinion on the horrible network performance of bzr [14:33] I didn't think it would be possible to come up with a more confusing tool than tla [14:33] and then I tried git out [14:33] bzr's network performance got fixed ages ago [14:33] idnar: When was that? [14:33] My main problem with bzr and network performance is unrelated to the network protocols ; it's more to do with it considering network shares on Windows to be local filesystems [14:34] uhm, 0.7? 0.8? something like that, I think [14:34] ...Bzr's network performance used to be horrific, and now it's fast? It's still pretty bad, so wow, it must've been *terrible*. [14:34] My problem is that unpacking is probably faster than, copying files over an SMB share on a VPN [14:34] well, I checked in about 100MB of repository [14:34] then I checked in a one-line change to a single file [14:34] and pushed that over the network [14:35] but bzr will copy files if it can.. regardless of network speed, if you are using filesystem urls [14:35] and watched bzr transfer something like 200MB of data before it completed [14:35] Oh, it was. Weave-era network access was unbelievably painful. [14:35] that was one of the reasons I gave up on bzr at the time [14:35] Hahaha, that's awesome. [14:35] so I dunno if it's great now or whatever [14:36] It's still not overly pleasant, but at least now it's "Jeez, that's slow" rather than "Hey, where'd T Rex go?" [14:36] but I haven't run into any "okay, this is just impossible" situations yet [14:36] And it still knocks the likes of SVN out of the parlk [14:36] *park [14:37] I probalby need to sit down and do an in-depth side-by-side comparison of hg and bzr, just to get rid of my flawed mental image of bzr [14:37] SVN over DAV is painful in it's own special way [14:37] SVN is really awful for me, because most SVN repositories are on the other side of a 400ms latency link for me [14:38] so any DVCS basically wins automatically [14:38] because I can commit locally etc. [14:41] idnar: wait, you mean git 0.8? [14:42] Arjen: no, bzr [14:42] I guess you were asking about git, not bzr [14:42] I was [14:43] git hasn't ever really changed in the "oh my god complicated" department [14:43] as far as I can tell [14:43] Not even in 1.5 and 1.6? [14:44] did they remove commands in 1.5 and 1.6? :P [14:44] ALl the low-level commands where moved to a separate directory, out of your PATH [14:44] You could technically add a bzr-stylee porcelain to git, I suppose [14:44] anyhow, it still takes me half an hour just to figure out how to fetch a copy of a project's source code from git [14:45] "git clone"? [14:45] Indeed [14:45] I have no idea what to do after that to pull new changes or branch or commit or anything, but I do know "clone". [14:45] when it works, it's fine [14:45] * Peng_ doesn't use git much [14:45] but when you get an error message, it's nearly impossible to tell what you did wrong [14:45] Peng_: git branch, git fetch, git merge [14:46] idnar: True, in a number of cases [14:46] if I was familiar with git concepts in-depth, I'd probably have no problems interpreting the error message [14:47] I've been playing with bzr lately, but I can't seem to do basic stuff. Like, getting it to tell me when a file was deleted, even if I know the file-id [14:47] but I don't, so all I know is that the URL someone gave me isn't something I can "git clone", with no idea of what to do next [14:47] Or basic grepping in the source at a revision [14:48] Arjen: The "when did my file get deleted" one is tricky at the moment because of the way inventories are stored [14:49] Arjen: You have to compare inventories from each revision to work it out. [14:49] awilkins: then 'git log --diff-filter=D -- $file' is a viable alternative ;-) [14:49] Delta-storage for inventories would probably make that work a lot easier - anyone working on that? [14:50] ehm [14:50] awilkins: I'm reasonably sure that is the case [14:50] awilkins: and what Arjen mentioned would work the same way? [14:51] LarstiQ: That it's being worked on or that it already so? I was working under the impression that each revision stores the inventory in-toto [14:51] I think the point is that you cant tell when a file is deleted from doing a log on just the file because it's deletion is not one of the log entries it participates in [14:52] It just one day isn't there... rather than an entry which explicitly says "delete this file-id" [14:52] awilkins: afaik it's inventory deltas for ages [14:53] LarstiQ: Is it "we store the inventory" and that's delta compressed, or "we store what changed in the inventory for each revision" ? [14:53] awilkins: but regardless of storage, doing the same operation as git log --diff-filter=D should be possible right now [14:54] awilkins: I don't really see a big difference between the two [14:54] It's been asked in here more than once and I've not seen a quick, concise way of doing it that didn't involve running the whole log [14:54] LarstiQ: The former has no way of telling when the file was deleted just from reading inventories containing the file-id [14:55] LarstiQ: You also then have to check all the children of inventories with that file-id to see if it becomes absent [14:55] LarstiQ: Which is not very nice to have to index [14:55] awilkins: right, but I'm under the impression the git log does it brute force as well [14:55] It does [14:55] I have no idea, but it seems a waste both way [14:56] And i've yet to see a cheap and easy way of finding deletion revisions for a single file in bzr [14:57] An inventory entry that said "deleted this file" would probably help a lot [14:57] renames should be easier, I think? [14:57] renames should be very easy, the file retains it's id [14:58] But there's no command-line method to do that? [14:59] Arjen: I wrote a log-on-fileid option into it once in about 5 minutes [14:59] Arjen: So it's not hard... it just didn't solve the problem it was aimed at (finding deletions) [14:59] Arjen: Very small hackage on log command required [15:00] Arjen: It uses file-id internally anyway for "log foo" [15:01] Arjen: log would be what I'd use [15:01] And script it [15:03] Which is of course a valid method, but requires work ;-) [15:03] List a revision where you know the file is, grab the file-id, hack log --file-id in [15:05] Uhm, hack log.py, you mean? [15:11] what, no jelmer? Unheard of. [15:50] Is it safe to use a relative path as a branch's parent? [15:51] Peng_: safe as in? If you then move the branch or it's parent around it won't be able to find the parent [15:52] LarstiQ: Well sure, but will random commands fail? What if Launchpad mirrors the branch? [15:52] Peng_: but it's ideal for when your branches are available via http and /srv/bzr wouldn't really help someone who mirrors [15:52] Peng_: no, no problems there [15:54] Heh, that's exactly why I'm asking. I just did "bzr missing" on a branch in /srv/bzr whose parent is right next to it, and it contacted the HTTP server since that's what I'd set the parent to. [15:54] Peng_: this was also the exact usecase for it :) [15:54] :) [15:55] * Peng_ goes off to edit some branch.conf files. [15:56] james_w: jelmers client had an excess flood earlier [15:57] jelmer: hey [15:58] jelmer: I was just looking at https://bugs.launchpad.net/bugs/132191 and can't really work out what's going on any more [15:58] Launchpad bug 132191 in bzr-gtk "installs unuseable desktop file to bzr commit-notify" [Medium,Triaged] [15:59] jelmer: the "bzr commit-notify" command still doesn't work on Ubuntu, but I can't find anything disabling it. There seems to be a bzr-notify script in bzr-gtk, is this intended to be used now? [16:00] doesn't work in what way? [16:00] james_w: you might want `bzr lan-notify` from bzr-dbus [16:01] hey LarstiQ [16:01] "bzr commit-notify" gives unknown command [16:17] Hey all, I was experimenting with 1.6.1-rich-root format on one of my branches. [16:18] abadger1999: and? :) [16:18] but it seems I can't push from that to a branch with the default format. [16:18] How do I convert the branch back to default? [16:18] (I actually converted a shared repository so losing and recreating all the revisions would be painful.) [16:19] abadger1999: default being pack-0.92? [16:19] Yeah. [16:20] LarstiQ: bzr upgrade --default [16:20] Rich roots store extra metadata. You kind of can't downgrade. [16:20] It's possible to bzr init && bzr pull. [16:20] (to downgrade) [16:21] But bzr upgrade won't do it. [16:21] Peng_: pull as opposed to branch? I'll try that. [16:21] maybe we should have a bzr downgrade [16:21] Just hava it print "Hahaha, nice try." [16:22] Peng_: ooh, I can make that [16:23] Peng_: Nope. That didn't work. [16:23] bzr: ERROR: KnitPackRepository('file:///home/badger/pkgdb/.bzr/repository/') is not compatible with [16:23] KnitPackRepository('file:///home/badger/programming/.bzr/repository/') different rich-root support [16:24] ....Really? [16:24] Same error as I get when I tried to bzr branch from the richroot repository to a non-richroot shared repository. [16:24] Really. [16:24] Huh. [16:24] bzr-1.7rc2 [16:25] bzr init 0.3.x ; cd 0.3.x ; bzr pull ~/programming/0.3.x [16:25] There's shared repositories on both sides of that. [16:26] * abadger1999 tries without shared repo [16:26] Peng_: bzr get http://richtlijn.be/~larstiq/downgrade [16:27] LarstiQ: Does that have a test case? :-) [16:27] abadger1999: I don't have a good answer [16:27] abadger1999: doh! [16:27] abadger1999: I'll add it right away [16:27] :-( [16:27] heh [16:28] james_w, yes, bzr-notify should be used now [16:28] Well, gorramit. This sucks. [16:28] * abadger1999 figures out least time consuming method of recreating all the changes [16:29] james_w, Still there? [16:30] LarstiQ: :D [16:30] jelmer: yeah. [16:31] jelmer: The .desktop is out of date in this version then. I presume it's fixed in experimental? [16:31] james_w, It's not yet fixed in experimental, though it should be trivial [16:55] jelmer: ok, I've uploaded a fixed desktop file to Ubuntu. Would you like me to make the change for experimental? [16:56] james_w, I hope to fix it upstream in a couple of days, not sure if it's important enough to fix in experimental before then [16:57] oh, it's fixed upstream I think [16:57] 603 Exec=bzr-notify [16:58] there is one more change here that passed me by though, changing the icon names in the .desktop files [17:13] "There are some issues we would like to address and I'm looking to talk to some people with Subversion internals experience that can help us optimize the Subversion experience for our users." [17:13] Your solution; I has it. [17:16] Kittens? [17:17] Well, given the choice between handing my code to kittens or subversion... [17:17] Well, only if "kittens" is the codename for VSS around here [17:18] I would say that VSS is only marginally better than "big network share" if only it didn't waste so much of your time [17:33] Anyone know why trac-bzr is showing revision names with %2F and %3A? [17:33] Double encoding I presume. [17:40] ack, bzr-svn just died on me :| [17:40] hi jfroy|work [17:40] Tried to branch a svn branch (previously used with bzr), and the command died with bzrlib.errors.KnitCorrupt: Knit _KnitGraphIndex(CombinedGraphIndex(GraphIndex [17:40] jelmer: hello, and help! :p [17:41] Does that error ring any bells? === beuno is now known as beuno-lunch [17:45] jfroy|work, please file a bug [17:46] Will do. [17:46] jfroy|work: works here using bzr.1.7 [17:46] not with bzr-dev [17:46] Any way to make bzr-svn happy again? [17:46] I'm using 1.7.1 and 0.4.13 [17:46] jelmer, hi [17:47] rockstar, hi [17:47] jfroy|work: bzr branch 1.7 and bzr-svn trunk [17:47] jfroy|work, I'd need to look into it [17:47] jelmer, someone in my dent feed would like an updated trac-bzr release. [17:48] Looks like you're the team owner. [17:48] I think this is happening only for a subset of a large svn repository. [17:48] I have a checkout of another unrelated svn branch hosted in the same repository working fine. [17:49] jfroy|work, yeah, this sort of error would be related to a specific branch [17:49] rockstar, I am, though pretty much by default [17:49] rockstar, trac-bzr needs to be fixed to work with bzr >= 1.6 [17:50] jelmer, well, this user says he's got all his bugs fixed with bzr 1.6 in trunk. [17:51] rockstar, if he does, he hasn't published his branch on launchpad [17:51] lifeless: ping [17:51] He was going to use svn, because he thought trac-bzr was broken, but then he said all the bugs were fixed in trunk, so he used that. [17:52] rockstar, I'm aware of at least one bug remaining in trunk [17:52] since it uses _get_weave() which was removed in bzr 1.6 [17:52] rockstar, is there a particular reason he wants a release rather than just using trunk as is? [17:55] i created a repository with --no-trees, is it possible to add a tree to branch in the repository afterwards? [17:55] bzr checkout . should do it [17:56] jelmer: are revision names in trac supposed to show with %2F? [17:57] metajack, in URLs, yes, other than that, no [17:57] jelmer: also, revision 44 of lp:trac-bzr does not seem to fix the %3A problem for 'current:' [17:57] luks: ok, thanks, i'll try that [17:57] jelmer: they show up everywhere with escaping for me. [17:57] (running interpid latest bzr and trac, and trac-bzr from lp:trac-bzr trunk) [17:59] jelmer: I'm the user rockstar was talking about btw :) [17:59] jelmer: is there any way to fix the issue, say by resetting the bzr svn props on all the files or some flag to bzr? [17:59] the bug is https://bugs.launchpad.net/bzr-svn/+bug/280850, btw [17:59] Launchpad bug 280850 in bzr-svn "bzrlib.errors.KnitCorrupt raised while checking out or branching a specific Subversion branch" [Undecided,New] [17:59] jfroy|work, not really without knowing what's actually happening [17:59] jfroy|work, I'll see if I can have a look at it later tonight [18:00] No rush, I can fallback to svn in the meantime. [18:01] hello all [18:01] I got here a new (to me) behavior of bazaar checkouts [18:02] when I was out of network, I performed a bzr commit, and "automagically" the commit behaves as I had "bzr commit --local" [18:02] is that natural? [18:02] metajack, are you sure you're running trunk? [18:03] (it passes the tests) [18:03] jelmer: Pretty sure. I see the revision 49 change in backend.py on the machine. [18:11] metajack, trac-bzr is pretty much unmaintained at this point [18:12] I've been fixing things that I hit since I had an instance of it running [18:12] I assume you must not be using bzr 1.6+ on that instance. [18:13] I think all the 1.6 bugs are fixed now, and it's just down to this double quoting issue. [18:14] menesis, trunk still uses _get_weave() and that's gone in 1.6 [18:14] menesis, so I'm sure there's at least some code paths that break with 1.6 [18:15] There is a patch for that in the tracker, and it works. [18:15] I assumed that had made it to trunk since the other part of that patch was in revision 49. [18:17] I didn't merge that patch because it's very inefficient [18:17] Better inefficient than completely broken, no? === beuno-lunch is now known as beuno [18:18] metajack, In my case, the two would be the same since trac has already taken the system down a couple of times [18:19] metajack, Anyway, I'm happy to hand over the trac-bzr-team maintainance to somebody else if they're interested [18:19] but I have no interest in continuing to work on it myself [18:20] Sigh. [18:21] This has pretty much been the only thing preventing me from using bzr. I'm sad to see it abandoned. [18:23] I will spend another little while trying to fix it. If I'm successful perhaps I will take you up on the maintainer offer. [18:24] Thanks - it needs somebody who can spend more time on it then the occasional ad-hoc fix I have been doing. [18:53] anyone can confirm this to me? [18:53] please [19:18] lexrupy: I haven't seen that behavior before [19:18] Though I thought there was something with bzr-gtk that would detect your network connection [19:18] jelmer do you remember that? === abentle1 is now known as abentley [19:31] ... I also not before this version [19:31] Does info still show it as a checkout? [19:32] yes [19:32] now I am using version that comes with ubuntu 8.10beta [19:32] bzr --version returns => Bazaar (bzr) 1.6.1 [19:33] I have also bzr-gtk installed [19:34] I found it very strange, because earlyer versions (also 1.6.x downloaded from ppa repo) were not doing this [19:34] Bazaar always keeps the file ownership and permissions on *NIX systems, right? [19:34] and with that versions I also used bzr-gtk [19:35] fynn: I never had this kind of problems... permissions always kept right [19:35] So if I delete a monitored some_file.py, and then "bzr revert some_file.py", I should always get some_file.py with the same permissions and ownership information? [19:36] fynn: I cannot do the rigtht answer for this question.... [19:37] going back to my "issue" [19:37] the good part is that all things gone right [19:39] fynn: The only permissions bzr cares about is the execute bit. [19:39] fynn: Also, try it and see. :P [19:41] local commits, and the when network was resumed I done "bzr update", all things happened as I had "bzr commit --local" off the network, a merge has been done and next commit goes to master branch [19:42] *gone to master branch [19:52] I want to go to (and use) a certain revision of a branch. what is the right way to do that? "bzr revert -r d"? [19:53] depends on your definition of 'use' [19:53] Depends on just what you mean by "go to and use". [19:53] heh [19:54] actually, I want to use the 1.8.0 release of bzrtools, since the trunk requires a new bzr version [19:54] so i have a branch of lp:bzrtools, except that I need an older version [19:55] I know I could do "bzr checkout -r", but what would I do if I have an unbound branch? [19:55] I'd just pull down to the version you care about. [19:55] miracle2k: 'bzr uncommit -r' is probably what you want. [19:55] Then you're all set to pull up to a later version when you want to. [19:56] No, don't do that; it's extra work. Just use pull. [19:56] Uhm... how is it extra work? [19:56] Because you have to do a revert afterward. [19:56] I already tried "bzr pull -r tag:release-1.8.0", except it gives me "no revisions to pull" [19:56] Hmm, true. [19:56] miracle2k: 'pull --overwrite' [19:56] You need --overwrite to pull, since you're moving backward. [19:57] ah, I see, that works. [19:57] thanks everybody === Spaz is now known as Spazpaimon === Guest52963 is now known as jelmer === jelmer is now known as Guest30665 === Guest30665 is now known as Guest52963 === fta_ is now known as fta === Guest52963 is now known as jelmer [21:55] hello [21:55] vila: are you still here? [21:57] poolie: hi [21:57] poolie: middayish ok with you ? [21:58] poolie: also, for usertest, patches via lp merge requests or to the list ? [21:58] i think so [21:58] i should check with steph [21:58] i don't know, either [21:58] did spiv post his yet? [21:58] not sure [21:58] I'm adding st -r -2..-1 [21:58] lifeless: also, you need to tell marianna _today_ when you're arriving and departing [21:58] oh frell [21:59] I need to book tickets [21:59] you don't necessarily need to book as there are plenty of flights, but you do need to decide [21:59] but you should book soonish [22:00] marianna is in the uk yes? [22:00] yep [22:00] righto [22:00] btw, usertest doesn't lock itself out :P [22:01] and bzr.inv is a tad slower at fetch [22:01] hilarity ensued [22:01] ah [22:01] i wondered how that could be happening [22:02] so looking at it [22:02] the output name rearranging is in the bash script [22:02] so I think we need to lock in the bash script [22:02] as the output name stuff should be protected [22:04] yes, we should [22:05] i started adding one but because it needs to be bulletproof against the machine stopping, as happened a couple of times, i was a bit lazy [22:05] Hmm... I want to use a different version of a plugin. I've set the BZR_PLUGIN_PATH variable to point at the new directory, but bzr still doesn't list it under 'bzr plugins'. [22:06] poolie: well, we can unwedge after a restart [22:06] Accidus: you need to point at the containing directory [22:06] if your plugin is /foo/bar/myplugin [22:06] BZR_PLUGIN_PATH should be /foo/bar [22:07] That's what I did. [22:07] poolie: also I think there is a stock shell lock utility one can use, I don't recall the name offhand [22:07] Accidus: does bzr report an error loading it perhaps? [22:08] Accidus: and are you on windows? [22:08] Do I need to look anywhere, or will it output it to the terminal? [22:08] Now, working on Ubuntu [22:08] * no [22:08] it should put a one-liner to the terminal [22:08] and details to ~/.bzr.log [22:08] No error reported on terminal [22:10] Accidus: well look in the log anyhow :) [22:11] No, doesn't seem to contain any errors [22:12] Here's what I did. I probably missed something [22:12] it should say [22:12] looking for plugins in XXX [22:12] where XXX is your path [22:12] 1. Set the BZR_PLUGIN_PATH to point to /home/accidus/dev/plugins [22:12] And the actual plugin is a directory under plugins [22:13] So that if I ``ls $BZR_PLUGIN_PATH'', I see the plugin's dir listed [22:13] Ah. I have an idea. [22:16] Okay. I'm stoopid [22:17] Never mind me. Sorry to have wasted your time. [22:17] * Accidus blushes. [22:17] ? [22:17] poolie: btw please let the current usertest run complete [22:17] poolie: I will get valuable data from it even though its glacially slow [22:18] Didn't export the env var [22:18] So bzr didn't have it. [22:18] did you kill off the others? [22:18] poolie: yes [22:18] poolie: oh foo, just realised, they're stomping on teh same file, so I won't gain data anyhow [22:19] poolie: so don't worry, I'll nuke that one too === abentley1 is now known as abentley [22:26] poolie: how does this sound - I will disable the cronjob [22:26] poolie: and start a fresh run [22:27] if it's going to be slow i'd rather get the locking etc fixed up [22:27] i can do it in a bit [22:28] it will be, I'd like a result today though and I suspect that even with just one running it will be pushing it to finish by 5 [22:29] I've just started a task with cron disabled; its easy enough to kill that and please do so if you want to [22:29] I'm also trying to dig up an easy locker for us [22:31] Is the bzr service up and running on lp? [22:31] i am getting an odd error and the references that I can find for it have all coincided with a lp outage. [22:35] lifeless: I'm looking over your "repository" code. Quick point of clarification [22:35] you have a "chk_serializer" module [22:35] which seems to be an XML derived form [22:35] is that meant to go away in time? [22:37] also, some quick naming thing for CHKInventory. you use the term "entry" in multiple ways. For example: [22:37] jam: not unless we kick away all the existing code that checks serializer objects; its used for the revision objects [22:37] return self._bytes_to_entry( [22:37] self.id_to_entry.iteritems([file_id]).next()[1]) [22:37] jam: inventory objects are not serialized through it, and finally [22:37] lifeless: sure, but not for inventory objets? [22:37] its used for equality testing [22:37] repo1.serializer != repo2.serializer [22:38] lifeless: k. I mostly just wast trying to understand, as you added special code to unpack inventories [22:38] dfc: afaik it is [22:38] _unpack_entry is only used for inventory stuff [22:38] I realize it is "work in progress" I just wanted to make sure I understood [22:38] AttributeError: 'ProtocolThreeDecoder' object has no attribute '_in_buffer' . . . .. . . > http://pastebin.com/f57b9959d [22:39] lifeless: any idea why I would be getting that message? [22:39] dfc: you only get that error if you run "-Dhpss" what is the failure without it? [22:39] dfc: (the cause is buggy code in a debug statement) [22:39] bzr: ERROR: Connection closed: please check connectivity and permissions (and try -Dhpss if further diagnosis is required) [22:39] jam: that code fragment uses entry in the same way I think [22:39] dfc: I suspect a ssh key issue [22:40] dfc: try ssh bazaar.launchpad.net [22:40] lifeless: I think you need "sftp bazaar.launchpad.net" [22:40] since it doesn't support plain connections [22:40] jam: no, ssh will test auth just fine [22:40] 08:36 < jam> return self._bytes_to_entry( [22:41] ^ convert from bytes to an inventory entry object [22:41] 08:36 < jam> self.id_to_entry.iteritems([file_id]).next()[1]) [22:41] ^ a CHKMap (aka persistent dict) from file id to inventory entry [22:41] lifeless: so that code is a bit confusing because "id_to_entry" is "id_to_bytes" object [22:41] I understood what was happening eventually [22:42] ok [22:42] thanks for looking! [22:42] you also poke at CHKMap._root_node directly in CHKInventory, is it meant to be that coupled? [22:43] I'm being cautious about making things public attributes [22:43] given all the insane fuss about it in reviews over the last few mnoths [22:44] then I'm a bit surprised that you expose "CHKInventory.id_to_entry" as a plain attribute, and hide CHKMap._root_node [22:44] id_to_entry seems like an implementation detail [22:44] are you planning on making it more public? [22:45] I very much expect fetch and inventory delta iteration to walk the maps [22:45] if that ends up being in methods on CHKInventory then id_to_entry will become private [22:47] so root_node is something I'm not sure how/where/when it belongs; its part of the how-to-make-COW-clean question [22:47] which isn't that functional, but is important for safety and cleanliness [22:47] id_to_entry is something I am sure it is in the right place; I'm not 100% it is public but I suspect it is [22:48] lifeless: are the final value nodes all single-inventory-object bytes? [22:48] I don't see anywhere that they are aggregated [22:49] jam: thats right [22:49] jam: I was working on the 'what breaks when we have multiple documents per inventory' issue [22:49] this was a fast to implement way to achieve that [22:50] so the 4.4k entries in .cix for bzrtools is because there are that many total versions of the various inventory lines? [22:50] I'm still understanding why some values in that index have an "N" as the prefix, but I'll get to that somewhere [22:50] you'll have 1 entry per inventory (the root node of the CHK) and 1 per unique inventory entry value [22:52] isn't N no end of line ? [22:53] (how are you looking at the index - be sure you get \x00 seperators visible) [22:53] spelling blah [22:53] lifeless: "bzr dump-btree --raw | vim -R -" [22:53] \x00 shows up just fine [22:53] ok [22:53] whats an example with a leading N ? [22:54] sha1:0004feba9f0af7777528a6ac7a62abb83cd6ed3d \00 \00 N3131511 228 [22:54] I added spaces around \00 to make it obvious [22:54] yes thats the no end of line marker [22:54] ah [22:54] it says no end of line, starts at 3131511 for 228 bytes [22:55] so its a value [22:56] because values are chkvalue:\n%(BYTES)s [22:56] and the serialiser for inventory entries doesn't put a trailing \n as that would be awkward [22:56] so specifically its a chkvalue of an inventory entry [22:59] jam: so my general approach for testing the next bits... [23:00] jam: I want to parameterise CHKMap by how to aggregate values/internal nodes [23:00] jam: and pass those same parameters to CHKSerializer [23:00] so we get several different serializer values [23:01] then we can trivially run up N different formats each behaving differently but with all the higher level iteration etc code the same [23:01] jam: I'm not going to do this immediately, just sketching out the approach in the hope you'll want to dive in :P [23:02] so just to make sure I understand [23:02] at the moment you have a structure with 1 root node that contains a chk to every file-id [23:02] jam: what I'm going to do now is to teach fetch to use CHKInventory.update(inv_delta) rather than full reserialization [23:02] basically, just as though you took the current inventory and hashed each line separately and put it into the repository [23:03] jam: yes, thats a fair description. layerwise it sounds different :) [23:03] jam: actually, not quite, you missed the inventory object itself; the 4-liner that has root id, chk root and revision. [23:04] so meta node, dictionary root, and one chk per file id [23:04] k [23:04] hi. is this the place to (also) make questions about bzr-svn? [23:04] ricardokirkner: sure [23:04] jelmer: your public awaits [23:05] I am trying to compile bzr-svn from trunk (I know, I know)... and I'm getting some import issues [23:05] namely 'cannot import name foreign' [23:06] ricardokirkner: there was a patch on the list for this [23:06] ricardokirkner: I believe its been applied already, just pull again [23:06] jam: another related thing is to add a path_to_id map [23:07] jam: and use it it avoid full iteration when populating .children [23:07] lifeless, I just checked it out... last revno is 1935 [23:08] mhh... I did bzr branch lp:bzr-svn is this correct? [23:08] or should I use another branch? [23:08] ricardokirkner: I'm not sure [23:08] see the bzr-svn docs on the wiki [23:08] alright.. and I will look in the mailing list [23:08] thx [23:11] ricardokirkner: I think the lp:bzr-svn branch isn't particularly stable [23:11] I would recommend using a released version [23:11] jam, ok [23:12] jam, I wanted to build bzr-svn, in order to debug some issues with http authentication [23:12] but I can first try with a more stable release [23:12] ricardokirkner: well, he also uses tags [23:13] so you might do "bzr branch lp:bzr-svn -r bzr-svn-0.4.9" [23:13] I'm not 100% sure his naming scheme, but it is something like that [23:13] you can branch the whole thing and then "bzr revert -r tag:..." as well [23:14] alright.. I'm checking the 0.4 series right now [23:15] FWIW, I run bzr.dev and lp:bzr-svn/0.4 without issues, but I only use bzr-svn for pulling things. [23:15] (And bzr-svn does occasionally break, but not in data-lossy ways or anything.)