[00:19] mwhudson: there isn't really an alternative, you can't seek in the mercurial bundle files [00:20] jelmer: fair enough [00:21] in other news, now that lp:django is upgraded I've asked the whygitisbetterthanx folks to update their info: http://github.com/schacon/whygitisbetter/issues#issue/4 [00:23] hm [00:24] jelmer: it seems a bit like when revision_id is passed to FromHgRepository.fetch, some extra revisions are imported [00:24] beyond the one requested [00:26] jelmer: does this sound possible to you? [00:29] i guess this means source._hgrepo.changegroup is returning more than we're asking for [00:30] mwhudson: hmm [00:31] heads() returns a 1 element set, missing is a 1-element set but we go around the loop in _unpack_changesets twice [00:31] mwhudson: I guess when we ask for a branch containing a revision we shouldn't assume that the tip of that branch is our revision [00:31] mwhudson: can you file a bug? [00:33] jelmer ok [00:41] jelmer: https://bugs.edge.launchpad.net/bzr-hg/+bug/544701 [00:42] Ubuntu bug 544701 in bzr-hg "pull -r $rev doesn't limit revisions converted" [Undecided,New] [01:01] what's the proper way to retag a branch [01:04] bzr tag -d $MYTAG; bzr tag -r$I_WANT_TO_TAG_THIS_REVISION $MYTAG, from memory. [01:04] RAOF: right, but when I push I get a conflicting tag errro [01:04] do I have to push --overwrite? [01:05] I remember just pushing, but maybe I'd also added some revisions. [01:06] I'm unsure here; I only remember it Just Working. [01:08] RAOF: ok, thanks we worked around it anyways [01:44] How can I branch off a revision that was already branch off my branch? [01:46] or rather, how do I check out a branch by one of its revision ids? [02:11] GungaDin: branch -r XXXXX source === jamesh__ is now known as jamesh [04:06] mwhudson: Thanks! We're waiting on Francis for some administrative details before I continue, FYI. [04:06] mkanat: i'm not sure the latest info is very useful :/ [04:35] mwhudson: Okay. I'll take a look at it once we handle the administrative stuff. [04:41] GungaDin: still here? did you get an answer? [04:41] you can do 'bzr branch -rN FROM TO' [05:00] yeah, managed already [05:00] thx [05:05] Hmm... You think that there's any chance LP would support access to Bazaar repos with a git client? [05:06] It's technically possible, but ...uuurgh :) [05:06] bzr-git almost makes this look feasible, and the bazaar repositoires are rich enough to be a backend for git [05:06] Right; they store more info than git does. [05:06] RAOF: I agree. I'm a bazaar fan myself [05:06] It's possible to do this locally; bzr serve --git, for example. [05:07] I just think it would a technically "cool" thing to be able to do on a LP level [05:07] Heh. Well, mostly (it crashes at the moment for me) [05:08] There are at least two problems that I know of, one technical, one social. The technical one being that it would hammer the server, the social one being that I think launchpad would like to promote the use of bzr and make it possible to use bzr to access everything. [05:08] i think the performance would be pretty terrible currently [05:08] Going to try and work out why when I get a spare couple of hours [05:09] mwhudson: That being the performance of bzr-upload-pack and bzr-receive-pack when emulating a git repo? [05:10] * mkanat knows that pack-to-2a conversion is slooooow. [05:12] dcoles: basically yes [05:12] maybe going bzr->git will be faster than t'other way around [05:20] * dcoles relises he's late for class - runs [05:21] igc, hi [05:22] igc, i'm going to make 2.0.5 and 2.1.1 tarballs [05:35] hi, a question about tags. If the revision of a tag is changed, it can't be pushed/pulled because of tag conflicts. Is the following the right thing to do: 1) Ensure all changes have been merged, i.e. make two branches converged; 2) bzr push --overwrite or bzr pull --overwrite [05:37] in fact, I'm using tags to point some revisions in history. Is this even the right usage of tags? Should I use branches for this purpose, instead of tags? [05:43] an advantage of using branches over using tags, imho, is that later changes can be merged into branches, but for tags this is impossible. So tags appear to be better, right? [05:43] :( That's a typo. I mean, So branches appear to be better [05:51] poolie: sounds good [06:00] echo-area: if you expect it to continue changing, a branch is better [06:00] if it's "this is 2.0.5" and it won't normally change, that's better [06:00] if you need to change it in another branch, use 'bzr tag -d PLACE " [06:01] igc, so your packaging changes only apply to 2.2 right? [06:01] we couldn't run them kind of externally against 2.0? [06:01] polie: right [06:01] i suppose it would be risky even if it worked [06:01] too risky IMO [06:12] poolie: thanks. [06:42] deletion of tags doesn't get propagated, is this intentional? [06:49] Sorta. Any change to tags doesn't propogate unless you force it, since there's no way to know what changed. [06:52] fullermd: By "force it", do you mean --overwrite? That seems to only work for revision changes of tags. [06:55] fullermd: But I got your idea. Changes to tags are not recorded as much as changes to files/directories, so I think I'll avoid using tags [07:08] Oh, tags are very useful. And the shortcomings here in their behavior are bugs in a broad sense. [07:09] But the usual use-cases for tags don't involve very much touching after their laid, so the pain level impelling fixes is very low. [07:14] fullermd: the usual use-case for tags is as a more friendly way of refering tags, right? [07:15] refering revisions, I mean [07:54] * igc dinner [09:02] echo-area: Well... that's what they _are_. [09:30] fullermd: So what are the use case you refered to :) [09:31] use cases [09:32] Oh, things like tagging releases, or before/after tags on big reorganizations. [09:32] They tend to be set, and that's it; they don't move or get removed or anything after the fact. [09:33] Contrasted to tags of the LATEST_STABLE_VERSION sort, which do, on a regular basis. [09:33] The latter don't tend to get used much, so the pain they trigger isn't a high enough level to have thrust anybody toward implementing versioned tags. [09:35] oh, so bzr tag --force tag-name is really only used when a typo happens, right? [09:37] Generally, yah. [09:38] Having versioned tags would make the more dynamic cases work better. I don't think there's any movement _against_ adding them, but it's a fair bit of work. [09:39] So since the boundaries of the current system don't get hit very often... [09:40] * bialix waves at fullermd [09:43] Hey bialix :) [09:43] Ж-) [09:43] :-) [09:43] it was a smilie [09:44] Smilies are delicate. It's easy for them to be damaged in transit when they have to cover 10k miles or so. [09:47] is there any neat way to rebase a branch onto an older revision? i.e. to convert a bug fix against trunk into a suitable branch for merging into a previous release by rebasing against the common ancestor? [09:48] If it's just one or a few revs, I'd probably just cherrypick it; it would probably work as well as trying to rebase, and it'd be simpler. [09:48] yes, that's the only solution I have [09:49] I've done that before, IIRC. [09:49] But you have to specify all the rebase args manually. [09:50] rebase --onto seems to indicate that it will do the right thing, but it says "No revisions to rebase." [09:50] tumbleweed: bzr rebase --onto ONTO_REV -rFROM_REV..? [09:52] wgrant: nope [09:52] tumbleweed: What does it not do? [09:53] wgrant: it doesn't do anything. "Rebasing on ...\nNo revisions to rebase" [09:55] tumbleweed: Works fine for me. [09:56] fullermd: got it. I was trying to understand the current policy on tag propagation, it was a bit strange to me. [09:57] echo-area: Yeah. Since there's no history, any time the two ends differ we can't know why. The only thing we can non-destructively do is add a tag that the 'far' side is missing. [09:59] wgrant: http://paste.pocoo.org/show/192816/ [10:01] tumbleweed: Try '-r4..' [10:01] oh, I tried 3..4 but not 4.. [10:02] fullermd: thanks :) [10:04] wgrant: thanks, that should do the trick [10:05] tumbleweed: Excellent. === mrevell is now known as mrevell-lunch [12:34] hi, it appears that the last few OS X 10.6 releases of bzr have been compiled for 64-bit only. is that correct? If so, which version should I download for my 32-bit intel mac running 10.6? === mrevell-lunch is now known as mrevell [13:25] Hi. I want to hack on a project that is in hg. Is bzr-hg usable yet. Should I use it? [13:29] GaryvdM: doesn't roundtrip yet [13:30] GaryvdM: and dpush is.. unstable [13:32] jelmer: Ok. I would want roundtrip, so I'll use hg for now :-( [14:40] heya GaryvdM, jelmer [14:41] 'lo bialix [14:41] 'lo ? [14:41] hello? [14:41] jelmer: ^ [14:41] yep :-) [14:42] will know now [14:42] Hi bialix [14:42] GaryvdM: there is regressions in the qbzr trunk [14:43] you already saw perhaps [14:43] https://bugs.launchpad.net/bugs/545016 ? [14:43] Ubuntu bug 545016 in qbzr "qrevert selection doesn't get picked up" [Critical,Confirmed] [14:44] yep [14:46] bialix: I will look into it a little later [14:47] that's ok, [15:07] g'day. i'm using emailer.py and i'd like to add the branch to the subject line. would that just be self.branch(), you think? [15:15] vila: ping [15:18] guilhembi: pong [15:18] self.branch.nick, to answer my own question. [15:18] * Morbus waves. [15:25] Hi jam. [15:25] jam: If I recall correctly, the stumbling block with storing gdfo for revisions was knowing if ghosts have been fetched. [15:25] jam [15:26] jam: Why not store the known ghosts? [15:30] GaryvdM: the current issues that I know of are: [15:30] 1) You have to figure out how we want to store it [15:30] (in an existing index, in a new index, etc, etc.) [15:30] 2) When fetching you have to check to see if any ghosts are fetched [15:30] which means (as you mention) recording them [15:30] and in such a fashion that there is low overhead to query [15:31] all stuff that can be done [15:31] but *doing* it :) [15:31] jam: Ah - I see [15:31] you could probably live without (2) for the short term, and expect users to explicitly address it when they think it is wrong [15:31] (bzr rebuild-gdfo) [15:32] gdfo ? [15:32] jelmer: greatest-distance-from-origin [15:32] simplifies a lot of stuff like 'heads' checking [15:32] ahh [15:32] might make it possible to improve revno generation [15:32] but that is a bit unclear atm [15:32] Godzilla Destruction For Oneiromancy? [15:32] fwiw heads checking is important for bzr-git / bzr-hg [15:33] jelmer: put another way, the primary benefit of KnownGraph.heads() is that it has gdfo, while Graph.heads() does not [15:33] secondary is that it is done in C, but the first is an O() change, the latter is a constant factor change [15:34] Graphs.heads() is O(N^2) in some edge cases I believe, KG.heads() is O(delta) (I think always) [15:34] gdfo gives you a hint if rev X could possibly be a parent or child of Y, since a child gdfo is *always* > a parents [15:35] GaryvdM: last I talked to vila about it, he wanted to experiment in a plugin, and see where it got to. However, I think there have been enough things to work on, that he hasn't done much [15:35] KnownGraph loads the whole graph and *then* calculate gdfos, when we start *storing* gdfo, then we'll be able to incrementally load the graph for several operations (a different revno scheme can also be used and not require loading the whole graph as we do today) [15:36] welcome back jam :) [15:36] jam: When you say that it is unclear atm whether gdfo will improve revno generation, is that uncertainty coming form the reading of index? [15:36] Yeah, no time to work on this [15:37] vila: You got my response overnight? [15:37] fullermd: no [15:37] Hi vila [15:37] Oh. Hm. I don't even remember what it was about... [15:37] * fullermd digs. [15:38] fullermd: where FreeBSD put its crash files [15:38] ? [15:38] 16:16 vila: Yes, that's where crashdumps get copied to on boot, unless you change it. [15:38] fullermd: ok, I figured that \, [15:38] jam: Thanks [15:39] fullermd: there weren't enough space left for the last one so I didn't understood at first what was going on, and once I cleaned up, I got, of course, no more crash [15:39] GaryvdM: no, more how to compute the revnos given a limited scope of ancestry [15:40] I've done some work on it in the past, and it didn't show a huge gain [15:40] but that was without gdfo [15:40] * fullermd takes credit for fixing it :) [15:40] jam: [15:40] bah [15:40] however, the current revno *system* is also at fault [15:40] numbering from merge point versus branch point could improve it [15:40] etc [15:40] hi vila [15:41] long time no see :) [15:41] numbering from branch point can be trivially solved if people accept to number backwards :-) [15:41] jam: glad to see you back, I wasn't sure how long were your vacations [15:42] err, I meant numbering from merge point of course [15:43] vila: well 'trivially' is one way to put it [15:43] well, almost trivially, there is still the problem of the branch merged several times :) [15:43] jam, vila: hmm - backward numbering would cause some issues with qlog because it uses the revision numbers to group merge lines together. [15:44] That would break in the case where a branch is merged several times. [15:44] GaryvdM: right, though there is always the question of which view is more useful :) [15:45] GaryvdM: Well, if you had cheap ancestry checks you could them instead of relying on revnos which reflect them === salgado is now known as salgado-lunch [15:45] vila: though if it becomes a combinatorial problem, it will never be cheap [15:45] even if checking ancestry is O(1), doing NxN comparisons is still N^2 [15:45] it is just is better than N^2 * N^2 :) [15:46] the really good thing about the current merge_sorted code is that it really is close to O(N) [15:46] it just happens to be N when you really want O(local) [15:46] jam: sure but N being size(history) doesn't help :) [15:47] yup [15:47] certainly [15:47] though I wonder if caching the merge-sorted graph would be a better use than *just* gdfo [15:47] IIRC, igc experimented with this with pretty good results [15:48] because of stability guarantees, you could see some benefit by caching based on current tip [15:48] etc [15:48] (so cache every 100th rev, based on that rev tip, etc) [15:48] Again, I'm not sure about how mysql benefits, because of their push policy [15:48] but you could certainly find cases that would benefit [15:48] going back 1000 revs is better than 65k [15:49] the big problem with revno-cache is that it isn't invalidated when it should (AIUI) [15:49] though again, you need a partial algorithm that can build on an existing one [15:49] vila: I thought it was invalidated whenever the head changed [15:49] or are you meaning ghosts? [15:50] jam: I'm not sure all head changes are taken into account (pull --overwrite for example) [15:51] I thought when it read the cache it just said "if cur_tip != cacched_tip: rebuild" [15:51] Some people had issues with it because it would write the cache when a read operation. [15:52] may be, I also seem to remember that loading the cache for big histories became the bottleneck at one point, but I didn't closely follow [15:57] jam: I'm working on bug #375898 and could use some help, I'm a bit unclear about what TreeTransform._new_root is used for [15:57] Launchpad bug 375898 in bzr "bzr merge fails: bzr: ERROR: No final name for trans_id 'new-1'" [High,Confirmed] https://launchpad.net/bugs/375898 [15:57] vila: ugh, me no likey that code [15:57] hehe [15:57] but I did work on it recently, let me see if I can restore from memory dump [15:57] :-/ [15:57] One of the things I wanted to do is integrate qlog with igc's history cache. Vila: At Barcelona, you convinced me to wait on that as there was something better coming in the core (which I later assumed to be gdfo caching.) If gdfo caching is not happening atm, maybe I should maybe relook at qlog history cache integration? [15:57] jam: I know, want bzr revno to assist ? :) [15:58] jam: 4954 [15:58] jam: fixed bug #494269 [15:58] Launchpad bug 494269 in bzr/2.0 "tree transform cannot change root id" [High,Fix released] https://launchpad.net/bugs/494269 [15:58] _new_root is the transaction id representing the '/' in the directory [15:58] (in the working tree, etc) [15:59] GaryvdM: shudder [15:59] GaryvdM: well, if you are using the "get_known_graph" stuff, then you *are* using our current gdfo code [16:00] (which is also under the covers wrt Branch.get_revision_id_to_dotted_revno()) [16:00] however, that doesn't do partial loading [16:00] GaryvdM: summary: If you think that's critical for qlog, then go for it, but starting using KnownGraph may be a bett... what jam says :) [16:00] it *does* to semi-optimized full loading [16:00] s/to/do [16:01] vila: so one thing about bug #375898 and bug #494269... transform actions often have to call a new function when they are almost ready to be finished [16:01] Launchpad bug 375898 in bzr "bzr merge fails: bzr: ERROR: No final name for trans_id 'new-1'" [High,Confirmed] https://launchpad.net/bugs/375898 [16:01] Launchpad bug 494269 in bzr/2.0 "tree transform cannot change root id" [High,Fix released] https://launchpad.net/bugs/494269 [16:02] transform.fixup_new_roots() [16:02] added to _alter_files() [16:03] vila: qlog is not using KnownGraph, and it should be, but I'm really looking for a solution that does not have to load the whole graph, so gdfa *caching*. [16:03] the traceback I've got here is from do_merge() :-/ [16:03] *gdfo [16:03] sure [16:03] my point is that the merge code should probably be calling that [16:03] if it is poking at the transform object directly [16:04] GaryvdM: sure, then my remarks from Barcelona still stand, now, it's up to you to decide what you want and when :-/ [16:04] vila: somewhere near the end of _compute_transform [16:05] I'm not sure before/after resolve_conflicts [16:05] it *does* have a 'self.fix_root()' call [16:05] vila: Ok, got you. [16:05] It *might* be better to replace that with a different call to tt.fixup_new_roots() ? [16:05] I'm just trying to give hints, though. [16:05] GaryvdM: you need dotted revno caching [16:05] not just gdfo caching [16:06] aka, build a dotted revno from less than all ancesry [16:06] ancestry [16:06] and my initial point [16:06] is that given the current numbering scheme [16:06] that isn't always possible [16:06] long-lived integration branches require you to go back far enough to the initial branch point [16:07] the "branch merged several times" issue [16:07] I *do* have code for lazily computing dotted revnos [16:07] bound branches + bzr gui notification daemon (which is installed by default apparently) == my every commit issues *two* notifications with the same text [16:07] it does not take into account gdfo [16:08] and so suffers from race conditions while tracking ancestry stuff, and is O(N^2) [16:08] gdfo *would* help there [16:08] GaryvdM: and note that jam's remarks are for branches with append_revisions_only or similar workflows, in the mysql workflow were this isn't true, there is just nothing worth to cache (or too hard to define) [16:08] however, the revno numbering scheme still has the 'go back to branch point' issues [16:08] vila: there is always eventually a level that could be cached [16:08] jam: I see. [16:08] it may be 1000 revisions ago [16:08] but that is << 65k === deryck is now known as deryck[lunch] [16:09] GaryvdM: also, you can have 'multiple paths to NULL' issues [16:09] bzr certainly has that [16:09] jam: certainly, but which ? the tip revno itself is going up and down with a significant amplitude.... [16:09] with merging several plugins [16:09] if you find one of those revs [16:09] you have to walk the whole graph back to 0 [16:09] to be sure none of those revs were ever merged earlier [16:10] (gdfo is 1 for all the plugin rev0 that were merged) [16:10] *rev1 [16:10] vila: 'significant' relative to the 2000 already there? [16:10] +- 100 is still <10% of 2000 [16:10] if you are saying it is going 1000 to 3000 [16:10] then that is different [16:11] my point is that if the cache were at stages [16:11] vila, jam: I think I'm going to have a look at igc's plugin then. [16:11] 0 => 100 here, 100 => 200 here, etc [16:11] GaryvdM: though the other argument is that these are all edge cases, versus the common 'small feature branch' [16:12] it does depend on what you are benchmarking [16:12] the main reason I didn't push harder for the lazy revno stuff [16:12] is that merge_sorted is O(N), while lazy_revno was O(N^2) [16:12] and had the chance to make N still go to all_revs [16:12] so it made common cases faster [16:12] jam: I'm looking at big branches like mysql, OOo [16:12] but made edge cases *much* worse [16:13] OOo is a very special case, though, since it is (IIRC) almost completely linear [16:13] same with emacs [16:13] I guess not that special, since it does happen repeatedly :) [16:13] GaryvdM: qlog is usable on mysql branches, *I* use it at least for diagnosis (and it helps me a lot) [16:14] vila: I would like it to show you the main line in < 1 sec. [16:14] GaryvdM: don't display revnos in the initial display then :-P [16:15] GaryvdM: Or just cheat starting from last_revision_info() and decrementing, but that will work only if you display a single branch [16:16] GaryvdM: well, "time b.get_revision_id_to_revno_map()" for me for a mysql tree is 2.6s [16:16] vila: yes, I have thought about the second option. [16:16] you could pretty easily change the code to just show the mainline quickly [16:16] and load that in the background [16:17] sorry, TIMEIT says it is 1.29s to load the whole graph and produce the merge_sorted result on my machine [16:17] that is for 68k total revs and 2778 mainline [16:18] GaryvdM: I think cheating is actually pretty sensible [16:18] so I'll call it "cheating" [16:18] it also gives you a great opportunity to only load the last N revisions, which is whatever fits on the first page [16:18] but still load them 'in bulk' [16:18] * GaryvdM runs bzr qlog mysql --lsprof [16:19] GaryvdM: just to mention that IME, --lsprof gives you ~accurate timing of C functions, but python functions are slower by ~2x [16:20] jam: That sort of cheet would also help with OOo. [16:20] so the issue with OOo and emacs is that they are soon not going to be perfectly linear in the new revs [16:20] but you still end up paying to load 100k old revs [16:21] oh, and loading the whole graph for emacs is slower than the equivalent of mysql [16:21] for whatever reason 68k 'bushy' revs load a lot faster than 68k 'linear' ones [16:21] my guess is because you only have 1 rev that you can look for at any given time [16:21] and you may/may not have very good clustering [16:22] the fast-load code path exploits facts like 'john@arbash-meinel' tends to commit many times in a row [16:22] which probably doesn't happen as often in the emacs case [16:22] since people wait to commit to cvs because it disrupts other people [16:22] so you have more 'big' patches, and more author cycling [16:22] at least, that is my guess [16:23] So... the solution is for john@a-m to do more emacs dev? O8-} [16:23] fullermd: the solution is to rebase the whole ancestry of emacs, sorting it by author :) [16:24] Ah! Makes perfect sense. Easy to handle copyright issues then! [16:25] jam: hi, do you know how the rss feeds get updated on bazaar.canonical.com site? [16:25] bialix: cron script, IIRC [16:25] our latest qbzr release still not shown on the main page [16:26] bialix: what is the latest? 0.18.4? [16:26] jam: it seems cron does not work [16:26] yep, 0.18.4 [16:26] the newest entry on that page that I see is: 04-Mar-2010 [16:26] it is certainly possible the updater has failed [16:26] I don't maintain it personally, I think poolie would have a better idea [16:27] vila: what Time is it in France now? (Other than being past EOD for you :) [16:27] ok, I will try to ping poolie [16:27] We hit daylight savings time, so I have to adjust my "vincent should be working now" clock [16:27] 17:27, so not past EOD yet :) [16:27] vila: when do you hit daylight savings? [16:27] You first have to adjust it for *you* DST and then later on you'll have to do it for my DST :) [16:28] jam: No idea :) [16:28] I think the standard is in a couple weeks, closer to april 1st [16:28] usually last sunday of march? no? [16:28] I actually enjoy sunny days and that's good enough :) [16:29] 28 march as per bialix and confirmed at http://www.timeanddate.com/worldclock/timezone.html?n=195 [16:29] :-D [16:30] * GaryvdM going home. Will be back on line in 30 min. [16:31] * GaryvdM going home a little later [16:32] GaryvdM: :) [16:34] going home is for wimps? [16:34] real geeks send yourself to home via e-mail [16:35] You don't need to send yourself home, you just create a symbol table alias of yourself in Home. [16:36] vila: Are mysql still using 0.14? [16:38] GaryvdM: bzr ? format ? They use --1.9 AFAIK, migration to 2a pending but in the pipe [16:39] qbzr 0.14 [16:39] Sorry - I ment format 1.14 [16:40] I shall upgrade my local branch from 1.14 to 1.19 [16:43] * bialix wants to talk about scmproj, snapshots and nested trees [16:43] vila: can I ask your advice? [16:44] bialix: Don't ask to ask :) I'll do my best [16:44] that EOD thing scaries me [16:44] ok, so I have a problem I don't decide how to handle yet [16:45] I've implemented snapshots for scmproj [16:45] it means now I can record the state of all nested branches (components) in the project and then later get the exact copy of the project [16:45] great [16:45] I can even go from older state to newer state [16:45] but not in the reverse direction [16:46] because I'm using pull under the hood [16:46] GaryvdM: one smal issue, I'm not sure how --lsprof-file works wrt threads... [16:46] vila: so I can use pull --overwrite perhaps, but I have doubts [16:46] jam: We don't have any threads in qbzr yet. [16:46] GaryvdM: 1.9, not 1.14 [16:46] there is no 1.19 [16:47] just a 1.14 is a wt thing [16:47] Bla, so confused [16:47] 1.9 introduced btree? [16:47] vila: if some component has tip revision which is not the same as recorded in the snapshot [16:47] vila: I don't feel safe to simply overwrite it [16:48] bialix: you need some sort of check against that like we do in commit [16:48] vila: is it correct assumption to check every component is it "clean" , i.e. component's tip revision is the same as in the snapshot, and only then do pull --overwrite [16:48] vila: what you do in commit? [16:48] bialix: add a check that there is no uncommitted changes === beuno is now known as beuno-lunch [16:49] vila: right, I forgot about uncommitted changes [16:49] why do some files take so long to show up via launchpad after a commit?...i pushed a bunch of file and its obviously there cause i can download it but when i click to view it, there's nothing [16:49] bialix: wt.has_changes() [16:49] vila: so this one more check [16:50] dark_soul: what do you call 'so long', I generally see updates done in less than 5 minutes (even 2 minutes) [16:50] vila: well its update and its there...but some when you click on it to view the source code via the web interface, it shows nothing. some have it some dont [16:50] not sure if its because other files take longer to populate? [16:50] dark_soul: also, it depends whether or not you have write access because lp use a mirror internally for read-only operations and that's the mirroring that can be delayed [16:51] vila: more precisely about snapshots and components: if I have component alpha and his current snapshotted revision is 9, but in the reality on the disk it has revision 10, and I want to update project to the state where alpha was at 7. [16:51] dark_soul: if you mean that for the *same* commit some files show the update and some don't then file a bug [16:52] vila: I don't know is the rev 10 already pushed somewhere [16:52] vila: I don't feel safe to pull --over -r7 in that case [16:52] jam: please can we look at qlog together at uds and help me see if there are any performance improvement that can be made (other than the above mentioned cheat.) I'm think that some pyrex code may help. [16:52] vila: it is the same commit..to clarify, it is updated..you can download the file and everything is there. it's only when you click to view the file via the web, some show and some dont [16:52] bialix: yup [16:52] vila: I wonder if this case somehow addressed in the real nested trees [16:52] dark_soul: url? [16:54] bialix: no idea, I didn't look at the actual implementation, but it should [16:54] abentley: ping, I have question about bzrtools: clean-tree --ignored: I need to make it aware of ignored nested branches. What the best way for me to address this problem? Introduce new command-line option? [16:54] okay..odd now all of them are showing. weird [16:55] bialix, it's now in core, not bzrtools. [16:55] abentley: clean-tree? [16:55] bialix, yes. [16:56] GaryvdM: I'd be happy to [16:56] abentley: somehow I've missed this [16:56] jam: Thanks. [16:56] abentley: anyway, the question remains the same [16:57] bialix, right. Could you explain a little more? These are nested trees that you've included in .bzrignore, but don't want to delete? [16:57] oh..i think i know what i did wrong...or it could be a bug [16:57] vila: so, what is your advice here: do only safety check for revno, and allow user to force pull via command-line flag? [16:57] abentley: I have scmproj plugin which emulates nested trees [16:57] GaryvdM: a trivial run seems to indicate it takes 2+s to load PyQt [16:57] abentley: it doing some just by keeping collection of nested branches [16:58] you know the website where you browse your file. you got two url which is divided by the ":" (slice) .. [16:58] though I guess it is faster the second time [16:58] if i click anything to the left..it shows the code..if i click anything to the right, it will not show the code [16:58] bialix, I don't think you would need to ignore those branches. bzr should just skip them anyway. [16:58] abentley: those nested branches are ignored usually from root branch, otherwise they become visible in the status === salgado-lunch is now known as salgado [16:58] jam: I would so like to try fix that! [16:59] bialix: yup --force [16:59] abentley: if I don't ignore them I see them every time, and it's irritate [16:59] GaryvdM: what is the "exec_" loop? [17:00] Qt main event loop [17:00] and why "exec_" and not "exec()" ? [17:00] bialix, I agree. I don't think status should show them, since add won't add them. [17:00] vila: ok, thanks for the help :-) [17:00] jam: I think exec is a python keyword? [17:01] it is, but I thought it had to be standalone [17:01] dark_soul: do you have some url for us ? Tt could help understanding you [17:01] abentley: yes, you're right. but as short term solution I think I can just teach clean-tree to not delete them without special permission from user. Is is sounds reasonable? [17:01] vila: yes..give me a sec..i got a meeting. brb [17:02] hmm.. I guess I'm wrong, or at least they changed the name. I would have sworn I used to call .exec()... [17:02] no biggie [17:02] I guess I just thought it was something new [17:02] Hello all. I am trying to figure out the correct setup for bzr in the following senario... There is a central development server that multiple users would access and commit to. The central server needs to have a working copy running (PHP based website). At certain intervals, the code will be uploaded (using bzr upload) to the production server. I can figure it all out except the working copy on the server so that when a person commits, those change [17:02] bialix, I think it's reasonable to skip ignored trees by default, but I think it would be better to just fix status. [17:03] GaryvdM: http://paste.ubuntu.com/400075/ [17:03] so this seems to be the bulk of it [17:03] which is taking 15s to "load_graph_all_revisions" [17:04] 7s for 'process_graph_parents' and 8s in 'compute_loaded_graph' [17:04] abentley: re fixing status: to do so bzr should check every unknown directory for the presence of tree/branch. is not this will be performance penalty? [17:04] note, as far as --lsprof issues [17:04] running with --lsprof takes 18s [17:04] without takes 6 [17:04] so there is some significant overhead associated with profiling [17:05] load_graph_all_revisions and process_graph_parents should be made faster with KnownGraph [17:06] ah, and the other problem is that you are directly using MergeSorter? [17:06] hmm... maybe not [17:06] it seems that tsort.merge_sort does [17:07] though we made tsort.topo_sort() use KnownGraph [17:07] bialix, I suppose it could be, but unless it's a significant penalty, I think the UI improvement justifies it. [17:07] GaryvdM: I think I remember why... the api is different [17:07] abentley: ok [17:08] KnownGraph.merge_sort() returns objects [17:08] jam: If you look at compute_loaded_graph, alot of time is spent in various __init__ calls. Would pyrex speed this up? [17:08] tsort.merge_sort() returns a list [17:08] abentley: oh, clean-tree moved to core in 1.13. Now I recall this change, but somehow I forgot it later [17:09] GaryvdM: potentially, though also that is probably one of those lsprof fallicies [17:09] __init__ seems to be *much* more expensive under lsprof [17:09] jam: oh [17:09] I won't guarantee it [17:09] * GaryvdM started on using knowngraph. Digs that out. [17:09] but I've had some real-world experience that tells me that pyrex code looks *tremendously* better under lsprof, but isn't always as much better in real-world [17:10] ah, the other reason that tsort.merge_sort isn't implemented in terms of KnownGraph is because the pure-python implementation of KG uses the tsort implementation of merge_sort ... :) === deryck[lunch] is now known as deryck [17:13] * bialix licks stamp and send oneself away via mail [17:16] jam: I hope I'll get knowngraph used in qlog before then. [17:16] * GaryvdM really of home now. === beuno-lunch is now known as beuno === salgado_ is now known as salgado [18:19] GaryvdM: are you back now? [18:19] I just sent an update to qbzr which you might find interesting === radoe_ is now known as radoe [18:19] mostly I wish python's gc didn't get in the way so often... [18:21] jam: so reagrding bug #375898, the idea is to merge a whole subtree into the trunk *and* still allowing additional merges [18:21] Launchpad bug 375898 in bzr "bzr merge fails: bzr: ERROR: No final name for trans_id 'new-1'" [High,Confirmed] https://launchpad.net/bugs/375898 [18:21] vila: sure. I'm guessing there are 2 possible issues [18:21] 1) not handling different root ids getting moved around [18:21] 2) having TREE_ROOT in both trees, and not knowing what to do [18:21] jam: ISTM that's exactly the job of bzr-merge-into since bzr core seems to delete the old root-id [18:22] jam: I'm looking at what happens at the first merge right now [18:24] Hi jam [18:25] jam: I tried using bzr-merge-into but it fails with ERROR: The file id "xxxxxx" is not present in the tree None. [18:26] tree None sounds funny [18:26] yeah, I'm so laughing :) [18:26] so, my initial guess is that both branches are going to have TREE_ROOT as their root id [18:26] no [18:26] which means we have to move the files over, but don't have a good place to put them [18:27] err, let me re0check that [18:28] get_root_id() returns different values for this_tree and other_tree during the merge [18:28] and neither is TREE_ROOT [18:28] jam: Thanks alot. It will probably take me a while to work through that. [18:30] jam: to summarize before I EOD : 1) doing 'bzr -r0.. ../other' will not keep track of the root id (AFAICS) [18:30] jam: that doesn't sound like a good way to make future merges working [18:31] so 2) bzr merge-into sounds like the right way to do that, from there, will the future merges just work ? [18:31] jam: does the above sound correct ? [18:40] GaryvdM: short answer, KnownGraph is about a 2x improvement, gc.disable() is also a 2x improvement, combined you get 4x [18:40] vila: (1) is probably true, as the old root id gets thrown away, and everything is dumped into '.' [18:40] (2) is probably also true, but IIRC there were some bugs in it wrt root-ids [18:41] GaryvdM: oh and without gc.disable() KG is actually a performance loss... [18:43] (so gc.disable() when using KG is actually a 4x shift..., because KG allocates more objects) [18:45] the primary difference [18:45] is that if the merged-into tree adds a file at the root of the layout [18:45] then it should work transparently to merge that into the combined branch [18:45] vila: ^^ [18:45] which may also be why it is breaking [18:46] (adding a file at the root, but there is nowhere to put it in the target tree) [18:48] * fullermd wishes bug 374734 were moving :( [18:48] Launchpad bug 374734 in bzr "upgrading many branches is tricky" [High,Confirmed] https://launchpad.net/bugs/374734 [20:19] jam: How come you wraped this in it's own function? [20:19] def make_kg(): return KnownGraph(self.graph_parents) [20:19] kg = make_kg() [20:19] just so it would show up in lsprof [20:19] pyrex constructors don't otherwise [20:20] Oh - ok [20:25] I'd need some help, I still can't figure out bzr/sftp is not working at all for this client [20:37] Gnx: error message? [20:38] Connected (version 2.0, client OpenSSH_4.3p2) [20:38] Disconnect (code 2): Protocol error: packet 5 in interactive [20:38] thats all [20:39] I've tried sftp and ssh with other programs, no problems [20:39] also this just started one day for no apparent reason [20:39] reinstalled bzr too [20:43] Hi there, I'm trying to get bzr to remember multple push locations (preferably as default) [20:43] but I don't get from the documentation how to do this [20:43] is this actually possible? [20:44] (what I want is to push to both my private public repo on my webpage as well as to the google code repo at the same time when I say push) [20:44] or if that is not possible, have an easy way to say something like bzr push upstream [20:44] or something like that [20:45] (to further complicate matters, upstream is actually a svn repo :) [20:45] No, there's only one push location. [20:46] You could use something like the bookmarks plugin to get shortcuts for multiple locations. [20:52] fullermd: well, woth a try [20:52] thanks [20:53] it says it only works on linux/windows [20:53] leets see if that's true (I'm on mac) [20:54] The plugin? [20:54] * fullermd would be surprised. [20:54] yes [20:54] me too [20:54] :) [20:54] (if it had such restrictions, that is) [20:54] http://wiki.bazaar-vcs.org/BzrPlugins however is quite explicit [20:54] :) [20:54] is there a process to update that page [20:54] or could you just update it? [20:55] Oh, well, it only counts platforms that matter. Who cares about Mac? :p [20:55] ;) me me me! [20:55] Wasn't there a law somewhere that stated something like [20:55] "Though shalt not make fun of your loyal users"? [20:55] I seem to remember that... ;) [20:56] ... what would be the fun of THAT? [20:57] ;) [20:57] If you can confirm it works, I can add the thingy. [21:10] Gnx: Sorry, I'm not sure. [21:11] okay guys..remember me with the source code not showing up when i click on it via web? [21:11] i was caught in a looong meeting [21:12] so in bazaar.launchpad.net... when i click on anything after the "viewing" and select a source code file to view, it shows nothing [21:13] but if i click any path before the "viewing" and select a source code file it shows [21:13] not sure if its a bug or if its by design [21:13] fullermd: still trying… :) [21:13] if thats the case, then anything after the "viewing" should be unclickable. === salgado is now known as salgado-brb [21:17] dark_soul: May be better to ask this in #launchpad [21:17] fullermd: seems to be working fine so far [21:17] I wonder, can I get bzr to remember my username and password there too? [21:18] (preferably in the keychain like the default push location does) [21:31] okay [21:46] hm [21:46] which ppa do i need to get a new bzr on lucid? [21:58] mwhudson [21:58] mwhudson: lucid has the latest [21:58] hmm [21:59] what's going on then, i only have bzr 2.1.0dev5 [21:59] time to fight apt a bit i guess [21:59] according to https://edge.launchpad.net/ubuntu/lucid/+package/bzr , it should be 2.1.0 [22:00] and http://packages.ubuntu.com/lucid/bzr [22:00] GaryvdM: bzr.dev is well onto 2.2.0dev$foo by now though, surely? [22:02] mwhudson: no 2.2 release yet (due this week), so maybe daily ppa [22:03] the daily ppa seems to have ground to a halt [22:03] or i'm looking in the wrong place [22:04] james_w: do you know why https://edge.launchpad.net/~bzr-nightly-ppa/+archive/ppa hasn't had any uploads for months? [22:04] mwhudson: I broke the script and never got round to fixing it [22:05] I could do that now if you would like to use it [22:05] it would make my life slightly easier, if it's not too much work [22:05] sure [22:05] thanks [22:06] the reason you don't have lucid's package is that the wherever you got 2.1.0dev5 is doing there versioning wrong [22:06] i think it's from the ~bzr-nightly-ppa :) [22:07] the debian version is 2.1.0+b1+4961+129~8.10 [22:07] oops [22:24] jam: test_kg + further changes merged. :-) Thanks [22:36] Hopefully somebody can help me.... I am trying to get a working tree in a shared repository. It seems that no matter what I do I cannot get the working tree to show up in the repository. Or is this even possible? [22:37] it is easy to do on repository creation (and is the default iirc) [22:37] Then I am doing something wrong. [22:38] I have tried it via command line and explorer and both times, when I commit from a checkout, the repository is updated, but no working tree is visible. [22:38] well, you didn't say if you made the repo with working trees or not [22:38] no idea what explorer does, but bzr init-repo seems to default to having them [22:39] I am fairly sure I did. I did init-repo and init-repo --trees [22:40] Am I crazy? Is is possible for the repo to have visible, on the file system, the working tree from any commits? [22:40] Or am I asking something that it can't do? [22:40] that's the default [22:41] (note that 'bzr push' won't update the working trees, unless you're running bzr locally) [22:41] But "remote" repo in this canse can be local correct? [22:42] Boingo-OSI: run bzr checkout to get wt in existing treeless branch [22:42] I want the working tree both localy and in the remote shared repository. [22:42] Boingo-OSI: Ah *remote shared repository* [22:43] Hopefully I am explaining myself correctly. [22:43] if remote means "accessed via anything other than file:///", then bzr push will not update it [22:43] hi [22:44] Boingo-OSI: maybe https://launchpad.net/bzr-push-and-update will help (needs ssh access) [22:44] Am I looking for push? [22:44] I was thinking of update->work->commit [22:45] And bind. [22:45] Or am I way off base? [22:45] Boingo-OSI: similar problem to push [22:45] Oh. [22:45] Boingo-OSI: bzr can't update a remote working tree [22:45] So is it possible at all to have a working tree on a remote shared repo? [22:45] Oh. === spiv_ is now known as spiv [22:46] Maybe I am appoaching this all wrong? [22:46] Boingo-OSI: Either run update on the remote machine (that is what bzr-push-and-update does) [22:46] Boingo-OSI: Or use bzr-upload [22:47] Well, bzr-upload is also being used. [22:47] At least how I was thinking. [22:47] I have a distributed team working on a PHP web project. [22:47] I was thinking of having everyone use a central repo. [22:48] When you commit it shows up "live" on the development server. [22:48] Then, eventually, we use bzrupload to send the stable version to the production server. [22:48] Boingo-OSI: You can set bzr-upload to automaticly upload when someone commit/pushes to the central branch [22:49] So in my thinking, the working tree on the remote shared repo would be used to serve the actual dev enviroment. [22:49] Boingo-OSI: have a central dev branch, and a central live branch [22:50] GaryvdM: COuld you elaborate? [22:50] Boingo-OSI: set bzr-upload to auto upload to their respective Locations. [22:51] I thought bzr-upload was one way? [22:51] bzr upload --auto -d central_dev_branch devserver and... [22:51] Or do you mean have the branch with no working tree and then bzr-upload to the dev server's http folder? [22:52] bzr upload --auto -d central_live_branch liveserver [22:52] yes [22:52] Ah, so separate them. [22:52] I was trying to combine them. [22:53] when you are happy with dev, push dev to live [22:53] Interesting. [22:53] That could work. [22:54] Or in my case, I merge dev in to live, because my live has changes to config files. [22:54] Yes, as would mine. [22:54] Hi poolie [22:56] So, to summarize and make sure I have it straight.... the remote shared repo is not web accessible. In it there are at least 2 branches, dev and live. Work is done on the dev branch, with an auto bzr-upload to the dev server's web accessible folder. When ready, the dev branch is merged into the live branch which is then auto uploaded to the live server. [22:58] GaryvdM: I am still a bit new at doing it all this way, so pardon the newb question, but how do you keep your config files from clobering eachother. [22:59] Boingo-OSI: sounds like you have got it [22:59] My experience with bzr, up until now, so far is a single developer working from a shared ftp with a single branch. [22:59] So I am still getting my head wrapped around multiple branches. === salgado is now known as salgado-afk [23:02] Boingo-OSI: re: handling the config files: in the live branch, change the config files, and then commit. From then on, you will need to merge the dev branch in to the live branch (you won't be able to pull because it will give you a message about the branches been diverged) [23:03] Boingo-OSI: tip: If you have qbzr, run bzr qlog path_to_dev path_to_live [23:03] Boingo-OSI: screen shot on the way [23:04] Boingo-OSI: Sorry, cancel the screenshots, I don't have those branches on this pc. [23:05] lol, thanks anyway. [23:14] GaryvdM: Can I bug you with a few more questions? [23:14] I should probably stop trying to come up with convoluted ideas for how to get bzr to work with the svn repositories that my coworkers have shot all to hell and just be glad that my ideas for using it with our raw ftp sites work. [23:14] sure [23:14] GaryvdM: so the final use of KnownGraph you'll probably want to change, just because you'll probably want to use it *more* [23:14] however, it is a bit of an improvement to start with [23:15] jam: The loading of the graph? [23:15] that would be one [23:15] Ultimately, there will be lots of devs and lots of live servers, one for each client that the software is being customized for. A lot of the code between the different clients will be shared. What would you see as an ideal initial layout for the repo/projects/branches? [23:15] the other would be using it for stuff like your "fixups" of the graph, etc [23:16] basically, I would see it replacing your "graph_parents" if we can make that work [23:16] "fixups"? [23:17] i.e.: ClientA and ClientB are both using customized versions of the base project. But even the base project has a dev and live server. [23:19] Boingo-OSI: Wow. Sounds complicated. You can say, have a branch called custom1 that clientA and clientB merge from, but not client C [23:20] GaryvdM: you call something that iterates over the graph and plays with a bit [23:20] Boingo-OSI: If you run bzr qlog in the shared repo, you will see how the branches relate, and it should help you to understand what is going on. [23:21] GaryvdM: Not sure if it is or not. A lot of the code is the same. For instance, ClientA and B are just modifying CSS and config files from the base project. [23:21] GaryvdM: Well, there are no branches yet, I am trying to figure out the best way to lay them out. [23:22] GaryvdM: Then again, ClientC might have an entire add-on to the base that A and B don't have. [23:22] jam: yes [23:24] Boingo-OSI: It's difficult for me to say, not knowing your code. Play with it a bit. May be have a branch for each client. qlog is your friend. [23:38] hi, in the commit information that appears when i make a commit, it has some "unknown:"s [23:38] are those completely disregarded? [23:39] ? [23:39] oh, you mean file status [23:39] yeah [23:39] It's just reminding you that they exist, in case you forgot to add them [23:39] Other than that, they are disregarded [23:40] i find myself deleting a ton of files before every commit, and if Bazaar doesn't even do anything with those, i can leave them there [23:40] 'bzr log -v' shows you waht was committed [23:40] i just don't want them going into the repository [23:40] all the auto-generated files, such as configure [23:40] bzr only commits things you ask it to [23:40] ok, thanks [23:43] You should explicitly tell bzr to ignore known autogenerated stuff [23:43] how can that be done? [23:43] bzr ignore :-) [23:44] ah [23:44] thanks [23:45] Do read 'bzr help ignore' carefully [23:46] ok [23:49] morning [23:49] good morning igc [23:53] hi higc [23:54] igc, what's new? [23:54] hi poolie [23:55] Thanks everyone for all the help. [23:55] poolie: building chms for 2.x and reviewing some of vila's patches today [23:56] cool [23:56] if we do 2.2b1 tomorrow can we use your scripts to package it? [23:57] poolie: that's the plan. I'll give them a dry run today [23:57] and fix up any rough edges [23:57] ok, [23:57] do they need to be merged in or is it entirely external? [23:58] poolie: nothing needs to be merged to bzr [23:58] jam, i didn't totally understand your reservations about lazy-commands [23:58] poolie: I'm still deciding whether to merge the new code into the windows-installers trunk or put it into a fresh project [23:58] is it just that you want more of the same, or do you think it's wrong? [23:59] just wondering if we could be even lazier [23:59] hi jam! [23:59] so you don't have the runtime overhead of registering [23:59] what do you mean?