[00:02] ChrisMorgan: this is caused by bzr probing for the smart server [00:03] ? [00:03] That went over my head :-) [00:03] Just agree that it didn't work :P [00:09] ChrisMorgan: when bzr sees a http:// URL, it'll first try POST to $url/.bzr/smart with a smart server request. jelmer is saying that for some reason this probe is preventing bzr-svn from being able to do its own probe and take over. [00:10] Shall I put that in my bug report or let you two comment it? [00:10] ChrisMorgan: (maybe the server is rejecting the bzr smart server probe with a slightly unusual HTTP response code, or something like that) [00:10] ChrisMorgan: well, please file a bug if you haven't already [00:11] ChrisMorgan: we've have a few along these lines before, no need to paste my generic explanation into the bug :) [00:12] https://bugs.launchpad.net/bzr-svn/+bug/506196 [00:12] Launchpad bug 506196 in bzr-svn "SVN checkout failing with empty authentication details" [Undecided,New] [00:13] ChrisMorgan: you may be able to workaround it by prefixing svn+ to the URL? [00:14] Works. [00:14] (Or perhaps by prefixing nosmart+ come to think of it...) [00:16] I'll leave you to comment that addition then. I've already posted mine. [00:16] Nevertheless, it's still a bug :-) [00:16] If it works with svn it should work with bzr :-) [00:17] Thanks though, I really wanted all the information so I can revert to Django 1.1 if I needed to while off-line [00:17] Thanks for reporting the bug :) [00:18] SVN is slow... now I've made it to revision 500/7768... [00:19] Yeah, it's not really designed to send you the complete history :) [00:25] For some things I'd just want a lightweight checkout, this time I do really want it all. [00:28] I thought someone already maintained a django bzr collection of branches [00:31] Over 2000... [00:31] I have heard of it... I dunno [00:31] It's been used for benchmarks [00:35] morning [01:39] ChrisMorgan: it might help if you attach the log from running [01:39] bzr co log+http:/otauhaotnhu [01:39] if you haven't already [02:04] jelmer: have you had a chance to look at that new bzr-svn exception I'm hitting? [02:13] * igc lunch [03:58] is there a better way to change a commit message than uncommit + commit? [04:01] There's not a simpler way for simple cases (that I know of) [04:01] Any 'better' way would be functionally equivalent in the end, anyway. [04:01] I guess I mean "easier" ;P [04:01] anyhow, no big deal [04:03] idnar: easier in what way? Open an editor with the old commit message I guess? [04:04] something like that [04:04] It'd be nice to have something like that, maybe commit --redo or something. [04:04] uncommit's useful for more than just changing the commit message, of course. [04:04] or even just avoid the risk of including uncommited changes or whatever [04:05] ironically, darcs has a command (amend-record) that lets you include additional changes but doesn't let you change the patch name [04:36] poolie: I like the new "always report if it came from a user-defined source" version [04:40] thanks, sent [04:40] jam, i think our patch-landing latency is improving for developers as well as new contributors since mooloolaba [04:40] which is good [04:40] no room for complacency though [04:50] can someone help me work out where to write a test for bug 456077? [04:50] Launchpad bug 456077 in bzr "MYSQL/BZR P3: bzr doesn't explain it's doing a slow cross-format fetch" [Medium,In progress] https://launchpad.net/bugs/456077 [04:50] or maybe it doesn't really need one [04:50] poolie: sure [04:51] so what do we want, a ui.note when getting a stream with a different format? [04:51] i guess in per_interrepository [04:51] yes [04:51] well, [04:51] more broadly, when the fetch is going to be noticeably slow [04:52] so the stream interface is tested on repository, not interrepo [04:52] and thats where the code would live, so I'd write the test there. [04:53] as for 'when it will be slow' - there isn't a guaranteed metric for that. [04:53] and will all fetches go through the stream interface? [04:53] so to me that means writing per-case tests. [04:53] poolie: all the bzr <-> bzr ones do now [04:54] it was one of the major achievements spiv and I had last year [04:55] concretely we expect getting a revision-delta style stream to be painful on non-CHK repositories [04:56] ok, so you could possibly override InterRepository, but that's not actually expected to be done [04:56] svn/git/hg fetches do that [04:56] they provide specific optimisers at the moment I believe. [04:57] i wonder if a warning is useful there [04:57] they could move to using the streaming interface at some future point. [04:57] probably not [04:57] possibly it is, but it won't help mysql:) [04:57] and the place to put it would be in the SVN or whatever InterRepo class anyhow, I think. [04:58] well, i was thinking of putting it in the base interrepo class [04:58] but, as you point out, that is no longer where the variation is [04:59] fetch.py does this [04:59] : [04:59] source = self.from_repository._get_source( [04:59] self.to_repository._format) [04:59] yes i see [04:59] but its the repo _get_source that will actually know its going to be slow. [05:01] so we have a StreamSource or RemoteStreamSource locally [05:01] specifically [05:01] in repository.py [05:01] and i guess that can give the warning... [05:01] _get_inventory_stream [05:01] there is a bunch of logic that may call into [05:01] ah yes [05:01] self._get_convertable_inventory_stream [05:01] that *that* function is the one that does the hard work. [05:02] and that's not overridden in the remote case [05:02] note that with fetch from bzr+ssh, this code block will execute on the smart server. [05:02] but you can use the current 'stderr shows on the client' 'feature' to let users see the warning anyway, for now. [05:03] hm [05:03] poolie: right, nothing is overridden in the remote case; the entire object is proxied [05:07] the comment on get_convertable... says "the source is using CHKs" but this actually seems to cover all different-format cases? [05:07] yes [05:08] thanks very much [05:08] np [05:08] do you recall if the deprecation warning patch landed already? [05:08] sorry no [05:12] i guess this won't work over bzr+http or tcp until we have a way to remote ui operations [05:13] if you were willing to bump the stream format [05:13] you could do a step towards the progress-in-streams stuff I've speculated on [05:13] and include a substream of type 'warning' [05:14] mm [05:14] on push operations the RemoteStreamSink would see that and show it locally, on pull operations the StreamSink would get it from the network and show it. [05:14] alternatively we could make sure the logic runs on the client [05:14] but that seems a bit messy [05:14] you'd have to duplicate it - cause it to run twice [05:15] right [05:15] and you wouldn't know about config or environment on the server, so you'd be guessing [05:15] so [05:15] i guess we could make the client give this warning if it receives a stream of inventory-delta? [05:15] regardless of why the server decided to send that? [05:15] yes [05:16] specifically you'd want to make the Sink do that, if its not running inside a server, and RemoteSink to do it if it observes it going past. [05:16] its a little crude, but it will do [05:18] do you think that's better? [05:18] it seems possibly better to me [05:18] I think it will work now, as a stderr output would. It would work in tcp and http as you noted, so thats better [05:18] OTOH deltas can be very fast chk<->chk so perhaps there will be some false positives in the future. [05:22] i'd kind of rather deal with the false positive [05:22] s [05:22] then do that :) [05:22] if there are are any [05:26] Isn't there some bug about dirstate when you upgrade to a rich-root format? [05:26] Should I...do something, or is it fine? [05:26] Peng: nada [05:27] it's fine? [05:27] jelmer: ping [05:29] so, u [05:29] um [05:29] fetching from 2a into 1.14-rr does seem to use InterDifferingSerializer [05:29] which does not seem to use streams [05:30] or, not in a straightforward way [05:30] * poolie looks [05:32] oh, locally? [05:32] I'd check with spiv at this point. [05:32] spiv: ^ [05:32] I was fairly sure that even that remnant had been dropped, but apparently not. [05:32] Hmm. [05:33] It's only used for local fetches. [05:33] See InterDifferingSerializer.is_compatible, it returns False if either side has a URL starting with file:/// [05:34] (And only if the serializers differ, etc.) [05:35] Somewhere, possibly just a mailing list thread, there's a list of things we need to fix to be able to drop IDS completely. [05:35] IIRC it was progress indication and worse speed/memory for local fetches (although the speed/memory was partially addressed?). [05:40] erk, now I can't unping him. === arjenAU2 is now known as arjenAU [05:51] spiv actually it's false if either of them is not local [05:51] but iswym [05:51] so it seems that we need a warning in both ids and streaming [05:53] Yeah. [05:54] IDS is duplication, after all. [05:54] so [05:54] i'd like to add blackbox tests to make sure i'm actually covering the right things [06:22] poolie: well, I'd really be inclined to write tests close to the code [06:22] poolie: but I know we have differing opinions on this ;) [06:23] to me the risk here is not so much that my call to warning is wrong [06:23] but that the code is not reached at all [06:23] as it was not in my/our first attempt [06:23] therefore i want an integration test that checks that [06:29] spiv, i'm going to merge 2.0 back to trunk, which will carry some of your cleanup changes [06:29] just so you know [06:30] i'm having some trouble threading bazaar when gtk is running... without the threading bzr works but locks up gtk, but with threading bzr hits Branch.open(remote_branch_url) and doesn't do anything afterwards in that thread. [06:30] doesn't even end. [06:30] poolie: sure [06:30] poolie: I think you'll find that the cmd_annotate change from 2.0 can be discarded, but that the test that is added ought to be kept. [06:30] oh ok [06:30] that conflicted [06:31] why should it be discarded? [06:31] The command_cleanup branch included the cmd_annotate fix, but using add_cleanup rather than try/finally. [06:31] it looks like an improvement, trunk still does it without cleanups [06:31] The change in trunk was the try/finally for the tree lock IIRC. [06:31] but we want to end up with it using cleanups in trunk, don't we? [06:32] poolie: right; I mean discard the 2.0 version and keep it as it is in trunk :) [06:32] doctormo: hmm [06:33] doctormo: I doubt most of bzrlib is threadsafe [06:33] spiv: AWOS: don't use threads it won't work? [06:33] doctormo: so your gtk program can use threads, but you should take care to only call bzrlib from a single thread. [06:34] oh i see [06:34] spiv: OK, I think I may be able to wrangle the mental image, I think it's changing the ui outside the thread. [06:35] spiv: our own server is multithreaded [06:35] lifeless: yeah [06:35] doctormo: bzrlib should be pretty safe as long as you only use a given object from the same thread. [06:36] doctormo: so you can use two threads, or N, but don't pass a (say) Branch opened from one thread to another thread. [06:36] lifeless: but we don't share objects between threads... [06:36] lifeless: it's simpler just to say "don't use multiple threads" :P [06:36] lifeless: but you're right. [06:36] spiv: yes, I'm trying to rephrase what you said in a slightly less restrictive way ;) [06:37] lifeless: Don't use threads unless you know how to control leaks. [06:37] doctormo: uh, I think thats a very different statement ;) [06:37] for all that it may be wise [06:39] lifeless: I can't land things in bzr-loom. [06:39] Peng: aren't you in ~bzr yet? [06:39] lifeless: No. [06:39] lifeless: About once a month you suggest it, but then none of us (including me) follow up. :) [06:40] you can now [06:40] lifeless: Cool, thanks. I'll land it. [06:41] and you're now in ~bzr. welcome to the firehose [06:41] :D [06:42] Peng: Are you the same Peng that hangs around in #linode, too? :-) [06:43] StevenK: Yes. [06:44] bbl [06:54] i want to check out from a bzr branch, but I don't want the new working copy to be a bzr repo - just a working copy. [06:54] I think there's a command for this... [06:54] but I can't find it [06:55] chrispitzer: I think you want a lightweight checkout then. [06:55] chrispitzer: You don't want a local copy of the history? You're looking for "bzr checkout --lightweight" or "bzr branch --stacked", depending on whether you want a checkout or branch. [06:55] bzr co --lightweight [06:55] thanks [07:00] chrispitzer: note that this will be very slow over the internet [07:07] hi all [07:08] lifeless: but only for things like log, annotate, etc. Diff shouldn't take longer, commit will take just as long. That's right isn't it? [07:10] ChrisMorgan: no [07:10] diff will take longer [07:10] commit will take longer [07:11] For a checkout? [07:11] a lightweight one, yes [07:11] diff on a heavyweight one shouldn't be affected [07:11] Particularly though, why will diff take longer? Doesn't a lightweight checkout still have the latest revision? What would need to be looked at in the network? [07:11] ChrisMorgan: a lightweight checkout doesn't have its own copy of the original version to compare to [07:12] commit on a heavyweight one will be slightly affected [07:12] ChrisMorgan: it has to fetch that from the repository, so diff will be slower if the repository is not local. [07:12] ChrisMorgan: say your round trip time is 100ms [07:12] So it's not like an SVN checkout. [07:12] ChrisMorgan: rigth [07:12] right, rather [07:12] I thought lightweight made it that way. [07:12] OK. [07:12] stacked branch is the same then I presume? [07:12] Well, it's like SVN only more extreme :) [07:12] ChrisMorgan: diff on a lightweight checkout will open the branch ~(600ms) and repository ~(400ms) before doing anything locally [07:13] ChrisMorgan: so thats about a second of overhead, before you consider the cost of getting out basis files where a difference is detected [07:13] Stacking will at least keep some of the repo locally. [07:13] And why, oh, /why/ do you have "lightweight" checkouts and "stacked" branches if it's the same thing? [07:13] ChrisMorgan: lightweight makes it roughly like CVS checkouts [07:13] But stacking isn't really designed for this case (yet). [07:13] I'm not really familiar with CVS... I tried it once for some Drupal work and haven't got over the shock yet. [07:13] ChrisMorgan: it'd be nice to collapse them, but at the moment they serve different needs [07:13] ChrisMorgan: stacked branches can diverge [07:14] ChrisMorgan: there's a huge thread on the mailing list on (broadly) this topic atm :) [07:14] ChrisMorgan: checkouts can't(*), so they aren't really the same thing at all. [07:14] Yeah, but is the only difference between a checkout and a branch that the first is bound? [07:14] the only difference between 'bzr checkout oo' and 'bzr branch oo' is that the former binds to the source whereas the latter sets the parent to the source [07:15] checkout --lightweight doesn't create a local repo at all and replaces the local branch object with a branch reference pointing at the source [07:30] hi vila? [07:30] poolie: hey ! [07:30] vila, i think we're meant to talk [07:31] poolie: yup, I started the day with a crashed desktop (and was lucky enough to reboot the host only after suspending the guest...) but things seem to be ok now [09:11] hello all [09:14] win 38 [09:14] hi bialix [09:15] hey lifeless, what's 38? [09:16] hi bialix! [09:16] * igc dinner [09:16] hi Ian [09:16] bialix: the number of the irssi window he failed to switch to (he meant to type /win 38) [09:16] btw, igc, I've update explorer translation template [09:22] I'm still having odd problems with threading, could a kind person look over the code quickly and see if they spot any dumb mistakes? [09:23] http://bazaar.launchpad.net/~doctormo/groundcontrol/trunk/annotate/head%3A/nautilus-groundcontrol.py from line 162 to 175 [09:23] and http://bazaar.launchpad.net/~doctormo/groundcontrol/trunk/annotate/head%3A/GroundControl/bazaar.py the entire file is probably of interest. === spiv_ is now known as spiv [09:29] bzr's launchpad plugin doesn't, currently, help with the creation of new projects, and I'm looking at hacking on it so that it does so. Was this left out for a reason? [09:36] aquarius: no, and we'd welcome improvements to the plugin [09:37] aquarius: (originally it was because Launchpad didn't have launchpadlib when the plugin was created, just a couple of XML-RPC methods) [09:37] ah, cool. [09:38] atm, all my small projects live in my svn server, because setting up a launchpad project is a pain by comparison with typing four svn commands :) [09:39] but typing "bzr lp-new-project projectname description" in a folder to make it an LP project would get over that hump quite nicely [09:40] aquarius: this may involve hacking on lp [09:41] lifeless, really? launchpadlib lets me create projects, I think? [09:41] dunno [09:41] coverage of exposed apis can be pretty hit and miss [09:41] should do. if it doesn't I shall whine mightily at leonardr :) [09:42] if I've got a plugin in the system plugins folder and a plugin with the same name in my local plugins folder, the local one will override the system one, yes? [09:43] mtaylor: you really should release a new pandora build if you're talking on it. [09:43] mtaylor: the version I packaged in debian is way old now [09:45] aquarius: ywa [09:58] bialix: Hi! I have a quick question about scmproj... [09:59] heya jszakmeister! sure [09:59] How do you work on a local branch and merge the result back in? [10:00] merge locally and then push [10:00] maybe I misunderstood your question? [10:00] Let's say I have a trunk of library that's in the workspace created by scmproj... [10:01] I want to create a branch of trunk for that library, make the change, and get it reviewed by the team. Does scmproj support that sort of workflow? [10:02] Usually we're creating new alt for this, and put new branch under that alt [10:02] then merging 2 alts when ready [10:02] but alts is half way to deprecation [10:03] That's what I thought. :-) [10:03] Do you envision some other way of doing this? [10:03] instead of alts you may want to use just new branch of project config [10:03] but today alts are still supported [10:03] and sometimes they are much easier [10:04] I'll remove alts once I will have new layout format with snapshots ready [10:04] I had that thought as well. But the one project I'd like to use it for is massive. [10:04] I'd rather not have a whole second tree, if I can avoid it. [10:04] new branch of project config is much closer to what nested trees should be [10:05] jszakmeister: in the past I've tried to create something like bzr-colo now [10:05] today I'd suggest using bzr-colo plugin [10:05] I saw that on the list... looks interesting! [10:05] I've played with it yesterday and it really in good shape [10:05] despite version 0.0.1 [10:06] I'm not sure yet I will want to provide tight integration with colo in scmproj [10:07] jszakmeister: if you have only branch for one component then I'd use alts today, publish your branch on the server for review, then merge alts [10:07] to merge alt from server you need: bzr pcmd "merge {BRANCH_URL}" --alt XXX -i your_library [10:08] there --alt XXX will be your alt (corresponding to your new branch) [10:08] Yeah, but I don't want to head down a path thats going to be deprecated. [10:08] look at http://bialix.com/scmproj/docs/howto.html [10:09] http://bialix.com/scmproj/docs/tips-n-tricks.html [10:09] I'd rather say "we can't do that right now" instead. [10:09] hmm, it's so strong for me [10:09] s/so/too/ [10:10] :-) [10:10] The backend is actually in Subversion, so they have other choices. [10:10] you're underestimate the power of pcmd [10:10] oh [10:11] I don't see the full picture of yours [10:11] They have everything in a Subversion backend, and have been using externals to manage the tree. [10:12] But it's a PITA. [10:12] Plus, the backend is old (before SVN had merge tracking)... [10:12] I'm going to bed now, thanks for the help before, although the problems remain I'm sure it's a simple fix. [10:12] bzr-externals? [10:12] It'd be nice to switch them to Bazaar and bzr-svn, but we don't *have* to [10:13] That was the next one on my list to examine. :-) [10:13] The nice thing about scmproj is pcmd [10:13] and the fact that you can run operations on everything. [10:15] So, bzr-colo... works for more than just trying to get colocated branch support for one "project"? [10:17] I thought, from the name, it was really just trying to handle multiple branches of the same project. [10:19] bzr-colo provides git-style workflow [10:19] multiple [feature] branches of the same project [10:20] Yeah, that's what I thought... which is very nice! [10:20] I just need something more along the lines of scmproj for the other projects though. [10:20] along the lines? [10:21] Sorry... I should use better English: "something like scmproj" [10:21] no, that's me [10:23] well, scmproj is nice when you have set of loosely related components [10:24] or when you have common library for several projects [10:24] That's exactly our case. [10:24] I have no experience with svn:externals though [10:24] Be happy that you don't. :-) [10:24] just read the docs [10:24] :-) [10:24] lol [10:24] but I mean maybe I'm lack some knowledge [10:25] the good thing about small company/startup is that you can choose any vcs you want [10:25] but you have to admin it yourself too [10:25] :-) [10:27] jszakmeister: I'm planning to add some tips about merge in scmproj [10:28] or maybe I should finally implement it as separate command [10:28] That would be great (either one!) [10:28] there is enough special cases user have to care [10:28] I completely missed the merge docs the first time around [10:29] your position re alts is very strong, I did not expect people can get it this way [10:29] thanks for feedback! [10:29] You're welcome! [10:30] if you have any suggestions or more question: I'll be happy to hear them [10:31] today my own experience drives the development of scmproj, but I can miss some other POV [10:32] I'm actually trying to write a few things down, but I believe I will have some suggestions for scmproj. [10:35] testr failiing doesn't seem to be implemented despite being mentioned in README.txt [10:35] Of course that the one I was interested in :D [10:35] vila: failing to fail is still a failure, right? ;) [10:37] spiv: yes, I'm whining about failing to sucessfully fail :) [10:37] err, wrong channel for my remark about testr >-) [10:38] well, it will get my attention :P [10:38] #testrepository if you want the 'right channel' [10:53] hi vila [10:53] hi bialix [11:14] supposing bzr+ssh://remote-a and bzr+ssh://remote-b are two different branches which share 99.9% of their revision history. [11:14] and they're large enough that they're slow to branch afresh. [11:14] and I already have a local branch of remote-a [11:14] what's the quickest way to get a local branch of remote-b? [11:15] Is your local branch of remote-a in a shared repo? [11:15] quicksilver: Have remote-a branched in a shared-repository (initialised with “bzr init-repo”) and then branch remote-b into the same repo. [11:15] fullermd: no, but if that's the right answer then in future I will arrange for it to be so :) [11:16] I'm pretty sure you can reconfigure remote-a to be in a shared repository. [11:16] Well, you could fudge without it. But you'd be wasting near double the space, from 2 copies of the history. [11:16] Yes, you can. init-repo a repo around it, and use 'reconfigure' to move its history into it. [11:16] * fullermd sprinkles a few more pronouns into that sentence just for kicks. [11:16] Metasyntactic variables FTW! [11:18] fullermd: cool. [11:22] does 'bzr info' show when you've done it right, I.e. when it is using the shared-repo properly? [11:22] It does. [11:27] OK. I bzr init-repo . to create my first shared repo. [11:28] then I bzr branch bzr+ssh://remote-a remote-a to populate it with the first branch [11:28] and it freezes only a second or so in, saying: [11:28] [#########| ] 103KB 100KB/s | Fetching revisions:Get stream sourc [11:28] Well, you already have the first branch locally, don't you? [11:28] oh, it's unfrozen [11:28] was a good 60 seconds though [11:29] fullermd: yes, I do. I was faking a clean start to (a) make sure I understood the process and (b) as a basis for explaning it to colleagues [11:29] I've been trying to fake a clean start for years, but I haven't managed to burn all copies of the.... [11:30] Uh... [11:30] Nevermind. Didn't say anything. [11:30] :) [11:37] I think some kind of insect is trapped inside the bzr process now. chk:chk it's going. [11:37] perhaps a baby bird. [11:37] That's the buzzer. Hence the name. [11:39] chk:chk means there's a small sliver of paper stuck between the hammer and the bell. You probably need to empty out the bit bucket. [11:41] OK, the results are in. [11:41] a clean branch of one of these branches took 4m30 [11:41] the first branch into a shared-repo took 13m56 [11:42] but then a subsequent branch (a similar but different branch) took 45 seconds [11:42] definitely better [11:43] that's quite apart from the disk space savings, which were pretty close to the 'ideal' 50% [11:43] but to be honest disk space isn't what I care about [11:43] it's branch time. [11:43] Yeah. But they go hand in hand. [11:44] and making a new local branch took only 4 seconds [11:45] (mind you it only took 23 seconds without shared repos) [11:56] only takes 5 seconds to branch something which was previously local into the shared repo [11:56] bit suspiciously fast that ;) [11:58] Hmm. Trying transfer another previously local branch in has pushed a python process up to 2.2G resident [11:59] that doesn't sound very good. [11:59] and eventually died with Python(31106) malloc: *** mmap(size=1268281344) failed (error code=12) [11:59] *** error: can't allocate region [11:59] *** set a breakpoint in malloc_error_break to debug [12:05] I'm not sure I believe this is working right [12:05] It's not downloaded 100M for this branch, which is basically everything. [12:06] that doesn't seem like the shared-repo bit did its stuff [12:09] could it be a problem that the remote formats are all pack-0.92? [12:15] Out of sheer curiosity, if I just want a copy of the source, ought I expect bzr branch ${foo} or bzr export ${foo} to generate less network traffic? [12:18] persia: often branch [12:19] though export has been improved a lot in 2.1 [12:19] export will read less, but do more roundtrips before 2.1 [12:19] [proportional to tree size] [12:20] Interesting. Thanks. I had wondered about using export as a super-lightweight branch for review and delete, but I think I won't do that :) [12:25] OK. I can't even 'bzr upgrade' this particular branch in place [12:25] I conclude this is somehow a 'corrupted' branch. [12:33] quicksilver: I'm going to sleep now, but I suggest yous tart giving details [12:33] quicksilver: as I can't infer anything from the comments you've been making, and corruption is extremely rare [12:36] lifeless: well the details are only just beginning to come clear to me. [12:36] We have many branches of one basic codebase. [12:36] One of them, it turns out, is behaving anomalously. [12:36] On the server its' 300M whilst the others are 100M (I don't know if this is relevant, but it's odd) [12:36] and any attempt to 'branch' it causes a python out-of-memory error. [12:37] I also have a local copy on this machine, which is a couple of months old [12:37] although I presumably downloaded that successfully at the time, any attempt to branch that branch locally gives the same error. [12:37] and any attempt to 'bzr upgrade' it to a more modern format, same error. [13:04] ok, I got the uploader of that branch to push a fresh copy, and I managed to branch that fresh copy [13:04] but it took ages (maybe that's just consistent with the weirdly inflated size) and there is something odd about it [13:04] Standalone tree (format: unnamed) [13:08] quicksilver: try 'bzr info -v', unnamed means you're using an unusual combination [13:08] do the same for the remote branch [13:09] if the repository formats are different, it's likely the slowness is due to the on-the-fly conversion [13:11] control: Meta directory format 1 [13:11] working tree: Working tree format 6 [13:11] branch: Branch format 6 [13:11] repository: Packs containing knits without subtree support [13:13] vila: how would I have "got into" an unusual combination? And how do I get out of it again? [13:13] well, using a shared repo is one way [13:14] I did briefly experiment with shared repos [13:14] bt I'm not using one here [13:14] ok (bzr info should tell you anyway) [13:14] and as I remarked earlier, 'bzr upgrade' crashes in this branch. [13:14] that's bad, what does 'bz check' says ? [13:15] s/bz/bzr/ [13:16] running it now... [13:16] seems to take a little while [13:17] that's expected [13:19] ok I'll let you know when it's finished, and eat a sandwich [13:22] vila: 3927 revisions [13:22] 3468 file-ids [13:22] 330 inconsistent parents [13:23] yup, that's bad enough, do 'bzr reconcile' [13:24] sorry if you already reply to that but what bzr version are you using ? [13:25] vila: 2.0.2 on the server 2.0.1 on my client [13:25] ok, not the latest but good enough [13:26] any reason to keep using 0.92 as your repo format ? [13:26] (although the developer who created / pushed this apparently broken branch is only on 1.13.1 [13:26] (and we have another developer who is also on 1.13.1 [13:26] but they could both be told to upgrade. [13:26] quicksilver: To clarify, it's an 'unnamed' format because it's pack-0.92 repo/branch combined with Bazaar 2's tree format. bzr 2.x likes to give you the latest tree format even if it doesn't fit into one of the canned names which for {repo, branch, tree} combinations. [13:27] maxb: *nod* interesting. [13:27] that would allow you to use 2a which will be more compact and faster across the network too [13:27] vila: I had been thinking about upgrading the repo format [13:27] vila: in fact it was this train of thought I had [13:27] "Hmm should use bzr better, let's learn about shared repos and upgrade our repo formats" [13:27] I was following that train of thought and experimenting with some of our branches when I discovered this broken one. [13:28] reconciliation only took 3 minutes. That's a relief. [13:28] both should make a significant difference, but upgrading to 2a requires a 'bzr check; bzr reconcile' anyway, so you're on the right track :) [13:28] redo 'bzr check' to be on the safe side :) [13:29] Requires? Or just a sensible precaution? [13:29] precaution [13:29] the branch size has doubled again [13:29] from 300M to 600M [13:29] check you /bzr/reposiroty/obsolete_packs [13:30] s/you/your/ [13:30] rhaa, .bzr/repository/obsolete_packs content, gee [13:30] I ran bzr check in another branch [13:30] one which, as far as I knew, was fine. [13:30] it also has the same 330 inconsistent parents [13:31] yup. 278M in obsolete_packs. [13:31] personally I still think it's suspicious this branch is 3x as large as the others [13:32] at least... [13:32] yeah, but 3x is better than 6x [13:32] it does have quite a few changes relative to the others, but not *that* many. [13:32] err, I mean, it shoudn't be 3x [13:32] I am in the process of re-running bzr check [13:37] vila: OK, it now passes bzr check. [13:37] (which took 6 minutes to run) [13:37] but it's odd that even the branches I consider "OK" have the same inconsistent parents. [13:37] I'm going to try to bzr upgrade this branch now I think [13:38] you want to run 'bzr reconcile' in all these branches [13:38] yes, I see that [13:39] so what does inconsistent parents mean? A problem has been lurking which by luck hasn't bitten us before? [13:39] and now in this branch for some reason it's biting us [13:40] most probably, it's hard to say for sure from here :-/ [13:40] It could also be unrelated, IIRC there was several weird cases were you could end up with inconsistent parents, not all of the same gravity [13:41] well if bzr upgrade works now, where it didn't work before, then I guess I have "fixed" something" [13:41] if not, then it's still broken. [13:41] and I still wonder what event in branch history made the size triple [13:41] if needs be, I'll binary chop the revisions [13:42] you can try eyegrepping 'bzr log -n0 -v' [13:42] It could be some binary file... [13:43] We had a case where someone embedded a whole $DVCS_TOOL repo during several revisions, modified at each revision... ended up with quite a big repo [13:45] nervously watches Python's resident size increase [13:45] last time it hit 2G and then died with a malloc error [13:46] quicksilver: well, 2.1 includes some related fixes you may want to try... [13:46] vila: do I need to bzr reconcile on ther server and also get everyone to bzr reconcile on each client? [13:46] (that or pull clean branches, presumably) [13:46] yup [13:47] depending on your experiences you may prefer one way or the other, it depends on too many things to have single answer [13:47] vila: slight reluctance to use beta versions in production, but if you strongly advise it I'd follow your advicee. [13:48] if you end up with smaller repo and that people use shared repos, you may end up downloading it >1 times [13:48] OK, there she goes. [13:48] python resident space > 2G [13:48] malloc failure coming shortly. [13:49] Python(31916) malloc: *** mmap(size=759209984) failed (error code=12)revisions [13:49] *** error: can't allocate region [13:49] *** set a breakpoint in malloc_error_break to debug [13:49] something fishy is going on here, first the 3x increase, now the > 2G mem footprint, that's really really far from the 100M size you're mentioning :-/ [13:49] does that come with a traceback ? [13:50] no, in fact, in didn't even kill python [13:50] it just printed that message [13:51] its RSS has dropped to a more "reasonable" 400M and the upgrade claims to still be running === mrevell is now known as mrevell-lunch [13:53] wow, let it run then ! [13:53] ah, eventually [13:53] Python(31916) malloc: *** mmap(size=691982336) failed (error code=12)revisions: [13:53] *** error: can't allocate region [13:53] *** set a breakpoint in malloc_error_break to debug [13:53] bzr: out of memory [13:53] I think the long pause was actually the process of freeing enough memory to print the error message :-/ [13:54] no traceback I'm afraid. [13:54] vila: I have a plan to try to branch an old revision which doesn't have the problems and then successively pull forward, how does that sound? [13:56] good, as long you can identify the faulty revision... [13:59] vila: further clue. [14:00] or is it [14:00] * quicksilver tries to get facts straight [14:01] What exactly is an 'inconsistent parent'? What's it inconsistent with? [14:02] I was able to "bzr branch bzr+ssh:/remote-bad-branch bad-branch [14:02] I was then also able to "bzr branch bad-branch bad-branch-copy" [14:03] but since I did reconcile I can't even do that [14:03] maxb: what is the exact error you're getting ? [14:03] I can't even locally copy the branch with bzr branch [14:03] before the reconcile, I could, and it only took 30 seconds or so to boot. [14:03] SamB_XP: None, just interested in understanding more about bzr's guts [14:04] well, where did you see the term then? [14:04] in my report, SamB_XP [14:04] ah. [14:04] when I bzr check'ed my odd branch. [14:05] I was puzzled about why maxb had asked about a single consistant parent -- I've only ever heard it in the plural before [14:05] er. *inconsistant [14:06] OK, I have confirmed by double-checking. [14:06] I can locally branch the un-fixed branch [14:06] but locally branching the 'fixed' (reconciled) branch gives the out of memory error. [14:11] use a DVCS for 4 years and never encounter a single problem, but when I hit a bug, boy is it a painful one :-/ [14:21] vila: OK, I found a sufficiently old branch not have the 'size inflation'. [14:21] vila: guessing that might be related, I'm going to reconcile + upgrade from this old revision and see how that goes. [14:22] and from a complete branch, did you see anything suspicious in the following revs (with 'bzr log -n0 -v') ? [14:23] I'm currently use a bash for loop to give me a copy of every intermediate revision [14:23] so I can see where the size inflation is [14:24] ok [14:24] the bzr log -n0 was rather long to look at... [14:29] I've got a branch which I've been using as my 'trunk'. To move this to a different physical location, can I just move the repo? [14:30] CaMason: best way is to just branch it to the new location then delete the old one. [14:30] CaMason: I knoticed that the actual repo (on my windows machine) wouldn't work if it wasn't in it's old path for some reason. [14:30] ok. That maintains all of the branch history yes? [14:31] but if I branched it and deleted the old one it worked. [14:31] yes [14:31] sounds good [14:35] vila: OK. Using an old branch revision which doesn't suffer the size inflation, the sequence check/reconcile/upgrade worked. [14:35] vila: so I am inclined to consider the size inflation to be related to this bug, somehow [14:36] that would be really weird [14:36] vila: I note taht format 2a does seem to be about 1.5x larger than pack-0.92 [14:36] is that expected? [14:36] I don't really mind. [14:36] larger ? Certainly not, check /obsolete_packs again [14:37] right. roger that. [14:37] looking good. [14:37] about 80% the size? [14:37] 20% smaller, i.e. [14:37] now I'm going to try to pull into this "good" branch from the other [14:39] 20% smaller is a bit deceiving but still smaller, we've seen more savings [14:39] quicksilver: do that on a copy if you don't mind :) [14:40] I thought you made several branches to identify the size inflation ? [14:40] yes, I have many many branches [14:40] and yes, I made a copy :) [14:40] in fact, I did this check/reconcile/upgrade experiment on revision 896 [14:41] I started that *before* I learn that revision 915 was the last revision not to suffer size inflation. [14:41] ok [14:41] so what I'm doing now is, (in a copy) pulling into my upgraded 896 from 915 [14:41] that went fine, apparently. [14:41] so what's in 916 ? [14:42] unfortunately it's a massive merge [14:42] 39 merged revisions [14:42] how many files ? Any binary ? [14:42] yes there is a binary file in there. It's 1.3 megabytes [14:42] (and a few smaller binary files) (and many many text files) [14:43] I believe this is about to crash [14:43] 1.3M is not big, search for > 50M [14:43] Python process up to 1G resident and climbing. [14:43] amazing [14:43] pretty sure there are no files that big. [14:43] any chance to publish these branches ? [14:46] not really :( [14:46] 4 years of private code history. [14:48] two python memory errors but the bzr pull is still running so I'll let it try. [14:49] quicksilver: still using 2.0.3 ? [14:50] 2.0.1 in fact [14:50] quicksilver: trying with bzr.dev is worth it I think, try pinging jam to get his opinion though he made most of the memory fixes [14:50] morning vila [14:50] magic.... [14:50] no opinions here [14:50] :) [14:50] let me read [14:50] morninbg jam [14:50] vila: well knock me down with a feather [14:50] * vila stop chewing while typing [14:51] you guys have been chatting for a long time... [14:51] vila: despite two scary looking memory errors, the bzr pull has succeeded. [14:51] care to summarize? [14:51] jam: painful out of memory errors doing certain operations with a particular branch [14:51] yup, quicksilver is encountering memory errors (no traceback, direct from python) while pulling 0.92 branches [14:51] jam: including: errors when branching, errors when merging, errors when trying to 'bzr upgrade' [14:52] that's with bzr-2.0.1. [14:52] quicksilver: no traceback even with -Derror? [14:52] (and nothing in ~/.bzr.log ?) [14:52] jam: comparing my branches en-masse, these errors seem to be co-incident with the repository size on disk jumping from 100M to 300M at a particular revision [14:52] Python(31916) malloc: *** mmap(size=691982336) failed (error code=12)revisions: [14:53] and I don't believe there is a good reason for the size jump; I don't think we added then deleted a 50M binary file or anything of that nature. [14:53] quicksilver, vila: allocating 691MB in a single shot? [14:53] yes. [14:53] other errors with slightly different numbers [14:53] no, more like 200M [14:53] haa, the malloc hyes [14:53] quicksilver: 64-bit machine? [14:53] e.g. [14:53] Python(32408) malloc: *** mmap(size=1267761152) failed (error code=12) [14:53] *** error: can't allocate region [14:53] *** set a breakpoint in malloc_error_break to debug [14:53] Python(32408) malloc: *** mmap(size=759758848) failed (error code=12)xts:texts [14:53] *** error: can't allocate region [14:53] *** set a breakpoint in malloc_error_break to debug [14:54] jam: core2, so technically yes, but running OSX 10.5, so in practice I believe it counts as 32 bit. [14:54] quicksilver: just run 'python' and see what it says [14:54] note that those two errors I just pasted occurred during a bzr pull which appears to have succeeded! [14:54] I'm not sure about mac, but on Windows I get: [MSC v.1500 32 bit (Intel)] [14:54] it spewed out that malloc stuff but still ran to completion. [14:56] Python 2.6.4 (r264:75706, Nov 12 2009, 09:19:07) [14:56] [GCC 4.0.1 (Apple Inc. build 5488)] [14:56] not much help there. [14:56] quicksilver: import sys [14:56] sys.sizeof(1) [14:56] sorry [14:56] sys.getsizeof(1) [14:57] 12 == 32-bit, 24 == 64-bit [14:57] 12 [14:57] vila: so, that bzr pull which appeared to succed, has jumped the repo size to 470M (from 80M) [14:58] bam 400M [14:58] vila: admittedly some more crap has appeared on obsolete_packs which I could remove, but there is still 250M in packs [14:58] so 170M increase [14:58] yes, or roughly 3x [14:58] and that's with your upgraded branch right ? So 2a format ? [14:59] 80->250M is quite consisten with the 100M -> 300M I had in pack-0.92 [14:59] yes, this is with 2a format [15:00] find . -size +1000 | xargs ls -lh [15:00] the only files > 500K are one 500K jpeg and a few .pack, .cix, .tix files [15:01] quicksilver: that may not be enough, you may have to bisect in the merge revisions [15:01] in particular, one killer .pack of 192M and one of 55M [15:01] but those are in .bzr not committed in your branch right ? [15:02] right [15:02] there are no large files in the working tree [15:02] quicksilver: it's really weird to see the same size increase in 0.92 and 2a that use very different conpressions algorithms [15:02] (that jpg of 500K is the largest) [15:03] I'll knock up a script to bisect all the merge revisions [15:03] in the mean time, 'bzr log -r-2..-1 -n0 -v' may be less huge [15:03] than it was for the whole branch [15:03] isn't there a bisect plugin already? [15:03] I've used it before [15:04] rubbs: there is [15:04] Im' not actually going to bisect [15:04] I'm lazy [15:05] I'm just going to branch ever intermediate revision and look at the disk spaces they use [15:05] vila, quicksilver: well, if you are versioning binary files like .jpg, it isn't like we can get tremendous size improvements [15:05] quicksilver: are you running from source? [15:05] jam: I don't think the binary files are the issue here [15:05] I just want to check that you built the extensions [15:05] they are small and change rarely. [15:05] I'm running from macports, which kind-of-source [15:06] The 2a pure-python compressor doesn't do nearly as good of a job as the C version [15:06] jam: a review of https://code.edge.launchpad.net/~vila/bzr/conflict-manager/+merge/16785 will be highly appreciated [15:06] quicksilver: I think it compiles extensions, though [15:06] jam: but the size increase was there for 0.92 too... [15:06] vila: so I think he has more data [15:06] but the question is how much should it increase [15:06] quicksilver: the loop over pull is often a good indicator [15:07] what do you mean? [15:07] * vila needs to reboot, bbiab [15:09] jam: of course it's only a hunch that the weird out of memory errors I have seen are related to this sudden lurch in repo sizes. [15:10] jam: but we have many many branchs, some live, some dead, and we use bzr a lot [15:10] and it's just on one particular branch that we have this strange issue [15:10] ...and that's the branch with the inflated repo size. [15:14] quicksilver: there are a few different ways it could happen, old code or new code [15:14] the new format hasn't been super-tuned for memory performance during pack [15:15] it is better for getting data out, commit, etc [15:15] but 5x the size of the largest file wouldn't suprise me [15:15] that doesn't quite explain 1GB that you pasted earlier, though. [15:15] understood, but as far as I know there are no large files. [15:15] Python(32408) malloc: *** mmap(size=1267761152) failed (error code=12) [15:15] unless you think a 500k jpg is large? [15:15] quicksilver: no I'm talking 100+MB files [15:16] * quicksilver nods [15:16] ok well there's another python memory error [15:16] looks like I may have found the precise revision that causes it [15:16] * quicksilver reviews changelog for that revision [15:16] vila: personal impression, 'bzr resolve' is a bit confused as to what it wants to be, and it is hard for me to give a clear-cut answer for it [15:17] it is also odd that these memory errors can occur but the branch still succeeds [15:18] quicksilver: that is quite surprising to me as well [15:18] I do believe that the OS is the one reporting the error [15:18] and not python [15:18] but if the OS is not returning NULL on a bad malloc [15:18] something is weird [15:19] right, but what about the rest ? I said to poolie this morning that 1) I targetting 2.2 so no hurry, but no review means I'm stuck 2) I'll try to do a summary mail about the main aims of this work but that mp is just a first step [15:19] quicksilver: http://developer.apple.com/Mac/library/documentation/Darwin/Reference/ManPages/man3/malloc.3.html [15:19] HAHAHA [15:19] You might look at setting one of the ENV vars [15:19] ok, so it looks like part of this is myfault [15:20] or at least one of my developer's faults :P [15:20] quicksilver: what's up? [15:20] (custom plugin?) [15:20] there is a 691 megabyte text file in this revision [15:20] * vila bets for a bzr branch committed into the branch [15:20] (which he deleted in the next revision) [15:20] haaaaaaaaaaaaaa [15:20] well, that explains the bloat :) [15:20] and it *probably* explains the bugs too [15:21] in that that was probably causing out of memory errors all over the shop. [15:21] quicksilver: well it explains why we would try to malloc a huge range [15:21] I'm not sure why it succeeds but complains about malloc, etc. [15:21] quicksilver: time to teach about 'bzr uncommit' in cases like this [15:22] vila: and it would be good to have a "bzr nuke-this-frickin-file" [15:22] so, what is the most efficient way to change history? [15:22] quicksilver: history being immutable, you can't just take that revision out of the repo, you'll have to recreate that branch with [15:22] quicksilver: rebase [15:23] quicksilver: yeah bzr-rebase, jam finishes my sentence :) [15:23] I think it is called "bzr-rewrite" as the plugin name [15:23] but "rebase" or "replay" would be the commands you'd want [15:25] that will let me replay a bunch of revisions, including their commit messages, leaving out some detail? [15:26] http://wiki.bazaar.canonical.com/Rebase ? === mrevell-lunch is now known as mrevell [15:27] quicksilver: https://launchpad.net/bzr-rewrite [15:27] but yes, that's the idea [15:27] quicksilver: yeah, the plugin changed names [15:27] well sort of [15:27] I don't think he has finished migrating [15:28] because debian hasn't changed his package name [15:28] so I think you have to "bzr co lp:bzr-rewrite rebase" [15:28] which is... odd :) [15:29] there is a bzr-rebase 0.53 in macports [15:30] the description at http://wiki.bazaar.canonical.com/Rebase does not suggest to me it can actually change revisions [15:30] sounds like it just changes tree shape [15:30] (I've changed tree shape in the past by carefully chosen back-and-forth merges) [15:32] quicksilver: the idea of rebase is "take a commit that looks like X, and create a new commit with the same delta, but applied to a different base" [15:32] So the idea is that for the branch where he added and removed the file [15:32] you would rebase the commit after removing the file [15:32] onto the commit before adding the file [15:32] note that it requires rebasing all revisions that follow [15:32] which is... unfortunate [15:33] ah, so you "coalesce" the two revisions which add+remove the file into one [15:33] which makes the file vanish from history entirely [15:33] and then you have to replay the rest of history after that. [15:33] quicksilver: right [15:33] the first part I could do easily enough by hand. [15:33] the annoying part is replaying history [15:33] yep [15:33] especially if I want to maintain the merge shape [15:34] although, bzr bundle is enough to maintain commit messages isn't it? [15:34] no, bzr bundle will have a note of the missing revision [15:34] and complain it's not there. [15:38] in fact I can't see how do to this by hand. [15:38] in a way which preserves the merge points with external revisions [15:38] (of which there are many) [15:38] quicksilver: I believe you can rebase --include-merges [15:38] but yeah, it is quite tricky to do by hand [15:39] well I'm installing bzr-rebase now [15:40] hey all, any reason for the terminal window you get when launching Bazaar Explorer on windows? [15:42] jam: OK I've installed bzr rebase, I've read the bzr rebase documentation, and I still don't understand what I'm supposed to do. I don't see how to tell it to ignore/coalesce the bad revisions. [15:42] gerard_: lack of developer time to get rid of it :) === SteveA_ is now known as SteveA [15:43] it isn't terribly hard, but I ran into version compatibilty problems when i tried [15:43] (py2.6 + pyqt4.5 + py2exe didn't like to play well together) [15:43] it shouldn't be hard to fix as those seem to have gotten sorted out [15:43] jam: ah ok [15:44] it might just annoy me enough to get rid of it [15:45] gerard_: Quick note, you want to set up a 'py2exe' target in bzr's setup.py that uses "window = ['bzr-explorer.py']" [15:45] and then implement a bzr-explorer.py that is running the equivalent of "bzr explorer $ARGS" [15:45] I can give some more help if you want to work on it. [15:45] it is something I would *like* to get to, but not enough tuits yet :) [15:55] I see no alternative but to work carefully up through the revision history and re-apply partial diffs, being sure to re-merge wherever there was a merge [15:56] quicksilver: I never used it myself but I was almost sure it was included in bzr-rewrite, jam, could I be confused with something in bzr-fastimport instead ? [15:58] we surely can't be the first people to ever need to change history in this way ;) [15:58] quicksilver: I don't know what 'bzr replay' or 'bzr rebase' supports. I know there is an "include-merges" flag. [15:58] jam: thx, I'll keep that in mind, I might have some time tonight [15:59] jam: yes, I see the merge options, but I don't see how to start it off by saying "pretend this bit never happened" [15:59] quicksilver: Be also aware that the branch you are re-building should become the reference and that no-one should merge a poisoned branch into it... [16:00] bye [16:01] vila: yes, need to expunge all poisoned branches. [16:01] vila: but first I need to build a good one [16:02] I wonder if a careful bit of shelving is enough [16:05] quicksilver: so create a branch that is just before the add [16:05] then tell bzr-replay to replay the revision just after [16:05] or create a branch just after [16:05] bzr uncommit [16:06] bzr rm bad-file [16:06] bzr commit -m "new rev without bad file" [16:06] then bzr replay everything after that [16:06] (or rebase) [16:06] right. That makes perfect sense. [16:06] the specific syntax isn't great, and I'm never quite sure whether rebase is "apply this to that" or "apply that to this" [16:07] bzr rebase takes a branch as its only parameter [16:07] quicksilver: doesn't it take --revision (-r) as well? [16:07] vila: quick question [16:07] for Copyright headers [16:07] * vila afk for ~ ok [16:07] when would you collapse to 'range' notation? [16:08] would you collapse 2007, 2008, 2009 or only at 2007, 2008, 2009, 2010 ? [16:08] I certainly wouldn't collapse 2007, 2008 => 2007-2008 [16:08] Never said I will, but I've seen multi-lines copyright just after you mentioned the problem [16:08] also, should it be "2007-2010" or "2007 - 2010" [16:09] I thought range notation ought to be avoided but IANAL and I forgot why [16:09] vila: I thought so too, but poolie just submitted a patch with ranges [16:10] and I have to say, it looks a lot nicer than 2005-2010 expanded [16:10] -# Copyright (C) 2005, 2006, 2007, 2008, 2009 Canonical Ltd +# Copyright (C) 2005-2010 Canonical Ltd [16:10] and the multi-line occurrence was from a source I thought was valid and serious when I read it [16:10] yeah, not sure lawers care about nice looking :) [16:11] ok, for now I'm using >= 4 years as the collapsing point [16:11] so, afk for ~<1h starting now :) [16:12] vila: enjoy your time off :) [16:12] http://www.mateoaboy.com/f6/blog_files/e740002542ebfcf81fae2653baaf4170-12.html [16:12] "In the cases of derivative works it is recommended to indicate a range of years for a work (although this is not required by law)." [16:13] I haven't found anything about not using "-" [16:14] jam: hm. Of coruse. The uncommit version leaves the uncommited revision in the repo :) [16:14] jam: so my large file is still there, just in an orphaned revision. [16:14] quicksilver: yep, but fetching out of that repo won't [16:14] IIRC there is no way to remove orphaned revisions. [16:14] quicksilver: well there is the "create a new repo and fetch" [16:14] but *today* we don't have a "bzr gc" command. [16:16] quicksilver: also note that after replay you'll have the same objects 2x in the repo [16:16] so you'll probably want to do it in a temp repo [16:16] and then create a pristine repo from that [16:16] you mean if I were using shared repos? [16:16] I'm not, at the moment, although way back at the beginning of this conversation I was trying to switch to them :) [16:17] I'm not 100% sure how replay works [16:17] I'm guessing it does leave the "from" revisions in the local repo [16:17] again, fetching out of there won't propagate them [16:17] * quicksilver nods [16:18] ok, so I have my clean repo at revision "N+1" with the altered revision not to commit that horrible file. [16:19] I want to bring it up to the most recent version [16:19] I bzr rebase ? [16:20] quicksilver: you have reached the limit of my rebase knowledge [16:20] * quicksilver nods [16:20] well I'm trying it [16:20] I think you'll have to somehow say you don't want N [16:20] that's the part I don't get, yes :) [16:20] so "bzr rebase -r N+1..-1 path/to/old/brancH" [16:20] I think it might be --onto [16:21] bzr rebase --onto N+1 path/to/most/recent [16:21] certainly bzr rebase /path/to/most/recent gives the familiar malloc error [16:23] OK I'm pretty sure that was wrong, since it's given hundreds of conflicts which are wrong [16:23] maybe I want to be *in* the recent branch [16:23] and bzr rebase relative to the fixed branch [16:23] maybe I just want to wait to jelmer to appear :) [16:28] jam, around? I was just wondering if there's anything else I need to do to get my fix for bug 308122 through review... [16:28] Launchpad bug 308122 in bzr "No reliable way to show shelved changes" [Medium,In progress] https://launchpad.net/bugs/308122 === beuno is now known as beuno-lunch [16:41] possiblye https://bugs.launchpad.net/bzr-rewrite/+bug/329951 is what I need [16:41] but that's an open wishlist :) [16:41] Launchpad bug 329951 in bzr-rewrite "support squashing commits" [Wishlist,Triaged] [16:42] I'm having trouble with bzr-svn. I need it to use a Subversion 1.5+ client, but the OS X install appears bundled to 1.4. [16:43] I have Subversion 1.6 installed to my Mac. [16:57] * vila back from garage, talk about a time-off it's freezing outside :) [16:57] quicksilver: I think the bzr-rewrite code for choosing merge base revisions is a bit dodgy when rebasing merge commits [17:02] maxb: I have managed to get bzr replay to do something useful [17:02] but only one revision at a time [17:02] and it throws out of memory errors [17:02] but they don't appear to *matter* [17:02] it still works. [17:03] It does not help that bzr replay is a hidden command [17:04] so by sitting in the "fixed" dir which has the bad commit removed [17:04] Why only one revision at a time, though? [17:05] I can do "bzr replay -rX.Y.Z ../newest-ver" [17:05] each time I do that, it brings in that actual changeset [17:05] but nothing older [17:05] so I need to do that for each value of X,Y,Z [17:05] still if it works, I can do that mechanically [17:05] I have the list of revisions. [17:07] however, I have a conflict because I missed one [17:07] I did that deliberately to check my understanding of what it was doing [17:07] missing one really does miss out that change [17:08] Yes, this actually does seem to work! [17:08] well let's see what happens when we get to the first merge revision though [17:08] that's what matters [17:15] maxb: hmm this may actually work. bash for loop reapplying revisions one by one. I've found another 'evil' one which is using up all my python memroy though [17:15] not sure why this one is evil. [17:17] ack repo size up to 470M again :( [17:17] clean branch just to check, maybe that's orphaned revisions. [17:19] ok, clean copy is still only 80M [17:19] I'll shift to useing that [17:21] hmm. I seem to have got to a critical point where every single replay is upsetting it, by making it thing about the large file [17:21] but it *is* working. === thunderstruck is now known as gnomefreak [17:22] quicksilver: someone may have merged the poisoned revision [17:23] vila: well the poisoned revision hasn't come back yet [17:23] vila: (using repository size as the proof) [17:23] quicksilver: sry for the noise then, I thought you were saying it was back [17:24] vila: well it's coming back as an orphaned revision. [17:24] vila: something keeps bringing it back into .bzr/repository [17:24] vila: but, because it's not referenced by any version in my history, if I do a clean branch or push it vanishes. [17:26] ok [17:27] unfortunately it makes every replay slow [17:27] because I have to replay each revision independently, and each replay is 'worrying' about that huge file in some way I don't understand [17:28] or maybe not. [17:28] they're going faster now. [17:29] Ah, but in a critical way they're not working. [17:29] they're not actually recognising merges as merges. [17:31] OK, so replay isn't the right tool. [17:32] so maybe rebase is [17:32] but I really don't understand how [17:46] damnghosts [17:47] is there a command for cleaning up all the .~1~ files? [17:47] other than find and xargs rm [17:47] clean-tree [17:47] vila: I've established that "replay" neveer seems to replay merginess in the way I want, so it's presumably the wrong tool. [17:48] vila: It's possible that rebase may be the right tool [17:48] cheers [17:48] but I can't work out how to use it. [17:48] quicksilver: I don't use it myself, let's try to ping jelmer [17:49] damn he's not online [17:50] replay replays simple commits (no merge involved) fine [17:50] preserving the author, the message, etc [17:50] I wonder if it preserves the ID [17:51] It would be erroneous to preserve the revid [17:51] OK, so other merges from this branch would be broken [17:51] quicksilver: talking about bzr-svn? full roundtrip is supported by using svn revision properties and/or storing metadata in rich-root [17:51] or at least will need the same kind of fixing. [17:51] but fortnuately I don't have any of those [17:51] ronny: No, not bzr-svnhere [17:52] ronny: no. Just trying to use rebase to rewrite history. [17:52] ok [17:52] vila: I will keep an eye open for jelmer. [17:52] quicksilver: rebase won't rebase merge revisions either, at least rebase's official versions [17:52] I have a branch pending that I need to cast a final eye over and submit to jelmer [17:52] maxb: you mean it won't rebase them preserving their "merginess" ? [17:52] replay will replay them as naive diffs [17:53] but that doesn't solve hte problem - it means later merges will conflict all over the shop [17:53] The trunk bzr-rewrite's rebase starts by picking out a leftmost path, and only ever rebasing revisions on that path [17:53] I have no idea why anyone would want that [17:53] So I rewrote it [17:54] I don't actually understand the connection between what I want to do and what rebase's docs claim it is for [17:54] but jam + vila suggested it. [17:54] the docs for rebase look to describe something which simple re-pivots an existing history [17:54] salgado: It looks like you've covered our requests, I'll merge it [17:54] which you can actually just do with back-and-forth merging [17:54] I think the delay is just that it isn't always clear when someone has done work [17:54] although some might consider that inconvenient [17:54] maxb: do you understand the probelm I'm trying to solve though? [17:55] I think I do [17:55] jam, great, I can't wait to have the feature available in a release. thanks a lot! === beuno-lunch is now known as beuno [17:59] What's the proper URL for the bzr pqm status page? === mrevell is now known as mrevell-dinner [18:00] maxb: http://pqm.bazaar-vcs.org/ ? [18:00] wiki/BzrDevelopment links to the SSL version of that, which then triggers a SSL error since the certificate is for canonical.com [18:01] Maybe I should just edit the wiki page to point to the plain-http url? [18:08] * Peng shrugs [18:09] I usually use the SSL version (I'm weird), but I linked to the non-SSL version because it came up first in my browser history. [18:10] maxb: ...The HTTPS version redirects to the HTTP version... [18:10] Peng: Not if your browser complains about the SSL certificate first. [18:10] maxb: Well yeah. My point was, it seems HTTP is canonical. [18:11] (No pun intended. Although it was probably a bad choice of word anyway.) [18:11] maxb: but if you accept and makes a security exception *then* it redirects [18:11] maxb: For whatever it's worth, editing the wiki sounds good to me. [18:12] maxb: it's probably a typo in the wiki as https makes no sense here [18:13] maxb: Also, grepping my IRC logs, everybody (including core devs) uses http. [18:13] right. wiki amended. [18:14] :D [18:18] maxb: I think I'm going to solve it by a mixture of replay (when it's a plain revision) and careful manual merging to exact revids (when it's a merge) [18:18] maxb: I only have 40-odd revisions to go through [18:20] The only alternative I can think of would require some tweaks to the rebase sourcecode [18:20] it's quite painful when I have a major conflict though [18:20] (which was already resolved by the developer concerned" [18:21] I wish there was a way to say "give me the working tree state of this revid, without actually 'pull' ing it. [18:21] becauase I"m courrnetly not seeing a simple way to 'get' his conflict resolution. [18:23] maxb, vila: any clever suggestions? [18:24] I'd be tempted to avoid doing this manually at all costs [18:24] Perhaps trying to write some code using bzrlib if need be [18:24] I wonder if 'bzr rebase -r (revno after problem).. ../original-branch' would work out [18:25] Using --include-merges, and my branch of bzr-rewrite (lp:~maxb/bzr-rewrite/rebase-merges-properly) [18:25] maxb: with the working directory being the 'fixed' branch? [18:26] Indeed. [18:26] maxb: I've not used python in anger ever (I've dabbled, and I can read it, but that's not he same as being comfortable enough to knock up a quick bzrlib script ;) [18:26] quicksilver: hmm, did you look at fastimport ? I'm not sure it has been implemented but I think their was talk about that scenario (excluding a file from history) [18:27] vila: I took a brief look and it seems to require writing an exporter to tweak the history. [18:27] damn [18:27] Couldn't you just fast-export the revisions after the problem and fast-import them onto the fixed branch? [18:27] maxb: well I'm on a train now so I'm not going to try downloading your launchpad now :) [18:28] quicksilver: If you have a branch of lp:bzr-rewrite, there's only about 6 more revisions in mine [18:29] maxb: I don't. I'm using the 0.53 bzr-rebase from macports [18:30] I think bzr-rewrite is python only so you should be able to install it from source in your $HOME/.bazaar/plugins [18:30] It's 539KB to branch, if you want [18:30] maxb: ^ ? [18:31] the size of the branch, should quicksilver choose to download it [18:31] maxb: sry, my question was: is it python-only ? [18:33] oh, that is quite small, even over 3G. [18:33] Yes, it's python-only [18:39] quicksilver: So, it would actually be more like: in a branch of the original branch: bzr rebase --always-rebase-merges -r (first revno to rebase).. ../the-fixed-branch [18:39] how will bzr cope with having two plugins with same name? will the one in ~/.bazaar/plugins take priority over the globally installed one? [18:40] yes [18:45] maxb I think I've symlinked it in; is there an easy way to confirm I have your version? [18:45] ah, bzr puglins -v [18:54] maxb: bzr: ERROR: no such option: --include-merges [18:54] bzr oh, always-rebase-merges? [18:54] --always-rebase-merges [18:54] not what you said the first time. [18:54] but now I'm confused; you say to run it in a branch of the original? [18:54] I thought I was supposed to run it in the fixed one? [18:56] maxb: whose numbering scheme should I use for the -r? [18:56] You should run it in a fresh branch of the original [18:57] ah. I'm getting trouble because the repo formats differ. [18:57] which is a bit of a problem because I was never able to "bzr upgrade" the original [18:57] that was one of the symptoms of the bug. [18:57] however my new fixed one has been upgraded [18:57] rebase is a little weird. It basically does a pull --overwrite of the "other branch" and then re-adds rebased forms of some revisions of the branch you ran it in on top of that [18:57] since at one stage I thought that might fix the problems. [18:58] my original branch is stuck in pack-0.92 [18:58] so, I need to make a pack-0.92 version of the 'fixed' one [18:58] how do I ask for a specific format? [19:04] * quicksilver rebranches from a branch in old format. === khmarbaise_ is now known as khmarbaise === khmarbaise_ is now known as khmarbaise [20:06] Got a friend here whose given me a problem I'm not sure how to best solve. He's looking to version a bunch of managerial documents, and only wants certain people to have access to it. I mentioned making them all wikis so they are versioned, but he said they need to be offline and some are spreedsheets. He was trying to tell me he wanted to use bzr, but I told him at best he'd have to separate all his managerial documents into a separate repo and [20:06] He keeps wanting a per-file authorization within bzr... I don't think that possible though [20:07] My other issue is that most of these docs will be binary... so versioning them is going to get big. [20:07] bzr doesn't handle authorization at all [20:07] I didn't think so... I also told him that due to the distributed nature once it was branched it's out of his control anyway [20:08] rubbs, I think someone was working ona plugin for that [20:08] not sure where it got [20:09] I tried to tell him that a CMS might be better, but he said that they didn't version attached files. (I havent vetted that claim yet) [20:09] well, he can use bzr to manage history of the documents [20:10] but then needs some layer to make them available to users === salgado is now known as salgado-afk [20:11] I'm thinking of having bzr behind a CMS, [20:11] so luks I think you got the best idea. [20:13] I'm sure some existing CMS can make static documents available to users with per-file access [20:13] I've never tried, but it doesn't seem as a rare problem [20:14] yeah... I'm thinking he wants these users to have the ability to checkout old verstions too :( This is a hard one... I'm gonna keep diggin [20:15] oh [20:15] yeah, that would be more complicated [20:16] yeah. I guess he's just brainstorming... so I don't know how crutial this is yet. [20:41] maxb: bzr rebase -r... ../fixed-branch wants a revision number relative to the 'current' branch [20:42] i.e. the original branch [20:42] oh eys, that's what you said [20:42] maxb: No revisions to rebase [20:42] it says. [21:14] OK, I have another approach. [21:15] I need to be able to accept a merge but reject all its changes [21:15] I'm sure I remember reading about that one day [21:15] ah, bzr revert . [21:18] YES. I think this works. [21:18] no, it doesn't. [21:19] jelmer: was looking for you earlier. Trying to find a good way to rewrite history. [21:24] Ah. Pebkac. [21:24] my solution does work. [21:24] It's a bit painful but it works. [21:24] vila, maxb, jam : I have a solution :) [21:49] What's the best way to sync a bzr branch back to CVS? [22:03] kiko: ping ^^^ (The above question is our primary hold up on actually switching now.) [22:06] vila: http://junit.sourceforge.net/doc/faq/faq.htm#tests_7 [22:07] lifeless: been there, seen that, not an *expected* failure only an test using assertRaises [22:07] ok that's odd. [22:08] how do i fix not compatible because "different rich-root support" during a merge? [22:08] why would a bzr merge explictly create 'OTHER' files? [22:08] instead of a proper conflict? [22:08] MFen: you have to upgrade [22:08] side effect is if I "bzr revert ." the file gets deleted. [22:08] lifeless: is it definitely me that has to upgrade and not the other person? i thought i was recent, but i'm not positive [22:08] quicksilver: if the files are not textually mergable [22:08] i'm at 2.0.3 [22:09] MFen: if you are merging, and get that error, then you need to upgrade the repository that your data is stored in to a rich root capable format - e.g. 2a, the default in the 2.0 releases [22:10] lifeless: i'm not sure whether that means the other guy's remote branch, my local branch, or even the remote trunk. is there a way to inspect the version? [22:10] bzr info [22:10] vila: its the closest I've found so far [22:10] lifeless: I mean, it actually displays +N /path/to/file.OTHER when I merge [22:10] quicksilver: then someone add file to the branch and you already have it in your branch [22:11] they haven't edited your file, they started over [22:11] lifeless: yeah, me too :-/ [22:11] lifeless: ok, bzr info -v on my local branch shows control: Meta directory format 1 [22:11] (and some other versions of stuff too) [22:11] lifeless: ah right. another botched merge. [22:11] MFen: whats the top line [22:11] damn I need sleep. [22:11] will come back to this tomorrow. [22:11] Standalone tree (format: unnamed) [22:11] lifeless: but from there I got the feeling that I was chasing a ghost [22:11] MFen: bleh :P [22:11] MFen: whats the Repository line then [22:11] repository: Packs containing knits without subtree support [22:12] right [22:13] so your format can't do rich roots [22:13] whomever you are merging from can. [22:13] this is a one-way transition [22:13] and it occurs by default in 2.0 [22:14] lifeless: ok. i don't know what to do. i'm at 2.0.3 so whatever was supposed to occur doesn't seem to have occurred [22:14] MFen: run 'bzr upgrade' [22:14] it will migrate your data [22:15] lifeless: you are an enlightened gentleman. thank you. [22:18] MFen: np :P [22:24] vila: xfail - try this: change the to but keep the exception type and everything else [22:28] hi vila, lifeless [22:28] hi poolie [22:29] lifeless: of course you're welcome to use my screenshot [22:29] \o/ [22:29] i hope it may do more stuff before your talk but no promises [22:29] if not, then i have a ~24 hour flight, that always seems good for hacking [22:29] assuming one gets a decent seat [22:39] hi lifeless and poolie [22:40] hi jam [22:40] poolie: so... the SilentUIFactory stuff strikes again [22:40] hi jam [22:40] running the 'unshelve --preview' stuff passes manually [22:40] unless you redirect to a file [22:40] then 100 test fail [22:41] jam, oh, really? [22:41] lifeless: did you see my message about testr? [22:41] do you mean if the stdout of selftest is redirected? [22:41] poolie: yeah, because ShelfUi now calls make_output_stream [22:41] that's quite a bug [22:41] i was hoping to do that soon after finishing the mysql cross-format-fetch bug [22:42] jam, it seems like a separate bug if the code under test can even ever be influenced by redirection of the test output [22:42] well, without that, we would have hooked up the diff to write to stderr I think [22:42] well, stdout [22:42] and just never generated the diff [22:42] jam: found it [22:42] of course, I just ran without redirect, and 14 tests fail... [22:43] i don't really understand, but did you send mail about this already? [22:43] I'm not sure why the tests would have passed before [22:43] I sent main to the review list [22:43] that I can't land it because tests fail [22:43] but since I'm PP I figured I should try to debug it [22:43] ok i'll look in a sec [22:44] of course, it *also* fails because of a mismatched lock count, which makes the test results pretty hard to read [22:44] I tried to "bzr mv chapter6.tex maintenance.tex" but it said "bzr: ERROR: Specified file "maintenance.tex" is outside the current view: chapter6/chapter6.tex". WTF is going on? [22:44] (and I can't redirect to a file :) [22:44] dutchie: you have a view specified [22:44] which limits what files will be effected by commands [22:44] so you don't commit/etc files outside of that [22:44] how do I un-specify it? [22:44] I don't know *why* you have a view [22:44] but check "bzr view" [22:45] bzr view --delete --all [22:45] ok, thanks [22:45] or just [22:45] bzr view --delete [22:48] poolie: so if I do this: http://paste.ubuntu.com/355766/ [22:49] the test suite passes [22:49] basically, it is just 'delay calling make_output_stream()' until we actually try to write the diff [22:49] and since 99% of the tests don't, and the ones that do already set everything up correctly [22:49] it works [22:49] !! [22:50] lifeless: oh, and 'testr failing' doesn't exist... :) [22:50] Good morning. [22:50] poolie: right, the failure is that the default ui is Silent which doesn't support make_output_stream [22:50] (especially when redirected) [22:50] this avoids trying to grab an output stream at all [22:51] (which is decent if it isn't going to be used) [22:52] poolie: btw, I don't think 'make_output_stream' is particularly clear on who is supposed to close it. [22:52] maybe I'm wrong [22:52] jam: yeah, I'll write that one this afternoon :P [22:52] lifeless: so having a "testr load -v" would be nice [22:52] if it could do the progress bar stuff [22:55] Sure [22:59] jam, so [23:01] which test is this? [23:01] jam, sorry, another call now [23:01] istm that setting that globally will just make the diffs go to selftest's stdout [23:01] which would be weird [23:02] poolie: 'bzr selftest -s bt.test_shelf' with salgado's patch [23:02] the code as written [23:02] always calls make_output_stream in ShelfUI's constructor [23:02] even if it never generates a diff [23:02] oh i see [23:02] if a file isn't passed in [23:02] so the tests that did care about the diff [23:02] passed a file [23:02] and there are some tests that assume that if it isn't going to create a diff, they can use the default ui [23:02] i see [23:03] and ones testing the behavior made sure the factory was available [23:04] ok i see [23:04] so istm that if the tests want to install a Silent factory, it should probably discard output? [23:05] that would be correct for these tests at least [23:05] poolie: for code that existed before make_output_stream, I think we would have just written to stdout [23:05] poolie: Hey, do you know of any really good ways to mirror a bzr repo back to CVS after each commit to bzr? [23:05] poolie: That's the only thing we really need help with, right now, for Bugzilla. [23:06] mkanat: you could look at a "post_branch_tip_changed" hook [23:06] jam: Yeah, I know what hook I'd use. [23:06] mkanat: then i would just have a co-located cvs repo and bzr repo [23:06] jam: What I was hoping to find was some code that already does what I want. [23:06] and the post-change hook would update & commit in a loop [23:06] jam: That's not possible. [23:06] not possible? [23:06] jam: Well, yeah, that's what I was thinking of doing, sort of. [23:06] oh, there was also a plugin a while back that provided a cvs *view* of a bazaar repository [23:06] jam: Yeah, but that won't work, for sure. :-) [23:07] so you could "cvs co :pserver:/path/to/bzr [23:07] but you couldn't commit to it [23:07] jam: I know, I wish I could just use bzrcvsserve. [23:07] mkanat: trying to allow commits to cvs *and* bzr *and* have the bzr commits auto-mirrored back to cvs are going to be a real pain [23:07] jam: There will be no commits to CVS. [23:07] mkanat: then what is wrong with cvsserve ? [23:08] jam: The path to the CVS repo can't change. [23:08] mkanat: so cheat [23:11] hi. bzr shelve and unshelve is very very cool but is there a way to specify my own id? would mesh with the ticketing system very well. [23:12] Basically, I need to copy the bzr repo's contents into a CVS directory, do "cvs add" in a loop until there are no more ? outputs, then do "rm; cvs rm" for any files that don't exist in the bzr repo, and then properly mark and binary files, and then get the log message, and then commit to CVS. [23:12] huh [23:12] And I need to do it for one bzr commit at a time. [23:12] hi. bzr shelve and unshelve is very very cool but is there a way to specify my own id? would mesh with the ticketing system very well. (sorryfor repea but it seems i asked in the middle of a netsplit) [23:24] chx: no, there isn't. [23:25] chx: I believe you can make a comment though, or description. [23:25] or something like that [23:25] yes but that's not something i can specify to bzr unshelve [23:25] but i guess i can write two handy lil shell scripts that fix this [23:26] chx: you could improve unshelve so that you could say unshelve --description bug-45 [23:26] lifeless: that'd require me coding python :P [23:27] lifeless: some other time :) [23:27] its not contagious ;) [23:27] no but i do not have the time [23:27] last i tried it was a breeze to code python [23:27] so to quote Jeff Eaton, I am Py-curious :) [23:28] :) [23:30] nice === pgalbraith is now known as CaptTofu [23:37] yeah, last i tried (it was the first serious try really) i whipped a two way gateway in 40 min between skype and konversation.... [23:38] messages travelling on d-bus :)