[00:04] lifeless, what has regressed [00:04] jam-laptop, hi [00:04] hi [00:04] poolie: 'bzr update' in a checkout [00:04] the error for trying to commit to a readonly branch? [00:04] poolie: no [00:04] what jam said [00:05] 'bzr checkout http://people.ubuntu.com/~robertc/pack-repository.knits', wait while I push a new rev, 'bzr update' && boom [00:05] I know you looked at this [00:05] iirc there is still a bug open on it [00:05] i haven't fixed it [00:05] oh, ok. [00:05] ipso facto I was confusedo [00:05] it may have been working at some time in the past [00:05] but, it wasn't tested :) [00:06] i have written some format docs on packs [00:06] will send them shortly [00:06] and have done the non-structural review cleanups [00:06] i am going to see whether the structural cleanups i wanted can be done easily or not [00:07] if not easy, they can just be turned into todos or bugs or forgotten maybe [00:07] jam-laptop, ll may have already suggested it, but [00:07] oh. is --forget-merges not in 0.91 either? :( [00:07] maybe you would look at making interpack fetch make sure that the text delta basis is in the destination [00:08] ...odd, initial incremental commit is acting like it isn't using the C extension -- massive amounts of CPU time used while collecting changes. [00:08] dash, it'll be in 0.92 [00:09] i guess I can just write my own script for now [00:09] revno 2000 merged support for --lightweight with http checkouts [00:09] =/ [00:09] dash: heh, sorry :) [00:10] and 2019 claimed to fix it for heavyweight checkouts :( [00:10] ok no its right [00:10] there have been no commits that claim to make heavyweight checkout updates work over http [00:11] 2088 did that for lightweight, so I'd say it was a 'just worked' thing initially [00:12] huh. after "bzr revert" i'm not seeing a pending merge. i guess that's sufficient. [00:12] jam-laptop: what do you think of a dirstate iterator which _sha_from_stat advances, in commit ? [00:12] dash: you'll also have lost your changes ... [00:13] lifeless: which is OK [00:13] lifeless: 15m52s wall-clock for first incremental, 15m27s of that being user time. [00:13] nDuff: that really is suspect isn't it. [00:13] do we list the C extensions anywhere yet ? === mw is now known as mw|out [00:14] nDuff: when it went faster before, how fast was it ? [00:15] poolie: call ? [00:15] in 5m? [00:15] sure [00:18] lifeless: out of my scrollback buffer right now, sadly, and I didn't record it. that said, recommit (of the same thing that just took ~16min) is completing in 1m52s. [00:18] grah [00:18] the only thing that makes sense to me is the C extensions not being picked up [00:19] perhaps we should make that a nag [00:20] ...hmm. seems odd that it would happen only on initial incremental commit and not on recommit. Is there significant work done (prone to throwing an exception based on tree state) while the module is first being loaded? [00:24] * nDuff looks at the code, and yeah -- looks like only an ImportError should result in fallback. [00:25] would trace.mutter() append to .bzr.log under normal conditions, or should I be doing something else to instrument? [00:26] * nDuff looks in trace.py, and decides that warning() is more appropriate to the case anyhow. [00:36] 1m11s initial commit; 12.2s status w/ bad cache (and new files unknown), 7.6s status with good cache (and new files unknown), 25.4s to add unknowns, 12.1s/9.9s initial/subsequent status after adding unknowns... and now the 15min incremental commit isn't reproducing itself. [00:37] morning all [00:40] lifeless: would you use a full iterator, or just another "this was the last cached lookup" like you just added [00:41] nDuff: trace.mutter does to th elog [00:42] jam-laptop: I'm thinking a full generator. Basically lsprof is claiming 10% in _get_entry [00:42] lifeless: I would wonder if it could actually keep exactly in sync with commit [00:42] (partial commits, etc have an effect here) [00:42] jam-laptop: an alternative would be an equivalent of inventory.iter_entries_by_dir(specific_file_ids=XXX) [00:43] with yield_parents=True [00:47] iter_entries_by_dir() seems like a good route to me [00:48] ...hrm, cancel that; still a 15 minute commit, and none of the logging directives I put in in case of an ImportError on the C modules triggered. Time for a callgrind run, I suppose. [00:58] appears to get slower near the end of the change-collection process, incidentally. [01:00] jam-laptop: the iter_entries_by_dir will need to return the disk data; thats really the disconnect we're dealing with. [01:00] jam-laptop: I don't think this is a 2-day piece of code; particularly with win32 sadness. [01:00] jam-laptop: so I'll send a mail right now [01:00] well, the _sha_sum... do you honestly think that would be reasonable? [01:01] It just seems like it is iterating at a very different layer [01:01] and you are expecting it to stay in sync [01:01] I suppose if you pass in the path [01:01] and you know you are always "incrementing" in path [01:01] then it can fast forward until it finds what you need [01:01] well [01:01] But we don't have plain python generators that take more data [01:02] we don't need one [01:02] (until 2.5 or later) [01:02] I guess _sha_... could do the fast forwarding [01:02] iter_entries_by_dir on inventory returns inventory objects [01:02] we need one that returns the key fields and the path_content_summary details [01:03] hmm [01:03] I'll test doing a cache lookup; one second [01:08] jam-laptop: hmm, do I need to update the _id_index in my update_basis patch ? [01:14] jam-laptop: I'm just building a dict of all the stats [01:14] jam-laptop: won't be so hot for partial commits, but ... [01:15] possibly a threshold of lookups to trigger changing form [01:16] nDuff: commit feedback is per-dir, if you have larger dirs at the end that would explain the apparent slowdown, or it may be list accumulation overhead [01:17] still, its two seconds faster on incremental commits [01:21] initial commit down to 1m29 [01:21] wall clock :0 [01:30] lifeless: I've got a .callgrind file; anywhere particular you'd like it uploaded? [01:30] mail me or give me a url [01:30] they gz well [01:34] lifeless: in the mail. [01:34] thanks! [01:39] lifeless: I don't think you want to try to update _id_index, since there is too much stuff going on (some entries will be in the removed parents, etc) [01:39] lifeless: But you probably should reset it [01:39] I think self._id_index = None is fine [01:47] nDuff: holy fuck. is_inside_any is taking 90% time [01:47] nDuff: what parameters did you give commit ? [01:48] lifeless: bzr arguments: [u'--lsprof-file', u'../upstream-portage-tree.current.first_incremental_commit.callgrind', u'commit', u'-m', u'first incremental commit', u'--quiet'] [01:48] nDuff: do you have many deleted paths ? [01:48] probably; let me check. [01:49] thats likely it [01:49] is_inside_any is not that cheap; my strategy to date has been to avoid calling it as much as possible. [01:49] looks like we need a smarter structure than linear searching. e.g. bithection [01:49] brb, food time [01:50] jam-laptop: another dirstate patch for your consideration :) [01:52] lifeless: 8045 removes, 35597 adds, 24211 modifications. [01:52] nDuff: that will be it [01:52] we could make this a list [01:53] deletes[bisect_left(deletes, path)].starts_with(path) [01:53] or a dict matching the tree structure [01:53] jam-laptop: ^ I think bisect is probably good enough, or possibly even best. [01:53] we're going to have to do 100K lookups into this [01:54] lifeless, pack doc sent [01:54] another thing is we know when we're going to have to lookup again - when we add a delete, or when we change directory [01:54] nDuff: Anyhow, I a) know where the problem lies, b) can definately fix it. [01:54] nifty! [01:54] nDuff: its the number of deletes that you have in your tree during the commit. [01:54] thank you for the callgrind [01:55] np. thank *you* for putting up with all my fumbling around. [01:57] know when you might have a chance to address this one? if it'll be a while, I'd like to open a ticket so I can get notice after it's happened. [01:57] please open a ticket [01:58] it may not be a while [01:58] but its worth noting [01:58] I've put the stat cache improvements into pack-repository.knits too, revno.... [01:59] 2853 [01:59] In my Darcs days, this sort of thing would trigger the Red Giant bug, but since it was exponential you could usually get around it be making smaller commits with less files/deletes/whatever. Would that be the case here? [01:59] [Not that you really want to bandy that about] [01:59] AfC: nah, I'll just fix it [02:00] :) [02:05] lifeless: https://bugs.launchpad.net/bzr/+bug/156491 [02:05] Launchpad bug 156491 in bzr "bzr-packs: commit with many deletes spends much time in is_inside_any" [Undecided,New] [02:05] That's no fun. It's hard to feel like your software is working hard, if you don't have to occasionally pander to it. [02:06] fullermd: ah, so you recommend that our tool should be so bad it causes stockholm syndrome? :) [02:07] Well, there are people still using arch... _you_ connect the dots :p [02:07] lifeless: btw, I'm curious, if the explanation is accessible to folks who don't know the codebase -- why is this case hit only on an initial commit, but not on a recommit or other operations which need to determine what is scheduled to be committed/deleted/etc (ie. status)? [02:10] New bug: #156491 in bzr "bzr-packs: commit with many deletes spends much time in is_inside_any" [Undecided,New] https://launchpad.net/bugs/156491 [02:11] spiv, hi [02:13] poolie: good morning [02:13] nDuff: well, its hit on the first incremental case [02:14] nDuff: when both FOO and all the children of FOO are deleted, we like to report only 'FOO deleted' [02:14] thats a significant factor in this [02:16] nDuff: I'm going to review a patch then do the changes review asked for in one of my patches [02:16] then I'll see what I can do about this [02:17] graci [02:17] * nDuff wanders off to do some clustering work. [02:29] spiv, wow, you're right [02:29] i thought i'd checked that this revision was referenced by its own inventory but in fact it is not [02:29] * lifeless grins [02:30] which is why it's good to check [02:30] poolie: yeah. That had me confused for while :) [02:31] I'd assumed that if its own inventory didn't refer to it, then no others could. [02:31] spiv: in theory that is right. [02:32] spiv: I suggest making 'bad' into a fulltext for now, [02:32] with inventory reassembly in the future. [02:32] lifeless: right. But reconcile of course is dealing with broken files... [02:32] this is oooold data [02:32] lifeless: ah, that's a clever idea. [02:32] inventory reassembly is going to be very slow without a fair bit of effort I fear :/ [02:32] right [02:33] not to mention hard [02:33] Hmm, I think I can see how to do it reasonably efficiently. [02:34] so just making it a fulltext is not, by itself, going to totally exclude this problem [02:34] as we talked about on the phone [02:34] But it's not a trivial amount of work... [02:35] poolie: why's that? [02:36] call one of the revisions that references it "bad" [02:37] um, "dependant" (typo) [02:37] suppose the destination already has the revision "bad" [02:37] it probably won't have known to pull that text version [02:37] then, when it comes to pull "dependent" it will think it doesn't need to pull the text version [02:38] I see. [02:39] poolie: but ifi t has bad already, then it has the text already. [02:39] You're now doing checks when pulling to make sure the parent is available, though? [02:39] poolie: *if it has bad already*. [02:39] So this would only happen if the repo was constructed before you added those checks? [02:39] IMO yes [02:41] lifeless, are you sure it will have detected to copy this text when pulling 'bad', even though it's not apparently modified? [02:42] i guess this is easy to test [02:42] I guess we're talking slightly different corner cases. [02:42] What I'm trying to say is 'if andrew makes the text a full text we will not encounter headaches with bzr.dev' [02:44] well, that would be good for now [02:44] even if it may not cover every case [02:45] garh bloody lawn mowers [02:47] jam-laptop: good call on the parent swap test; found a bug [02:48] jam-laptop: ping though [02:51] poolie: doco reviewed [02:53] thanks! [02:53] re your last point about the pack-names file [02:54] igc: can yu review 'use a dict to access stat cache' ? [02:54] the requirement is that, every pack listed there must exist [02:54] igc: also, what part of commit are you hacking on at the moment, so we don't collide. [02:54] poolie: yes, every pack in that file must exist. Every pack that exists *may* be in that file. [02:54] but it is possible to have a window where about-to-be-removed packs are present but not listed [02:54] lifeless: I'll review that soon [02:54] poolie: also during insert, we put the pack before we add to the names list. [02:54] so, you could recreate it, but this might be reintroducing redundant copies of the file [02:55] oh i was going to mention the file sizes too [02:55] poolie: but in that case its arguable that we should add them if we were to notice. [02:55] I'm currently working on bug 115601 [02:55] Launchpad bug 115601 in bzr "no clean abort after bzr+ssh:// connection timeout. ERROR: exceptions.AssertionError: end of file reading from server." [High,Confirmed] https://launchpad.net/bugs/115601 [02:55] as requested by poolie [02:55] igc: coolio :) [02:55] code done - just the tests to do now [02:55] poolie: You might also be introducing inconsistent data in a post-reconcile scenario [02:55] poolie: or data that is being deliberately removed. [02:56] poolie: so I'd really encourage the concept that 'the pack-names file is authoritative, precious, and not reconstructable' [02:57] sure [02:57] that's just the kind of thing i want to capture [02:57] i guess for the iix it is graph parents first too, then compression base [02:58] like for tix? [02:58] yes [02:58] I should have been more explicit [02:58] np [02:58] just brain slippage, i had seen them in the other order === kiko is now known as kiko-zzz [03:30] * igc food [03:46] lunch for me too. [03:50] Good idea. [03:50] * spiv -> food === mneptok is now known as mnepette === mnepette is now known as mneptok [05:41] hi all [05:41] hi [05:41] i have configured the loggerhead as per my bzr branch [05:41] but now i am not knowing how i can view it through the browser [05:42] how to configure it in apache web server [05:45] http://dharmatech.onigirihouse.com/atari-forth.jpg [05:46] lifeless, i'm not so sure that having unlock raise an error if a write group is underway is the best thing, as i said in my review [05:46] i have another reason which is that it tends to hide errors [05:47] to raise exceptions from things expected to be called from finally blocks [05:48] poolie: fair enough, I can buy that, though its good from a correctness point of view [05:48] perhaps a debug option or smething [05:49] or a warning, which can be caught by -Werror [05:52] lifeless: I'll review the 'dict to access stat cache' patch now [05:57] i need help in setting up loggerhead [05:57] indraveni, is there really no documentation? [05:57] is there documentation is loggerhead itself? [05:58] poolie, i couldn't find any good document [05:58] indraveni, mwh is the new maintainer, he should be online in a bit [05:58] except the commented content in the conf file [05:58] ok [05:58] theres no README? or INSTALL? [05:59] lifeless, there is a README which says [05:59] that everything is similar to Tubergears [05:59] and i dont have experience with tubergears [05:59] and for apache conf some steps are given, but i am not able to udnerstnad how it works [06:02] well [06:02] AIUI turbogears can run as its own webserver or as a fastcgi script [06:02] you can probably find out more via google [06:03] * nDuff is generally familiar with turbogears. [06:04] typically, you've got a file start-.py, and a config file with all your installation-specific settings [06:04] ...so starting the server is along the lines of running "start-.py foo.cfg" [06:04] can't say anything about loggerhead specifically, though. [06:05] if you're running through apache, of course, it gets more complicated (unless you're doing it the easy way and using mod_proxy). [06:08] lifeless: hmm, just tried pushing from my local (packs-based) tree to a "bzr serve" instance on the LAN (working against a packs-based shared repo). bzr: ERROR: Could not understand response from smart server: ('error', "") [06:09] nDuff: oh, looks like bad marshalling. [06:09] full stack trace from the server at http://pastebin.com/d26bd26fa [06:09] please file a bug [06:09] it won't be hard to fix, the problem is that this is an optional method, and one that packs don't support [06:10] because they don't use the previous locking model. [06:14] lifeless: https://bugs.launchpad.net/bzr/+bug/156546 [06:14] Launchpad bug 156546 in bzr "unable to push to packs-based smart server" [Undecided,New] [06:15] thanks! [06:21] New bug: #156546 in bzr "unable to push to packs-based smart server" [Undecided,New] https://launchpad.net/bugs/156546 [06:25] spiv: ^ [06:27] ok, think I have the pieces put back together again. [06:27] one more run then onto nDuff's performance issue [06:28] poolie: spiv: I think it would be nice to have some way to be sure the remote server handles optional protocols (like leave_lock_in_place) correctly [06:38] do you mean a way to test it? === jkakar_ is now known as jkakar [06:48] morning all [06:49] hi sab [06:50] hi sabdfl [06:51] hi sabdfl [06:53] lifeless: review sent to the list now [06:56] poolie: is it ok to merge the stat lookup via dictionary patch ? [06:57] poolie: thats the 5 second win on incremental commit [06:57] * poolie looks [06:58] i'd like to merge the pack branch with the small changes, then put the larger ones up for separate review [06:58] ok? [06:58] well this is a trivial change [06:58] not packs per se [06:58] and I've reviewed it poolie [06:58] ''trivial'' conceptually, code wise its something like 20 lines [06:59] right, I'm asking you with your RM hat. [06:59] it looks ok to me [06:59] sure [06:59] poolie.hats().switch("RM") [06:59] :) [07:04] bbiab [07:06] packs branch sent up [07:08] to pqm ? [07:09] yes [07:09] awesome [07:09] tada ! [07:09] indeed [07:09] sabdfl: ^^^ :) [07:09] Woo! [07:10] * vila_ send some champagne [07:11] poolie: does it have the same disk format string ? === vila_ is now known as vila [07:11] yes, still the same [07:11] and still just called 'experimental' [07:12] ok [07:12] is there any test framework support for checking that an assertion other than a deprecationwarning is raised? [07:12] (obviously the format and name needs to be changed) [07:14] *pop* goes the champagne :-) great work lifeless et al [07:15] hm that kind of sucks, the python warning module does not make it very easy to catch them [07:15] I'll wait till friday for the champagne :) [07:15] qantas champagne? [07:15] no, but we're all together friday night [07:15] FSVO friday :) [07:16] also I don't think we get champagne in economny class :( [07:24] hi hi hooray lifeless - well done [07:25] New bug: #156557 in bzr "Bazaar does not obey setgid on Linux" [Undecided,New] https://launchpad.net/bugs/156557 [07:29] current figures are stable - 1m31 wall initial commit, 0m15 incremental, 0m10 partial [07:31] hello [07:33] hello === jamesh_ is now known as jamesh [07:48] poolie: you forgot kthxbye on your commit message :) [07:48] heh [07:48] i should have [07:48] looks like it's copacetic though, deep in the ascii tests [07:49] huh? [07:49] it looks like it will land and not bounce [07:50] http://en.wikipedia.org/wiki/Copasetic [07:53] yes, thats the definition [07:53] righto, I forgot I was going out tonnight [07:53] ciao [07:54] bye [08:01] actually cancelled [08:01] too tired [08:03] reviewing the lp-login patch currently [08:04] woot?! has it landed?! [08:09] mwh, hi, are u tehre [08:10] you want mwhudson [08:11] yes lifeless [08:11] i need help in loggehead, yesterday he was helping me [08:13] morning / evening lifeless [08:13] svn-import finished successfully yesterday :) [08:14] mdke: excellent [08:14] but now I just have .bzr directories, I can't see the files anywhere... [08:14] is there another step I need to do? [08:14] mdke: you can get a working tree in any branch by doing 'bzr checkout .' [08:14] or you can make new branches from these and treat the current directly like a cvs or svn repository [08:14] righty ho [08:15] so bzr branch /local/url new/branch? [08:17] mdke: yup that will work [08:18] mdke: then bzr push /local/url to push back to /local/url [08:18] mdke: or you can do 'bzr checkout /local/url new/tree/' which will make it work like svn - when you commit /local/url gets the changes [08:20] aha, clever [08:20] lifeless: thanks. I will branch then push the branches to LP, once I'm done with that I'll abandon /local/url [08:28] wikipedia says: 'Copacetic may be a descendant of the Hebrew phrase "hakol beseder"', which I read 'How cool bzr' is :) [08:29] well, you have to read bzr with a french accent though, but wikipedia also says that one possible origin is creole, so I think I'm ok :) === meuh_ is now known as meuh === lifeless changed the topic of #bzr to: The Bazaar Version Control System | http://bazaar-vcs.org/ | The packs have landed | Bazaar 0.91 is out - http://bazaar-vcs.org/Download | Please complete the Bazaar User Survey - http://www.surveymonkey.com/s.aspx?sm=L94RvLswhKdktrxiHWiX3g_3d_3d [08:32] Cool! [08:33] a tour de force, lifeless. very well done indeed. [08:34] indraveni, mwh should be awake soon [08:34] poolie, thankyou [08:34] poolie, will wait for him [08:35] sabdfl: thanks!. And boy do we have ideas to improve on this improvement. [08:36] sabdfl: though as I said a while pack, the very core disk layout is now solid IMO (the pack disk format itself). [08:37] pack on the brain eh lifeless - s/pack/back/ :-) [08:37] indeed [08:39] indraveni: hello [08:40] mwhudson, hi [08:40] mwhudson, good morning [08:41] mwhudson, i have edited the loggerhead conf file accordingly but now i am struck with how to make it acess with apache [08:41] ? [08:41] i have apache installled and i have a vhost entry for my bzr repo [08:43] http://bazaar-vcs.org/BazaarFormats doesn't mention packs... [08:43] Lo-lan-do: so add it [08:43] :) [08:43] I'd gladly paste from the output of bzr help formats, but even that doesn't mention them. [08:44] they are still considered experimental [08:44] Lo-lan-do: so write a patch adding documentation for it. [08:44] we have a small amount of work to do to make them be exposed [08:44] Lo-lan-do: in other words, chill, dude. [08:44] indraveni: you need to use ProxyPass or similar [08:44] mwhudson, yes, i saw about it in my README file [08:45] well, I like the enthusiasm [08:45] AfC: I'm totally chilled (especially now jelmer helped me fix my bzr-svn problem), I'm just looking for info on this new shiny format that everyone seems so excited about :-) [08:45] but how do i need to access it through browser ? [08:45] Lo-lan-do: if you want to play, or add docs to the wiki, if you look at my mails to the list about dogfooding they are still valid [08:45] indraveni: here's what we (will) use for testing: http://rafb.net/p/1PMHGs81.html [08:45] Lo-lan-do: its just that you don't need anything other than bzr.dev to experiment [08:46] you need to have "127.0.0.88 codebrowse.launchpad.dev" in your /etc/hosts file [08:47] mwhudson, but in this where is the info about the bazaar repo ? [08:47] indraveni: there isn't [08:48] mwhudson, then how does the apache know where os bazaar [08:48] mwhudson, even there is ocnf related to loggerhead location [08:48] indraveni: um [08:48] indraveni: loggerhead runs an http server, listening on some port or other, 8080 by default [08:49] the conf file i pasted above tells apache to forward requests for codebrowse.launchpad.dev to this loggerhead process [08:50] Lo-lan-do: in bzr.dev [08:50] but where is loggerhead folder in that case in ur system [08:50] indraveni: it doesn't matter! [08:51] there is a new doc - doc/developers/index lists it, which describes packs. [08:51] mwhudson, how does apache know where is loggerhead ? [08:51] lifeless: Thanks, I'll read up on that. [08:52] np [08:53] indraveni: why does it need to? [08:53] it's not running as a cgi script [09:00] mwhudson, when i give bzr.indraveni ( which is my servername in apahce file) its showing nothing [09:01] i am not understanding how loggerhead, apache and bazaar are related [09:01] indraveni: what are you actually trying to acheive here? [09:02] mwhudson, when i configure my apache file with vhost like http://pastebin.ca/747691 [09:02] are you trying to show your branches to the wider internet, just to a few people in your team, just browse them yourself? [09:02] mwhudson, i am able to see the bazaar repos content in browser, using bzr.indraveni as url [09:02] and now , i want to use loggerhead GUI to view the bazaar repo content [09:04] mwhudson, i want to show to some people in team, if it works well then wider in internet [09:04] indraveni: ok [09:05] so if you start loggerhead and browse to localhost:8080, does it work? [09:07] mwhudson, oops i forgot to start loggerhead [09:08] mwhudson, and now statring loggerhead, is showing an error message [09:09] mwhudson, this is the erorr when i am starting loggerhead http://pastebin.ca/747697 [09:11] indraveni: you need to install turbogears [09:11] mwhudson, is it must ? [09:12] indraveni: yes, for now [09:12] mwhudson, ok, from source i need to install ? [09:12] Hm. Can I switch a lightweight checkout to another branch? [09:12] you don't have to install it system wide, i think [09:12] indraveni: what OS are you running on? [09:12] I did bzr bind $otherbranch, but bzr info still tells me about the old one in "repository checkout root" [09:12] mwhudson, debian [09:13] indraveni: apt-get install turbogears should work then [09:13] mwhudson, there is not such file, there is only, python-turbogears [09:13] shall i install that / [09:13] yes [09:17] Erm. bzr complains it can't acquire a lock, because it's held by the very same bzr process? [09:28] night all [09:32] nigth [09:32] igc, thanks for the ssh bugfix === sabdf1 is now known as sabdfl [09:35] poolie: np. I thinks it's pretty low risk so I'll merge it if you like once it's reviewed [09:36] Lo-lan-do: on the smart server ? [09:36] i have some tweaks [09:36] cool [09:36] Nope, local branches stored in a shared repo on the same disk [09:36] But I removed the branch and checked it out again, seems to be over. [09:43] Ah, no, it happens again. === ajmitch_ is now known as ajmitch [09:49] Damn, this time it even survives an rm -rf + checkout :-( [09:52] Lo-lan-do: do you know about bzr break-lock ? [09:52] * Lo-lan-do tries that [09:52] Lo-lan-do: also, it is possible for the same process to mutual-exclude in bzr, so its likely the specific operation you are doing [09:53] bzr break-lock gives me a backtrace ending in "RuntimeError: maximum recursion depth exceeded in cmp" [09:53] grah?! [09:54] And the specific operation I was attempting to perform was a "bzr pull" from another local branch [09:54] that definately should not mutual exclude because the source is only readlocked [09:54] the only way I know that thsi can be confused is if the tree you are in is a symlink/lightweight checkout of the source branch [09:56] http://paste.debian.net/40520 [09:57] so its trying to lock /home/roland/debian/bzr-repo/gforge/ [09:57] "find -name lock | xargs ls" tells me there are two files called */lock/held in the repo, in .bzr/repository/lock and debian/sid/.bzr/branch/lock [09:57] right [09:57] 'bzr break-lock /home/roland/debian/bzr-repo/gforge/' [09:57] should clear the locks [09:58] If I ^C, the lock files disappear [09:58] if it doesn't, please file a bug, because this is an important command (which is well tested, so I'm not seeing why ..) [09:58] hmm [09:59] break-lock doesn't do anything (since the files aren't there after a ^C) [09:59] Didn't we just have one of those bugs reported? [09:59] what is 'bzr info /home/roland/debian/bzr-repo/gforge/upstream-svn/trunk/' ? [10:00] http://paste.debian.net/40521 [10:00] It's a lightweight co of a branch in the .../bzr-repo/gforge/ repo, ans the branch trying to be pulled from is also in that repo? [10:00] mwhudson, now i getting this error while running loggerhead after installing turbogers [10:00] mwhudson, http://pastebin.ca/747721 [10:01] fullermd: Yes [10:01] mwhudson, I dont know anything about pythob [10:01] lifeless: hi, have some initial pack feedback for you! [10:01] cool [10:02] mwhudson, are u there ? [10:02] indraveni: one moment [10:03] ok [10:03] Hmm. If I try to merge/commit instead of pulling, I get another error: http://paste.debian.net/40522 [10:04] indraveni: apt-get python-sqlite should fix that i think [10:04] indraveni: but it's a bit bad of me, you don't need sqlite bindings unless you're using the caches [10:05] so it should work without them installed [10:05] * mwhudson files a bug [10:05] Oh ho. Circular binding. [10:06] That could be the source of the initial trouble... [10:08] Strangely, other branches stored in the same repo and whose parent is also upstream-svn/trunk do behave properly. [10:08] Yes, but the problem is in that debian/sid branch. [10:08] But whatever. How can I fix that? [10:08] Go into it and 'bzr unbind' [10:09] Then pull and all should get back to working normally. [10:09] Yay, it works :-) [10:10] Now how do I prevent that from happening again? [10:10] Don't make branches that are checkouts of themselves ;) [10:10] Erm, I generated that checkout with "bzr checkout --lightweight /home/roland/debian/bzr-repo/gforge/debian/sid/ gforge-sid" [10:11] Nono, the problem wasn't the gforge-sid checkout. It was the debian/sid branch, which considered itself a [heavyweight] checkout of the debian/sid branch. [10:11] I see. [10:12] Maybe I caused that when I was trying to switch a lightweight checkout from one branch to another. [10:12] I did play a bit with bind and unbind at that time. [10:12] (And didn't find a working process...) [10:12] Well, it's all path based. So if you made a heavy checkout of debian/sid somewhere, then just mv'd it over to debian/sid... [10:13] But you could have pulled it off manually with bind too; probably the more likely case. [10:14] Probably. [10:14] Is there a proper way to switch a lightweight checkout across branches then? [10:15] bzr switch [10:15] Lo-lan-do: bzrtools defines a 'switch' command [10:15] Ah, I need to install bzrtools again then. [10:15] Apparently a bzr.dev installed in ~ doesn't use the plugins installed system-wide :-/ [10:18] lifeless: How could I easily tell whether bzr was sucking in celementtree? [10:18] fullermd: do you mean finding it ? [10:19] fullermd: I think it goes in bzr.log [10:20] Mmm. Doesn't seem to... [10:26] packs have landed! w00t! I don't believe to my eyes [10:27] will try on win32 tonight! [10:27] lifeless: congrat! [10:27] thanks bialix [10:28] :-) [10:32] mwhudson, in loggerhead.conf, do we need to mention the branch path or the main central repo path ? [10:35] branch path [10:36] mwhudson, now i am getting a message like, port not free [10:36] when i am starting loggerhead [10:36] where as i have only apache running in 8080 and no other [10:36] which port dows loggerhead use ? [10:39] 8080 by default [10:40] mwhudson, i have apache running in that port [10:40] http://pastebin.ca/747741 [10:40] mwhudson, http://pastebin.ca/747741 [10:40] well, change the port loggerhead runs on then [10:40] it can be done in the config file [10:41] mwhudson, got it [10:44] mwhudson, but the content is not propely displayed in the web browser [10:45] mwhudson, i have some more content in the my_project folder which are created using bzr add, and commited, but those are not visible in this [10:48] indraveni: well, i'm not sure how i can help you with that [10:48] mwhudson, ok i will try to reosolve this [10:49] mwhudson, i think my branch and conf file need some thing to be done [10:49] if you have specific questions i can answer them, but i don't know what your directory layout is like [10:59] lifeless: as a general rule, should I be assigning packs-related bugs I file to you? [10:59] nDuff: no, but please tag them packs [10:59] the ones I work on I'll assign to me, but its not a one-person effort, so assigning to me would be a net negative [11:01] thank you -- I was previously unaware launchpad's tagging support. [11:05] np [11:23] Is there an existing syntax for having a single string specify both a repository URL and a revnum or revid? [11:24] To what? [11:25] so...what's the best way to distribute in a distributed model? =) [11:25] fullermd: I'm looking to fully qualify the path to a specific revision of a piece of code -- both where to contact the server, and what to ask it for. I could just pass the URL and the revision specifier space-separated, but I'm wondering if there's another preexisting, recognized method. [11:25] sandrot: Broadly. [11:26] heh [11:26] mDuff: For bzr? No. I'm sure there are URL templates for loggerhead or bzr-webserve... [11:27] I'm working with a small team used to svn, in general I think a central server works pretty well for pushing and pulling updates, is that recommended? [11:28] Well. I would say that what's "recommended" is what works best for your situation. You have a range from everybody working lockstep on a single branch, out to everybody working in individual branches merging full-mesh, and a lot of spots in between. [11:29] mDuff: we have planned one but not implemented iot [11:29] mDuff: url;revno=xxxx [11:29] and url;revid=xxxx [11:30] hmm [11:31] sandrot: you can work just like you do in svn [11:31] sandrot: and experiment as you grow familiar with the available tools and processes that bzr offers [11:31] sandrot: Usually, the 'best' answer for a given case is somewhere in the middle. [11:31] over http? [11:31] bzr+http is a little tricksy; but you can pull and update over http [11:32] bzr+ssh or sftp will work just fine [11:32] yeah, I'd like the make the transition for my designer as easy as possible [11:32] mDuff: I expect a fix for your deletes-during-commit bug tomorrow [11:32] lifeless: Incidentally, did I read that bzr+ssh is going to be suffering relative to sftp for packs? [11:32] currently I just bzr init locally and push it to my server...then branch and pull on my laptop [11:32] fullermd: yes, right now it doesn't work :) [11:32] night all [11:33] lifeless: graci. [11:33] ...and g'night. [11:33] Ah. Minor details... [11:36] will bzr+ssh always prompt for password unless public key is on the server? [11:37] It'll just do the same SSH login as any other ssh into the machine [11:37] thanks [11:38] (Given as.. er.. it is ssh.. and doesn't have any choice but to...) [11:43] in the centralized workflow doc it states that commits happen both locally and remotely. how does bzr know that the working tree is in a centralized environment? is it because of the shared repo? [11:44] sandrot: if you use "bzr checkout" instead of "bzr pull", that creates a bound branch, which has the behavior in question. [11:44] No, because you're working in a dir created by 'checkout' rather than 'branch' (not _quite_ precisely right, but close enough) [11:45] huh... [11:45] 'checkout' == 'branch' + 'bind' [11:45] neato! [11:45] A 'bound' branch is simply one that atomically pushes every commit upstream, when committed locally [11:45] * fullermd drives an extra stake through the heart of 'bind', just to be sure. [11:45] I've been using branch all along (Which is good for being able to commit whenever I want) and then pushing... [11:46] but you're saying I could have substituted branch with checkout and been bound [11:46] Ya.. or just 'bzr bind' it now [11:46] Same effect [11:46] you can unbind as well right [11:46] so you could checkout, unbind for a bit, bind again [11:46] Indeed [11:46] You can also 'bzr commit --local ...' if you want to do a one-off local commit to a bound branch [11:46] Then push it later. [11:46] (e.g. useful for sometimes-offline laptops) [11:46] interesting [11:47] and if you're working with a simple bzr init (no shared repo), then every checkout has a full history of the commits? [11:47] sorry, every branch [11:47] Well, every branch has the full history whether you're using a shared repo or not. [11:48] It's just that if they're in a shared repo, they... well, share it, instead of individually storing the same info. [11:48] so if branch1 and branch2 have similar info they share it in shared repo? [11:49] Right. Saves space (and I/O copying stuff around). [11:52] Hmm, I currently don't have a layout...just trunk which I host on my server...but I could bzr init a project with a trunk/ branches/ tags/ layout which then would be appropriate for using a shared repo? [11:52] Er... [11:52] That's more of a SVN way of thinking.. [11:52] A 'tag' in bzr is just a friendly name for a revision.. it's not a separate filesystem entity [11:53] hmm, thought that's how svn used them =) [11:53] No [11:53] In SVN everything is just a cheap referential copy [11:53] Branches, tags, renames... don't exist [11:53] They're just copies [11:53] Let's not discuss how svn uses them. I'm planning to eat soon... [11:53] lol [11:54] In bzr, a tag is just a friendly human name for a revision [11:54] The same way that a hostname is just a friendly human name for an IP address [11:54] everything is a branch =) [11:54] A revision is just a point on a branch. [11:54] ya [11:54] A branch is just an ordered list of revisions [11:55] so can I migrate a current branch into a shared repo? [11:55] sandrot: yes. [11:55] sandrot: just push it into the repository, and there it is. [11:56] wouldn't my branch still be carrying around all it's repo data in branch/.bzr [11:57] No, when you push/pull/branch/etc a branch into a repo, it stores the data in the shared repo, not a per-branch repo. [11:57] very cool [11:57] so turning my project into a "checkout commit" system is as simple as pushing my branch into a shared repo =) [11:57] Of course, you could have a standalone branch that you 'mv' into a repo, and it will still store everything locally (since when it was created, it didn't know about any repos) [11:58] There doesn't have to be a shared repo involved to checkout a branch. [11:58] sandrot: you don't strictly need to do that; it's more of a space-efficiency thing. [11:58] Umm... a "shared repo" only makes any use if you take multiple branches of something... [11:58] LeoNerd: Um? I thought a branch was also able to store diverged-then-merged revisions? [11:58] Yes it is.. [11:58] But I mean, unless you actually _do_ that, a shared repo doesn't buy you anything in space savings [11:59] sandrot: if you have multiple branches, a shared repository prevents duplicate storage -- but you can do checkouts and all that from a standalone tree. [11:59] Then it's not quite an ordered list of revisions, is it? [11:59] If you have 10 different separate branches with 10 revisions in each, you have 100 revisions in the repo. [11:59] Okay, yeah, thanks, I understand that the shared repo is really just a nice extra [12:00] Lo-lan-do: Yes... because it's only the merge point that matters... Two diverged branches are still just an ordered list. [12:00] Lo-lan-do: When one is merged into the other, the target branch gets a special 'merged' revision, that contains sub-revisions of the changes that were merged [12:01] Ah, I see. I thought these sub-revisions were stored too, so you'd have a DAG with only a partial order. [12:01] But if they're collapsed... then yes, it makes sense. [12:01] On a filesystem level, where should I store my branches on my server. Currently they're in /home/me/Code/bzr but should I be worried about having multiple users reading in my home directory? [12:02] fullermd: thanks for bringing up the standalone branch 'mv' thingie...that was a concern I had [12:02] The subrevisions are stored as well, yes... they retain their individual identity in the stored data... [12:02] Lo-lan-do: I think you're trying to read _WAY_ too much precision into an offhand statement :p [12:02] I keep mine in /var/bzr/$user [12:03] (so I can point a webserver at them easily too) [12:03] fullermd: Possibly, but since I thought I finally understand how pulling and merging work, I'd rather not have that understanding shattered. === cprov-out is now known as cprov [12:03] LeoNerd: so a user does an sftp://yourserver/var/bzr/$user ? [12:04] It's currently shaken, not shattered, but I'll think about it some more. [12:04] mwhudson, is there any default structure for the bazaar branch / [12:04] ? [12:05] indraveni: i don't understand [12:06] Lo-lan-do: Technically, a branch is just a set of revisions; the revs themself describe the ordering. More technically, it's just a pointer to ONE revision, since each rev describes the whole set of revs leading up to itself. But it's simpler to give a taste by saying 'a branch is a series of revisions'. [12:06] Yes.. admittedly I hadn't considered merges when I made that statement [12:06] So I wasn't mistaken, yay! *phew* [12:07] I was just considering a simple linear branch [12:07] mwhudson, i have my bazaar branch created ni the path [12:07] One rev can have multiple parents, right? Like in hg? [12:07] /opt/bazaar_samples/my_project [12:08] * fullermd nods at Lo-lan-do. [12:09] * Lo-lan-do dances the joy-dance of understanding === mrevell is now known as mrevell-lunch [12:09] mwhudson, and my directory structure is like this [12:09] * fullermd quickly searches for some random tidbit to totally shatter Lo-lan-do's understanding. [12:10] Don't you dare. [12:10] so if my branch is not bound than bzr update tries updating with itself? [12:10] mwhudson, my direcory structure and loggerhead.conf file is here http://pastebin.ca/747801 [12:10] Lo-lan-do: So, if we define each rev of the tree to be a quantum superposition, see... [12:10] mwhudson, is my configuartion correct or not ? [12:11] sandrot: Indeed.. otherwise it wouldn't know what to "update" from [12:11] sandrot: 'update' updates your working tree to be up to date with its branch. It doesn't much matter whether that working tree is colocated with the branch in a standalone tree, or separate from teh branch as a checkout. [12:11] fullermd: You define revs as you like. I'll use the old analogy, as long as it keeps working for me :-) [12:12] indraveni: the folder= line should give the path to a bazaar branch [12:12] it looks like you've given the path to a folder containing folders which contain bazaar branches [12:13] indraveni: ls -lAR would be better, perhaps [12:14] mwhudson, http://pastebin.ca/747804 [12:16] mwhudson, yes, so my bazaar branch is /opt/bazaar_samples/my_project, so what i wrote in conf is correct ? [12:17] indraveni: oh, yes then [12:18] indraveni: so, what is going wrong? [12:20] thanks everyone, super helpful! Earlier I was going to setup a svn repo and export my bzr to svn to make things easy on my designer...not anymore! [12:20] bzr is easy enough on it's own =) [12:23] mwhudson, what abt the other fields? [12:23] Someone should grab that and use it as a quote on a website somewhere [12:24] whe I typed, localhost:8090 in browser [12:24] indraveni: they're not very important, cosmetic stuff only [12:24] it opened up a page which has a link to bzr.dev [12:25] and when i clicked that, it shows a page [12:25] The path '/branches/bazaar/bzr_dev' was not found. [12:25] oh, one moment [12:25] indraveni: server.webpath = 'http://localhost:8220/branches' <- this seems wrong [12:26] this should be the path you type into your web browser [12:26] so probably localhost:8090 in your case [12:26] mwhudson, sorry ,, i am accessing with localhost:8220 [12:26] so thats right [12:27] i still think you want to remove the "/branches" [12:28] mwhudson, got it [12:29] mwhudson, now it worked [12:29] indraveni: hooray [12:30] mwhudson,thankyou [12:30] mwhudson, is it like, only one branch can be pointed for one loggerhead ? [12:30] indraveni: no [12:31] mwhudson, in the first page its showing like, bzr.dev on clikcing which shows me the summary of prev revisions [12:32] indraveni: you can have any number of top level sections (e.g. "[bazaar]") and inside each of these any number of branches (e.g. "[[bzr.dev]]") [12:33] mwhudson, but here in my case, in the inital page itself ts showing bzr.dev [12:33] where as my bazaar branch name is my_project [12:34] indraveni: that's because it's inside a section called [[bzr.dev]] [12:34] change that to [[my_project]] or something [12:34] mwhudson, tell me one thinf [12:35] whats the difference between [xxx] and [[xxx]] [12:36] [project] [12:36] [[branch]] [12:36] as i said above [12:55] jelmer: ping [12:56] lifeless, pong [12:56] packs are in bzr.dev [12:56] lifeless: nice, thanks for let me know [12:56] theres an additional commit performance patch in my repository branch [12:57] ok - the one just discussed on the list? [12:57] yes, the 'native dirstate update basis ...' [12:59] jelmer: UDS and all hands are coming up [12:59] jelmer: but if there is *anything* I can do to help the samba guys make the right choice :) [12:59] I'd be delighted to e.g. meet up with samba folk in boston [12:59] lifeless: Jerry, the driving force behind the git adoption, will be at UDS I think [13:00] Jerry who? [13:00] Gerald Carter [13:00] perhaps you could mail him and poolie and I [13:01] or even a general note to the samba list, I don't know - do what you think will have the best effect [13:05] I'll bring it in in the internal discussions about git [13:05] but I'll keep you informed [13:05] when's UDS exactly? [13:06] wiki.ubuntu.com has all the details [13:06] basically though I'm in boston from friday till the 10th [13:10] ok later [13:10] mDuff: I think there is quite a simple fix for your performance bug; we currently maintain a set of deleted paths. [13:10] lifeless: ok [13:11] mDuff: but if we change this to a list, and trim paths from it when we move past them in the loop [13:11] mDuff: then the list won't get 1000's of entries long, and in fact will in principle only ever be a single item long. [13:16] mwhudson, if i am forgetting to stop loggerhead and again trying to start the loggerhead [13:16] mwhudson, its syaing port not free [13:16] and when i am seeing the processes, i dont find any loggerhead prcess running [13:17] i am not able to kill the processs [13:17] instead i am changing the port to anyother, which is a bad practoce [13:17] so, how can i kill the loggerhead processes ? [13:17] Would anyone know how to prevent the error bzr: warning: unsupported locale setting? [13:19] ok damn that was easy [13:19] niemeyer: set your locale correctly. [13:19] lifeless: You're brilliant [13:19] I wonder how I didn't think of that before [13:19] lifeless: Ok.. now, how do I do that? [13:20] the LANG and LC_ variables IIRC [13:20] [niemeyer@burma ..ent/bound/trunk]% echo $LANG [13:20] en_US.UTF-8 [13:21] They're all like that [13:21] the probable cause is missing language resources then IIRC [13:21] uhm [13:21] Which means ... [13:21] indraveni: ./stop-loggerhead.py should kill the process [13:22] mwhudson, its not killing [13:22] mwhudson, i am forcely killing the processes, [13:22] mwhudson, now it worked fine [13:22] niemeyer: is this in the DC ? [13:22] lifeless: No, locally [13:22] hmm [13:22] the starting and stopping scripts are not amazingly robust [13:22] niemeyer: The "right answer" probably varies by the particular system. 'locale -a' might list all the available options... [13:23] mwhudson, i have two more doubts on this loggerhead, could u please bear with me for 10 more mins [13:23] niemeyer: you might try locale-gen === mw|out is now known as mw [13:23] [niemeyer@burma ..ent/bound/trunk]% locale -a | grep en_US [13:23] en_US.utf8 [13:23] lifeless: Cool, will try it [13:24] Well, there you go; it's just spelt a little differently than you have it. [13:24] Says "up-to-date", and still same problem [13:24] niemeyer: basically in python terms we're trying to do 'str.encode('en_US.utf8')' [13:24] I set $LANG in my shell .rc file... you can probably override there. [13:24] and python is throwing an error [13:24] Oh, no. You're trying to str.encode('en_US.UTF-8'); that's why the error. [13:24] >>> print "áéíóú".decode("UTF-8").encode("UTF-8") [13:24] áéíóú [13:25] mwhudson, what is the difference b/w [xxx] and [[xxx]] [13:25] niemeyer: Your system supports "en_US.utf8", and you're trying to tell it you're using "en_US.UTF-8", so it's flibbering all over itself. [13:25] indraveni: i've explained that twice [13:25] niemeyer: thats UTF-8 [13:25] niemeyer: you have en_US.UTF-8 [13:25] niemeyer: which is different [13:26] try [13:26] en_US is not an encoding :) [13:26] fullermd: I don't think there is a difference.. [13:26] fullermd: "UTF-8" and "utf8" should work the same way [13:26] fullermd: And I get the error both ways [13:26] niemeyer: [13:26] >>> [13:26] Not if your system only has a locale def for "en_US.utf8" and you're trying to point it at "en_US.UTF-8". [13:26] import locale [13:26] lifeless: en_US shouldn't be used in a Python decode/encode statement [13:26] niemeyer, but python is probably missing the en_US.utf8 -> en_US.UTF-8 alias [13:26] locale.getpreferredencoding() [13:26] mwhudson, is it, sorry, i dint check, will check now [13:27] You get the error with your LANG set to the proper value? [13:27] [niemeyer@burma ..ent/bound/trunk]% python -c 'import locale; print locale.getpreferredencoding()' [13:27] UTF-8 [13:27] fullermd: My lang *is* set to the proper value, as far as I know [13:27] LANG=en_US.utf8 bzr something [13:27] If locale -a doesn't list the setting your have for LANG, it's not the proper one. [13:27] on a machine that has the glitch for me, I get: [13:27] fullermd: It's an alias.. [13:28] luks: Yes, fails the same way [13:28] $ python -c 'import locale;locale.getpreferredencoding()' [13:28] Traceback (most recent call last): [13:28] File "", line 1, in ? [13:28] File "/usr/lib/python2.4/locale.py", line 417, in getpreferredencoding [13:28] setlocale(LC_CTYPE, "") [13:28] File "/usr/lib/python2.4/locale.py", line 381, in setlocale [13:28] return _setlocale(category, locale) [13:28] locale.Error: unsupported locale setting [13:29] niemeyer: what about [13:29] python -c 'import bzrlib.osutils; bzrlib.osutils.get_user_encoding()' [13:29] niemeyer, is en_US.UTF-8 also in LC_ALL? [13:29] lifeless: Shows nothing [13:29] or LC_* [13:29] niemeyer: then its not erroring [13:30] luks: It is, all of them [13:30] do you have an alias for bzr or something ? [13:30] lifeless: Nope [13:30] lifeless: It's a bzr update command.. does it make a difference? [13:30] mwhudson, got it, thankyou [13:30] well, an alias could be overwriting an env variable [13:31] lifeless: Over bzr+ssh.. may I be getting errors from the remote side? [13:31] niemeyer: oh yes, that is coming from the remote side [13:31] niemeyer: which I bet is the DC [13:31] lifeless: It's from chinstrap, yes [13:31] That's.. hmm.. weird :( [13:31] niemeyer: /win 52 [13:32] lifeless: Hm!? [13:32] mistype [13:33] Getting a locale error due to a setting from the remote repository is super strange [13:33] stderr is displayed locally by openssh [13:34] lifeless: Right.. I'm speaking from a user perspective [13:34] right [13:34] and I agree [13:35] but it seems undesirable to hide it [13:35] I definitely desire it :) [13:35] Or at least change the wording of what's shown in these cases [13:35] It would be nice to have some sort of indicator that "Hey, this is from the other side, silly!" [13:35] you could file an RT ticket :) [13:36] fullermd: indeed; that means intercepting stderr and selecting() rather than just reading etc etc. [13:36] Well, we could just make nothing ever go wrong, if that's easier ;) [13:38] Ok.. thanks for the help guys [14:44] Is there a way to remove a branch from a shared repo? [14:44] rm -rf, generally. [14:44] You can rm it, but that'll not remove the individual revisions from the store [14:44] This won't matter, except in disk space [14:44] Exactly :-) [14:46] So... no garbage collector to clean the unused versions? [14:47] Not that I know of currently.. You can 'push' each branch to a new shared repo, then 'mv' swap them though [14:47] I think lifeless hacked up something once upon a time that did some GC'ing. [14:47] 'bzr vacuum' or something like that? [14:47] But there's no standard, supported thing to do it, no. [14:50] http://doc.bazaar-vcs.org/latest/developers/repository.html does mention GC, but rather vaguely [14:52] lifeless: ^^^ anything you feel I should know? :-) [15:00] we discussed a garbage collect command at the sprint this summer [15:00] but afaik nothing like that has been implemented yet [15:05] Okay. I'll keep my temporary branches out of my shared repository then. [15:07] Sounds like more trouble than it's worth, unless you start checking in ISO's or something. [15:09] Dead files eating space on my disk make me uncomfortable. And since it's actually simpler to start a local branch than put it in a repo than get a lightweight checkout of it, I see it as a net positive. [15:10] Less trouble, *and* less discomfort. [15:11] * fullermd shrugs. [15:11] I've got dead revs all over the place, from abandoned branches, or uncommit's. I'm not gonna worry very much about a few hundred k of wasted space... [15:12] I probably burn more space holding backup copies of scripts I wrote for use on systems that haven't existed in 10 years. [15:15] Well, as you like, but I don't like institutionalised cruft. It's like a memory leak, except permanent. === bigdo1 is now known as bigdog_ [15:36] Am I running into problems if I have a working tree that's both a lightweight checkout of a branch stored in a shared repo *and* a checkout of an SVN branch? [15:37] I guess only the branch (in the repo) is bound to SVN, and the working tree is just something that happens to be a checkout of that branch, but I'd like a confirmation from the masterz :-) === cprov is now known as cprov-lunch [15:45] (If I'm not going to run into problems, then that's probably the setup I'm likely to use) [15:45] I see no reason why that shouldn't work, if I understand the setup correctly [15:47] Great [15:48] You'll probably hear about it if it doesn't :-) [15:49] Quite soon, even: I've just received a patch form the BTS, which I'm going to try and merge right now. [15:57] Yay, it seems to be working! [15:58] I committed a patch in sid (pure bzr, light checkout), then pulled it into trunk (the one which is a light checkout of the branch bound to SVN). [15:58] No error, and svn update in an svn checkout includes the patch. [15:59] Yay yay yay :-) [16:00] Hm. Would it be possible to do without the SVN properties, or to keep them short? The commit emails we get include the properties, and they're getting crowded... [16:29] how do I put a directory on an ignore list? [16:29] I want a certain directory not to be loaded. [16:29] update [16:30] Enquest: can you give an example of what you want? [16:31] something lik bzr ignore www/uploads/ [16:31] how do I do this? [16:31] other way than `bzr ignore www/uploads` ? [16:33] when I type bzr add ... It starts to add all files. I don't want a directory included [16:34] Enquest: is "www" at the same level as ".bzr" ? [16:34] if it isn't, `bzr ignore www/uploads` will not work [16:35] www is deeper [16:35] dev/.bzr [16:35] dev/www/upload [16:36] Actually, I think ignore canonicalizes the path as necessary. Not sure (I always just hand-edit .bzrignore) === cprov-lunch is now known as cprov === weigon__ is now known as weigon [18:06] fullermd: it does not (yet), I thought there was a bug asking for this sort of thing, though. [18:06] I think part of it is that you probably don't want to canonicalize: bzr ignore "*.foo" [18:55] lifeless: seeking your advice with something. Could you look at https://lists.ubuntu.com/archives/ubuntu-doc/2007-October/009758.html which sets out the naming scheme intended to be used for our project's branches on Launchpad. The question is, should we include all the svn revision history (now imported into bzr) in each branch, or just start new branches afresh, maybe keeping revision history from svn around in one of the branches to use if we need it. Uploa [18:55] * mdke hopes his irc client doesn't cut the end of long lines, the last word there should be "solution" [18:56] mdke: nope [18:56] "we need it. Uplo" was as far as we got [18:57] mdke: i should apologise for not replying to your emails, btw [18:57] mdke: How much history are you talking about? [18:57] (how many files, how many revisions, etc) [18:57] I generally would keep history unless there is a real reason not to [18:57] Oh, and lifeless is usually not for another couple of hours [18:58] (.au time, I've seen him on in an hour, but that is about 5am his time) [18:59] mwhudson: that's ok. [19:00] jam-laptop: i think it's 3500 revisions [19:00] mwhudson: I wasn't expecting an instant response :) [19:00] mdke: doesn't seem like too many, Bazaar has 14,519 [19:00] mdke: i'll try to have a sensible reply by the morning [19:00] jam-laptop: well, uploading the first branch took about 3-4 hours this morning, and there will be something like 15 branches... [19:00] Though at the moment we scale a little bit better with num revisions than we do with num files [19:01] mdke: uploading from where? And were you using "sftp://bazaar.launchpad..." or "bzr+ssh://bazaar.launchpad" [19:01] The latter has much better latency characteristics [19:01] jam-laptop: from my home. The latter [19:01] (sftp:// requires 3 round trips, etc) [19:01] mdke: well, if you want, I can "pre-seed" some branches for you [19:02] If you have one uploaded, I can push it into neighboring ones [19:02] from a much closer location [19:02] And then your future pushes of the other branches should be fairly fast [19:02] Yeah, I wish LP let you do that, if not actually support repos... [19:02] jam-laptop: that sounds really helpful. I'm still a bit concerned about the amount of downloading people would have to do to get multiple branches though. [19:02] fullermd: there is quite a bit of discussion of server side branching, shallow branches, and what we might do for shared repos [19:03] Still, that may be solved by advising people not to download revision history [19:03] mdke: If they have a shared repository (recommended) it won't copy everything [19:03] Just the first time [19:03] but not 1x per branch [19:04] jam-laptop: I understood that LP didn't support that. We're planning to use LP as a central server with a relatively centralised workflow [19:04] mdke: LP doesn't have shared repositories on *its* side. It has nothing to do with letting you use them on your own machine [19:05] (So you can't tell LP to share the repository between ~user/project/branch1 and ~user/project/branch2, but on your local machine you can.) [19:05] right... and that wouldn't affect a "bound branches" workflow? [19:05] mdke: correct [19:05] very interesting [19:05] "shared repositories" is just an optimization for how data is stored [19:05] it doesn't change much else [19:05] right, I'll have to explore that definitely and look into the docs [19:06] mdke: you might read http://bazaar-vcs.org/Tutorials/CentralizedWorkflow [19:06] or even [19:06] will do [19:06] http://bazaar-vcs.org/Workflows [19:06] jam-laptop: as for your kind offer to do the pushing, I'm very interested. I'll have to explain a bit more the structure [19:07] mdke: can you give me the URL so I can start downloading? [19:07] (Oh, and if you have troubles, you can always ask questions in IRC) [19:08] jam-laptop: https://code.launchpad.net/~ubuntu-core-doc/ubuntu-doc/ubuntu-hardy [19:08] jam-laptop: so the plan is to make xubuntu-hardy, kubuntu-hardy and edubuntu-hardy from that, and then make some amendments to those. [19:09] I *think* I can register them under my name, and then assign rights to them to the ubuntu-core-doc group [19:09] If not, can I get added to the ubuntu-core-doc group? [19:10] sure [19:10] jam-laptop: then we hope to do the same thing with each of the branches from the svn repository, ubuntu-gutsy, kubuntu-gutsy and so forth (I haven't pushed an equivalent [19:10] ... branch for those to Launchpad yet, but they share the revision history of the existing branch up there, as I understand it [19:10] Well, it took 1m36s to download the 210MB from a very nearby server [19:10] Do you guys keep every Ubuntu package under bzr? [19:11] Lo-lan-do: not yet [19:11] I believe things are being migrated over [19:11] but it certainly isn't 100% of all packages [19:11] that's my understanding too [19:11] Okay. [19:11] jam-laptop: added to ubuntu-core-doc [19:11] mdke: (jameinel, right?) [19:11] :) [19:12] (I'm manually keeping a bazaar branch for my package, and I was wondering whether I was duplicating work) [19:12] so you want an ubuntu, xubuntu, kubuntu, and edubuntu for all of -hardy, -gutsy, [19:12] mdke: what are the specific permutations, so I'll get them all [19:12] Lo-lan-do: see https://wiki.ubuntu.com/BzrMaintainerHowto [19:12] (my basic plan is just to write a simple bash for loop, and do some pushing) [19:13] mdke: Oh, but I am already keeping my package in bzr, it's the Ubuntu ones I track (in bazaar) by hand. [19:14] jam-laptop: the thing is, the ubuntu-hardy branch comes from the svn trunk. The plan is to add branches for each svn branch (so not the same material). As I understand it, they will all have the same revision history [19:14] mdke: if they were branched around in svn they will likely share some history [19:14] (probably not 100%) [19:15] So am I right with (ubuntu, xubuntu, kubuntu, edubuntu) and (hardy, gutsy, feisty, edgy, dapper) ? [19:15] jam-laptop: ah, so the bzr history will be different? [19:15] I used svn-import to import the whole repository [19:15] mdke: That means you'll have a shared repository already, locally [19:15] exactly [19:15] Just that I would expect ubuntu-gutsy to have fewer revisions than ubuntu-hardy [19:16] I have to leave you for a bit, sorry to be rude [19:16] and maybe a couple extra that -hardy doesn't have [19:16] (well, assuming they aren't 100% the same code base, they can't have 100% the same revisions :) [19:16] mdke: np [19:19] Lo-lan-do: is your "official" source in Bazaar, or is it svn/cvs? [19:19] jam-laptop: Upstream is in CVS, but I work on the packaging in bzr [19:20] Lo-lan-do: k, you may want to register your project with vcs-import, and Launchpad will maintain a conversion from cvs => Bazaar for you (for at least the 'trunk' branch.) [19:20] Though if you just register your project [19:20] and push up your Bazaar branch as trunk [19:20] you can use that too [19:21] Uh, sorry, s/CVS/SVN/ [19:22] But I'm just asking, don't mind me. [19:23] I'm quite satisfied with my branches so far, I was wondering if you had a branch for the package (so I could keep a copy and/or merge from it) or not. [19:30] Lo-lan-do: what is the package ? [19:31] gforge [19:31] either way, if you read https://wiki.ubuntu.com/BzrMaintainerHowto it gives a pretty good description of how to integrate things with Launchpad [19:32] Lo-lan-do: I don't see a 'gforge' project registered [19:33] It's all right then. [19:41] Lo-lan-do: so is gforge sort of like Trac? [19:41] Broadly [19:42] It's more like Sourceforge, actually, since it started as a fork of it [19:45] jam-laptop: ok, back. I've done a little explanation of what I have in my svn import (as a shared repository), and what I'd like to create on Launchpad, so that it's clearer. I think from what you said earlier that I actually have to upload one branch from here for each distribution, and you can't do all the work for me :) [19:45] http://paste.ubuntu-nl.org/41964/ <-- explanation [19:46] mdke: what I *can* do is upload a fake branch for each one, which has all of the ubuntu-hardy revisions [19:46] so that your future pushes only have to push the new/different data [19:46] and not all of the common ones [19:47] but the ubuntu-hardy won't have the ubuntu-feisty revisions, is that right? [19:47] mdke: it will have the ones that are in common [19:47] I'd previously assumed that bzr used the same revision history (from the shared repository) for them all [19:47] right [19:47] when you make a commit in ubuntu-feisty that will not be in the ubuntu-hardy ancestry [19:47] mdke: are the files on your home machine somewhere that I could access them? [19:48] I haven't made any commits since doing the svn-import [19:48] yes, I'd have to setup ssh though, give me a bit [19:48] mdke: when you do "bzr push" from a shared repository, we don't push 100% of the revisions, only the ones in the ancestry of the branch you are pushing [19:48] jam-laptop: ok, it's cleverer than I thought, all clear [19:48] So if you have a project with 10 revisions next to one with 10,000 [19:49] you don't push 10,010 revisions for just a 10 revision branch [19:49] would the "fake branch" solution be complicated by having revisions in ubuntu-hardy that aren't present in ubuntu-feisty? I.e. would me pushing the real ubuntu-feisty branch just result in those revisions being removed? [19:50] mdke: they won't be removed, but they will stop being referenced [19:50] so when someone downloads from the new ubuntu-feisty branch [19:50] is that acceptable? [19:50] they won't get the superfluous ubuntu-hardy ones [19:50] mdke: generally it is fine [19:50] i see [19:50] I do it all the time here [19:50] I'll give you access and then I'm happy to be guided by you on that [19:50] lemme just tweak the router [19:51] I personally use 1 shared repository for all of my Bazaar and plugin work [19:51] (and a different one for other projects) [19:52] mdke: so am I correct in saying you want a branch for all the permutations of (ubuntu, xubuntu, kubuntu, edubuntu) versus (hardy, gutsy, feisty, edgy, dapper) ? [19:53] jam-laptop: yes [19:53] k [19:53] jam-laptop: although tell me if that doesn't make sense as a workflow too [19:54] I'm not sure I understand why you want a separate branch for all of (ubuntu, xubuntu, kubuntu, ..) [19:55] they are separate packages and we want to store the debian directory for each in the same place in the directory structure. It will also allow us to remove unnecessary directories for each package [20:10] So I'm a little concerned about disk storage consumption, since it is approx 200MB x 4 releases x 4 os's = 3.2GB on Launchpad [20:11] (that is also one reason why LP is looking into how to have LP-side shared repositories.) [20:11] right [20:11] Do you need the full set of permutations? [20:11] Or would it be reasonable to just do 1 branch for edgy and dapper? [20:12] So, are you saying we should get all those branches pushed up ASAP, in order to bump the priority of the LP-side repo feature? ;) [20:12] jam-laptop: yes, we could do one branch for everything except hardy and see how it goes, maybe create more if we think it would be very helpful. Is storage spac a problem on Launchpad? [20:13] I don't know that storage space is super critical [20:13] but it is my understanding that if LP tried to host all of the LP branches on itself [20:13] it would run out of disk pace [20:13] space [20:13] but LP is developed in a very distributed fashion [20:13] so there are *lots* of branches [20:13] should I talk to someone about this? [20:14] mwhudson, for example? [20:14] Well, we can summon him by name, but he may have gone home already [20:14] indeed [20:14] it was more of a general question [20:15] yeah, but I think he might be someone who knows [20:15] maybe spiv [20:15] jam-laptop: (you mean storing all personal branches of people with commit access to launchpad itself? re the running out of space bit) [20:16] jam-laptop: an alternative would be to upload the derivative branches without revision history, i suppose [20:16] that might be preferable to not having derivative branches at all [20:16] although I suppose the disk space would gradually build up [20:17] dato: right [20:17] mdke: well, is the disk space usage because you have lots of history, or because you have a big tree? [20:18] (If you have 100MB in a checkout, then the history cost is actually pretty small) [20:18] jam-laptop: with trees, you mean? otherwise I'm having trouble grasping the idea. [20:18] if it's the latter, then we'll be pruning the derivative branches so they have much less overlap [20:18] dato: LP stores an independent repository for each branch [20:19] a recent svn checkout of svn trunk is 39MB [20:19] dato: and 1 lp repository is 400MB [20:19] jam-laptop: ah, right [20:19] jam-laptop: I must be still sleeping, since that piece of information was said right before :) [20:19] dato: which is one of the reasons on the checklist for why to do some sort of shared repositories [20:20] mdke: so I'm going ahead and making all of the -hardy ones [20:20] And I have some stubs (with 10 revisions) for a bunch of them [20:20] what does that mean? [20:21] https://code.launchpad.net/ubuntu-doc [20:21] I created the permutations through feisty [20:21] but only pushed 10 revisions [20:21] now I'm going back and pushing the full history for *-hardy [20:21] and then I'll push 1 for ubuntu-* [20:22] ah, the 10 revision thing is on purpose? it's not a problem? [20:22] phew [20:22] mdke: right, I just wanted to get them started [20:22] hang on a sec [20:22] let's take this tree vs revision history thing further [20:22] a recent svn checkout of svn branches/gutsy is over 700MB... [20:23] so that would suggest the tree is very large [20:23] I don't know where all that is coming from [20:24] it may be that we can sort this out and have all the permutations, eliminate overlap in terms of tree size, and so cut down the disk space used [20:24] well, SVN always creates 2 copies of your working tree [20:25] (1 pristine copy is stored in the .svn/ directories) [20:25] I'm going to do an export to check [20:25] i.e. without the .svn directories [20:26] damn this slow computer [20:32] ok, gutsy is about 317MB in a clean export. That would be cut down to about 200MB in the kubuntu and ubuntu branches, and very small for edubuntu and xubuntu [20:33] jam-laptop: I don't mind what we do with dapper/edgy/feisty for now, let's just do what we can. I already have taken too much of your time [20:33] Well, right now your total .bzr/repository is about 200 MB [20:33] Also, I'm not sure that you can break it up quite that easily [20:33] Just because in the past the branches had "X" which means that a conversion may preserve that [20:34] I don't follow that, can you give me an example? [20:34] If I: bzr branch ...bzr.dev local; cd local; rm -rf lots of files; bzr commit -m "remove those files" [20:35] when I 'bzr branch' this new branch with lots of removed files [20:35] I still get the history for all the files which used to exist [20:35] (since you can "bzr revert -r -10" and have it work) [20:35] true [20:36] so doing "bzr rm" will transfer the disk space from the tree to the history :) [20:36] well, bzr rm won't remove it from history [20:36] just the tree [20:36] (it doesn't really "transfer" anything) [20:36] So is the plan to reorganize all your branches? [20:36] what you're saying is that bzr rm directory won't save space, right? [20:37] So that instead of having the "gutsy/ubuntu" [20:37] you would end up with just "ubuntu-gutsy" ? [20:37] so if I go to the ubuntu-hardy branch and remove the "kubuntu" and "xubuntu" directories, then there won't be a space saving [20:37] mdke: It only saves space in the Working Tree [20:37] ok, I'm following now [20:37] so we have a space problem still [20:37] now this *might* be a reason to switch to a history-less conversion [20:37] since you are doing some major restructuring [20:38] well, it's more of a split. The people working on kubuntu-hardy might want access to the revision history [20:38] just fyi, your full conversion is 684MB [20:39] but I think the revision history is more of a luxury than a necessity, we can ditch it if it's important [20:39] so there seems to be a lot of stuff in branches/gutsy [20:39] that isn't in trunk [20:39] correct, translations [20:39] these get added at the end of the release cycle for each branch [20:39] to be clear, 470 MB of stuff :) [20:39] yes [20:39] well, that may not be all in gutsy [20:39] I suppose it could be the others as well [20:40] 319MB is a clean gutsy export [20:40] compare that with 16MB for trunk [20:41] which should compress a bit, when it is stored in a repository [20:41] but still, a rather large difference [20:41] in 6 months time, hardy gets the same bump up [20:43] Any chance it will be approximately the same data as in gutsy? [20:43] jam-laptop: sure, a lot of it. Not exactly files though [20:43] (I'm just guessing that you are creating new files, when they are closer to copies from the other branch) [20:44] the translations vary according to how much the original text varies from release to release [20:44] but broadly the majority of the text is likely to be present in both [20:47] jam-laptop: so, what's your recommendation? :) [20:48] mdke: well, right now I'm going to batch upload your conversion to a machine that is closer to LP using a tarball [20:49] Your 'ubuntu-hardy' branch isn't huge yet [20:49] so I would get it cleaned up quickly [20:49] (split into the actual sub-projects) [20:49] so that when you go to add the big files [20:49] you end up doing it in only the sub-projects [20:49] Is there any development going on on the -gutsy/-feisty/etc branches? [20:50] moin [20:50] morning lifeless [20:50] I'll be updating translations, and possibly fixing any serious bugs if we find some [20:50] hi lifeless [20:51] jam-laptop: so yeah, we'll be touching the -gutsy/-feisty branches, but it wouldn't be the end of the world to just have a single permutation for them (since that is what we do in svn now) [20:57] mdke: so I would probably go with that [20:57] leave pre -hardy branches alone [20:57] (having 1 branch for all versions) [20:57] and then start the split at -hardy [20:58] mdke: by the way, you weren't kidding P-III 600MHz [20:58] jam-laptop: alright [20:58] (*my* server is a dual P-III *700*MHz) [20:58] jam-laptop: yeah, my laptop is broken, I had to dig this one out as an emergency measure [21:00] have to run Gnome on it and all [21:14] hi, have the question about dogfooding packs [21:15] 'evening Alexander [21:15] hi Jelmer [21:15] I don't see any instructions about packs in bzr.dev [21:16] I know it's hidden [21:16] bialix: --experimental on init or init-repo [21:16] aha [21:16] what's the fuzz about reconcile? [21:16] check don't suggest it for my non-bzr.dev repos [21:18] mDuff: branch into pack repo will do conversion w/o problem? [21:18] bialix: yep [21:19] hmm, it seems that branch works blazingly fast [21:19] bialix: cool [21:19] hi, our white mage [21:20] lifeless: have any suggestions what I should check on win32 (except running selftest)? [21:20] let see, what things generally give headaches? [21:20] bzr-svn stuff has long file ids [21:20] if our minimum index read is too short that could fail [21:20] I don't use svn, can;t check [21:21] what else [21:21] is it better at being in deep directories/handling long paths/caps paths [21:22] will try [21:23] lifeless: may I ask you comment on this: https://lists.ubuntu.com/archives/bazaar/2007q4/033058.html [21:25] lifeless: so far, packs work really well here. The only thing that I've hit so far is NoSuchFile exceptions when I was doing heavy writing to a repository /and/ reading from it [21:25] but that was to be expected I guess, since it's moving files around [21:25] to obsolete_packs [21:30] jelmer: cool [21:32] lifeless: about deep directories/handling long paths/caps paths: I'm not sure what to test here, because knit file name is shorter that my very long file name for test (I create 127-symbol long filename, but in repository/knits there is 59 chars filename) [21:32] bialix: reading it [21:32] bialix: then it should be fine [21:34] lifeless: pack name is 37 chars long. so you win 59+3-37=25 chars [21:36] but for obsolete_packs directory this win is smaller by 10 chars [21:36] I don't see why packs should change situation for bzr itself. may be for bzr-svn... but I never used it, can't say anything [21:37] tomorrow I'm planning to run the whole test suite [21:38] very cool [21:40] (it will take more than hour on my hardware, so I better do it on fast machine) [21:40] * mDuff hasn't found any new issues with packs since yesterday (other than some slightly different server-mode exceptions when running commands other than push). [21:41] mDuff: I am working on that delete bug; we iterate directory-at-a-time so I need a little care (a simple string comparison isn't enough to trim the array of deleted items) [21:43] lifeless: my biggest performance problem with bz 0.91 and before is slow machine (CPU <1GHz). The slowest is first run (cold cache I think), and during branch build phase takes a lot of time [21:46] I had some work that improved text extraction time (for build_tree) [21:46] It sort of conflicts with what lifeless has been doing [21:46] LarstiQ: Hi [21:47] LarstiQ, can you still reproduce bug 128496? [21:47] Launchpad bug 128496 in bzr-svn "Unable to open native working tree with non-ascii filenames" [Medium,Triaged] https://launchpad.net/bugs/128496 [21:47] lifeless: I think we should say now not simply "packs", but: "packs!(TM)" :-) [21:48] bialix: :) [21:49] jam-laptop: I've largely finished with knits, the only remaining change I have planned there is to decouple 'parents' and 'compression components' [21:50] guys, I'd like to make new windows standalone installer (with packs) for earlier adopters. any objections? [21:50] jam-laptop: I'd *like* to make it arbitrary so we can do the sort of crazy stuff we sketched on the list [21:50] bialix: I think that would be nice [21:51] ok [21:51] jam-laptop: that will though impact fetching so we need some care that performance does not go out the window. [21:56] done [21:57] lifeless: I was pretty close to getting the parents list into the data portion of packs [21:58] jam-laptop: that and the noeol indicator would be good too [21:58] The internal API changes aren't bad, but figuring out the implications to all the copying code will be a bit tricy. [21:58] tricky [21:58] I do think we should keep the cached index data [21:58] about this [21:58] sure, but make it redundant [21:58] rather than precious [21:58] right [22:01] packed repo is slightly bigger then knitted one [22:02] thats unusual; we drop annotations and the indices are pretty close [22:02] perhaps you have something in .bzr.backup, or already have .bzr/repository/obsolete-packs ? [22:03] well after initial branch from knits to pack I have 5038KB vs 5076KB for my own biggest repo [22:04] it's the size of .bzr/repository directory [22:04] interesting [22:04] no, obsolete dir is empty [22:05] after initial branch I have only one pack with the size 4277KB [22:05] hmm [22:06] and 818KB of indices [22:06] oh, are you reporting apparent size or used disk size ? [22:06] I did mos of my comparisons on used disk size, which includes wasted space in allocated block/clusters/inodes/whatever [22:06] s/mos/most/ [22:06] it's the size that I see in my FAR [22:07] usually it's real size [22:07] right [22:07] in which case yes I think this is a reasonable result [22:07] in my old knit repo size of directory .bzr/repository/knits is 3227KB [22:08] and inventor.knit 1250KB [22:08] if annotations should be dropped then packed repo should smaller? [22:09] should be smaller, typo [22:09] so [22:09] 3227 + 1250 + revision.knit + signature.knit ? [22:10] 3227 + 1250 is 4470KB, which is larger than the .pack file :) [22:10] add in revisions and it should be a bigger difference still [22:12] oh! just ran 'bzr check' in source branch and got: 1824 inconsistent parents [22:12] I need to run reconcile? [22:12] if its not bzr.dev, it will probably run ok without reconcile [22:13] if it is bzr.dev, you won't be able to branch from the pack version to another pack version. [22:13] no, it's my own repo [22:13] I wouldn't worry about reconcile until andrew gets the additional fix done [22:13] then push all your data to knits format, reconcile it there, and make a clean pack repo [22:13] but '1824 inconsistent parents' is scare me [22:14] its likely that they are [A,B] vs [B,A] as at one point we didn't guarantee ordering. [22:14] in bzr.dev we have worse [22:15] it scares me because I have 672 versioned entries and 942 revisions [22:15] its per-file [22:15] ah [22:19] what's the simplest way to obtain real file size via python? [22:19] os.lstat(path).st_size [22:19] hmm, what module to put this in [22:20] I'm writing a little object to handle deletes; it will be given every path, and given new deletes [22:20] when a path is such that one of the deletes it's seen can not be a parent of any future path, it will drop it [22:21] lifeless: did you see my possible alternate that used a dictionary? [22:21] otherwise is_inside_any is an osutils function, IIRC [22:21] jam-laptop: no. Just path split and walk a tre ? [22:21] lifeless: basically [22:22] most paths get rejected quite early [22:22] have you tested this? is there a patch ? [22:22] lifeless: no, it was just a suggestion [22:22] so is_inside_any is osutils [22:22] lifeless: ok, so sum total of all knit files in old repo is 4601310 [22:23] I guess if I make a replacement is_inside_any osutils is the right place; I was thinking of a alongside-helper. [22:23] lifeless: where where is it being used? [22:23] In commit? [22:23] yes [22:23] and pack has size 4379867 [22:23] bug 156491 [22:24] 100K commit, 8K deleted files, == 15 minutes to commit [22:24] pack smaller, but the whole repo slightly bigger [22:24] Launchpad bug 156491 in bzr "commit with many deletes spends much time in is_inside_any" [Undecided,New] https://launchpad.net/bugs/156491 [22:26] first error with packs: bzr: ERROR: Must end write groups before releasing write locks. [22:26] when I try to `bzr branch` second branch from knit to pack [22:27] if I clone treeless branch into shared-repo with trees enabled, it should work? [22:29] branch w/tree has the same error during clone [22:29] it should; either something was using the write group api directly, or you had an exception occur somewhere that is missing a try:except:else: [22:29] if you change that exception that is being raised to be a 'pass', you should see the real exception [22:36] sent to list [22:39] bialix: right, you need to change the excpetion raise to a pass temporarily to debug [22:39] bialix: it raises an exception because data loss can occur [22:39] where to change? [22:40] may be it's important detail: second branch is subset of first branch, i.e. all data is already cloned by first branch [22:40] pack_repo.py 1538 [22:42] PermissionDenied then [22:43] right, thats the bug then :) [22:43] could you please file a bug in lp, tagged packs, with the backtrace you got this time ? [22:43] ok [22:45] wait [22:46] this time it's error in raise error agin [22:46] PermissionDenied sounds like a file system issue though? [22:46] oh! I bet its the transaction cleanup. We have to close the file before removing. [22:47] === modified file 'bzrlib/repofmt/pack_repo.py' [22:47] --- bzrlib/repofmt/pack_repo.py 2007-10-24 05:17:39 +0000 [22:47] +++ bzrlib/repofmt/pack_repo.py 2007-10-24 21:48:01 +0000 [22:47] @@ -274,6 +274,7 @@ [22:47] def abort(self): [22:47] """Cancel creating this pack.""" [22:47] self._state = 'aborted' [22:48] + self.write_stream.close() [22:48] # Remove the temporary pack file. [22:48] self.upload_transport.delete(self.random_name) [22:48] # The indices have no state on disk. [22:48] http://pastebin.com/m7ed4075c [22:48] lifeless: ^ [22:48] try that patch please [22:49] if it fixes the problem, revert your other changes and just send it in :) [22:49] (to pqm I mean - +1 from me and you should do it ) [22:50] error 32 on windows it's: 32 The process cannot access the file because it is being used by another process. ERROR_SHARING_VIOLATION [22:51] bialix: yes, I think my patch will fix it [22:52] let me a couple of seconds [22:53] yeah, clone is successfull now [22:53] (when you linux guys teach yourself to close files explicitly?) [22:54] hey now [22:54] I used to be a core cygwin guy [22:54] its taken me years to forget about files [22:54] :-D [22:56] so you want me to send this patch to PQM? [22:58] that one liner yes please [22:58] its trivially correct, and the test suite on windows will fail without it [22:58] ok, will do [23:00] anybody know is 'Linus Torvalds on Git' talk is available as text somewhere in the net? [23:02] bialix: google "google video torvalds git" [23:02] I have video, I'd like to have plain text because I'm not very good in english [23:03] bialix: aah, sorry. I missed the "as text" in your line, sorry. [23:04] it's nice talk, and I really like this guy, he talk very much about distributed system in generals, not about git tiny details [23:05] http://git.or.cz/gitwiki/LinusTalk200705Transcript [23:05] google search for "linus torvalds git transcript" and that URL pops up as the first response [23:06] tchan: wow, thank you, you save my day. I owe you beer [23:07] who this guy Andrew, who speaks first 10 secs? [23:07] the Google employee that arranged for Linus to give the lecture [23:09] thanks [23:09] perhaps its "Andrew Morton" also a kernel hacker god ? [23:10] "where is Linus, why hasn't he merged my tree -- he does not love me anymore". :-) probably [23:14] anybody have problems with pushing a bzr branch into an ftp server? [23:14] hendrixski: probably your server does not support REST/APPE [23:14] I'm on version .15 (standard from ubuntu feisty because the one on the bazaar-vcs didn't want to work) [23:15] hendrixski: you might try bzr.dev which has a new format you can use (currently labelled '--experimental') and this works much better on FTP [23:15] lifeless, oh... so just because I can ftp into it, doesn't mean I can push stuff on it? [23:15] hendrixski: some FTP servers disable parts of the protocol [23:15] hendrixski: for FTP, bzr 0.15 requires the REST/APPE commands to work [23:16] I C. and that's only fixed in the current dev branch? [23:16] thats right [23:16] new disk format that does not need the ability to append data to an existing file. [23:16] can I just FTP my folder with the bzr information using ftp and then can people can branch from that? [23:16] sure [23:16] that will work fine [23:16] though you may get errors from your client [23:17] for the same reason - [23:17] with a standard ftp send? [23:18] yes, because bzr changes the content of files, and your client will need to know to delete the file at the remote end and upload the new one [23:19] ah.. you mean for when I over-write changes in the future [23:19] yes [23:19] nDuff: I think I have your fix. [23:20] I C [23:20] nDuff: just profiling to make sure its not a regression in the common case [23:27] nDuff: which it is somewhat [23:44] jelmer: hello [23:45] jelmer: I need your help as buddy for a bug in svn 1.4.4 [23:45] nDuff: ok, its fixed, pushing it in a second [23:45] nDuff: hey nDuff [23:45] (that was redundant...) [23:46] ddaa: Hi [23:46] jelmer: come to #svn? [23:47] I exposed my problem there, but nobody seemed to care enough to reproduce it :/ [23:51] nDuff: its revno 2856 in the same branch you've been testing with [23:51] nDuff: I'm popping out for a few minutes, its just reannotating into knit format at the moment. [23:54] are there any tools or docs that could help me migrate projects from RCS to bazaar? [23:55] o.O RCS, as in /usr/bin/co ? [23:55] where's the best place to browse bzr source? it's not obvious (to me) how to do it in launchpad [23:56] mlh: https://code.edge.launchpad.net/~bzr/bzr/trunk [23:56] ddaa: yep :) [23:56] ah nevermind, found it [23:56] then click on "Browse code" [23:56] "code" tab [23:57] i never bothered to learn cvs... so all my personal projects are in RCS [23:57] so now that i'm starting to get with the times, i'd like to migrate them to bazaar, if possible [23:58] looks like you'll have to write your own conversion tool [23:58] even Tailor does not appear to support RCS [23:58] **sigh** [23:58] pattern: you can convert from rcs with cvs2svn, then use bzr-svn [23:58] maybe you can find something to convert RCS->CVS, then use Tailor? [23:58] well, can't say i'm surprised [23:59] ah yeah, that's a good idea, mlh [23:59] both of you :) [23:59] rcs is close enough to cvs that you can just put some (empty) cvs crap to convince tools that your rcs is actually cvs [23:59] there are howtos floating around somewhere