[00:09] <yeban> what would be the bzr equivalent of 'git show'
[00:10] <bob2> bzr diff -c asdfasdf
[00:10] <bob2> for the common case
[00:13] <yeban> bob2: I want to see the state of one particular file for a revision
[00:13] <yeban> i did not know about -c though, thanks :)
[00:14] <bob2> bzr cat -c asdfsd filename
[00:17] <spiv> Bugs like bug 745083 are why I wanted to have catch-all try/excepts around calls to hooks on plugins.
[00:18] <yeban> bob2: its bzr cat -r not -c, thanks :)
[00:19] <bob2> oops
[00:19] <spiv> Yes, it would be a bit weird if 'bzr cat' took a revision range :)
[01:31] <psusi> I just had a stuck lock on lp.  bzr help break-lock makes it sound like it is not safe if you don't first kill the process, but I can't do that on lp.  Is it safe, or not?
[01:47] <spiv> psusi: the process that matters isn't the one on lp, but the client that took out the lock
[01:48] <spiv> psusi: so if it's a stale lock because e.g. your connection dropped out while pushing to launchpad, then it's your own lock for a (local) process that's already failed, and you can break it completely safely.
[01:48] <spiv> psusi: the lock info bzr shows you should help you see who took the lock out
[01:51] <psusi> spiv, ohh... well I took it out, but on the lp server... I thought that meant that the bzr process running on the server is what was holding the lock, and it either is hung, or did not remove the lock when it died
[01:52] <psusi> it lists a pid, which I took to be a pid on the server, not a local one
[01:56] <spiv> psusi: in a sense the lock was created by the server process, but it's entirely on behalf of your local process
[01:57] <spiv> (The pid is a pid from the server)
[01:57] <psusi> spiv, right, but it is the server process that creates and clears the lock, so don't I need to be sure that process is dead?
[02:00] <psusi> in fact, whether the process hung or somehow exited without clearing the lock is a bug isn't it?  even if I drop connection or ctrl-c my local bzr, the server side should clean up the lock before exiting shouldn't it?
[02:04] <spiv> psusi: the lock lifetime is controlled by the client
[02:05] <spiv> psusi: it can be legitimate for a client to lock and disconnect without unlocking
[02:05] <spiv> (although that would be very unusual)
[02:06] <spiv> psusi: the smart server protocol is stateless between requests, so the fact the connection went away doesn't imply that any locks that were taken should be dropped.
[02:16] <psusi> hrm... that's weird
[02:16] <psusi> why is it stateless?  I would think the protocol should be transaction based
[02:20] <spiv> Partly so it can be carried over HTTP smoothly.
[02:23] <psusi> why is http at all incompatible with a transaction based protocol?  send request, get reply is how http works... seems perfectly suited for a transaction
[02:27] <spiv> And that's what we do.
[02:28] <spiv> "Take lock" is one of those requests.
[02:29] <spiv> The problem really is that we take multiple requests for things that in principle could be done in single requests.
[02:29] <spiv> If you're curious about the sort of requests being made, add -Dhpss to your command line and look at the extra logging that adds to ~/.bzr.log
[04:26] <jbowtie> So, I occasionally have an issue where revisions being imported from my external(tfs) repository end up as dead heads in the repository.
[04:27] <jbowtie> I've tracked down and eliminated most of bugs in bzr-tfs that cause these.
[04:28] <jbowtie> However, I have a (very large) existing repository where I need to splice in a single revision where it belongs in the branch history.
[04:33] <jbowtie> I might be able to get away with merging it into the current branch, the plugin just follows the LHS currently as it only imports a single branch.
[04:34] <jbowtie> What's the preferred method for dealing with dead heads in a way that won't affect the LHS ancestry?
[04:35] <lifeless> ignore them?
[04:36] <jbowtie> Most of the time I can get away with that, but not in this instance.
[04:37] <jbowtie> I was thinking about trying to actually insert it into the revision graph for the branch, but worried that might have evil side effects.
[04:39] <jbowtie> If I actually corrupt the repository I'm looking at working the whole weekend to re-import the trunk. Don't want that.
[04:40] <ScottK> Make a backup copy first?
[04:41] <jbowtie> ScottK: I can do that, I was just hoping someone had an informed opinion before I started doing open-heart repository surgery.  :)
[04:42] <ScottK> My informed opinion is take a backup no matter what anyone says here about what your odds of success are.
[04:42] <ScottK> About the bzr part, no idea.
[04:51] <spiv> I don't understand how or why "splice in a single revision where it belongs in the branch history" is related to having dead heads in your repository.
[04:52] <spiv> Or why you can't just ignore the dead heads?  By definition they have no impact of the ancestry, LHS or otherwise, of a branch.
[04:53] <spiv> I think I must be misunderstanding what you're asking.
[04:54] <jbowtie> spiv: so the actual revision graph is r1->r2->r3; the bug in the import process created the graph r1->r3 and r2 ends up as a dead head.
[04:55] <jbowtie> spiv: I'm in the position where I want to correct the revision graph by hand.
[04:55] <jbowtie> I could re-run the (now fixed) import process but that's a days-long affair.
[04:56] <spiv> Well, all you can do there is generate a new r3', with a new revision ID, with the contents of r3 and a parent of r2.
[04:57] <jbowtie> In other words, a merge, yes?
[04:58] <spiv> No, just a regular descendant.
[04:59] <spiv> i.e. r3' would have a parent list of [r2] to match the graph you desire.
[04:59] <spiv> Merges create revisions with more than one parent.
[04:59] <poolie> hooray
[04:59]  * poolie is reconnected
[05:00] <spiv> poolie: hurrah!
[05:00] <poolie> only over 3G, but usable 3G
[05:00] <poolie> vodafone was atrocious
[05:02] <jbowtie> Oh, I see the difference. That ends up rebuilding the whole branch after r3 as well, though. Still, it's at least viable.
[05:03] <poolie> i wonder if bzr push will be tolerable
[05:03] <spiv> jbowtie: yes, it's rebasing
[05:04] <jbowtie> Oh!  I never understood what rebasing was before! Now I get it!
[05:06] <jbowtie> So maybe bzr-rewrite will solve my problem.  Thanks, this was extremely helpful.
[05:08] <spiv> jbowtie: glad I could help :)
[05:08] <poolie> wow, even lp and bzr are quite usable
[05:08] <poolie> that's a remarkable improvement
[05:08] <poolie> heh :)
[06:13] <poolie> spiv were you going to file a bug about, um
[06:14] <poolie> oh, explaining the likely hook or plugin for an error
[06:14] <poolie> and something else too?
[06:15] <spiv> The 'recent event' dict
[06:33] <echo-area> "bzr merge -r b..a branch" (a < b) may result in unresolvable conflict on changed files between revisions a and b.  Is this desired?
[06:40] <spiv> echo-area: what do you mean by "unresolvable conflict"?
[06:42] <echo-area> spiv: I tried many ways, all of them failed to resolve the conflicts.
[06:42] <spiv> From bzr's perspective all conflicts are resolvable, in the extreme by discarding the conflicting changes entirely with e.g. "bzr revert ."
[06:42] <spiv> echo-area: can you pastebin the output of the bzr merge, or of 'bzr conflicts'?
[06:49] <echo-area> spiv: The only way to resolve is by reverting all changes, and avoiding use of bzr merge.  A moment please, I'll show you bzr conflicts
[06:51] <echo-area> spiv: http://pastebin.com/4X4g2RSM
[06:52] <echo-area> spiv: Problem is that, file1 was added in revision 1, and bzr merge -r 1..0 tries to delete file1.
[06:53] <echo-area> The conflict comes from revision 3, in which revision file1 was changed
[06:53] <echo-area> (IMHO)
[06:54] <echo-area> The only way to achieve what I want is to manually remove file1.  While in larger context this is not that handy
[06:57] <spiv> echo-area: revert is not the only way to resolve that conflict
[06:58] <echo-area> spiv: What is the other possible way?
[06:58] <spiv> echo-area: it's certainly a conflict if the selected revisions attempt to modify a deleted file.
[06:59] <spiv> echo-area: it's up to you what you think is the right resolution: the most common choice I think is to ignore the changes to the deleted file.
[06:59] <echo-area> spiv: I tried that.  Paste come in a minute.
[07:00] <spiv> In which case deleting that file1.THIS file and doing 'bzr resolve file1' or maybe 'bzr resolve file1.THIS' should work.
[07:00] <spiv> Or even just 'bzr resolved --all'
[07:00] <spiv> There's also 'bzr resolve --take-this' and 'bzr resolve --take-other', which you may find useful.
 'bzr resolve --all' is evil, it just deletes all known conflicts without any attempt to resolve them, it should be used as a last resort only (think throwing sea water on nuclear plants)
[07:03]  * vila almost there
[07:03] <spiv> vila: if that's what it takes to stop a meltdown… ;)
[07:06] <echo-area> spiv: Hm.  Delete file1 and bzr resolve file1 worked.  Why does "bzr resolve" not work in that context?
[07:07] <spiv> 'bzr resolve' only detects when you've resolved text conflicts (i.e. removed the <<<<<<< etc markers from a file)
[07:08] <spiv> I think it'd probably be good to make it detect when contents conflicts like yours are resolved too.  File a bug :)
[07:08] <vila> echo-area: 'bzr resolve' doesn't *yet* work in this context, as spiv said, only text conflicts are automatically resolved
[07:08] <spiv> FWIW, "bzr help resolve" does explicitly say to use 'bzr resolve FILE' for contents conflicts, but I agree it's not very intuitive.
[07:09] <vila> echo-area: 'bzr help conflict-types' gives a summary of what is supported so far
[07:12] <echo-area> Okay.  I was unaware of various conflict types until now.
[07:13] <spiv> Yes, the distinction between "contents conflict" and "text conflict" is something you're unlikely to grok just by seeing the words in your terminal occasionally.
[07:13] <vila> echo-area: yeah, that's a bug, the conflicts should be better explained and these explanations should be easier to discover
[07:13] <echo-area> spiv: But the bzr I'm using (2.3.1) does not explicit refer "content conflict" in bzr help resolve
[07:14] <vila> echo-area: 'bzr help conflict-types' does
[07:14] <spiv> Maybe "contents conflict" should be called "existential conflict" ;)
[07:14] <spiv> echo-area: ah right, yes, in trunk too
[07:14] <vila> 'content' is this context refers to an internal pov and is misleading for users
[07:14] <spiv> echo-area: my mistake, although you could argue it implicitly suggests that.
[07:14] <echo-area> vila: Reading that.  I was replying to spiv's message
[07:15] <vila> echo-area: sure, no worries
[07:16] <echo-area> Maybe we can make an explicit note on this in the user guide.  I'll try to make a patch later
[07:16] <vila> echo-area: highly welcome !
[07:17] <spiv> echo-area: that'd be wonderful, thank you
[07:17] <vila> echo-area: see also http://wiki.bazaar.canonical.com/VincentLadeuil/ConflictResolution for what is cooking in this area
[07:17] <echo-area> Okay
[07:20] <vila> hmm, yeah, re-reading that, 'content conflict' may be better understood if it was named 'tree shape conflict'
[07:22] <vila> that is, the merged trees disagree about an object kind: deleted, file, dir, symlink
[07:23] <spiv> vila: or "file kind conflict"?
[07:23] <spiv> vila: that's a bit less jargony
[07:27] <spiv> vila: or, hmm
[07:27] <spiv> vila: file/dir/symlink, that's "kind conflict", but deleted vs. modified is "status conflict"?
[07:28] <spiv> vila: I think that's pretty consistent both with our internal terminology and the terms we expose to users at other times.
[07:30] <vila> valentine : under his shower, will coming soon :)
[07:35] <vila> :-D
[07:36] <vila> spiv: well, IMHO, what is consistent is that most of our users are saying: 'wtf is a content conflict' :-)
[07:37] <vila> but yeah, separating kind conflict and status conflict seems like a good idea
[07:37] <spiv> vila: hehe
[07:38] <spiv> vila: ok, I'll file a bug
[07:38] <vila> the main issue is in the implementation which is hard to modify (see url above for some explanations)
[07:41] <spiv> *nod*
[07:45] <spiv> vila: filed https://bugs.launchpad.net/bzr/+bug/745491, please elaborate or disagree as you see fit :)
[07:46] <spiv> echo-area: you may be interested in that proposal too (bug 745491), I'd be interested to hear if you think it would have helped you
[07:46] <spiv> ubot5: yes yes we know
[07:46] <echo-area> spiv: Okay, I'll follow that.
[07:47]  * jelmer waves
[07:49] <vila> spiv: done
[07:49] <vila> jelmer: \o/ feeling better ?
[07:50] <jelmer> vila: yup, thanks
[07:51] <jelmer> vila: do you know if we're mumbling this morning?
[07:51] <vila> jelmer: no, but given that poolie uses a 3G connection, I doubt he can mumble
[07:51] <jelmer> ah, good point
[07:52] <spiv> jelmer, vila: yes
[07:52] <spiv> jelmer, vila: but skype, and we call poolie on pots
[07:52]  * spiv -> afk
[07:53]  * vila has no skype setup :-/
[07:57]  * jelmer dusts off his skype setup
[07:59] <echo-area> xb
[08:02]  * vila finally remembered his skype login
[08:37]  * jelmer waves to poolie
[08:39] <jelmer> vila: for when do you have b2 planned?
[08:40] <vila> jelmer: I keep the release dates up to date on lp, so: 2011-04-28 from https://launchpad.net/bzr/2.4
[08:41] <vila> well, I *try* to keep them up-to-date ;)
[08:41] <vila> jelmer, maxb : the ppa:bzr/beta needs love ;)
[08:41] <vila> oh wait, I already said that in the topic ;-D
[08:46] <maxb> yeah
[08:46] <jelmer> vila: thanks
[08:46] <maxb> I was actually just contemplating my notional compatibility layer for painless dh_python2 rebuilds for older series
[08:47] <maxb> I think I've got an idea which should work:
[08:48] <maxb> Rebuild python-defaults with 2.6.6-3really2.6.4-0ubuntu1 etc. versions, whilst adding a Depends: python-backport-helper
[08:48] <maxb> Create a new package python-backport-helper which Depends: python-support, python-central, and installs a fake dh_python2
[08:49] <maxb> Embed a table in the p-b-h package which maps sourcepackagenames to pysupport or pycentral following what they currently do, to avoid unnecessary transitions
[08:49] <maxb> I think I'll have a go at implementing what I just said at lunch today
[09:41] <jo-erlend> I have a project directory like /home/jo-erlend/devel/Projectname where my sourcecode resides. This thing about branches, how does that work? Should I move my files into a subdirectory like ~/devel/Project/trunk and work on the code from there and push to ~/devel/Project/1.0 when I reach the first major version, for instance?
[09:42] <jo-erlend> as you can understand, I'm quite the beginner with this VCS thing. :)
[09:48] <maxb> jo-erlend: In Bazaar, branches are modelled as separate directories on disk. So, yes, a .../trunk directory is a very reasonable thing to have if you expect to have multiple project branches side by side. However, marking versions seldom merits a whole new branch - there is a separate concept of tags for that.
[09:49] <maxb> You can always branch from a tag later, if there is a need to create a maintenance branch for a released version
[09:50] <jo-erlend> oh, ok. Then a tag is just a way to emphasize a commit?
[09:53] <mr-russ1> tags have a danger on bzr at the moment, you can't push them if you delete them.
[09:54] <jo-erlend> I didn't really understand that.
[09:54] <mr-russ> jo-erlend: I would setup a shared-repository in ~/devel/Projectname and create a branch called trunk under that.
[09:54] <mr-russ> jo-erlend: are you going to have a central storage location for your code, or just work from your home directory?
[09:55] <jo-erlend> it's just me for now, but I'd like to be able to invite others later, if they're interested.
[09:56] <mr-russ> I just added the following to bzr 2.4 docs.  http://doc.bazaar.canonical.com/bzr.dev/en/admin-guide/simple-setups.html?highlight=ssh%20restrict#using-a-restricted-ssh-account-to-host-multiple-users-and-repositories
[09:57] <mr-russ> that's how I have a setup others can use.
[09:57] <mr-russ> but to start with a single branch setup.
[09:57] <mr-russ> in your code folder, bzr init
[09:57] <mr-russ> bzr add
[09:57] <mr-russ> bzr commit
[09:57] <mr-russ> .. code away ...
[09:57] <mr-russ> bzr commit
[09:57] <mr-russ> and you are using the revision control.
[09:58] <poolie> hi mr-russ
[09:59] <mr-russ> hi poolie.
[09:59] <mr-russ> semi disturbingly, I'm starting to feel part of the family.
[10:00] <mr-russ> just to work out how and if I could work for canonical...  Not programming python though.  I know zero python.
[10:00] <jo-erlend> mr-russ: hmm. I'm reading a "mini-tutorial" on doc.bazaar.c-c and it sais something about a "saved parent location". Where is that set?
[10:03] <jo-erlend> perhaps that's just the location I branched from?
[10:14] <mr-russ> you don't need a parent, or saved parent.
[10:17] <mr-russ> But it is where you branched from.
[10:18] <poolie> knowing python helps
[10:18] <poolie> but, ubuntu.com/employment :)
[10:19] <poolie> jelmer, hi?
[10:19] <poolie> o/ Riddell
[10:19] <jo-erlend> ok. bzr stores diffs for text files, yes? What about binaries and other stuff that can't be diffed, does it make copies of those?
[10:19] <Riddell> hi all
[10:19] <poolie> jo-erlend, they're all stored using a binary diff format
[10:19] <poolie> at that level, it doesn't care if they're text or not
[10:23] <jo-erlend> hmm. Ok. So if I wanted, I could set my whole home directory under version control so I could skip back if I did something stupid?
[10:26] <mr-russ> yes.
[10:27] <poolie> yep
[10:27] <poolie> but, a specific backup tool may be better
[10:27] <poolie> i like duplicity and rdiff-backup
[10:29] <jelmer> poolie: hi
[10:29] <poolie> hey, jelmer
[10:30] <poolie> i was just wondering if you had registered sessions for bzr at uds
[10:30] <jelmer> not yet, I saw Alisons email earlier but hadn't figured out how to name the blueprints etc yet
[10:30] <poolie> mm
[10:31] <poolie> there is some scheme but i don't remember it, and for that matter it may have changed
[10:31] <poolie> dholbach could probably help
[10:31] <jelmer> I'll ask him - thanks for the reminder.
[10:32] <poolie> np, thanks for doing it
[10:44] <poolie> jelmer, can i just ask your bzr-colo recipe to build for maverick too?
[10:45] <poolie> well, i _can_; will it break things though?
[10:45] <jelmer> poolie: I'm not sure if it will work, as it uses dh_python2
[10:46] <jelmer> poolie: dh_python2 is only available on natty I think, and we've disabled most other builds for maverick because the debian packages require dh_python2 at the moment. maxb has a plan on how to deal with this.
[10:46] <poolie> ah, ok
[10:46] <poolie> i should upgrade my laptop soon anyhow
[10:47] <spiv> jam: hey, I've got an updated patch for Twisted, just running tests again before I push
[10:48] <maxb> I intend to try to put that plan into practice today
[10:48] <spiv> jam: it adds a noVars param Failure, so you still get tracebacks with files, line numbers and lines, but skips the locals and globals work.  It's about 10x faster rather than 16x on my crude benchmark, but is probably a good compromise.
[10:49] <spiv> jam: stripping tracebacks entirely in maybeDeferred was starting to have wider test suite fallout in Twisted, mainly in Trial, but tracebacks are clearly desireable there :)
[10:49] <spiv> jam: it's actually overall faster at running Twisted's tests than my original patch, presumably because it does fix maybeDeferred too
[10:54] <spiv> jam: woah
[10:54] <spiv> jam: I think I just saw that intermittent push issue you had, where the client spends ages doing get_parent_map rather than pushing
[10:55] <spiv> Wow, that's weird, it's getting NotStacked back for my branch from the lp smart server
[10:56] <spiv> But http://bazaar.launchpad.net/~spiv/twisted/deferred-no-failure-tracebacks-by-default/.bzr/branch/branch.conf looks pretty stacked to me!
[10:57] <spiv> Oh, no, I just can't read a -Dhpss log, ignore me.
[10:57] <spiv> I don't know why it's not working, though.
[10:58] <poolie> bug pls :)
[10:58]  * spiv works around it for right now
[10:58] <spiv> poolie: yeah, definitely
[10:59] <jam> spiv: it was 'bzr branch lp:a-stacked-branch' rather than getting the dev focus first
[11:01] <jam> spiv: I was just starting to write some test cases, and found a few more edges
[11:02] <jam> like "deferred.errback()" defaults to fail=None ,which calls Failure(none), which would also create a traceback
[11:02] <jam> etc
[11:02] <jam> spiv: so I'm happy to wait for wherever you want to leave off
[11:02] <jam> I was a bit surprised to see "twisted.test.test_defer" rather than "twisted.internet.test.test_defer"
[11:03] <spiv> jam: see my update to http://twistedmatrix.com/trac/ticket/5011
[11:04] <spiv> jam: partly that's because originally there was only twisted.test, so old stuff tends to be tested in there
[11:04] <jam> sure
[11:04] <jam> I think the 16x vs 10x matches what I saw
[11:04] <spiv> jam: and partly because defer.py really belongs in twisted.python not twisted.internet
[11:04] <jam> where commenting out __getstate__ had a good benefit
[11:04] <jam> but there was almost as much to be gained by not walking the frames in the first place
[11:05] <jam> spiv: in which case Failure could depend on it :)
[11:05] <spiv> I found on my crude benchmark I could squeeze out a few more percent by aggressively avoiding repeated x.y in Failure.__init__, etc.
[11:05] <spiv> Which is a good sign, it suggests it's fast enough now for that sort of thing to be significant :)
[11:05] <jam> sure
[11:06] <spiv> jam: it would still be backwards, layering-wise
[11:06] <jam> well, it is a debug flag
[11:06] <jam> which should probably sit a lot higher than Deferred.debug
[11:06] <spiv> Well, capturing more info in Deferreds is different to capturing more info everywhere
[11:07] <jam> spiv: not if you are writing real twisted code :)
[11:07] <spiv> Failures are sometimes used entirely outside the context of Deferreds
[11:07] <jam> since Deferreds are everywhere
[11:07] <spiv> e.g. the 'reason' param of connectionLost
[11:07] <spiv> Deferreds only provide a way to do one-shot async calls
[11:08] <jam> spiv: where, again, it doesn't really make sense to include a traceback
[11:08] <spiv> jam: I agree
[11:08] <spiv> jam: I don't think capturing that info is a good default
[11:08] <spiv> But it's been the default for probably most of the lifetime of Twisted
[11:08] <spiv> Which is over a decade old now
[11:09] <spiv> So I think changing that default probably needs to be done cautiously to make sure it doesn't break people's code; Twisted is much pickier about backwards compatibility than most projects.
[11:10]  * spiv -> dinner
[11:10] <poolie> i wonder if we have any overall data on connection time
[11:11] <jam> poolie: define overall data?
[11:11] <jam> (we might have some information in the access logs, etc., but I'm not really sure what you are looking for)
[11:12] <poolie> sorry, i meant, connection time 3 months ago vs now
[11:12] <poolie> to lp
[11:12] <jam> poolie: you mean other than the bzr ping graphs?
[11:12] <poolie> ideally something measured from the real world
[11:12] <poolie> i wonder if i filed that bug long enough ago to be useful
[11:13]  * jam really is pleased with perf boost to lpstats
[11:13] <jam> poolie: I wonder about just enabling 'debug_flags = hpss' on production, since the logs I've looked at give some really nice debug info
[11:13] <jam> might be too big of a flood for real world, though
[11:19] <jam> poolie: https://lpstats.canonical.com/graphs/CodehostingPerformance/20100331/20110331/
[11:19] <jam> definitely shows it has been trending down recently
[11:19] <jam> well very short term back up
[11:19] <jam> but quite a bit down from last may
[11:20] <spiv> jam: and less variable too, which is nice
[11:24] <poolie> don't know if there's a very distinct trend
[11:24] <poolie> i guess if you said "the worst experienced lag" that's gone from 7 to 4
[11:24] <poolie> in what, seconds? really seconds?
[11:25] <jam> poolie: yes, really 7+s just to get an ssh connection
[11:25] <poolie> that's remarkable
[11:26] <poolie> i would have guessed more of it was rtt
[11:26] <poolie> so what else did we get done this calendar year that was good?
[11:27] <AfC> time bzr missing bzr://... 0m3.042s
[11:27] <jam> poolie: If I can get this rolled out into production: https://lpstats.canonical.com/graphs/CodehostingPerformanceStaging/20110101/20110331/
[11:27] <AfC> time bzr missing bzr+ssh://... 0m6.747s
[11:28] <jam> AfC: 'time ssh /bin/false' ?
[11:29] <AfC> jam: 0m3.357s as expected
[11:29] <jam> AfC: this is with openssh on both sides?
[11:29] <AfC> yes
[11:29] <jam> One interesting bit is that the twisted ssh service can actually connect faster than openssh
[11:30] <jam> not sure the specific reasons
[11:30] <jam> I know at one point ssh switched the default to do reverse dns lookups
[11:30] <jam> and that made it a *lot* slower when the source didn't have a dns entry
[11:30] <jam> because it would wait 2s to timeout, etc.
[11:31] <poolie> mm
[11:31] <poolie> it would be horrible if that's live
[11:31] <jam> AfC: http://ubuntuforums.org/showthread.php?t=445677
[11:31] <poolie> probably not
[11:31] <jam> "UseDNS no"
[11:31] <jam> Also "GSSAPIAuthentication No"
[11:32] <jam> so it doesn't try to look up kerberos credentials
[11:32] <AfC> jam: yeah, I'm across that one
[11:35] <AfC> (wasn't complaining, just offering a few data points; I have bzr: and bzr+ssh: on the same trees)
[11:37] <jam> AfC, poolie: "time ssh localhost /bin/false" is about 800-900ms here
[11:38] <AfC> really? 0.310 ± 0.040 here
[11:39] <jam> Using '-v' seems to say the bulk of the time is right after: http://ubuntuforums.org/showthread.php?t=445677
[11:39] <jam> ugh
[11:39] <jam> debug1: Entering interactive session.
[11:39] <jam> At least, that is where the terminal hangs for a bit before going to the next message
[11:39] <spiv> poolie: earlier this year we installed python-gmpy on the codehosting server, speeding up Twisted's SSH crypto
[11:40] <jam> spiv: after we fixed it not to bork the rest of the system :)
[11:40] <jam> well, afterwards we fixed it :)
[11:41] <jam> poolie: this is the list you are compiling for s-tatik?
[11:42] <poolie> yup
[11:42] <jam> poolie: loggerhead is now mostly actively maintained
[11:43] <jam> poolie: package importer improvements. Quite a few big "100 packages no longer failing" etc.
[11:44] <jam> looking here: http://package-import.ubuntu.com/status/
[11:44] <jam> I see we're down to 476 failures, from a peak of ~3k
[11:45] <jam> in mid January
[11:45] <jam> AfC: well, technically that is a VM, since I don't yet run opensshd on my laptop directly.
[11:46] <AfC> → zzz
[11:56] <jam> poolie: my 'iter_entries_by_dir' change makes 'bzr co --lightweight gcc-linaro' go from 3m48s down to 1m5s on Ubuntu for me.
[11:56] <jam> poolie: spiv's change to make 'fetch' transfer the revisions associated with tags
[11:57] <poolie> nice
[12:21] <thrope> when I try to bzr init in a directory on an ntfs partition mounted on linux I get a ERROR: Transport error: [Errno 1] Operation not permitted
[12:21] <thrope> it is mounted in latest ubuntu with fuse
[12:21] <thrope> so I can't use bzr over an smb mounted drive OR on a locally mounted ntfs drive
[12:25] <jelmer> thrope: I think the number of system calls the fuse smb file system allows is pretty limited.
[12:25] <jelmer> Have you tried with the kernel one?
[12:25] <thrope> no
[12:25] <thrope> don't want to mess about with it really - just using standard ubuntu settings
[12:26] <thrope> just surprised to find another not that unusual situation where bzr fails completely and ungracefully
[12:27] <poolie> there's a bug for it, which may have a workaround
[12:27] <poolie> but, really it's a fuse bug
[12:28] <poolie> thrope, https://bugs.launchpad.net/bzr/+bug/190725
[12:42] <idky> Did I see that correctly that one can write python scripts using a bazaar repo very easily?
[12:43] <poolie> night all
[12:43] <jelmer> idky: yep, it's fairly easy
[12:43] <jelmer> g'night poolie
[12:44] <idky> jelmer: hmm, that is another thing that makes me tend to bzr instead of git ... why are these decisions so hard? :)
[12:46] <idky> and is there a way to put the output of diff or cdiff into a pager automatically?
[12:46] <jelmer> idky: there's a bzr-pager plugin that can do that
[12:58] <jml> hey
[12:58] <jml> I think this bug is fixed
[12:58] <jml> https://bugs.launchpad.net/bzr/+bug/301472
[12:58] <jml> is it fixed?
[13:00] <jml> hmm. maybe not.
[13:01] <jml> what a pity
[13:03] <jelmer> hmm
[13:03] <jelmer> I'm hacking on hooks at the moment, might as well have a look at that one too
[13:04] <jelmer> jml: would that help you?
[13:05] <jml> jelmer: yeah, but only a little. there's a legacy monkey patch in lp/codehosting/__init__ that I'd like to remove.
[13:05] <jml> (I had thought I could because it said "bzr 1.14" in the comments, but now I'm confused)
[13:09] <jelmer> jml: I don't see any other way to uninstall hooks. Perhaps a patch was proposed but it never made it in?
[13:09] <jelmer> Anyway, I'll have a look at adding an uninstall function.
[13:09] <jml> jelmer: I think in bzr 1.13, Branch.hooks was a list, not a HookPoint
[13:09] <jml> jelmer: so the way to remove hooks was to call 'remove' on that list.
[13:10] <jml> and when we upgraded, we did the monkey-patch presumably to avoid the break in API as well as provide the now-missing functionality.
[13:10] <jelmer> ahh
[13:15] <spiv> Our test suite resets hook registrations between tests
[13:20] <spiv> jam: I'd love to know why my second pushes to lp:~spiv/twisted/* branches are repushing all of history!
[13:21] <spiv> i.e. push new branch, stacked and fine.  Commit again, push: find all the ancestry missing and push it all.
[13:22]  * spiv tries with bzr 2.3
[13:22] <spiv> That worked.  Regression :(
[13:26] <jam> spiv: ouch. I wonder if it is something with the lp: redirect biting us again?
[13:28] <spiv> jam: not sure, and it's too late in my night for me to find out
[13:28] <spiv> jam: https://bugs.launchpad.net/bzr/+bug/745664
[13:41] <jelmer> jml: https://code.launchpad.net/~jelmer/bzr/uninstall-hook/+merge/55527
[15:28] <jml> it looks as if Twisted can't use bzr-svn to maintain a mirror any more
[15:28] <jml> because it requires more than 600MB of memory to do a pull
[15:28] <jml> and they don't have that much on their servers
[15:28] <jelmer> jml: Whoa; is the tree really that big?
[15:28] <jelmer> and this is just an incremental pull?
[15:29] <jml> jelmer: the history is pretty old
[15:29] <jml> jelmer: not sure about the tree size...
[15:29] <jml> /usr/bin/bzr svn-import -v --incremental
[15:29] <jelmer> ah, svn-import
[15:29] <jml> should they be doing something else?
[15:30] <jml> oh, I guess that's a multi-branch thing
[15:30] <jelmer> I was thinking bzr pull. there's a known issue with svn-import and memory usage that I still need to look into
[15:30] <jelmer> perhaps this is a good excuse to..
[15:32] <jml> jelmer: is there a bug number that I can point the Twisted folk at?
[15:35] <jelmer> jml: bug 516999 IIRC
[15:35] <jml> jelmer: thanks.
[16:06] <jelmer> vila: hi
[16:06] <vila> jelmer: pong ;)
[16:06] <jelmer> vila: just looking at your devnote on configuration files
[16:07]  * vila nods and fix more typos :)
[16:07] <jelmer> vila: some of the bullet points at the bottom don't seem to be formatted properly
[16:07] <vila> jelmer: I fixed some, try refreshing ?
[16:08] <vila> argh, silly me, looking at my local copy ;-/
[16:08] <jelmer> Under "user facing concepts"
[16:08] <jelmer> and under "stack examples"
[16:08] <jelmer> ah :)
[16:09] <jelmer> vila: the sheer number of configuration files worries me a bit
[16:09] <vila> jelmer: yup, fixed both
[16:10] <vila> jelmer: well, have a look at the number of IOs we do today then ;)
[16:10] <jelmer> I'm not entirely sure what to do about that; it seems like adding a project and a organization configuration file requires a particular workflow
[16:10] <jelmer> vila: not just the performance, but also what it does to our UI
[16:10] <vila> jelmer: that's one read per option, I want to reach one read by config file (lazily triggered on first read)
[16:11] <vila> right, we'll have to dig into specifics then, we will be able to merge some plugin conf files into the existing ones
[16:12] <jelmer> vila: when you say organization configuration file do you mean a system wide configuration file?
[16:12] <vila> locations.conf is mostly used to defined defaults today, this feature will be supported by bazaar.conf itself
[16:12] <vila> jelmer: yes, it could be /etc/bzr/xxx.conf
[16:13] <vila> jelmer: but more precisely, *what* are you worries there ?
[16:13] <jelmer> vila: something like /etc/bzr/bazaar.conf ?
[16:13] <vila> yup
[16:13] <jelmer> vila: or also /etc/bzr/canonical.conf ?
[16:13] <jelmer> or /etc/bzr/samba.conf ?
[16:13] <vila> hmm, I was thinking /etc/bzr/bazaar.conf
[16:14] <vila> you could define samba.policy.* options there
[16:14]  * fullermd . o O (/usr/local/etc...)
[16:14] <jelmer> vila: In that case I think the naming in the devnote is a bit confusing
[16:14] <vila> nothing definite there which may explain the confusion :)
[16:15] <jelmer> vila: I think system configuration rather than organization configuration explains it a bit better, at least to me :)
[16:16] <jelmer> vila: How would the project be defined for the project configuration?
[16:16] <vila> both should addressed, I'm still not clear about the best way to dispatch options in files
[16:17] <vila> not sure either about repoconf vs project.conf, many questions are related to the way these files are (or not) versioned and how they propagate
[16:17] <vila> but I don't try to address that yet
[16:19] <jelmer> vila: That's the main thing I noticed that is a bit worrying, looks like a great improvement over the current unclear system otherwise.
[16:21]  * vila nods
[16:21] <vila> So you're worrying about having too many files too put one option into ?
[16:21] <vila> My main reaction was to write 'bzr config' and I now use it more than 'bzr info'...
[16:22] <jelmer> vila: that (which makes it hard/confusing to decide which file to put the option into) and forcing a particular workflow on the user with a project.conf, where we don't have the concept of a project
[16:22] <vila> ha, right
[16:22] <jelmer> though since your concept of project is still a bit vague I'm not sure about that second objection
[16:22] <vila> So, I separated read and write very explicitly because writing an option from bzrlib is the exception
[16:23] <vila> The whole framework is targeted at allowing a user to specify defaults values where *he* see fit
[16:23] <vila> and avoid having to duplicate such settings all over the place
[16:24] <vila> project.conf is still nebulous, the idea is that you could describe where your trunk is, where to report bugs, etc
[16:25] <vila> and have it propagated to all branches (with handwave:// transport ;)
[16:25] <jelmer> vila: for example, is there really much value in having repository.conf when (as we've claimed) the repository is just the place where the revisions are stored, not a user-visible thing?
[16:26] <jelmer> vila: it also limits the concept of a project; e.g. I currently have bzr-svn for which I probably want to apply the rules for the greater bazaar project and then a few specific bzr-svn ones
[16:26] <vila> repo.conf may contain shared_storage so we can get rid of repository/shared_storage for example
[16:27] <jelmer> vila: shared_storage is something repository-specific, I don't think we should inherit it in e.g. the branches below that repository
[16:27] <vila> right, that's indeed a good example :)
[16:27] <maxb> also default creation of trees setting
[16:27] <vila> argh, the bzr-svn vs bzr I meant
[16:28] <vila> jelmer: right, but you can define properties for branch created under various prefixes (reviews, bugs, trunk, release, etc)
[16:28] <vila> I'm not advocating doing that though, just mentioning the ideas
[16:29] <vila> I tried to find a scope greater than the current needs to ensure I wasn't reducing the needs too much,
[16:29] <vila> Now. I don't intend to implement every file described there when the most asked for is tree.conf
[16:30] <vila> but I want a config framework that can support them if we decide we need them
[16:31] <vila> jelmer: if bzr-colo can be implemented with a branch.conf with sections instead of branches/ files hierarchy for example... I'd be delighted
[16:33] <vila> jelmer: regarding branch.conf inheriting from repo.conf, *some* options could inherit, but certainly not all
[16:34] <jelmer> vila: the problem with definining a repository.conf and a project.conf is that we'd limit ourselves to a very strict interpretation of those, I'd rather see a more flexible mechanism for inheriting configuration options
[16:35] <jelmer> vila: yeah, I agree it'd be nice to collapse the branch configurations / last-revision files with the next format bump
[16:35] <vila> jelmer: when (and if) you register an option, you can define *where* it is allowed
[16:35] <jelmer> vila: I mean as a user
[16:35] <vila> jelmer: there may even be a compatibility path that doesn't require a format bump...
[16:36] <vila> what do you mean by 'more flexible' ?
[16:36] <jelmer> vila: e.g. in my example of bzr-svn there isn't a single project that's relevant
[16:37] <vila> Right, I agree on the conceptual level, but without specific options to think about, it's harder to come with good answers ;-/
[16:40] <vila> social conventions (where is trunk, where/how should I send contributions, mailing lists etc) seem pretty clear to me as project specific and can't really be shared across project
[16:41] <vila> also, with interpolation, you gain the ability to refer to the project with {project} which can be set in say, branch.conf but still referred to in project.conf
[16:42] <vila> or overriden
[16:45] <vila> jelmer: ben also mentioned including config files. There are trick issues there and I didn't mention them but that may also be a mean to consider
[16:46] <jelmer> vila: a lot of those options could be shared across the various bzr subprojects I think
[16:46] <jelmer> vila: include files sound like an interesting alternative
[16:47] <vila> jelmer: one way to share across projects is to put them under the same path (in different directories of course)
[16:47] <vila> jelmer: another way is to allow some config files to be defined and used at different levels in the hierarchy (ignore files for example)
[16:48] <vila> so my proposal tried to mention the *possible* files and define a framework that will allow us to implement them if/when needed
[16:49] <vila> I also wanted a simple design and I'm not sure it doesn't provide too much already ;D
[16:49] <vila> these are just *dicts* damnit :D
[16:49] <jelmer> :)
[16:50] <vila> dicts of strings even
[17:30] <vanguard> how can I convert a git repo to a bzr repo?
[17:43] <jelmer> vanguard: "bzr git-import" command from the bzr-git plugin, or using bzr fastimport / git fastexport
[17:57] <vanguard> hmm, bzr fastimport crashed, I reported it on LaunchPad, but it does not seem too good :-/
[19:45] <awilkins> Is there anything for Bazaar that's like gitstats and shows things like commit time distribution
[19:45] <awilkins> Something that just used git-fast-export format would be perfect, no?
[19:46] <awilkins> I want to really rub it in for my management the stupid hours I've been working and commit logs are the best evidence
[19:48]  * beuno doesn't know of any
[19:52] <luks_> http://oxygene.sk/lukas/2010/03/punchcard-graphs-for-bazaar/
[19:52] <awilkins> Muhahahah!
[19:54] <awilkins> Hmm, do you have to pick a file?
[19:55] <luks_> heh, I don't actually remember how does it work anymore :)
[19:56] <luks_> ah, the filename is the generated png file
[19:56] <awilkins> Ah
[19:56] <awilkins> Hence "." doesn't work
[19:57] <luks> it was really just a quick hack to see the stats for my pet projects
[19:57] <awilkins> Might poke it a bit to take a list of aliases, etc
[19:57] <awilkins> I have several aliases in this projects from committing on different machines with different WHOAMI, on SVN with a different username, etc
[19:58] <awilkins> But it already reveals a nice set of spots for 0400, 2100, 2300 :-)
[19:58] <luks> heh
[19:59] <awilkins> My, that was a quick hack
[19:59] <awilkins> Impressive
[20:11]  * awilkins hacks it to use regex for the committer
[20:14] <awilkins> Why the hell does one guy always commit at 0900 on thursday...
[20:16] <awilkins> Many thanks, heavy ammunition, that is
[20:22] <awilkins> luks, https://code.launchpad.net/~adrian-wilkins/+junk/punchcard-regex-committer (as if you needed help to write it...)
[20:28] <luks> heh, I never noticed the wrong day abbreviations
[20:28] <awilkins> Jus tgot them wrong myself ... overwritten that rev
[20:30] <awilkins> Have to justify that my Thu / Fri working at home is productive
[20:30] <awilkins> Biggest blob is 1000 Friday morning :-)
[20:31] <awilkins> Can see all sorts of extra dimensions you might add to this
[20:31] <awilkins> Colourize the blobs on average commit size, etc
[20:32] <awilkins> But no time ... wanted to do some visualization software for financials at one point, voxel graphics for interest, etc, but never got around to even trying
[20:39]  * awilkins has all sorts of fun with   for C in `bzr log --xml | xpath2 -q -e '//committer/text()' | sort | uniq` ; do bzr punchcard --committer $C $C.png ; done
[22:48] <poolie> hi all
[22:50] <jelmer> 'morning poolie
[22:50] <poolie> hi there
[22:56] <poolie> hey there
[22:56] <poolie> did you get to talk to daniel, jelmer?
[22:56] <jelmer> poolie: yep, thanks for putting us in contact
[22:57] <poolie> so it's all set, or underway?
[22:58] <jelmer> it's underway, should be done by tomorrow
[22:59] <jelmer> Jorge also sent out an email with more details on e.g. the naming scheme later today.
[22:59] <jelmer> (your yesterday)
[23:12] <jelmer> wb poolie :)
[23:12] <jelmer> did you see my reply?
[23:13] <poolie_> yes, thanks :)
[23:49] <poolie_> hi spiv
[23:50] <spiv> Hi poolie, I'm not *quite* here yet ;)
[23:59] <spiv> Good morning :)