[00:00] <lifeless> that would be about right
[00:00] <lifeless> raw index reads - dictionary compressed
[00:00] <lifeless> get_parents as is in .dev - no compression at all
[00:00] <lifeless> I bet slapping a gzip around it and doing 64K of compressed data will more than compensate
[00:01] <lifeless> also we could add a sliding window
[00:01] <lifeless> 64K first response
[00:01] <lifeless> 128K second response
[00:01] <lifeless> 192K third response
[00:02] <lifeless> another possibility is history shortcuts causing existing revisions to be retransmitted
[00:02] <lifeless> but I'm not at all sure about a good way to avoid that without excessive server work (have to read the entire search from scratch each time, to generate the seen-and-do-not-transmit-list)
[00:03] <lifeless> instrumenting the client to report on duplicate revision receipt with -Dhpss would be a good way to analyse this
[00:07]  * spiv tries
[00:10] <spiv> lifeless: wow, yes, lots of retransmitted revisions.
[00:10] <lifeless> right
[00:10] <lifeless> I'll get this patch finished, which will give infrastructure for handling this cleanly
[00:11] <lifeless> the other two things are still good things to do
[00:11] <lifeless> whats happening is that the path (say) 5 deep along mainline gets us deep history slowly
[00:11] <lifeless> but the path 5 deep along long lived but rarely committed to branches takes us deep very quickly
[00:12] <lifeless> so that the first request gets us two different pointers in the mainline
[00:12] <lifeless> and the server doesn't know when the slower pointer advances up to where the faster pointer jumped to; so it does not filter out the results.
[00:12] <spiv> lifeless: http://rafb.net/p/dv4ApB92.html
[00:13] <lifeless> the client knows, so it only asks for what it does not have, but when the server expands the results, this occurs.
[00:13] <spiv> lifeless: so by the looks more than half the data is wasted.
[00:13] <lifeless> spiv: thats ok, all the duplicates will be in data we're sending to counteract round trips
[00:14] <lifeless> spiv: so its not a huge failure; just expected
[00:14] <spiv> Right, but at the expensive of other data we could be sending to counteract round trips :)
[00:14] <spiv> s/expensive/expense/
[00:14] <lifeless> spiv: no
[00:14] <lifeless> spiv: thats where you are wrong; the server could choose not to send this data, but its not at the expense of the data needed to walk :)
[00:15] <lifeless> possibly we could sensible advance past those pointers to choose up to 64K of additional data
[00:15] <spiv> lifeless: I meant in an impossibly optimal world, the server would know what the client has already seen
[00:15]  * spiv blinks
[00:15] <spiv> 150.440 retransmitted revisions: 0 of 0
[00:15] <spiv> I guess those must be ghosts.
[00:16] <lifeless> so I think the biggest immediate problem is the lack of gzip on the content
[00:16]  * spiv nods
[00:18] <lifeless> that will increase the payload of 64K to == or > than packs achieve
[00:18] <lifeless> which will reduce the maximum iterations to traverse all history
[00:19] <lifeless> and thus the amount of retransmits too
[00:19] <poolie> lifeless, do you remember the url of your progress bar branch?
[00:19] <poolie> if you don't offhand it's not a big deal
[00:21] <ubotu> New bug: #183380 in bzr "init-repo using hpss on remote host should use format remote host	understands" [Undecided,New] https://launchpad.net/bugs/183380
[00:23] <lifeless> revno 3034 is pushing now to http://people.ubuntu.com/~robertc/baz2.0/nested-pb
[00:23] <lifeless> poolie: ^
[00:24] <poolie> thanxs
[00:24] <spiv> lifeless: FWIW, in 111 get_parent_map calls, 38427 of 53606 items received were already transmitted.
[00:26] <lifeless> spiv: thanks
[00:27] <poolie> lifeless, heh, looms :)
[00:28] <poolie> foom, I added a summary of the release to the front page
[00:28]  * igc dentist appointment - bbl
[01:30] <ubotu> New bug: #183391 in bzr "setup.py should have project metadata" [High,Confirmed] https://launchpad.net/bugs/183391
[01:46] <lifeless> poolie: ping
[01:47] <poolie> pong iddle i po
[01:47] <lifeless> I'd like a teddy bear that asks questions
[01:47] <poolie> urgently?
[01:47] <lifeless> yeah, I think
[01:47] <poolie> ok
[01:47] <poolie> call
[02:00] <lifeless> thanks
[02:14] <lifeless> poolie: I don't understand your comment in bzrlib.tests.interrepository_implementations.test_interrepository.TestInterRepository.test_interrepository_get_returns_correct_optimiser
[02:43] <poolie> lifeless, the point of the comment is that the relation is not necessarily two-way
[02:43] <poolie> IR1 may wish to be tested with Rx, Ry
[02:43] <poolie> but that does not guarantee that IR1 is the preferred interrepo for Rx,Ry
[02:44] <lifeless> so with that disabled the tests for IR1 may not execute
[02:45] <lifeless> as the tests are all written on the assumption that it is the preferred interrepo
[02:45] <lifeless> as the interrepo paramerisation chooses the Rx and Ry, we can guarantee that IR1 is the preferred interrepo for that combination if we wish
[02:45] <poolie> well
[02:46] <poolie> as i recall, i disabled that test because there were some repos that were not parameterized correctly
[02:46] <poolie> and therefore appeared to be being tested,but they actually were not
[02:47] <lifeless> I'll look at it later; I think it explains some of the problems I encountered with the journalled inventory stuff
[02:48] <poolie> it does seem like it'd be useful to reenable it and see whether it fails, or at least what class causes it to fail
[02:58] <Verterok> abentley: hi, I was about to send a bug/error report regarding bundlebuggy.
[02:58] <Verterok> it's throwing a KeyError when I try to do a search
[03:00] <Verterok> http://rafb.net/p/VYvot846.html
[03:10] <igc> poolie: how is 1.1 more efficient than 1.0 in storage?
[03:26] <poolie> igc, better ordering when packing
[03:26] <poolie> that was my summary of one of the improvements
[03:26] <abentley> Verterok: Okay, thanks.
[03:27] <igc> poolie, lifeless: I thought that just made log faster? Does it reduce storage as well?
[03:28] <poolie> i meant efficient in time, i guess...
[03:28] <poolie> maybe it implies space, and i don't think that has changed
[03:28] <abentley> What  were you searching for?
[03:28] <Verterok> abentley: np, I tried to debug it locally, but no TG, etc installed in my laptop
[03:29] <igc> poolie: cool. Just the wording "efficient storage" on the Welcome page confused me
[03:29] <poolie> feel free to edit
[03:30] <igc> shall do :-)
[03:30] <Verterok> abentley: my email: guillo.gonzo, to check if and old merge request is still there
[03:31] <abentley> Okay, so the issue is that Bundle Buggy contains some merge directives with an invalid format string.
[03:32] <abentley> And when it's parsing those merge directives, the whole thing breaks.
[03:32] <poolie> ok, out for a bit
[03:33] <Verterok> ok, so it's only need a cleanup. (great it's not a bug :D )
[03:38] <lifeless> well it is a bug I think; because people may send bad directives anytime
[03:38] <lifeless> so it needs to either ignore them on input, or filter them later
[03:43] <Verterok> I assumed the old directive isn't a recently submitted one, but you right
[03:54] <AfC> lifeless: (I asked the other day about packs and bzr://, but I assume that if I switch both server and client+ repositories & branches to the new format it at least wont hurt, right?)
[03:56] <abentley> lifeless: I agree it's a bug.  I can patch around it in BB, but really bzrlib should never raise KeyErrors.
[03:59] <lifeless> abentley: I think letting KeyError though sometimes is ok
[03:59] <lifeless> abentley: but yeah BzrError stuff is usually nicer to work with
[03:59] <abentley> "Never" may be a bit strong, but I think it should be, pardon the pun, "the exception".
[04:00] <lifeless> :)
[04:01] <abentley> Our public APIs are generally higher-level than that.
[04:02] <lifeless> I think deliberately exposing KeyError is ugly, but I think trying to catch every possible underlying error is a timewaste
[04:21] <abentley> Sure.  I just think that cases where you can get KeyError are pretty obvious, and if you're surprised by them, it's probably programming error.
[04:29] <Odd_Bloke> I'm currently using bzr-svn to avoid SVN.  However, if I want to get a patch which looks like the one SVN would generate (to send upstream), what should I do?
[04:31] <lifeless> bzr diff --old svn://thing
[04:31] <lifeless> ?
[04:32] <lifeless> I'm packing it in today; I'm a little under the weather (trying to avoid catching the lurgy Lynne has had for a bit(
[04:32] <lifeless> [not to mention I started early ;))
[04:32] <Odd_Bloke> No '--old' option, apparently.
[04:33] <lifeless> diff svn:// .
[04:33] <lifeless> then
[04:33] <lifeless> because you have bzr < 1.0
[04:33] <Odd_Bloke> Thanks. :)
[04:33] <Odd_Bloke> You may now go off-duty. ;)
[04:39] <igc> abentley: is lca going to become the default merge algorithm?
[04:40] <abentley> I would like that.
[04:40] <igc> I'm thinking we should switch it early in a cycle to maximise testing
[04:40] <abentley> I'm already aware of at least one bug.
[04:41] <abentley> And it can't actually be LCA merge, because there are a few cases that LCA merge doesn't handle.
[04:41] <igc> ah - ok
[04:42] <abentley> So it needs to be "AutoSelectMerge", which would generally select LCA.
[04:42] <igc> understood
[04:42] <abentley> So it's not just flipping a switch.
[04:43] <abentley> But maybe I should get hacking on AutoSelectMerge.
[04:43] <igc> abentley: lca sounds pretty sweet to me
[04:43] <igc> just wanted to make sure we got more people benefiting from it by default
[04:44] <igc> once it is fully ready that is
[04:44] <abentley> It is pretty nice, and I'm using it as my default.
[04:44] <igc> via an alias?
[04:45] <abentley> Yeah.
[04:45] <abentley> I think it's the best in its class for handling criss-cross.
[04:46] <abentley> But there are other classes of history-based mergers that may handle certain cases better.
[04:46] <abentley> They are quite expensive for us to use, though.
[04:47] <abentley> And they rely on data that's typically hidden from the user, so where they go wrong, they're completely impenetrable.
[04:48] <igc> abentley: sounds like the basis for a conference talk later this year say :-)
[04:48] <abentley> Sure, that would be fun.
[05:40] <AfC> [Sorry for asking a question then dropping off; had an X crasher here]
[05:59] <pattern> is there any way to tell bazaar to exclude certain files/directories when doing a "bzr export" ?
[06:01] <AfC> What does the (native) prefix on each line on `bzr help formats` mean?
[06:02] <AfC> pattern: not that I've noticed. Technique we've used quite successfully across darcs, git, and now bzr is to do the export and then to trim the stuff that's unwanted and then create the tarball from there (... all in the `make dist` target)
[06:03] <AfC> pattern: [among other things, getting the name of the top directory being tarred up corresponding to the standard release version number pattern]
[06:04] <AfC> pattern: [for example, the dist target in http://research.operationaldynamics.com/bzr/java-gnome/mainline/Makefile (third target up from the bottom)]
[06:04] <AfC> pattern: [though yesterday I learnt there was a slicker way to determine the no changes state]
[06:06] <spiv> AfC: I believe (native) signifies that the format is not from a plugin.
[06:06] <AfC> spiv: that was my guess.
[06:06] <spiv> AfC: in my bzr install, subversion isn't native, and the rest are.
[06:06] <spiv> Which is right; only the subversion format in that list is from a plugin.
[06:06] <pattern> thanks, AfC
[06:23] <pattern> nice makefile you got there :)
[06:23] <pattern> AfC, tell me one thing... how do you populate that $(VERSION) in your makefile?
[06:24] <pattern> do you get if from bazaar?  or do you set it by hand?
[06:31] <AfC> pattern: our top level ./configure extracts it with a regex from a file called src/bindings/org/gnome/gtk/Version.java - it's a constant in the sources
[06:32] <AfC> which we then
[06:32] <AfC> write to an intermediate file.
[06:32] <AfC> Back up:
[06:32] <AfC> (context):
[06:32] <AfC> So my approach to the configuration problem (called "Equivalence", ie, it's equivalent to configure) is a few steps:
[06:33] <AfC> [and note that this is a Java specific discussion; Java is a funny beast and has specific requirements and opportunities]
[06:34] <AfC> A. In Java, you only need to to 3 things: 1. Locate prerequisite libraries and form a CLASSPATH env variable | -classpath VM argument.
[06:34] <AfC> 2. locate and qualify [test] Java compilers and then choose one
[06:34] <AfC> 3. locate and qualify [test] Java runtimes and then choose one
[06:35] <AfC> (that may be installed; I'm a Free Java hacker and I play in the Classpath community, so switching between runtimes to test compatibility etc is a big deal for me; note that most people just think in terms of "is Java installed"
[06:36] <pattern> how does the version constant get in to the source?
[06:36] <AfC> but given the lack of redistributability of Sun's Java for so so long (until about 18 months ago, only 6 months before Sun switched to announcing that Java 7 will be open source)
[06:36] <AfC> pattern: manually
[06:36] <AfC> pattern: that's the origin of the data
[06:37] <AfC> (ie, not data in configure.ac being pumped into a source file)
[06:37] <AfC> even people with Java installed often have it in some wacky place. Total nightmare. Getting better, but still)
[06:37] <pattern> ok
[06:38] <AfC> B. If you know what operating system you're on, you know *exactly* where to look for things. Debian policy says gtk.h is in exactly this spot. Fedora packages put their .jar files in exactly that directory. Etc.
[06:39] <AfC> So, figure out the OS, then probe specific locations. And if not found, you can tell the user exactly what package to install in order to to do something about it.
[06:39] <AfC> Anyway. That all takes place in what is (at present) a Perl file
[06:39] <AfC> [gotta hate prototypes. They never die. This is a > 1800 line Perl script. YEEETCH
[06:40] <AfC> totally not normalized, been meaning to refactor it for now 4+ years, etc
[06:40] <AfC> as it happens, at this point, I intend to fold this experience into Robert's fabricate. So this whole discussion is somewhat academic. But I will now answer your question]
[06:41] <AfC> I used to use Make entirely for the actual build.
[06:41] <AfC> (as it turns out, after ~20 years of happily and successfully using Make I hit, in the space of single week, two show stopping limitations. But anyway)
[06:42] <AfC> So what the top level ./configure spits out is
[06:42] <AfC> a Makefile fragment
[06:42] <AfC> [which we stash in .config]
[06:42] <AfC> with nothing but the variable definitions
[06:43] <AfC> the Makefile then simply does
[06:43] <AfC> -include .config
[06:43] <pattern> ah, i see
[06:43] <AfC> and ta-da is fully configured and instructed with options paths and variables
[06:43] <AfC> (anyway, the fact that the actual build is now a Python script is irrelevant - it sources the same data)
[06:43] <AfC> so to answer your question,
[06:44] <AfC> ./configure grabs the version number out that source file, and then puts it in a line like
[06:44] <AfC> VERSION=4.0.5
[06:44] <AfC> in .config
[06:44] <AfC> which is then available to the `make dist` target.
[06:44] <AfC> That's it
[06:44] <pattern> right
[06:44] <pattern> makes sense
[06:44] <pattern> thanks for taking the time to explain that to me, afc
[06:46] <AfC> Thanks. It's been a powerful design. I'm rather bitter I haven't had the time to refactor it. I have some pretty nice ideas about syntax for expressing prerequisite data  and configurations, (after all, I come from the Infrastructure Management world) but doing domain specific language parsers is sorta beyond my programming skill set at the moment.
[06:47] <AfC> I'm hoping that I'll be able to plug some of the conceptual aspects into lifeless's build system as it comes to fruition. Having had to write even an ad-hoc build engine I know how complex that work is - but how awesome it will be finally have something that's going to get it right.
[06:49] <pattern> sounds like you're on the right track
[07:50]  * igc dinner
[10:56] <AfC> bug 164288
[10:56] <ubotu> Launchpad bug 164288 in bzr "bzr serve leaves connections in CLOSE_WAIT a *long* time" [Medium,Confirmed] https://launchpad.net/bugs/164288
[10:56] <AfC> It's worse than I thought.
[11:09] <fullermd> It usually is.
[11:14] <AfC> heh
[11:55] <spiv> AfC: great blog post about open source
[12:41] <AfC> spiv: thanks mate
[13:00] <ubotu> New bug: #183504 in bzr "'bzr status' crash if .bzrignore containts  Latin-2 chars" [Undecided,New] https://launchpad.net/bugs/183504
[14:38] <abentley> ubotu: paste
[14:38] <ubotu> pastebin is a service to post large texts so you don't flood the channel. The Ubuntu pastebin is at http://paste.ubuntu-nl.org (make sure you give us the URL for your paste - see also the #ubuntu channel topic)
[15:29] <Odd_Bloke> Hmm, I currently have my bzr-svn branch checked out at the root (i.e. with trunk, branches, tags).  Is there a way I can transfer the changes I've made to a new checkout of just 'trunk' without losing history?
[15:30] <jelmer> Odd_Bloke: No
[15:30] <jelmer> sorry
[15:30] <Odd_Bloke> jelmer: Not your fault, I suck. :)
[15:31] <ubotu> New bug: #183539 in bzr-log-rss "Malformed XML" [Undecided,New] https://launchpad.net/bugs/183539
[15:31] <Odd_Bloke> I'm just going to end up submitting a single patch upstream anyways. :p
[15:41] <Odd_Bloke> jelmer: I've just got http://paste.pocoo.org/show/21677/ .  Any idea what I'm doing wrong?
[15:41] <jelmer> yes, the version of bzr-svn you're using is too old for the version of bzr
[15:42] <Odd_Bloke> Oh wait, I put the new one in the wrong place. ¬.¬
[15:43] <Odd_Bloke> There we go.
[15:43] <Odd_Bloke> All is well with the world.
[15:44] <Odd_Bloke> jelmer: Thanks. :)
[16:04] <Odd_Bloke> Am I right in thinking that a branch of an SVN repo is resumable?
[16:06] <jelmer> Odd_Bloke: only if it's being run inside a shared repository
[16:07] <Odd_Bloke> \o/
[16:07] <Odd_Bloke> I did it right! :D
[16:07] <Odd_Bloke> jelmer: Thanks again.
[16:24] <dlee> Anyone know if the Windows version of Bzr is supposed to handle gracefully the problem of having file name case change at random?  I'm working with an app that has the annoying habit of saving files with semi-random case for characters in the file extension.  This generated a conflict on a pull while ago.
[16:35] <ubotu> New bug: #183559 in bzr "bzr switch should have a -r option" [Undecided,New] https://launchpad.net/bugs/183559
[16:46] <Solarion> is there a way to make bzr-svn not push a bunch of commits but instead just one, final commit?
[16:46] <Solarion> i.e. when I have made a lot of small changes ('cause that's my style), and then push it back to the svn server, bzr-svn commits each commit I made instead of just bringing the svn server up to the current version in one single commit.
[16:47] <luks> commit to a feature branch, merge to trunk when it's ready, push to svn only from trunk
[16:48] <Solarion> "feature branch" is what?
[16:48] <luks> bzr branch trunk foo
[16:48] <Solarion> one I'm actively developing
[16:48] <Solarion> right
[16:48] <luks> a branch dedicated to a feature
[16:48] <Solarion> sounds complicated, but it's better than the insanity of keeping bzr and svn from stomping on each other in the same directory
[16:50] <rjek> I am routinely amazed by the number of people on the Subversion mailing list who can't operate a mail client.
[16:51] <Solarion> luks: so I geuss the answer is "no"; I'll have to maintain my own separate repo if I want to stay sane.
[16:51] <fullermd> rjek: I'd like to think I would be, but I think the N other mailing lists I follow have inured me to being amazed by such   :p
[16:51] <luks> branch, not repository
[16:51] <Solarion> luks: what is difference?
[16:51] <jelmer> Solarion: it would be possible to provide a plugin that automates what luks describes
[16:52] <Solarion> jelmer: I'd rather just not commit each commit
[16:52] <luks> Solarion: http://doc.bazaar-vcs.org/latest/en/user-guide/index.html#branch
[16:52] <luks> Solarion: then don't commit each commit :)
[16:52] <fullermd> Commit to not commiting each commit?
[16:52] <Solarion> luks: I thought committing small changes was good
[16:52] <rjek> fullermd: I suppose so.  I like to still have some hope for the human race.
[16:53] <Solarion> luks: ah, thanks for the link
[16:53] <jelmer> Solarion: combining those commits would mean changing them
[16:53] <jelmer> Solarion, that breaks the basic model of bzr-svn
[16:53] <fullermd> rjeck: Hope for...   dude.  Myspace exists.  It's too late to hope.
[16:53] <rjek> Why would you not want all the smaller individual changes pushed to the upstream subversion?
[16:53] <Solarion> jelmer: but it sounds like the commits are already combined when merging into another bzr branch
[16:53] <rjek> fullermd: You make a depressing but good point.
[16:54] <rjek> ie, why would you want to lose history?
[16:54] <fullermd> The thing to hope for now is "Maybe the asteroid will hit closer to them than me, so I can enjoy their demise before embracing mine   ;)
[16:54] <rjek> :)
[16:55] <Solarion> rjek: apparently my boss wants each individual commit to build, not just HEAD
[16:55] <Solarion> I don't want to guarantee that each commit will build; I want to keep a finer-grained history
[16:55] <Solarion> only make sure that what I push to svn actually builds
[16:55] <jelmer> Solarion: You have to commit a merge - that creates a new commit
[16:56] <luks> merging branches to trunk is really the best solution for this
[16:56] <jelmer> Solarion: "bzr push" is meant to just propagate changes, not change them in any way
[16:56] <jelmer> Solarion: furthermore, if you combined revisions, you would have to have push change your local branch
[16:56] <Solarion> so I'm just failing to use the tool properly.  :)
[16:57] <luks> Solarion: just have two branches, "trunk" and "work"
[16:57] <luks> commit small changes to work
[16:57] <luks> and then you are ready, merge to trunk, push to svn
[16:57] <rjek> Solarion: The usual way of doing that is to push to a branch in svn, and then merge that branch.
[16:57] <luks> (that's if you don't want to deal with feature branches)
[16:58] <Solarion> but I'm already maintaining a feature branch, my local copy.
[16:58] <luks> then you need also a mirror of svn trunk
[16:58] <Solarion> luks: why do I need a mirror?
[16:59] <rjek> If you're just using bzr as a method of doing disconnected subversion, and you want your branches pushed as one big change, svk may be a better solution.
[16:59] <luks> to merge your feature branch to it
[16:59] <Solarion> rjek: I'm using bzr as a method of staying sane.  :)
[16:59]  * rjek wonders if you can do some evil by having an svn checkout also be a bzr branch :)
[16:59] <rjek> add .bzr to the svn ignore list. :)
[16:59] <Solarion> rjek: I've done that.  It kinda sucks.
[16:59] <rjek> I'm not surprised.
[17:00] <Solarion> the suckage is maintainable when you just have a copy on your workstaion, but keeping workstation and notebook in sync gives you the full suckage
[17:01] <rjek> Keep a checkout of svn to one side, and then get bzr to give you a patch that you apply to the svn checkout?
[17:01] <rjek> Personally, I'd push to a branch on the svn server, and then merge to trunk: that way revisions on the trunk always build and you don't lose history.
[17:06] <Solarion> rjek: what do you mean precisely?
[17:07] <Solarion> 3 branches: svn repo, bzr trunk, bzr feature.  Merge between repo and trunk to maintain sync, push/pull between feature and trunk?
[17:15] <fullermd> Other way around, I'd think.
[17:16] <lucky> there was a command, at least back in the 0.11 version, that would show me the size of my repository in KB and so on, has it been removed?
[17:16] <Solarion> merge between feature and trunk; push/pull between trunk and svn?
[17:17] <fullermd> Yeah.  Or better, automate the second part by making the trunk a checkout of the svn tree.
[17:17] <fullermd> Then you can just 'update ; merge ../feature ; commit' to bring stuff in.
[17:23] <Solarion> I need trunk to be centralized
[18:40] <abentley> Solarion: by "centralized", you mean you want it to be located on a central server?
[18:42] <Solarion> abentley: yeah
[18:42] <Solarion> I think I've figured out a good system
[18:43] <Solarion> plus, whenever it is I leave, my bzr branch can migrate with me without any loss of history or increase in annoyance
[18:44] <abentley> Solarion: you know about checkouts, right?
[19:16] <Solarion> abentley: "know about" in what sense?
[19:17] <abentley> That they allow you to keep your branch in one place and your working directory somewhere else.
[19:17] <Solarion> "they" who?
[19:18] <abentley> checkouts
[19:18] <Solarion> you mean checkouts from svn
[19:18] <abentley> I mean Bazaar checkouts
[19:18] <Solarion> there's no such thing as a bzr checkout
[19:19] <abentley> I use them daily and was involved in their implementation.
[19:20] <dato> lucky: bzr info -v
[19:20] <abentley> See "bzr help checkouts"
[19:20] <Solarion> my impression is that the two branches are on equal footing, aside from policy decisions
[19:20] <dato> lucky: giving the size needed a bit of time, so it was moved from `bzr info` to `bzr info -v`
[19:21] <abentley> Solarion: I'm not talking about branches, I'm talking about checkouts.
[19:22] <abentley> Branches, are indeed equal.
[19:22] <Solarion> abentley: ah, I wasn't aware of this then
[19:25] <abentley> If you want to maintain a branch on a central server, checkouts are a useful tool for that.
[19:26] <Solarion> indeedy
[19:30] <hendrixski> I'm going to have to pull an earlier revision of something from an svn that happened before a certain date which I can easily find by doing bzr log
[19:30]  * Solarion reads up on checkouts
[19:31] <hendrixski> now I've tried this before, and I remember it's not just the revision number I need to get that from svn
[19:31] <hendrixski> but forgot what... I was hoping someone can tell me what I'm supposed to be looking for?
[19:34] <lucky> dato: ah, okay, thank you
[19:34] <lucky> dato: thats what i was looking for
[19:34] <dato> lucky: you're welcome
[19:36] <jelmer> dato: any chance you can sponsor an upload of bzr-pqm?
[19:36] <dato> jelmer: yeah, send me a mail with the dsc url, and I can do it tomorrow
[19:36] <hendrixski> like, I think I need a revision ID, but I can't seem to find a parameter for bzr log in the man pages that would also show me the reivision id
[19:36] <dato> hendrixski: --show-ids?
[19:37] <jelmer> dato: Cool, thanks
[19:37] <hendrixski> dato, that did it
[19:39] <hendrixski> alrighty, now let's use that revid to pull from svn :-p
[19:39]  * hendrixski crosses fingers
[19:42] <Solarion> abentley: interesting thing
[20:42] <dysinger> So anyone in here using bzr-svn on OS X Leopard ? :D I can't get it to work.
[20:42] <rjek> Bah, I want to put over 100MB of test case data into version control.  That's not going to be comfortable.
[20:43] <foom> well, with svn it's no problem. dunno about bzr. :)
[20:43] <rjek> In svn, I'd just bung it in with the source, and choose not to check it out when I'm at the wrong end of a wet string.
[20:44] <rjek> But that's not really an option in bzr.
[20:44] <LeoNerd> Put it in its own branch?
[20:44] <rjek> I could do.
[20:44] <LeoNerd> It's a result of different world views. bzr has revisions. Within a revision, there are files
[20:44] <rjek> But it kinda breaks my neat hierachy. :)
[20:44] <LeoNerd> CVS/SVN have files. Within files there are revisions
[20:44] <LeoNerd> These are very basic and different ways to look at the world; one can't easily fit the other
[20:45] <rjek> Indeed.
[20:45] <foom> svn stores files within revisions.
[20:45] <LeoNerd> Not really.. SVN is a versioned filesystem
[20:45] <foom> it's just that it lets you mix and match in your working directory
[20:45] <foom> the repository structure is completely revision-based
[20:46]  * rjek nods.
[20:46] <LeoNerd> It's a versioned filesystem, where a commit on a directory atomically references all files witihn it
[20:48] <lifeless> dysinger: I know some folk have
[20:50] <dysinger> lifeless:  I have been dying to get off of git-svn if you could direct me it would be awesome.  I have been banging my head with svn and patches on leopard with no luck.  Leopard comes with SVN/Python and SVN/Python SWIG pre-installed and prefers it's own install over /usr/local
[20:52] <lifeless> dysinger: you can probably control that with PYTHONPATH, which prepends to the path python looks for such libraries
[20:52] <foom> dysinger: why dying to get off of git-svn?
[20:52] <lifeless> foom: to use bzr ? :)
[20:52] <foom> lifeless: obviously, but I thought maybe there was a reason. :)
[20:52] <dysinger> Yeah I don't mind git-svn so much as the rest of my team wouldn't use it because of the learning curve.
[20:52] <dysinger> bzr is easier to wrap your mind around.
[20:52] <lifeless> why did the chicken cross the road?
[20:53] <Manfre> so i could eat it
[20:53] <dysinger> and you don't have to do things like git push dev :refs/head/my-branch
[20:53] <dysinger> and other BS
[20:53] <foom> i mean, I have a reason why I don't want to use git-svn: it doesn't seem to store enough data in svn to allow cross merging with other git-svn users and pulling the same changes from svn to work
[20:54] <dysinger> I cross merge with other git-svn users
[20:54] <foom> last time I tried it was 6 months ago or so I think
[20:54] <dysinger> But it's a PITA - basically it means pull and pushing to SVN & also pulling and pushing to a server with a clone of your git-svn
[20:54] <dysinger> so you can share your local branches with someone else
[20:55] <dysinger> git is way to complex for the average user IMO
[20:55] <lifeless> dysinger: I have noticed you popping in and out on IRC... if I can make a suggestion; open a 'question' on bzr-svn - https://answers.launchpad.net/bzr-svn
[20:55] <dysinger> I could only sway my top dev to try it with me.  Everyone else on the team is lost with Git.
[20:55] <foom> yes, it really does have a poor UI.
[20:55] <lifeless> dysinger: this is a support forum, and will mean you don't have to be online at the same time as the bzr-svn developer[s]
[20:55] <foom> i'm sure it makes sense if you're linus. other than that, no, not really. :P
[20:56] <dysinger> lifeless: sure.
[20:56] <dysinger> thanks - I just am used to using IRC
[20:56] <lifeless> IRC is great but it can be lossy; and this is dragging on for you :)
[20:57] <dysinger> I already spoke to the bzr-svn maintainer about it a couple weeks back with no luck.
[20:57] <dysinger> I'll just keep using bzr for private projects for now.
[20:57] <foom> you could do the bzr-svn bit on a different machine. :)
[20:58] <jelmer> 'evening folks
[20:59] <fullermd> Jeez, didn't even have to say his name that time...
[21:11] <dysinger> I added the OS X Leopard bzr-svn to questions at launchpad.  Hopefully I can help and we can get to the bottom of the problem so that all OS X users can use it.  DVCS is only useful to a lot of people if they can still interact with SVN.
[21:11] <dysinger> https://answers.launchpad.net/bzr-svn/+question/22326
[21:14] <jelmer> dysinger: You may also have to run 'make install'
[21:14] <dysinger> That's right there in the script
[21:14] <dysinger> ...
[21:14] <dysinger> make check
[21:14] <dysinger> sudo make install
[21:14] <dysinger> make swig-py
[21:14] <dysinger> make check-swig-py
[21:15] <dysinger> It puts everything in the right place
[21:15] <dysinger> and
[21:15] <dysinger> # Check it ---
[21:15] <dysinger> python -c "import svn.delta; print svn.delta.__file__"
[21:15] <dysinger> finds the right python script
[21:15] <dysinger> but python -c "from svn.delta import svn_delta_invoke_txdelta_window_handler" doesn't work
[21:16] <jelmer> what does the following print
[21:16] <jelmer> python -c "import svn.delta; print svn.delta.__file__"
[21:17] <jelmer> also, is LD_LIBRARY_PATH portable to Mac OS X?
[21:17] <jelmer> it looks like that should be DYLD_LIBRARY_PATH
[21:17] <dysinger>  OK I'll try that
[21:18] <dysinger> one sec
[21:34] <dysinger> ok sorry I got distracted on work.  Before patching svn I get /System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/svn/delta.pyc as expect for python -c "import svn.delta; print svn.delta.__file__" ...
[21:35] <dysinger> After I got /usr/local/lib/svn-python/svn/delta.pyc
[21:35] <jelmer> and it still doesn't work?
[21:35] <dysinger> no
[21:36] <dysinger> I tried both LD_LIB... and DYLD_LIBRARY_PATH
[21:36] <dysinger> set to /usr/local
[21:36] <dysinger>  python -c "import svn.delta; print svn.delta.__file__"
[21:36] <dysinger> Duece:subversion-1.4.6 tim$
[21:36] <dysinger> Duece:subversion-1.4.6 tim$ python -c "from svn.delta import svn_delta_invoke_txdelta_window_handler"
[21:36] <dysinger> Traceback (most recent call last):
[21:36] <dysinger>   File "<string>", line 1, in <module>
[21:36] <dysinger> ImportError: cannot import name svn_delta_invoke_txdelta_window_handler
[21:38] <jelmer> does grepping for svn_delta_invoke_txdelta_window_handler in /usr/local/lib/svn-python/svn/delta.py return anything?
[21:42] <dysinger> no
[21:43] <jelmer> are you sure the patch applied ok?
[21:43] <dysinger> The patch for svn applied cleanly
[21:43] <jelmer> Did Subversion rerun swig?
[21:43] <dysinger> one sec
[21:44] <dysinger> Patch seems to have applied ok
[21:44] <dysinger> patching file subversion/bindings/swig/include/apr.swg
[21:44] <dysinger> patching file subversion/bindings/swig/include/proxy_apr.swg
[21:44] <dysinger> patching file subversion/bindings/swig/include/svn_types.swg
[21:44] <dysinger> patching file subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
[21:44] <dysinger> Hunk #4 succeeded at 533 (offset 3 lines).
[21:44] <dysinger> Hunk #5 succeeded at 640 (offset 3 lines).
[21:45] <dysinger> Hunk #6 succeeded at 1534 (offset -1 lines).
[21:45] <dysinger> Hunk #7 succeeded at 1552 (offset -1 lines).
[21:45] <dysinger> Hunk #8 succeeded at 1603 (offset -1 lines).
[21:45] <dysinger> Hunk #9 succeeded at 2272 (offset -1 lines).
[21:45] <dysinger> patching file subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
[21:45] <dysinger> Hunk #2 succeeded at 202 (offset 1 line).
[21:45] <dysinger> Hunk #3 succeeded at 319 (offset 1 line).
[21:45] <dysinger> patching file subversion/bindings/swig/svn_client.i
[21:45] <dysinger> patching file subversion/bindings/swig/svn_delta.i
[21:45] <dysinger> Hunk #2 succeeded at 152 (offset 3 lines).
[21:45] <dysinger> patching file subversion/bindings/swig/svn_ra.i
[21:45] <dysinger> patching file subversion/bindings/swig/svn_wc.i
[21:45] <dysinger> Duece:subversion-1.4.6 tim$
[21:46] <dysinger> grepping in the source dir now returns
[21:46] <dysinger> Duece:subversion-1.4.6 tim$ grep -r svn_delta_invoke_txdelta_window_handler *subversion/bindings/swig/svn_delta.i:svn_error_t *svn_delta_invoke_txdelta_window_handler (
[21:46] <dysinger> Duece:subversion-1.4.6 tim$
[21:46] <jelmer> yes, but was SWIG rerun?
[21:46] <dysinger> I did make swig-py after i built iit
[21:46] <dysinger> it
[21:47] <dysinger> and make check-swig-py and make install-swig-py
[21:48] <jelmer> if you grep for svn_delta_invoke_txdelta_window_handler after that, does it return anything?
[21:48] <jelmer> anything but the .i file, I mean
[21:49] <dysinger> not in /usr/local but let me check again in the build dir.  I wouldn't think it would be in the build dir and not in /usr/local - one sec.
[21:49] <jelmer> then it didn't run SWIG
[21:49] <dysinger> should I be doing make swig and not make swig-py ?
[21:50] <dysinger> Sorry I am a ruby/java guy and novice python
[21:50] <jelmer> do you have SWIG installed?
[21:50] <dysinger> y
[21:52] <jelmer> can you try running extraclean-swig and building it again?
[21:52] <jelmer> make extraclean-swig, that is
[21:52] <dysinger> srue
[21:52] <dysinger> sure one min
[21:54] <dysinger> IF we can figure this out and it works I am going to go get some Champagne right now and spray it everywhere and put it on my blog with instructions.  :)  (still compiling)
[21:55] <ubotu> New bug: #183636 in bzr "Internal error when switching an anonymous svn checkout to an authenticated one" [Undecided,New] https://launchpad.net/bugs/183636
[22:03] <jelmer> :-) Any luck?
[22:03] <dysinger> not yet still working on it
[22:04] <dysinger> make extraclean wiped out my ./configure I think it wouldn't compile
[22:04] <jelmer> just extraclean-swig should be sufficient rather than extraclean
[22:05] <dysinger> y that's what I meant
[22:05] <dysinger> but now I get  make swig-py
[22:05] <dysinger> make: *** No rule to make target `subversion/bindings/swig/python/svn_client.c', needed by `subversion/bindings/swig/python/svn_client.lo'.  Stop.
[22:05] <dysinger> re configure and re make doesn't fix
[22:05] <dysinger> :/
[22:06] <dysinger> should I even need extraclean if I am applying the patch to a fresh checkout?
[22:07] <dysinger> I wouldn't think so
[22:08] <jelmer> dysinger: did configure find swig?
[22:08] <dysinger> Let me check - I would think so make swig-py and check-swig-py works.
[22:09] <jelmer> dysinger: swig isn't necessarily used for those targets
[22:09] <dysinger> oh ok - will check
[22:10] <dysinger> That may be the problem
[22:11] <dysinger>  ./configure   --without-apache   --without-apxs   --with-ssl   --prefix=/tmp   --libdir=/usr/local/lib | grep swig
[22:11] <dysinger> checking for swig... /usr/bin/swig
[22:11] <dysinger> configure: WARNING: Detected SWIG version 1.3.31
[22:11] <dysinger> checking swig version... 1.3.31
[22:11] <dysinger> configure: WARNING: Subversion requires 1.3.24 or later, and is known to work
[22:11] <dysinger> configure: WARNING: with versions up to 1.3.29
[22:11] <dysinger> configure: Configuring python swig binding
[22:12] <dysinger> I wish Apple wouldn't try to Jam on bunch of dev tools in the default system.
[22:13] <dysinger> OS X comes with everything Python / Ruby / Java / Perl and every lateral tool you can think of by default. :/
[22:13] <dysinger> I like /usr/local and from scratch
[22:13] <lifeless> you could use ubuntu on that hardware :)
[22:13] <dysinger> I have tried it - it's cool on the MBP
[22:14] <fullermd> OS X comes with ubuntu by default?   ;)
[22:14] <dysinger> no you have to install it.
[22:14] <dysinger> I tried it when I had to reinstall OS X anyway a couple months ago on my MBP
[22:14] <dysinger> Everything works.
[22:15] <dysinger> I doubt it would "just work" on my Mac Pro 8-core Xeon though
[22:15] <dysinger> Who knows
[22:16] <dysinger> I am a die hard Linux/BSD fan too - not just a mac nerd - I just like the mac desktop
[22:16] <dysinger> It's still better than Gnome IMO
[22:16] <dysinger> I use all Xen servers though
[22:16] <dysinger> I wish OS X had virtualization like that
[22:18] <dysinger> jelmer - thanks for helping again - I am done banging my head.
[22:18] <jelmer> dysinger: it works now?
[22:18] <dysinger> no
[22:18] <dato> heh
[22:18] <dysinger> I'll keep trying
[22:19] <dysinger> If you know of anyone else trying on OS X Leopard - i have that question open
[22:19] <dysinger> and my address is tim@dysinger.net
[22:19] <fullermd> Well, I like my environment better than Gnome too, but it's kinda the opposite direction from Mac   :p
[22:19] <dysinger> KDE ?
[22:19] <fullermd> ctwm
[22:20] <dysinger> wow
[22:20] <dysinger> I use to only ever use blackbox and xterm
[22:20] <dysinger> 10 years ago
[22:21] <jelmer> dysinger: what fails now?
[22:21] <fullermd> It does what I want it to, and otherwise stays the heck out of my way and doesn't burden me with icons and inferior icon managers and trays and docks and all that crud.  Perfection   :)
[22:23] <jelmer> dysinger: are you using GNU make?
[22:24] <dysinger> Jelmer - well after I re-downloaded subversion 1.4.x source again, applied the svn patch, configure, make && make swig-py and grep svn_delta_invoke_txdelta_window_handler I get only the subversion/bindings/swig/svn_delta.i file
[22:24] <fullermd> Looks like a gmake message.
[22:24] <dysinger> GNU Make 3.81
[22:25] <jelmer> dysinger: you really need to run extraclean-swig
[22:25] <jelmer> before check-swig-py
[22:25] <dysinger> ok one sec
[22:27] <dysinger> Same as last time.  As soon as I run extraclean-swig it won't compile any longer
[22:27] <dysinger> make: *** No rule to make target `subversion/bindings/swig/python/svn_client.c', needed by `subversion/bindings/swig/python/svn_client.lo'.  Stop.
[22:28] <jelmer> does that change if you run autogen.sh without the --release argument?
[22:28] <dysinger> ok there we go
[22:31] <jelmer> actually, did you run with --release earlier?
[22:35] <dysinger> OMG it works
[22:35] <dysinger> party time
[22:35] <dysinger> I will write it up in my blog and on the wiki
[22:36] <dysinger> thanks jelmer
[22:36] <jelmer> it's already on the wiki...
[22:36] <lifeless> dysinger: great
[22:36] <dysinger> OS X is on the wiki?
[22:36] <jelmer> dysinger: The installation instructions for python-subversion on the wiki page already included "autogen.sh --release"
[22:36] <lifeless> jelmer: perhaps a script people can run?
[22:37] <dysinger> Yeah copying that straight to mac didn't work and the subversion version is old
[22:37] <jelmer> lifeless, it's a copy-n-pastable at the moment
[22:37] <jam> spiv: ping
[22:51] <lifeless> abentley: ping
[22:52] <abentley> lifeless: pong
[22:52] <lifeless> abentley: I have a little design thing I want to talk about before coding; because its likely that if I have it wrong you'll bb:reject me :)
[22:52] <abentley> Fire away.
[22:53] <lifeless> abentley: here is the context, I want to change 'missing_revision_ids' to return a SearchResult (which I sent a patch to introduce that object yesterday)
[22:53] <lifeless> but missing_revision_ids _currently_ is defined as returning in topological order
[22:54] <lifeless> the reason to do this is that the search result has both all the keys (for local data pulling), and the recipe to recreate the search (for hand off over RPC to get a data stream)
[22:54] <lifeless> currently on initial pull of e.g. python you upload 50K revision ids. This takes a while ;)
[22:55] <abentley> Okay, makes sense so far.
[22:55] <lifeless> now, I'm going to deprecate and rename missing_revision_ids for api versioning, but thats not what this discussion is about :)
[22:55] <lifeless> the question is about the impact...
[22:55] <lifeless> SearchResult doesn't know about topological ordering, and I've given it a few hours thought and it seems hard to really guarantee good results
[22:56] <lifeless> pretty trivial searches can start unordered; we can only really order by accumulating all the parent data (e.g. the graph) and then doing a topo_sort at the end
[22:56] <lifeless> (e.g. A:[B], B:[C], C[NULL], make_breadth_first_search(A, C)
[22:57] <abentley> If you're defining a new API, I don't think you need to require topo ordering.
[22:58] <lifeless> goodo. the corollary is that fetchers that want topological ordering will need to do that post-getting-the-list-of-keys
[22:58] <igc> morning
[22:58] <lifeless> anyhow, sweet. I'll make it so.
[22:58] <lifeless> hi igc
[22:58] <igc> hi lifeless
[22:59] <abentley> I think topological ordering is nice if cheap, but frequently the callers don't need it.
[22:59] <jam> morning igc
[22:59] <abentley> So not worth paying a big price for in the general case.
[23:00] <abentley> As long as there's no backwards compatibility issue, I'm quite happy to drop it.
[23:00] <lifeless> abentley: its actually really hard to reliably generate due to history shortcuts
[23:00] <spiv> jam: pong
[23:01] <jam> spiv: I'll just mention it in the phone call
[23:01] <lifeless> hi, I'm joining in today, not in the zone atm
[23:01] <spiv> ok
[23:01] <jam> spiv: getting some weird results from your new chunked streaming api
[23:03] <jam> ... why doesn't gvim get an entry in the Applications menu
[23:16] <spiv> jam: do you have a -Dhpss -Dtimes log for the slow pull?
[23:16] <abentley> jam: I think gvim should go under "games".  It's been described as using a video game to edit files, and that fits for me.
[23:19] <poolie> spiv, i thought -Dtimes was going to always be on?
[23:19] <poolie> jam, i think you can turn it on in 'edit menus'
[23:19] <poolie> i agree it's weird