[00:05] good evening [00:18] lifeless, could you please aswer https://answers.edge.launchpad.net/bzr/+question/105503 [00:25] spiv, hi [00:25] spiv, is there a bug tag for per-file merge configuration? maybe there should be [00:28] morning [00:30] hi igc [00:30] poolie: any idea why bzrlib.urlutils doesn't use python's urlparse.urljoin but rather rolls its own? [00:33] not off hand [00:34] but most likely is that the python one is buggy, or was buggy in python2.4 [00:34] second most likely is that it should but doesn't [00:34] should use it but doesn't [00:34] there should be a comment either way [00:34] all, lifeless: what do you think of, in the context of just not repacking pack files that are already fairly large (say 500MB) [00:35] Maybe have an option for it? :D [00:35] * Peng ducks. [00:43] yes, it would make sense to have an option with a default [00:45] igc do we still need to talk about the windows installer-building vm? [00:46] poolie: yes [00:46] here or the phone? [00:46] here's fine [00:46] so basically i suggest you make a snapshot using their web console [00:46] poolie: I'd like to try building a 2.0.1 installer this morning [00:46] that would be great [00:47] I still need to fix bug 534548 first [00:47] Launchpad bug 534548 in bzr-windows-installers "Bzr Error: missing sqlite library" [Undecided,New] https://launchpad.net/bugs/534548 [00:47] I'm working on that now [00:49] ok [00:49] so you were asking the other day if it's ok to reboot it [00:49] and aiui it's fine to reboot, but if you halt that instance will go away [00:49] and you will lose its state [00:51] poolie: "halt?" [00:51] shutdow [00:51] shutdown* [00:52] poolie: ok [00:57] poolie: re urlutils and why it doesn't use urlparse.urljoin, it seems that the python module doesn't throw errors and doesn't make it easy to detect when updir segments ('..') go above the root [00:59] for instance, urljoin('.', '..') produces '/' [00:59] sorry I meant urljoin('/', '..') [01:00] right [01:01] I'm wondering how important it is to detect that particular case [01:03] and apparently it doesn't like joining 'lp:foo' with 'bar'... it just produces 'bar', which breaks the appendpath stuff :P [01:04] perhaps I could use urlsplit and do my own join logic... [01:08] dOxxx: the chroot functionality at least depends on those errors [01:08] dOxxx: what are you trying to do, btw? :) [01:08] spiv: trying to fix bug 534787 [01:08] Launchpad bug 534787 in bzr "pull does not understand lp: URLs in branch.conf" [Medium,In progress] https://launchpad.net/bugs/534787 [01:09] I already have a somewhat crude fix for it [01:09] but poolie suggested I fix the url joining instead [01:10] so i do think urljoin('lp:foo', 'bar') should give lp:foo/bar [01:10] Yeah, that would be good. [01:11] poolie: oh for sure. it just means I can't cop out just calling urlparse.urljoin ;) [01:11] I wonder if for this particular bug we ought to be doing the directory-service lookup before joining the relative dir to it? [01:11] Oh, btw, urlutils.join('lp:foo', 'bar') already gives lp:foo/bar [01:12] spiv: yes, I was referring to the python urljoin [01:12] Although by accident, I suspect :) [01:13] (Yep, by accident, compare urlutils.join('lp:foo', '../bar')) [01:14] ouch [01:15] yeah there are some pretty magical expectations of this function :P [01:18] The directory service concept hasn't really been fully integrated yet. [01:20] when I run bzr selftest, I get the errors and failures printed out twice... [01:21] the second time in a slightly different format [01:21] poolie: we should repack large packs [01:21] in constant memory [01:22] poolie: at most linear, anyways [01:22] um [01:22] but yeah, constant is nice too [01:23] it's easy for people to get bigger pack files than will comfortably fit in ram [01:23] true [01:23] so ok, it can be linear as long as a<1 [01:23] poolie: thats fine, we don't buffer the pack on a repack [01:23] memory use to repack is made up of: [01:23] just ignore me [01:23] - index data [01:23] - current gc compressor state [01:24] - read-cache from the source packs [01:24] if someone is seeing a memory spike during a repack, its most like that they committed an ISO [01:24] because of the forth element: [01:24] - current object being inserted [01:24] forth uses very little memory! [01:25] oh, there is also a 1MB write buffer, but its approx constnat [01:25] we expect packs to grow to many multiples of main memory [01:26] so, yeah, that probably *is* linear with a<<1 [01:28] that said, the main thing we want to do is combine packs to reduce linear lookup growth, a big pack with one commit in it is certainly something we could leave for a while, but thats a matter of tuning the 'what packs should we combine' to choose them a little later, rather than excluding large packs from that algorithm [01:47] lifeless: there have been a spate of out-of-memory during commit of small things [01:47] at least some are due to repacking [01:48] poolie: due to, or occuring during [01:48] ? [01:48] poolie: because I don't think that that is the same thing at all [01:48] occurring during [01:50] what that primarily says to me is that they probably don't have enough memory on their machine to work on that project - I'd expect random 'diff', 'log' and other commands to fail on that repository too [01:51] though there may be a bug in the slab cache [01:51] we may want to investigate that [01:51] and related to that we might want to handle an OOM error by dropping all related caches and retryinh [02:13] yes, but that isn't what seems to be happening [02:13] (*) i have not systematically checked all the reports [02:16] what seems to be happening then ? [02:17] should we do voice for this; sems to be quite a drawn out conversation [02:34] seeya guys [02:35] lifeless: let's not bother until we actually start on it; it was just a random thought [03:20] Is there anything wrong with running, in a branch, bzr log -r ../trunk ? [03:21] Ah, I want bzr log -rancestor:../trunk right? [03:21] quotemstr: yeah, probably [03:21] Or perhaps "bzr missing --mine ../trunk" [03:21] Thanks! [03:22] Or maybe "bzr log -rsubmit:" will do the same thing for you with less typing :) [03:22] (if ../trunk is the submit branch) [03:23] Ah, I see. Is it normal for that to print out just one commit? [03:23] Well, if there's just one commit in your branch that isn't in ../trunk, then yes. [03:24] Ah! .. :-) [03:24] Yes, because you're only asking for one rev. If you want a range, you want to say a range (e.g., "-rsubmit:..") [03:24] -rsubmit.., that is. [03:24] Oh, right. [03:24] My bad :) [03:24] (which is short for -rsubmit:..-1) [03:26] Hrm, it's still running. [03:30] Okay, this is getting more complicated than I thought. I have a branch that's a little stale with respect to the trunk. I've done some feature development on it, but also backed out a change from the trunk that was causing a bug. In the log, that backing-out is marked as a merge. To merge from the latest trunk, I need to undo that backing-out of the bug so the trunk's bugfix will apply correctly. [03:30] So how do I undo that particular entry? I don't see any functionality in bzr merge for unmerging, as it were. [03:32] quotemstr: you can pass a backwards revisionspec to merge [03:33] Right, but the revisions are with respect to the trunk I'm trying to merge from. [03:33] quotemstr: e.g. "bzr merge -r 101..100 ." will reverse the changes in revision 101 [03:33] If you merged revisions, they're in the local branch too, even if "bzr log" collapses them by default. [03:34] quotemstr: so the situation is that at some point you did "bzr merge ../trunk; bzr revert [some files]; bzr commit" on this branch? [03:35] spiv: Exactly. The changelog for the commit after the revert is "revert cc-mode breakage from revision 98938" :-) [03:35] spiv: But there are lots of changes I made after that revert. [03:35] Right. [03:35] Should I just manually grab a diff from the trunk, apply it with patch(1), then commit that? [03:35] Hmm, perhaps a second branch would be easiest: [03:35] (For revision 98938, that is.) [03:39] bzr branch -r [just-before-back-out] . ../before-back-out; cd ../before-back-out; bzr merge ../trunk; bzr commit -m 'merge trunk'; bzr merge -r [back-out-rev] ../feature; bzr revert .; bzr ci -m "Undo backout"; cd ../feature; bzr merge ../before-back-out; bzr ci -m "Un-revert cc-mode breakage from revision 98938." [03:39] There's probably a less convoluted way to do that. :) [03:40] First, you fast-export and import it into monotone... [03:40] fullermd: hah [03:41] Having update -r in base now, it's probably conceivable that a commit-daggy could be implemented as a plugin. Would only really work for single-commit fixes, but... [03:41] Hmm, maybe could use shelve rather than a second branch, something like "bzr up -r [before-back-out]; bzr merge ../trunk; bzr shelve --all; bzr up; bzr unshelve" [03:42] Wouldn't that re-apply the backing-out of revision 98938? [03:43] Maybe I'm being overly general... [03:44] Is it literally that you wish to reapply the changes in trunk -r98938? [03:44] If so, just "bzr merge -c98938 ../trunk" would work, I think. [03:44] hi! I would really appreaciate some help with a 'log' (actually a xmllog) test :) [03:44] Ideally in a way that will make the revision disappear from history, but that works too. [03:45] To make revisions disappear from history you'd need to generate a new history (e.g. using the bzr-rewrite plugin) [03:45] Scratch that then. I'll try merge -c. :-) [03:46] verterok: tell us more! :) [03:46] spiv: :) I would like to create the history specified in this bug: https://bugs.edge.launchpad.net/bzr-xmloutput/+bug/517937 [03:46] Ubuntu bug 517937 in bzr-xmloutput "bad XML in fringe case" [High,Confirmed] [03:47] branch builder [03:47] Hrm, all that does is say that it modified a ChangeLog, and even that is an empty diff. [03:47] I'll try the separate branch approach. [03:48] lifeless: ooh, nice! (xmloutput log tests are quite outdated) [04:09] igc, so is everything good on desolation now? [04:23] Anyway, merge -c worked fine. [04:23] I just had to specify [backout-revision] instead of the original revision from the trunk. [05:33] hi poolie [05:45] hi there [05:52] poolie: I've build a 2.1.1 installer that I'm downloading and testing [05:52] built [05:52] poolie: next on the list is to build a 2.0.5 installer set [05:54] poolie: then it's back to sorting out the new build scripts and working out why buildout is grumbling about stuff === quotemstr_ is now known as quotemstr [07:11] hi all ! [08:36] Are help topics expected to be restructured text? [09:40] MvG: yes [09:41] I found out that the command line output has plain=True unconditionally, which might cause some reformatting, which might explain why "bzr help configuration | rst2html.py" may result in errors, I guess. [09:43] I wouldn't expect bzr help configuration | rst2html.py to work [09:45] I did, because the thing looked close enough to rst, but seeing that there is a a plain argument to the help text formatting method, I'm not surprised any more. [09:45] I wonder whether a --rst option to bzr help might be a good thing, though. [09:45] And a "export to temporary html and open in browser" as well, while we are at it. [09:45] The latter could be a plugin, though. === LenZGr is now known as LenZ [11:21] * xnox gcc svn trunk import on launchpad 98077 out of 99076 revisions done =) can't wait [11:21] Launchpad bug 98077 in zope3 "No title ?fixme?" [Medium,Invalid] https://launchpad.net/bugs/98077 [11:22] ubottu, you are being silly =) [11:22] Error: I am only a bot, please don't think I'm intelligent :) === mrevell is now known as mrevell-lunch === mrevell-lunch is now known as mrevell [15:07] hi [15:07] how do you use fast-export to strip a directory and its files from a tree? [15:22] i tried bzr fast-export ./ | bzr fast-import-filter -x plugins/ > ../cnitrobot.fi but i got a broken pipe error [15:46] can someone explain the pull --remember option? I tried doing 'bzr pull' recently from a repo which I had previously checked out via 'bzr checkout --lightweight URL', and I was given an error "Not a branch: PATH" where PATH was something I had not set. Doesn't it make sense to use URL as the path automatically? [15:47] (PATH pointed to some local directory on another person's computer) [15:47] If you're in a checkout, pull probably isn't what you want to do. [15:47] So my question: how does it all work? what is the logic behind requiring --remember? [15:48] fullermd, what should I have done? [15:48] You probably want 'update'. === IslandUsurper is now known as IslandUsurperAFK [15:48] and update will pull the latest changes from the remote repository? [15:48] Pull is for updating the branch. The branch in this case is that thing you checked out, so 'pull' is using the saved parent from it, which probably doesn't make sense when interpreted from your machine. [15:49] I think it might just be a terminology problem for me -- in mercurial, "update" is just a local operation which changes the revision of the working directory -- what is the equiv in bzr? [15:49] Same thing. [15:50] That's what you're trying to do; update your working directory to match the branch. [15:50] What I mean by 'local operation' is that there is no network activity required at all. [15:51] There would be if the branch were across the network. [15:51] But mercurial doesn't swing that way. bzr can, when you ask it to (which you did) [15:51] Ok -- so the branch in bzr can be stored locally or remotely, I take it? [15:52] In bzr, your working tree, branch, and repository can each be in [at least somewhat] arbitrary locations relative to each other. [15:52] In your case, you did a checkout, so all you have locally is a working tree; you don't have a local branch. [15:54] So, working tree= a directory corresponding to 1 revision. [15:54] I guess that would be one way of saying it. Working tree == the files you fiddle with. [15:55] But I'm confused if branches and repositories are somehow distinct from each other -- I figured that after you've specified a repository, then that intrinsically includes the branches associated with that repository ? [15:56] (specified the location of a repo) [15:56] Not really. You almost never talk about a repo directly; you talk about a branch. === salgado is now known as salgado-lunch [15:56] then what technically is a repository (or how does it differ from a branch)? [15:57] (or relate to a branch) [15:57] A repository is what stores revisions. A branch defines a set of revisions interesting in a particular context (i.e., a "line of development") [15:58] It's useful to separate the two concepts because you often have multiple branches that share [some,most,all] history, and if the repo couldn't be considered independently, you'd be storing multiple copies of that. [15:59] * fullermd really needs to knuckle down and polish his docs on the matter :( [16:00] gives some overview. [16:00] right- from mercurial, I get the concept of branches. While it is possible to clone a specific branch of a hg repository, oftentimes one clones the entire repository and can then work on whatever branch one pleases. [16:01] But in bzr, it's not possible to clone an entire repo? Or people usually just clone / checkout branches? [16:01] I'm fuzzy on mercurial. It seems like they sorta use clones as branches, except when they use named heads as branches, except... [16:02] But no, aside from making them and occasional special things, you never address or talk about repositories directly in bzr. [16:02] You just talk about branches, and a branch finds its repository (either internally private, or externally shared) as necessary. [16:03] bzr's "clone" command is just an alias of "branch". [16:13] fullermd, ok- so when you do 'bzr branch' it duplicates a branch (the associated history of a branch). But when you do 'bzr checkout', it just gets a specific revision, and an associated branch-name/source is somehow connected with the checkout? === deryck is now known as deryck[lunch] [16:14] Mmm. That's... that's probably not _wrong_ per se, but I think it's a wildly confusing way of thinking about it. [16:15] To compile your program and read files and make changes and make new commits, you need a working tree to do that in. Checkout creates a working tree for a given branch. [16:15] bzr makes no inherent distinction between that working tree being colocated with the branch (as you get after a 'hg clone'), and the WT being somewhere completely different, on teh same system, or across a network. [16:16] (this also implies you can have multiple WT's on a single branch at once, leading to a setup and workflow much like using CVS/SVN) [16:17] The WT, among its metadata, has a pointer saying "hey, that there is the branch I'm a WT of". [16:18] So when you do operations that touch the branch, like commit, or log, etc, it knows to go look there. [16:18] (the branch in turn knows where its repository is, and goes there to save or retrieve revisions) [16:20] When you phrase it as "just gets a specific revision", it can be read as if you were talking about a shallow branch/clone, which is off the rails. === IslandUsurperAFK is now known as IslandUsurper [16:58] hello, anyone can help with this trace back: http://paste.ubuntu.com/401898/ ? === salgado-lunch is now known as salgado [17:23] MvG: hi [17:24] jelmer: hi there [17:24] MvG: Good, you're still here :-) [17:25] MvG: Are you still interested in having a cache of last-modified data for directories? [17:25] MvG: bzr-git needs something like that as well [17:27] MvG: If that'd be useful, I'm happy to talk about it later. [17:27] jelmer: Yes, I'm interested. [17:27] Busy just now, I guess I'll have time in 30-60 min or so. [17:28] mvg: same here [17:28] just wanted to catch up before you ran off for the weekend :-) [18:01] ok, i just did `bzr init --format=1.9` and got "Created a repository tree (format: 2a)" [18:06] meoblast001: you're creating it inside of a shared repository which is already in the 2a format [18:07] ooh [18:07] though I'm the first to admit that ignoring what you asked for is a bad idea, it should instead tell you [18:09] does bazaae supports installing branch behind a proxy with authentication ? [18:10] my system time out while running "bzr branch lp:repo-name" [18:48] jelmer: you available now? === radoe_ is now known as radoe [19:14] MvG: hi [19:14] MvG: yep [19:15] jelmer: OK, so where do we start? [19:15] I think we should figure out whether what we need is actually the same thing [19:16] jelmer: We want a map from (d, r), a tuple between directory fileid and revision id, to a specific revision id, either the same or an ancestor of the r requested. [19:16] So let's say (d, r1) -> r2 for clarity. [19:17] We want the path and contents of d in r2 to be exactly the same as in r1. [19:17] right, so the last revision id that touched a particular part of a repo ? [19:18] And we can judge this from deltas. [19:18] Starting from r1, we can compare parents and descend into a parent where the delta doesn't mention the path of d in any form, until we end up in a revision with no such parent, which will be r2. [19:19] I'm not sure I follow [19:20] OK, so we look at revision r1, the one requested. It has a list of parents, p[0] ... p[n]. [19:20] We can compute the delta between r1 and p[i], and see what files are modified, what paths renamed, and so on. [19:21] For every such file, we can find out the paths, both old and new, and if either is equal to or lies within the path of our dir d, then the delta does touch the dir. [19:22] ah, right [19:22] Come to think of it, if d lies within a dir touched by a rename, we should consider the delta to touch d as well. [19:22] I was actually thinking of keeping a cache with this information [19:22] rather than having a API that found it [19:22] Yes, well, that's point 2 on the agenda. [19:23] I'm still at the phase of finding out whether we want the same thing. [19:23] So now we should have a working definition of the info we want, and an idea how to obtain it in the first place. [19:24] Possible next steps are how do we obtain it efficiently, how do we store it from a data organization point of view, and how do we store it from a file format point of view. [19:24] It's the data organization I have given the most thought so far. [19:25] Seeing as the set of keys (d, r1) scales with both the number of dirs and the number of revisions, storing all these kees seems terribly inefficient. [19:25] Might be there is a way to tie the information efficiently to what bzr already does, but I know too little of the internal workings of bzr to decide this. [19:27] So what I have in mind is a tree. For every revision r1, determine a base revision b(r1) by clearing the least significant bit set in the history length (or gdfo if you convince me that's better) and choosing an ancestor with that history length (resp. gdfo) as the base. For r1, only record changes relative to its base. [19:28] As an effect, the vast majority of revisions have a base pretty close to them, with few changes. On the other hand, the tree ensures logarithmic path lengths, so for any revision you can find the last modified revisions in at most O(log histlen) steps. [19:29] You follow me so far? [19:40] jelmer: So much text you're still reading, or so boring stuff you fell asleep? [19:40] MvG: Sorry, got distracted into coding :-) [19:41] Coding this, or coding something else? [19:42] something related [19:42] * jelmer reads === khmarbaise_ is now known as khmarbaise [19:51] MvG: right, so how would we go about implementing this - and where? [19:52] jelmer: Originally I had planned to implement this in trac-bzr, test and use it there, and move it somewhere else if there is need. [19:52] But now that you say you'd need something similar, maybe we should start out with a plugin. [19:53] I've just read how the bzr-revnocache plugin is organized, maybe we can crib some parts from there. [19:53] If I see things correctly, there is no way apps can benefit from this plugin unless they know about it, right? [19:54] yeah [19:54] that' [19:54] s the problematic bit [19:54] bzr-git needs this to operate properly [19:54] so I'm a bit reluctant of having this code in a plugin [19:54] ideally it would be copied into bzr-git or live in bzrlib [19:55] We could sync code between bzr-git and trac-bzr, but I guess sooner or later loggerhead or others would want it, too. [19:55] yeah, ideally it'd be in bzrlib. [19:55] bzrlib would be ideal from a user point of view, but would impose much severe restrictions on robustness, testing, documentation, and so on. [19:55] or perhaps the cache can be a plugin but we could have the API in bzrlib? [19:56] You read my thoughts. [19:58] By the way: do we need the same for files? I.e. if two branches modify a file, does bzr give the merge point as last modification revision? [19:58] MvG: it gives the merge point if the revision was changed there [19:59] Changed by either maunal or automatic means? [19:59] MvG: If you just take the version present in one of the parents it'll record the revision of that parent [19:59] OK. That's consistent then. [19:59] I don't need that info though [19:59] Well, if we do this, we should do it right, so files and dirs should provide the same info. [20:00] MvG: Should we provide any info for files at all ? [20:01] Yes, I think so. No need to cache anything there, but the API should give that info for dirs and files using a single method name, I believe. [20:05] jelmer: Seems to me that InventoryEntry would be the appropriate place for this API. [20:06] Is it justified to introduce an API into core although we know it will be slow? [20:10] jelmer: How would you store stuff? sqlite? pickled python? handwritten format? [20:10] Keep in mind that we have to store that b function I proposed as well, as calculating it the way I described might be too expensive. [20:20] MvG: It should be the same API [20:21] MvG: but we could have a hook that allowed you to provide a different mechanism to retrieve that info, that a plugin could use [20:21] MvG: Yeah, InventoryEntry seems like the most appropriate place, indeed [20:22] So how do we go about this? 1. set up some shared branch, 2. implement fallback mechanism, 3. start plugin project? [20:23] Do you have time for this? I probably won't have much time till mid may or so. [20:25] MvG: I don't have much time at the moment either [20:25] we might have a look at UDS [20:25] ? [20:28] there's a Bazaar sprint during the Ubuntu Developer Summit in Brussels in May [20:30] Dunno if I can afford going to Brussels, money-wise but more importantly time-wise. [20:31] Haven't given all that sprint stuff a closer look yet, as I mostly got the impression it's targeted at canonical staff. [20:31] MvG: Sorry, I meant we as-in the attendees of the sprint : [20:31] I see. [20:31] MvG: You're more than welcome to attend, I think more than half of the people there will be community [20:31] So you could try working on this there, maybe find some cooperation? [20:31] MvG: Yeah, at least discussing the API bits [20:33] Should we write a few lines of blueprint or whatever to ensure this isn't forgotten? [20:34] we don't really use blueprints for bazaar anymore [20:34] I guess we should send a [RFC] to the list [20:35] I had started writing a mail while you were away coding, but it seems my thunderbird crashed on me. And in any case, I hadn't gotten much beyond the subject. [20:37] perhaps we should put something up on the wiki? [20:38] Fine with me. [20:38] http://wiki.bazaar.canonical.com/LastModified ? [20:38] Or is there some naming convention we should follow? [20:45] A lot of the specs are under Specs/ [20:45] I think we need a clearer name though [20:50] Specs seems empty to me, I only find DraftSpecs... [20:50] Specs/DirLastModified might be better. Should we be more verbose than that? [20:56] jelmer: Unless you object (soon), I'll create http://wiki.bazaar.canonical.com/DraftSpecs/DirLastModified from SpecTemplate [21:07] jemer: Can you explain the rationale for bzr-git? [21:10] MvG: That sounds fine [21:10] MvG: bzr-git needs to create Git Tree objects [21:11] which are roughly equivalent to subinventories [21:28] jelmer: Do you know if there is any "last modified" UI for files right now? [21:35] jelmer: http://wiki.bazaar.canonical.com/DraftSpecs/DirLastModified saved. Edit at will. [22:11] hi , any idea what is causing this error http://paste.ubuntu.com/402059/ ? [22:23] adiroiban: Most likely, .bzr/checkout/dirstate is corrupt, like it says. [22:23] adiroiban: Uhh, it's not a critical file, so it's easy enough to work around, but I forget how exactly... [22:24] Peng: I will try to search about how can I fix the dirstate [22:24] but I was expecting from bzr to hint a sollution in the error message [22:27] adiroiban: Is this a lightweight checkout or a full branch? [22:27] a full branch [22:28] adiroiban: Have any uncommitted changes in the branch or anything? [22:28] yes, but I have alreade created a new branch and copied the changed files [22:28] I was just wondering what is the user-friendly way of solving this problem [22:29] Bahhh, I don't remember. [22:30] BTW, please do keep a copy of .bzr/checkout/dirstate so someone can investigate what went wrong, if they want to. [22:30] Did anything interesting happen, like a power outage or computer crash? Or awful network file system? [22:31] You could try renaming .bzr/checkout out of the way and running "bzr co", but it might get mad and produce a massive number of conflicts, which would be a pain to clean up. [22:31] there was a power failure [22:32] that caused this mess [22:33] You could also "bzr remove-tree && bzr checkout", but it'll delete and re-create the working tree, causing a lot of I/O, and probably conflict horribly. [22:45] hello [22:45] any one there [22:45] echo [22:59] abk: Perhaps not, but you should ask your question. [22:59] Also: Are you really IRCing as root? D: [22:59] :D [22:59] noop [23:00] Some channels ban root, you know. [23:00] .... [23:00] Anyway, I'm certainly not here. [23:54] Anyone looking at bzr on OpenSolaris?