[01:12] <bignose> where can I read about the unit test case categorisation done in Bazaar?
[01:12] <bignose> I'm on a team that has noticed a rapid growth in unit test suite size, and are worried about the incentive against adding new tests because they might slow the test suite down
[01:13] <bignose> I recall Bazaar dealing with the issue by marking (decorating?) test cases to run the more resource-intensive ones less often. right?
[01:15] <bignose> is it part of ‘testtools’? we use that and like it
[01:16] <poolie> hi bignose
[01:16] <bignose> poolie: howdy
[01:16] <bignose> poolie: still looking for a new Bazaar developer?
[01:17] <bignose> I failed to use the recruiter's website (but can't remember the failure)
[01:18] <poolie> i am: http://bit.ly/ubuntu-vcs-job - though as the url suggests the remit is broader than just bzr
[01:18] <poolie> hm
[01:19] <poolie> if you hit it again please let me know what the failure was
[01:19] <poolie> or, perhaps forward it to someone else you know who could be interested
[01:21] <poolie> the app is not all that great but it's an improvement on ad hoc spreadsheets and email
[01:23] <fullermd> bzr?  Yeah, it works a lot better for my versioning needs than spreadsheets   :-D
[01:23] <bignose> poolie: did you catch my question re. Bazaar's unit tests of about 15 mins ago?
[01:23] <poolie> nup, i had a late start
[01:23] <poolie> what was it?
[01:23] <bignose> I'm on a team that has noticed a rapid growth in unit test suite size, and are worried about the incentive against adding new tests because they might slow the test suite down
[01:24] <bignose> I recall Bazaar dealing with the issue by marking (decorating?) test cases to run the more resource-intensive ones less often. right?
[01:24] <poolie> wrong :)
[01:24] <poolie> we talked about that but we've never done it
[01:24] <bignose> okay. how does the Bazaar team deal with a large number of tests in the suite?
[01:24] <poolie> we have made a distinction between benchmarks and tests
[01:24] <poolie> we added selftest --parallel
[01:24] <bignose> run them less often? divide them into different categories somehow? suck it up and wait?
[01:25] <poolie> wow
[01:25] <poolie> that's a really kind of interesting question actually; perhaps i should write about it
[01:25] <bignose> heh. “I don't have a solution, but I admire the problem”?
[01:25] <poolie> developers can run only a subset of tests, and can reorder them to run the tests guessed most likely to fail first
[01:25] <poolie> we have a partial solution
[01:26] <poolie> we run the tests on every commit
[01:26] <bignose> and the commit fails if the test suite fails?
[01:26] <poolie> it takes single-digit minutes to run them all on my 1 year old laptop
[01:26] <poolie> in pqm, yes
[01:26] <bignose> right
[01:26] <poolie> oh, i should have said every mainline commit
[01:26] <poolie> you can commit locally without running them
[01:26] <bignose> ah okay
[01:27] <poolie> i think robert has a subunit hack to run tests remotely
[01:27] <lifeless> --parallel=ec2
[01:27] <lifeless> its a bzr plugin
[01:27] <poolie> mm, also we just look at the times and occasionally look hard at the slowest tests or group of tests
[01:28] <poolie> lifeless, does it spin up new machines every time?
[01:28] <lifeless> I don't think so
[01:30] <lifeless> jml has some reporting tools that take a subunit stream and tell you test timing info
[01:30] <bignose> so the Bazaar solution involves the Patch Queue Manager robot being the only one authorised to commit to trunk
[01:30] <bignose> right?
[01:31] <lifeless> well, it involves all tests run for things to get to trunk; separately we've made that hard to avoid by using a robot to do the landings
[01:32] <bob2> i was amused to see 'thelove' still cropping up in places
[01:32] <bignose> okay. so currently we allow commits to trunk by any developer, and a build robot reports failures
[01:33] <bignose> but that's after the commits.
[01:33] <bignose> in part this is because the test suite has over time gone from taking hours to run, down to twenty minutes, down to a few minutes.
[01:34] <bignose> now that it's feasible to run the tests without breaking development flow, we're loath to let it get out of hand again.
[01:34] <poolie> how did you accomplish that huge improvement?
[01:35] <RenatoSilva> for those who read my question, it seems nature of line-based merges
[01:35] <bignose> mostly by finding horrible inefficiencies
[01:35] <bignose> also by getting the database to run in memory
[01:36] <RenatoSilva> I always have to watch upstream changes so I can see an unusual change will be required in a merge
[01:36] <bignose> during the same periof the test suite has increased from a few hundred to nearly two thousand and still rising rapidly
[01:37] <bignose> so we don't want to see the suite become slower by the exact behaviour we're trying to encourage: add more test cases
[01:37] <poolie> just keep watching it, i suppose
[01:38] <RenatoSilva> for example upstream refactors some duplicated code into a function, and I have a new function which is using that exact duplicated code. It's not easy to realize you need to replace it with the function call during a merge, unless you have followed all commits since your last sync with upstream
[01:38] <poolie> oh, also try to add test suite infrastructure that makes it easy to write expressive tests the right, fast, way
[01:38] <bob2> RenatoSilva: yes merges need manual review and tests to be run
[01:39] <bignose> poolie: what is the right, fast, way?
[01:39] <poolie> well, for instance, it's easy for people to test from the ui all the way down across the entire stack
[01:39] <bignose> RenatoSilva: yes, it's deliberate that a merge requires manual action later to commit
[01:39] <RenatoSilva> this is one reason for merging as often as possible
[01:39] <poolie> but, this may be slow
[01:40] <poolie> it also may be imprecise compared to the kind of test you can write directly to an api
[01:40] <bignose> poolie: does Bazaar have non-unit tests automated? how are they done?
[01:40] <RenatoSilva> bignose: yes, I just thought it was just about the conflicts, but it's not!
[01:41] <bignose> poolie: we've recently had the “unit tests should be small and focussed and shouldn't require instantiating half the entire application” discussion
[01:41] <poolie> we have some whole-stack tests
[01:41] <poolie> some of these are old and crummy and would be a good target for people wanting to make the suite faster
[01:41] <RenatoSilva> bignose: you can get a no-conflicts yet broken merge, I didn't know that
[01:41] <bignose> poolie: using what to run them? the ‘unittest’ library doesn't fit very well
[01:42] <bignose> RenatoSilva: worse, you can get a fine merge that fails your automated tests
[01:42] <poolie> some are worthwhile integration tests
[01:42] <poolie> in some cases it's a tradeoff against a blackbox test being easier for a new developer to write
[01:42] <poolie> bignose, unittest just runs code..
[01:43] <RenatoSilva> bignose: well, that's better not worse, no? you'll actually *notice* the merge is broken through these tests
[01:43] <bignose> RenatoSilva: so it's essential to (a) have good unit test coverage, (b) run all the tests every commit – including especially a merge commit.
[01:43] <poolie> we have wrappers to connect it to something that looks like a command line
[01:43] <poolie> http://doc.bazaar.canonical.com/developers/testing.html#shell-like-tests
[01:44] <bignose> RenatoSilva: heh. if your tests don't notice what you call a “broken merge”, then either you have code which is useless or you have insufficient code coverage of your tests :-)
[01:44] <RenatoSilva> bignose: I mean, it's good the tests fails, it's worse if you don't have them or they pass (*that* is silly)
[01:44] <bignose> poolie: thanks
[01:45] <RenatoSilva> bignose: or a bug with the tests
[01:45]  * fullermd has highly insufficient code coverage of his tests   :p
[01:46] <lifeless> bignose: LP has huge-time problems
[01:46] <RenatoSilva> bignose: actually I'm not sure how tests would detect the example I presented
[01:46] <lifeless> bignose: and there is a social pressure to write less/bigger tests.
[01:46]  * bignose wants to investigate Pester <URL:http://jester.sourceforge.net/> for mutating code to find poorly-tested code branches
[01:47] <RenatoSilva> who tests the test tester
[01:47] <bignose> it's a pity it's Python-using-Java, I'd prefer a pure-Python implementation
[01:48] <lifeless> bignose: I'm planning to solve this by more aggressive factoring out of stuff into separate packages, which would be tested independently, and provide a test contract back to the main / integration codebase
[01:48] <lifeless> bignose: part of that is moving to a service based design as well: https://dev.launchpad.net/ArchitectureGuide/Services
[01:50] <RenatoSilva> bignose: I mean, the tests would be no help in that example! If upstream refactored duplicated code your branch is using in a function foo, the test for foo will still pass!
[02:01] <bignose> thanks all, poolie I've pointed our team to <URL:http://doc.bazaar.canonical.com/developers/testing.html> for ideas :-)
[02:04] <RenatoSilva> http://i.imgur.com/mvBLR.png
[02:07] <RenatoSilva> brb
[02:17] <bignose> poolie: I may have been mistaken about the recruiter's app failing me. either way, my application is now submitted.
[02:18] <poolie> good to hear
[07:50] <seb128> hey
[07:50] <seb128> could somebody help robert_ancell to fix the lightdm vcs?
[07:50] <seb128> it's broken in a way similar to bug #772935
[07:52] <wgrant> seb128: Does someone have an old branch?
[07:52] <wgrant> The original that it was stacked on has apparently been deleted.
[07:53] <seb128> well, people have checkouts
[07:53] <seb128> not sure about "old"
[07:53] <wgrant> Ah, no, the branch is there, I was just looking in the wrong place.
[07:53] <wgrant> Let's see.
[07:53] <jam> morning all
[07:53] <jam> hi wgrant
[08:02] <wgrant> seb128: You've not tried fetch-all-records?
[08:02] <wgrant> seb128: I just grabbed the broken branch locally, and it works fine.
[08:03] <wgrant> Once I've run fetch-all-records against robert_ancell's branch, that is.
[08:03] <seb128> what arguments do you use?
[08:03] <seb128> how do you fix the online version?
[08:04] <wgrant> seb128: bzr fetch-all-records -d lp:lightdm lp:~robert-ancell/lightdm/trunk
[08:04] <wgrant> I don't have privileges to do that, but anyone in lightdm-team can.
[08:04] <wgrant> (you'll need to 'bzr branch lp:bzr-repodebug ~/.bazaar/plugins/' first)
[08:05] <wgrant> Erm.
[08:05] <wgrant> The branch is unbroken now?
[08:05] <seb128> how unbroken?
[08:05] <wgrant> http://bazaar.launchpad.net/~lightdm-team/lightdm/trunk/files
[08:06] <wgrant> Someone has fixed it.
[08:06] <wgrant> Possibly someone pushed over it or something.
[08:06] <wgrant> It was broken 10 minutes ago...
[08:07] <jam> wgrant: it was just broken again? We 'fixed' it last week sometime
[08:07] <jam> not a good sign...
[08:07] <seb128> _raise_smart_server_error
[08:07] <seb128>     raise errors.ErrorFromSmartServer(error_tuple)
[08:07] <seb128> ErrorFromSmartServer: Error received from smart server: ('error', "Absent factory for StaticTuple('language.sgml-20100710032117-i0kdmrwf93qvp5j8-1', 'robert.ancell@gmail.com-20100710034239-8eysy1lpccerztec')")
[08:07] <seb128> wgrant, it's still broken for me
[08:07] <jam> that looks ~ like the same failure, so maybe it wasn't actually changed before
[08:08] <seb128> should I ask robert to 'bzr fetch-all-records -d lp:lightdm lp:~robert-ancell/lightdm/trunk'
[08:08] <seb128> ?
[08:08] <wgrant> Then why can LP scan it now :/
[08:08] <wgrant> And why can loggerhead see it...
[08:08] <wgrant> Unless it depends on just what files are touched.
[08:08] <jam> seb128: I think so. That looks right to me
[08:08] <wgrant> seb128: You, or anyone else in ~lightdm-team.
[08:08] <seb128> jam: then what? what will that do?
[08:08] <jam> wgrant: You probably can't scan it, because it is old history that is missing
[08:08] <wgrant> jam: But the last scan worked.
[08:09] <seb128> what are the argument doing?
[08:09] <jam> seb128: lp:lightdm used to be stacked on ~robert-ancell...
[08:09] <jam> but then someone removed stacking, *without* filling in the history
[08:09] <seb128> how can that happen?
[08:09] <jam> seb128: 'bzr fetch-all-records' fills in the history
[08:09] <wgrant> Someone must have altered branch.conf manually.
[08:09] <jam> seb128: I don't really know, but ".bzr/branch/branch.conf' has 'stacking_location = ""'
[08:09] <jam> I don't think bzr would set it to an empty string
[08:10] <jam> I imagine the original bug was a stacking cycle when they switched lp:lightdm from pointing at ~robert-ancell/... to ~lightdm-team/
[08:11] <wgrant> There wouldn't have been a cycle; the initial ~lightdm-team/ push would have stacked on ~robert-ancell/, then everything afterwards stacked on ~lightdm-team/.
[08:11] <seb128> jam, wgrant: that doesn't work it seems
[08:11] <wgrant> robert_ancell: What goes wrong?
[08:11] <robert_ancell> wgrant, I get "TooManyConcurrentRequests: The medium 'SmartSSHClientMedium(bzr+ssh://robert-ancell@bazaar.launchpad.net/)' has reached its concurrent request limit. Be sure to finish_writing and finish_reading on the currently open request.
[08:11] <robert_ancell> "
[08:11] <wgrant> jam: And I only know of one API that breaks on transitive stacking.
[08:12] <jam> wgrant: if you look at ~robert-ancell, it says it is stacked on ~lightdm-team
[08:12] <wgrant> !?
[08:12] <jam> ah, I take that back
[08:12] <jam> it is empty
[08:12] <jam> http://bazaar.launchpad.net/~robert-ancell/lightdm/trunk/.bzr/branch/branch.conf
[08:12] <wgrant> What evil is this...
[08:12] <jam> It is supposed to be empty, so no problems there
[08:13] <wgrant> Oh, I thought you meant it said it was stacked on ~lightdm-team on LP anyway.
[08:13] <wgrant> Despite the empty branch.conf.
[08:13] <jam> right, no, it is not stacked
[08:13] <wgrant> robert_ancell: What if you try 'bzr fetch-all-records -d lp:lightdm http://bazaar.launchpad.net/~robert-ancell/lightdm/trunk'?
[08:14] <robert_ancell> wgrant, running now
[08:15] <jam> robert_ancell: it is possible that fetch-all-records is accidentally sharing a connection, and it is trying to read and write to the same connection
[08:15] <wgrant> It's only ~600KB, so should be fairly fast.
[08:15] <robert_ancell> wgrant, same error
[08:15] <wgrant> Hrmph.
[08:18] <wgrant> Indeed, reproducible.
[08:18] <poolie> hi jam
[08:18] <wgrant> jam: Perhaps it would be best to reset stacking_location in branch.conf, and do a real unstack.
[08:19] <jam> wgrant: sounds like something to try
[08:19] <jam> I know I used hitchiker to bit-wise copy lp:lightdm and setting the stacking_location allowed me to branch from it
[08:19] <jam> hi poolie, hope you're not working too late again :)
[08:19] <poolie> hi, no, i'm fine
[08:20] <wgrant> jam: I grabbed it over sftp and tried a few things with it, yeah.
[08:21] <seb128_> re
[08:21] <seb128_> conference internet is not really reliable
[08:21] <seb128_> robert_ancell is still getting issues with the new command, not sure his messages went through though
[08:21] <robert_ancell> just back now
[08:22] <wgrant> robert_ancell: With your favourite SFTP client (eg. nautilus), could you edit sftp://robert-ancell@bazaar.launchpad.net/~lightdm-team/lightdm/trunk/.bzr/branch/branch.conf, setting stacking_location to "~robert-ancell/lightdm/trunk" instead of ""?
[08:22] <robert_ancell> last I heard was "wgrant: Hrmph."
[08:22] <wgrant> 18:15:23 < wgrant> Hrmph.
[08:22] <wgrant> 18:18:16 < wgrant> Indeed, reproducible.
[08:24] <wgrant> It's unclear how it got set to "" in the first place, but we suspect someone changed it manually.
[08:24] <jam> poolie: sometimes, facebook is a bit... odd. I just saw your politics post (via twitter), read it, went back to my page to "like" it, and it was now gone from my page. So I had to track it all the way back to your own page, etc.
[08:24] <jam> the 'ethereal' nature of FB posts is good and bad
[08:25] <poolie>  huh
[08:25] <poolie> i think you don't always get repeatable reads either
[08:25] <poolie> of the same page
[08:25] <jam> I remember reading that they had tons of knobs to scale with load, which included reducing what is shown, etc.
[08:26] <jam> so yeah, I tend to spawn pages that I want to read, and come back to them by closing tabs
[08:26] <jam> which leads to lost state, I guess
[08:26] <robert_ancell> wgrant, ok, modified
[08:27] <wgrant> robert_ancell: I suck. Should be "/~robert-ancell/lightdm/trunk"
[08:27] <wgrant> Forgot the leading /.
[08:27] <robert_ancell> wgrant, ok, fixed
[08:28] <wgrant> Yet apparently still broken...
[08:28] <wgrant> Hrm.
[08:31] <wgrant> jam: This is odd. It seems to not work on LP.
[08:31] <jam> wgrant: I see "/+branch-id/..." eleswhere
[08:31] <wgrant> jam: Perhaps the hpss does odd things.
[08:31] <wgrant> Yeah, but both work.
[08:31] <wgrant> +branch-id is only a few months old.
[08:31] <jam> wgrant: I believe Launchpad's codehosting rewrites the stacked location to clients.
[08:31] <jam> sure=
[08:32] <jam> http://bazaar.launchpad.net/~bzr-pqm/bzr/2.1/.bzr/branch/branch.conf
[08:32] <jam> lp-hosted:///~...
[08:32] <jam> ah, that is parent location
[08:32] <jam>  /+branch-id was rewritten for many branches
[08:32] <wgrant> 7.242  hpss call:   'BzrDir.open_branchV3', '~robert-ancell/lightdm/trunk/'
[08:32] <wgrant> 7.242               (to bzr+ssh://bazaar.launchpad.net/%2Bbranch/lightdm/)
[08:32] <wgrant> 7.577     result:   ('branch', 'Bazaar Branch Format 7 (needs bzr 1.6)\n')
[08:33] <jam> well, you certainly need an opening '/~robert-ancell/...'
[08:33] <wgrant> Hmm?
[08:34] <wgrant> When branching lp:lightdm, it successfully opens lp:~robert-ancell/lightdm/trunk as the stacked-on branch.
[08:34] <wgrant> Oooh.
[08:34] <wgrant> I wonder.
[08:34] <wgrant> Could we need to force LP to scan it?
[08:35] <wgrant> It's possible it won't use the fallback unless the DB knows about it.
[08:35] <wgrant> I forget exactly how this works.
[08:40] <jam> wgrant: push --overwrite -r -2; push ?
[08:41] <wgrant> jam: Probably easiest.
[08:41] <wgrant> But I need to go and organise dinner.
[08:43] <jam> wgrant: sure. if you're still here, what is failing, since branching seems to be succeeding
[08:59] <wgrant> jam: Sure you didn't accidentally use a shared repo?
[09:00] <jam> wgrant: I'm sure I wasn't locally
[09:00] <jam> it was a plain recursive cp
[09:00] <wgrant> It works fine locally, yes.
[09:01] <wgrant> Hmm, broken over HTTP too.
[09:02] <wgrant> $ bzr branch http://bazaar.launchpad.net/~lightdm-team/lightdm/trunk
[09:02] <wgrant> bzr: ERROR: Revision {StaticTuple('language.sgml-20100710032117-i0kdmrwf93qvp5j8-1', 'robert.ancell@gmail.com-20100710034239-8eysy1lpccerztec')} not present in "<bzrlib.groupcompress.GroupCompressVersionedFiles object at 0x236c810>".
[09:03] <wgrant> Er.
[09:03] <wgrant> stacked_on_location has reverted to "?
[09:03] <wgrant> ""
[09:03] <seb128> hum, timeouted :-(
[09:03] <seb128> wgrant, jam: did you guys figure what is needed?
[09:03] <seb128> sorry we keep timeouting there so it's a bit hard to keep track of the discussion
[09:04] <wgrant> seb128: THe change that robert_ancell made has apparently been reverted.
[09:04] <wgrant> Which is slightly odd.
[09:07] <robert_ancell> wgrant, oh, I reverted it so I could push some changes
[09:08] <wgrant> Ahh. It prevented you from pushing changes?
[09:09] <wgrant> What was the error?
[09:09] <wgrant> That's rather unexpected.
[09:09] <robert_ancell> wgrant, I wasn't sure, but I thought you'd gone to dinner so I put it back just in case
[09:09] <robert_ancell> and then the network dropped out so I didn
[09:09] <robert_ancell> 't get to push them anyway
[09:10] <wgrant> Could you put the real path back and retry the push, if you haven't already pushed?
[09:10] <wgrant> The current suspicion is that forcing Launchpad to rescan it (by pushing) will make everything see the correct path.
[09:11] <wgrant> Then we can properly unstack it, and everything will be happy.
[09:11] <robert_ancell> wgrant, set back to "/~robert-ancell/lightdm/trunk"
[09:12] <seb128> why are those issues happening in the first place? was there a user mistake there?
[09:12] <robert_ancell> pushing changes...
[09:12] <wgrant> seb128: It looks like someone may have tried to unstack the branch by editing branch.conf directly, but it's not entirely clear.
[09:12] <robert_ancell> 9kb
[09:12] <robert_ancell> ...
[09:12]  * robert_ancell smacks head on desk
[09:13] <robert_ancell> 18kb...
[09:14] <wgrant> We did do a mass-rewrite of stacked_on_locations on LP 2.5 months ago, but nothing since then.
[09:15] <wgrant> So, HTTP now works fine.
[09:16] <wgrant> bzr+ssh still does not, but that may be because the push isn't done yet.
[09:17] <robert_ancell> 34kb
[09:18] <wgrant> That's quite a connection you have there.
[09:50] <jelmer> 'morning poolie :)
[09:51] <poolie> hi thar
[09:51] <poolie> i'm off to squash
[09:52] <poolie> squash something or other
[09:52] <jelmer> have fun :)
[10:06] <seb128> re
[10:07] <robert_ancell> wgrant, ok, managed to push now.  Branch still doesn't work, fetch-all-records has same error
[10:08] <wgrant> robert_ancell: Indeed... over bzr+ssh it's still broken, but HTTP works.
[10:08] <wgrant> I am in over my head here; I may leave you to jelmer and jam :)
[10:09] <robert_ancell> ok
[10:12] <seb128> jam, jelmer: hey ;-)
[10:29] <seb128> ok, lunch time there
[10:29] <seb128> see you later
[10:29] <seb128> could somebody try to pick on that issue?
[10:30] <seb128> oneiric feature freeze is this week and having the lightdm vcs broken is blocking distro work
[13:57] <jml> bzr branch ubuntu:<package> should resolve binary packages, if it doesn't already
[13:58] <jelmer> jml: It doesn't
[13:59] <jelmer> apt:<package> does though, but isn't always correct
[14:00] <jml> why are there two ways?
[14:01] <jelmer> jml: One looks at the Vcs-* field in the source package
[14:01] <jelmer> jml: Which is the right thing to do in Debian
[14:02] <jml> jelmer: ah
[15:24] <GRiD> hi jelmer. re: merge 70691, what's the UDD importer? also having trouble finding docs on "merge-upstream" ...
[15:25] <jelmer> GRiD, "bzr merge-upstream" is a part of the bzr-builddeb plugin
[15:25] <GRiD> ok
[15:26] <jelmer> GRiD, basically, I'm wondering if the tree implementation should do the warning or the command-line layer that lies on top of that
[15:27] <GRiD> jelmer, ok i got that much. if it lives in the command-line layer, does that mean the various other (non CLI) clients have to implement it as well?
[15:27] <jelmer> GRiD, yes, but I'm not sure if they would want to implement it this way
[15:27] <jelmer> GRiD, e.g.I imagine graphical frontends to simply interactively prompt you whether you are sure
[15:28] <GRiD> jelmer, yeah that probably makes more sense. if it were done in the tree, how would these other clients handle it now, anyway? they capture warning output?
[15:29] <jelmer> GRiD: it varies; I think qbzr captures and displays it, bzr-gtk simply ignores it
[15:30] <GRiD> jelmer, hm. ignoring it would surely baffle users.
[15:31] <GRiD> jelmer, i think you may be right then. this particular change is probably better off in the front end.
[15:59] <vila> what happened to pqm ? 40% of the test suite in ~100 mins ?
[16:01] <jelmer> yeah, something seems to be slowing it down
[16:12] <vila> jelmer: is your XXX at the end of bzrdir.py still valid ?
[16:12] <jelmer> vila: somewhat; there is probably still some code relying on it
[16:13] <jelmer> vila: +1 on removing it for 2.5 though, fixing the fallout shouldn't be too bad
[16:32] <cyberix> I often start working on something on my laptop by doing bzr init in a folder. Later I decide I want to backup that directory to a shell machine that has ssh.
[16:32] <cyberix> What is the correct way of doing this?
[16:32] <LeoNerd> bzr push sftp://...
[16:33] <cyberix> does create a directory for me on the remote machine?
[16:33] <LeoNerd> Or maybe bzr+ssh if that machine has bzr installed as well
[16:33] <jelmer> vila: I guess we should also deprecate using some of the class methods on BzrDir, and instead encourage the use of ControlDir
[16:33] <LeoNerd> push --create-prefix   will
[16:33] <vila> jelmer: /me nods
[16:34] <vila> jelmer: I was mostly wondering if your later refactorings had already addressed the issue
[16:35] <cyberix> thank you
[16:47] <glyph> I have a repository in my home directory
[16:47] <glyph> it has to say there for legacy reasons
[16:47] <glyph> but I'd really like to make some local branches
[16:48] <glyph> my thought was that I'd do 'bzr branch . .upstream', then hack on some stuff, and still have a handy local copy of upstream to revert to / compare with
[16:49] <glyph> (not to mention pull into without merging)
[16:49] <glyph> but the branch itself isn't a shared repo, apparently
[16:49] <glyph> is there a way to make a directory be _both_ a branch _and_ a shared repo?  if there is, is that a terrible obscene thing to do that I will regret forever?
[17:16] <maxb> It's a bit weird, but not terrible afaik
[18:20] <glyph> maxb: ... OK, so how do I do it?
[18:43] <maxb> I'm not sure there's an actual UUI
[18:44] <maxb> * UI
[18:44] <maxb> I tend to cheat and just run "touch .bzr/repository/shared-storage"
[19:11] <glyph> maxb: you do this regularly? :)
[19:12] <glyph> maxb: my concern is that 'bzr init-repo .' raises an exception
[19:24] <maxb> I have, in the past, used "rm -fr .bzr/branch && touch .bzr/repository/shared-storage" to destroy a branch and turn it into a shared repository keeping the old branch's revision data, into which I can then rebranch other related branches
[19:24] <maxb> bzr init-repo . does error, but I'm not sure there's any logic to it doing so
[19:27]  * jelmer waves
[19:36] <exarkun> maxb: Hiya.  What do you think the chances of hardy packages for bzr betas would be?
[19:54] <exarkun> Okay nevermind, I guess I don't care about that.
[20:09] <exarkun> So I'm trying bzr 2.4b5
[20:10] <exarkun> As far as I can tell, it is ignoring my already-initialized svn metadata cache
[20:10] <exarkun> which means it takes about 4 hours to check out what I want to check out
[20:11] <exarkun> are there known issues with bzr-svn and bzr 2.4b5?
[20:13] <jelmer> exarkun: not in particular
[20:13] <jelmer> exarkun, did you perhaps uninstall python-tdb since you last used bzr-svn?
[20:13] <exarkun> nope
[20:18] <exarkun> Can I provide some other information to help track down the problem?  I have no idea what's going on.
[20:20] <exarkun> according to python -vv, it found the tdb module
 maxb: Hiya.  What do you think the chances of hardy packages for bzr betas would be?
[20:27] <maxb> Zero. Given bzr 2.4 requires python 2.6, which hardy has not
[20:33] <jelmer> exarkun, that might actually be the issue with your bzr-svn cache, too
[20:34] <exarkun> What might be?
[20:34] <jelmer> python-tdb is only built for a single python version, perhaps your bzr is now using a different python version.
[20:34] <exarkun> according to python -vv, it found the tdb module
[20:34] <exarkun> Also according to lsof, the tdb sos are in memory
[20:35] <jelmer> hmm, no idea in that case - did it say anything about creating the cache directory?
[20:35] <exarkun> /usr/lib/libtdb.so.1.2.9 and /usr/lib/pyshared/python2.7/tdb.so and /var/lib/buildbot/.cache/bazaar/svn/bbbe8e31-12d6-0310-92fd-ac37d47ddeeb/cache.tdb is also open
[20:36] <exarkun> maybe the svn metadata cache is a red herring, I dunno
[20:37] <exarkun> it's "copying revision 6141/8348" now
[20:37] <exarkun> ~25 minutes in
[20:38] <exarkun> I hoped sticking some extra --verbose flags onto the command would make it report something more interesting, but it seems not
[20:38] <exarkun> nothing aside from the progress indicator on stdout, nothing interesting in .bzr.log
[20:39] <jelmer> exarkun, ahh
[20:39] <jelmer> exarkun, is it just copying more revisions that usually?
[20:39] <jelmer> exarkun, because it might be unrelated to the cache
[20:40] <jelmer> exarkun, in 2.4b5 bzr automatically fetches all revisions referenced by tags, even if they are not on the mainline
[20:40] <exarkun> I don't know how many revisions it usually copies, but it usually completes the checkout in a handful of seconds instead of half an hour or more
[20:41] <exarkun> I don't entirely understand how tags get mapped from svn to bzr.  I suppose it could be that.
[20:41] <exarkun> is it a one-time thing?  after this completes it will have the extra revisions and not need to repeat this?
[20:41] <jelmer> exarkun, yeah
[20:41] <jelmer> exarkun, and there's a bug open about making this behaviour optional for 2.4.0
[20:43] <exarkun> 8348 seems like a lot of extra revisions to have been hiding under a tag.  I don't suppose there's any way to learn what revisions it's copying?
[20:45] <exarkun> On a tangent, why is copying revisions out of svn so slow?  Would it be possible to pipeline requests?  Or open multiple connections?  Or is this just as fast as svn servers can go?
[20:46] <jelmer> exarkun: svn servers aren't really made for fetching multiple revisions
[20:46] <jelmer> there are some tricks we don't do yet, that will improve the performance, but it's not going to be significantly faster until the server side is improved.
[20:47] <exarkun> eyeballing this progress meter, I'd say it's doing about 1 revision every 6 seconds
[20:48] <exarkun> it was much faster than this at the beginning of the operation
[20:48] <exarkun> is the svn server worse at serving newer revisions than at older revisions?
[20:50] <santagada> is there a command line parameter to make bzr run without progress bars and be noninteractive?
[20:50] <jelmer> exarkun: it depends on the backend being used; for fsfs I think newer revisions are generally faster
[20:51] <exarkun> This repo is fsfs
[20:51] <santagada> bzr help global-options don't show anything interesting and so does a google search for bzr noninteractive
[20:52] <jelmer> santagada, I think there is an environment variable
[20:52] <santagada> jelmer: probably more than one... but I can't find any docs on this, surely someone is using bzr in semi-batch mode
[20:52] <exarkun> done, real    39m31.917s
[20:53] <exarkun> santagada: if you don't have a pty, it doesn't display those things
[20:53] <jelmer> santagada, bzr help env-variables
[20:54] <jelmer> santagada, looks like BZR_PROGRESS_BAR=none should help
[20:54] <santagada> jelmer: mine doesn't have this one
[20:54] <jelmer> santagada, bzr's command-line commands are already noninteractive, with the exception of "bzr uncommit"
[20:55] <exarkun> jelmer: So the reason the svn cache wasn't updated by that is that "copying revisions" goes from the svn server into the repository?  And the cache probably already had all of those only-on-a-tag revisions?
[20:55] <jelmer> exarkun: Are you sure it was updating the cache? It seems like it was just copying a lot of revisions.
[20:55] <jelmer> exarkun: when it updates the cache it always updates the cache for the entire repository
[20:55] <exarkun> jelmer: no, it didn't update the cache at all.
[20:55] <santagada> jelmer: BZR_PROGRESS_BAR is not on my help env-variables
[20:56] <exarkun> I don't know what "copying revisions" means
[20:56] <jelmer> santagada, what version of bzr do you have?
[20:56] <santagada> jelmer: on the server, 2.1.4 ubuntu 10.04 lts
[20:57] <jelmer> exarkun: what it says, fetching revisions :) The actual revision contents (revision deltas) that is.
[20:58] <santagada> jelmer: so older versions don't have this?
[20:59] <jelmer> santagada, it seems it existed before but wasn't documented
[21:32] <exarkun> sigh
[21:33] <exarkun> http://buildbot.twistedmatrix.com/builders/lucid32-py2.6-select/builds/1089/steps/bzr/logs/stdio
[21:34] <exarkun> 2.4b5 not so hot
[21:34]  * jelmer tries
[22:05] <glyph> jelmer: adding bzr-svn to our buildbots has been a small disaster in terms of VCS reliability :-(
[22:05] <lifeless> :(
[22:05] <glyph> jelmer: is there anything you can recommend that might work around these problems?
[22:05] <glyph> some secret configuration file option that will slow things down but make it more reliable or something?
[22:06] <jelmer> glyph: :(
[22:07] <jelmer> glyph: It depends on what you need exactly
[22:07] <jelmer> glyph: Are there bugs about about the current issues you've run into?
[22:23] <glyph> jelmer: apparently not, google's only record of the message in that last error is https://code.launchpad.net/~maxb/bzr-svn/fix-syntaxwarning/+merge/27564
[22:23] <glyph> jelmer: it's not so much that we have one specific issue as that we seem to keep finding them
[22:30] <lifeless> exarkun: hi
[22:30] <lifeless> exarkun: while you are here, I have a question about http://twistedmatrix.com/trac/ticket/2851
[22:30] <lifeless> actually, let me switch channel
[22:48] <exarkun> https://bugs.launchpad.net/bzr/+bug/819584 is perhaps the bug about the most recent failure
[22:48] <lifeless> poolie should be around in a little bit
[22:48] <lifeless> its still early-am for him
[22:49] <nigelb> morning.