/srv/irclogs.ubuntu.com/2009/08/25/#bzr.txt

poolielifeless: did you revert the bug policy change?00:02
lifelessyes00:11
lifelessabout 5am or so00:11
lifelessits now blocked on you, aaron's approve vote notwithstanding00:14
pooliei can't go for "use either one randomly"00:17
pooliei could be convinced to use it as Ubuntu does, meaning that random users can't "really" confirm it00:18
pooliebut that feels more heaviweight than necessary00:18
poolieespecially if you think about bugs flipping incomplete/confirmed00:18
poolie"somebody does it" or even "lots of people do it" is not very convincing00:18
poolielots of people use 8-space tabs but i don't want random bzrlib files being done with 8-space tabs00:19
pooliemm00:21
lifelesspoolie: so, I don't think I was asking for random; only to not have to memorise different rules when the difference doesn't gain us anything.00:21
lifelessif you can point to something we gain by being consistent, I'll jump on board and be as consistent as a consistent thing00:21
pooliethe rule being "don't use triaged"?00:21
lifelessa rule we haven't been honouring for some time, based on bug database evidence00:23
pooliesheesh00:23
igcmorning00:23
lifelessif it hasn't been causing harm, I think we should relax the rule00:23
igchi poolie, lifeless, jam00:23
lifelesshi igc00:24
pooliealso, according to bug database evidence, we have lots of bugs, therefore we should keep having them?00:24
pooliebe serious00:24
pooliehi igc00:24
lifelesssheese yourself, totally useless analogy - not the same thing at all.00:25
* lifeless goes back to fixing bug 39367700:25
ubottuLaunchpad bug 393677 in bzr "pushing a 1.9 branch stacked on a 2a branch causes problems" [High,Confirmed] https://launchpad.net/bugs/39367700:26
jampoolie: sorry we got cut off. my cell phone died and I had to pick up my son anyway. If you want to chat more, maybe we can do so after a couple hours00:55
poolienp01:25
pooliejam, ping me here if you like01:25
garyvdmHi igc.01:26
igchi garyvdm!01:26
garyvdmI've been working on a blue print for a text conflict resolving tool.01:26
garyvdmIt's not finished yet, but there lots done so far.01:27
garyvdmhttp://bazaar-vcs.org/qbzr/Blueprint/diffmerge01:27
poolieooh01:28
garyvdmJust wanted to bring you attention to it. I would like to discusses it in detail post 2.001:28
garyvdmAnd with vila01:28
garyvdmHi poolie01:28
garyvdmigc: The bits I still need to spec out is the intergration with annotate and log.01:29
poolieautomatically helping you find the context for the merge would be excelletn01:30
fullermdigc: Hey, quick fast-import Q...   does it rely on essentially holding the stream in memory?01:30
lifelessfullermd: no01:31
lifelesslittle bits of01:31
lifelessmemory issues?01:31
igcfullermd: no01:31
garyvdmGood night all.01:31
fullermdSo, if I've got this ~3.5 gig SVN repo, it probably won't want to suck up memory on that order to import?01:32
lifelessfullermd: heh01:32
lifelessno01:32
lifelessports?01:32
igcfullermd: that's a baby :-)01:32
fullermdNo, ports is still in CVS.  src is in SVN.01:32
fullermdI still don't have the guts to tackle ports   :p01:33
lifeless\o/01:33
igcfullermd: the emacs fastimport dump is 7.5GB gzipped01:33
lifelessfullermd: does it have modules at all?01:33
fullermdIt _is_ a module  ;)01:34
igcfullermd: the main thing to watch is that svn-fast-export.py falls over on huge repositories (like OOo) with "too many open files"01:35
igcfullermd: that's a bug somewhere is the python-subversion bindings I think01:35
fullermdFunny, I was thinking that the other week when I glanced at what was needed for it...01:36
igcfullermd: but it often works (and there's a svn-fast-export.c that doesn't have the issue if it does)01:36
fullermd"Subversion python bindings?  You mean the ones that jelmer gave up on using 'cuz they were too buggy?"01:36
igcfullermd: there's at least 3 binding to my knowledge, so probably but not sure01:37
igcbindings01:37
lifelesspython-subversion01:37
lifelesssubvertpy01:37
lifelessand pysubversion01:37
lifelessIIRC01:37
fullermdSo much simpler with CVS, where everybody gets to just implement their own RCS file parser...01:38
jkakarabentley: I've been using your pipeline plugin since yesterday and I love it.  Thanks a lot! :)01:47
poolieigc, i thought you wrote some developer docs about content filtering but i don't see them in the tree01:54
pooliedid they get lost, or was it perhaps just a mail thread that i was thinking of?01:54
lifelessabentley: poolie has asked that I land the iter changes branch and we tweak from there - even if that is to then put the UI back the way it is now.01:55
lifelessabentley: just giving you a heads up01:55
=== Noldorin_ is now known as Noldorin
abentleyjkakar: Cool!02:00
jkakarabentley: I have a pipeline with 8 branches and am happily making progress jumping between them.02:02
abentleylifeless, poolie: I don't want to get it the way of fixing bugs.  But it feels like fixing the bug has gotten married to UI changes whose value is not clear-cut, and could easily have been done separately.02:03
abentleyjkakar: Wow, that might be the deepest bzr pipeline ever.  :-)02:04
jkakarabentley: Heh. :)02:05
jkakarabentley: I'm refactoring a bunch of existing code that has a nice hierarchy of objects already implemented.02:05
jkakarabentley: I'm using a pipe for each level, making the changes I want, and slowly working my way through it.  Having pipes is actually helping me focus and figure out clean ways to make the changes I want to make.02:06
abentleyjkakar: I find it helps that way too.  Sometimes I'll work on something as a pipeline, even when I wind up submitting only the last pipe.02:07
jkakarabentley: Yeah, I could see doing that too.02:08
igcpoolie: I'll look - one moment02:11
poolielifeless: nice mail re bugs; thanks02:20
igcpoolie: there's no separate design doc to my knowledge. There's pieces that may help though ...02:21
igc(1) http://bazaar-vcs.org/LineEndings/Roadmap02:21
igc(2) bzrlib/filters/__init.__.py docstring02:21
lifelesspoolie: anytime02:21
lifelesspoolie: all it takes is a good 1/2 hour chat :P02:21
igc(3) bzrlib/dirstate/SHA1Provider class docstrings02:22
igc(4) I'm sure there's useful tidbits in various email threads as well fwiw (not that they count as doc)02:23
poolieigc, thanks02:31
pooliei might provide a bit of an overview or fusion of them02:31
spivHmm, the -s option to selftest seems to be broken.02:43
lifelessspiv: fixed02:43
spivOr the aliases, anyway..'02:43
spivlifeless: in bzr.dev?02:43
lifelessi my branch, which a local typo stopped landing this morning02:44
lifelessits on its way again now02:44
spivAh, good.  Thanks.02:44
lifelessjust use a long alias for now02:44
lifelessspiv: https://code.edge.launchpad.net/~lifeless/bzr/test-speed/+merge/1063302:45
lifelesswhile U wait02:45
spivYeah, I'm using the full python name for now.02:46
lifelessspiv: so two things02:50
lifeless1) ICanHazReview02:50
lifelessI waved that branch in front of poolie, but I suspect you'll have more immediate interest in it, given you're working on perf02:50
lifeless2) self.make_branch_and_tree - It seems that this creates disk branches always, or something. I'm confused about it. I'd like to make a playdate to beat up on it, late this week or early next week.02:51
lifelessspiv: ^02:54
poolielifeless: this is an interesting case for wanting some kind of ad-hoc dependency injection to tests02:54
spivI haven't looked at make_branch_and_tree recently, but it usually does confuse and vex me when I do.02:54
lifelesspoolie: your branch02:54
poolieie i'd like to say, "run everything with crlf conversion turned on" and see what fails02:54
lifeless?02:54
pooliethis meaning content filtering02:54
lifelesspoolie: I agree. broadly 'parameterise everything in this dimension'02:54
poolieobviously that would require the tests be written in a way to work with that02:55
poolieso you could not just do it now very easily02:55
lifelessyes, words out of my mouth.02:55
spivlifeless: looking at your branch now02:57
lifelessdanke02:57
poolieigc, what i have so far is http://pastebin.ubuntu.com/259053/03:13
pooliedo you see anything wrong?03:13
igcpolie: I'll take a look03:19
lifelessspiv: ping03:19
lifelessspiv: when adding remoting of exceptions, do you test them?03:19
lifelessor just make-it-work and depend on tests that build on that ?03:20
spivlifeless: I try to test them03:20
spivI don't think there's perfect coverage03:21
spivI'm just looking up the relevant tests.03:21
lifelessI'm adding IncompatibleRepositories03:21
spivThere's test_remote.TestErrorTranslationSuccess for the client-side03:22
igcpoolie: that's excellent - thanks03:22
lifelessq03:22
pooliethanks03:22
igcpoolie: I particularly like the clarification re content-only, not tree munging03:23
pooliemm03:23
poolieit would be interesting to do that later03:23
igcpoolie: I'm *not* volunteering for that one fwiw :-)03:23
poolie:)03:24
spivAnd there's some per-request error serialisation tests in test_smart.03:24
igcpoolie: I'm planning to fix the current content filtering bugs real soon now and then never touch it again :-)03:24
poolieok03:24
poolielet's talk, later03:25
pooliemaybe after this bug i'll understand it better03:25
pooliethis doc is yak-shaving for bug 41550803:25
ubottuLaunchpad bug 415508 in bzr "Content filtering breaks commit w/ merge parents" [Critical,In progress] https://launchpad.net/bugs/41550803:25
spivI don't think I have direct tests for the generic server-side serialisation of various exceptions (bzrlib.smart.requests._translate_error), although I do have tests that translation will occur (even when during streamed bodies etc).03:26
spivThose cases are probably covered indirectly, though.03:26
igcpoolie: understood. the one I need to finish fixing is bug 38587903:27
ubottuLaunchpad bug 385879 in bzr "EOL filter only applied to files when first checked out" [High,In progress] https://launchpad.net/bugs/38587903:27
* igc lunch03:30
lifelessspiv: so03:33
lifelessspiv: rich objects03:33
lifelessdo we flatten to strings and keep them that way03:33
lifelessor do we try to reconstruct [in these exceptions]03:33
lifelessCommand 'pqm-submmit' not found, perhaps you meant 'pqm-submit'? [y/n]: y03:41
lifeless:)03:41
lifelesspoolie: I'm halt()ing for work. Hopefully I'll sleep more tonight03:42
spivlifeless: we try to reconstruct some things03:50
spivlifeless: e.g. if we already have a Branch or Repository locally, we may as well use that.03:50
spivlifeless: I don't think there's a firm policy yet.03:50
lifelessspiv: I'm dealing with Repository here, and won't have at either of them. In fact, one won't exist cause it will be deleted :P03:51
spivAt the moment it's really been driven by what the individual exceptions require/expect.03:51
lifelessspiv: I'm inclined to coerce this one down to strings and stay there03:51
spivI'm starting to think I should be more inclined to adjust the exception classes than adjust the error deserialisation to suit them, although I don't have any specific cases in mind.03:52
spivThat's ok with me, although I suggest making it explicit in the exception class that it has strings rather than repo instances.03:52
spivOr at least, that it can have.03:52
lifelesssure03:53
lifelesstomorrow :)03:53
spivEnjoy your afternoon :)03:53
lifelessyou'll probably get to enjoy this sort of schedule soon :P03:54
lifelesswaking @ 4 that is03:54
spivHeh.03:54
spivIf upstairs keeps deciding that hammering things at 1am is a great idea, I won't even have to wait ;)03:55
lifeless><03:55
poolieok switching machines04:44
=== poolie changed the topic of #bzr to: Bazaar version control system | 1.18 final released soon | try https://answers.launchpad.net/bzr for more help | http://bazaar-vcs.org | http://irclogs.ubuntu.com/
poolieigc: mini-review wanted on http://bazaar.launchpad.net/~mbp/bzr/doc/revision/463604:51
pooliejust a few more additions beyond what i showed you before04:51
pooliemoved to https://code.edge.launchpad.net/~mbp/bzr/doc/+merge/1063804:54
=== gorozco is now known as p4tux
poolieigc, it seems like what we need for bug 415508 is for commit to say to the wt: give me the hash of the canonical form of this file iff you know it without reading the whole file05:11
ubottuLaunchpad bug 415508 in bzr "Content filtering breaks commit w/ merge parents" [Critical,In progress] https://launchpad.net/bugs/41550805:11
igcback05:20
igcpoolie: I'll take a look now05:20
poolieigc: sadly the dirstate.py code seems to assume the stat size is the same as the size column05:33
poolieso we can't rely on the value cached there to be the size of the canonical form05:33
igcpoolie: where does it still do that?05:48
poolieadd()05:48
poolieand py_update_entry05:49
* igc looks05:49
poolieand the pyrex update_entry05:50
poolieigc: what do you think?05:59
pooliethat code might not be active on an important path i suppose06:00
lifelessiter_changes06:01
igcpoolie: starting with your doc patch ...06:01
igcI'm not sure the comment about the UI is right06:01
lifelessit would be worth a smoke test to make sure iter_changes with size changing filters returns the right size06:01
igce.g. diff ought to show ...06:01
igchow the canonical form changes06:02
poolieok, does it?06:02
igcthat's painfully for external diff tools but the right thing IMO06:02
pooliei'm trying to document what does happen more than what should happen06:02
igcpoolie: yes, I think diff does06:02
igcalso export dumps the canonical format ...06:03
igcthough it has an option to apply filters to the output06:03
igcpoolie: so I'll approve your doc patch with those tweaks06:05
poolieso, maybe i shouldn't generalize, and just say that different commands might have different defaults?06:05
poolieor do they all default to the canonical form?06:05
pooliealso i'll have to update it about dirstate, assuming that's correct that it's not always storing the canonical size06:06
igcpoolie: all canonical to my knowledge06:06
igcwrt dirstate, I *thought* we had py_update_entry covered and the pyrex implementation06:07
igcadd() I can't recall changing, though the docstring is explicit about the fingerprint applying to the conical form06:08
=== abentley1 is now known as abentley
poolieright, but they are using st_size06:10
pooliei haven't actually proved it's wrong but they do seem to be accessing something they should not06:13
lifelesstest_intertree tests both implementations for iter_changes06:13
poolielifeless/igc: teddybear re testing this:06:20
pooliethis being the actual originally reported bug, that multiple commits here store multiple copies even when the canonical form hasn't changed06:20
pooliei think we are lacking smoke tests here06:20
poolieor integration tests for all of content filtering06:20
pooliebut probably it also needs a more localized test for the specific change to record_entry_contents06:22
poolieand we could do that in isolation by just feeding it pre-canned content summaries, along with a fake tree06:22
poolieand then we'd observe what file graph it eventually writes out06:23
lifelessso06:24
lifelessthe bug was in tree - it exposed data inconsistent with its model06:24
lifelessbut we're changing record_entry to stop using that exposed data, because exposing the right data is too big a change [or something]06:25
lifelessso, if the new API doesn't have flaky data I don't think we need any new record_changes tests06:25
poolieactually it's too expensive06:26
lifelessthe altered existing ones are _very_ comprehensive.06:26
lifelesspoolie: re expensive - we have a size field, we could write the canonical size there when we determine the canonical hash.06:26
poolieso06:26
pooliewe could06:26
lifelessand on stat cache misses we'd read the file and figure out the right canonical hash - thats not so bad06:27
pooliewe'd have to either detect existing dirstates that have it wrong, or bump the version, or tolerate it sometimes being wrong til people's dirstate gets rewritten06:27
pooliethe last of those might be ok06:27
lifelessthats all true. I'm not meaning to judge the solution.06:27
lifelessjust teddybearing where we need to test.06:27
pooliei'd kind of like to do it, but not as part of this change06:27
lifelesswe are changing record_entry; but we're changing it in a way consistent with its tests.06:28
igcbbiab06:28
pooliemaybe, depending what ian says, i'll file a bug for that06:28
pooliecheerio06:28
lifelesswe're also changing tree, with the new api. We should test *there* on both filtered and unfiltered06:28
poolielifeless: anyhow, it's expensive and not very useful06:28
pooliemm, i have a test for it06:28
poolienot very useful because knowing the size doesn't help commit very much06:29
lifelessdo we need glue to test that record_entry does the right thing when given data that we've seperately tested is canonical?06:29
poolieif it's the same it still needs to check the hash, and if it's different it needs to read the whole thing06:29
pooliei guess i'm feeling the need for an overall integration test06:30
poolieor smoke test06:30
pooliethere don't seem to be any/many for commit with content filtering06:30
lifelessmmm, I think we don't :- if anything we'd want a test that the interface used by record_entry is actually the tree one, but in fact record_entry takes the result generated by the commit code06:30
pooliemaybe i'll put this up and see what happens06:30
lifelessso a test to close the loop would be  test that a) commit calls tree.NEWAPI and then calls record_entry(...NEWAPIRESULT)06:31
lifelessneither of which need to hit disk or exercise the whole stack. And with that test changes to commit to not use NEWAPI will show up, and we know (because the repository tests do this) that record_changes is compatible with the NEWAPI signature06:32
lifelessYMMV, Just my thoughts, etc.06:32
pooliemm06:36
pooliei agree with testing bits in isolation06:36
pooliei guess i just feel like it can miss the big picture06:36
poolieanyhow https://code.edge.launchpad.net/~mbp/bzr/415508-content-filtering/+merge/1064006:36
igcback06:39
vilahi all07:05
pooliehello vila07:07
vilahmm, someone broke the tests on leopard....07:07
poolieigc, feel free to say "nothing" but what do you think about smoke tests for content filtering?07:08
vilaha ha ! no paramiko on that slave, some test didn't check its dependencies :)07:08
igcpoolie: I feel we need them07:08
poolieit's the kind of thing that would be nice to write in a (whisper it) doctest-like mode07:09
poolienarrative mode07:09
igcpoolie: but I agree with lifeless about making sure we're testing the low level interaction for this particular bug07:09
pooliemm07:09
poolieit's not either or07:09
vilapoolie: hehe, no problem wrote both kind of tests :)07:09
poolieit would be slow and clumsy to test everything that way07:09
igcpoolie: I'm a fan of high level tests because it's end-to-end that ultimately matters07:10
igcpoolie: but good quality comes from checking each layer is doing it's bit correctly as well07:10
vilaigc: it's not either or, but high level tests tends to leave *bug* holes in the coverage07:11
igcvila: right07:11
vilas/bug/big/ funny typo :)07:11
igcvila: and low-level ones alone leave integration holes so either-or is not the answer!07:11
al-maisanHello there, can someone please explain how I can set a tag for a particular revision. I did "bzr help tag" but did not quite get ot.07:11
al-maisan*it07:11
igcto tag the current revision ...07:12
vilaigc: I find the integration holes easier to deal with... :)07:12
igcbzr tag xxx07:12
igcto tags an explicit revision ...07:12
igcbzr tag -rN yyy07:12
igcal-maisan: ^^^07:12
al-maisanigc: thanks, will try that.07:13
pooliewell i guess it was a silly question07:13
pooliei was actually wanting to ask "why don't we have them" and have the answer not be "cos ian got sick and the rest of us dropped the ball"07:13
poolie:-}07:13
poolievila, so what's up next for you?07:13
vilapoolie: today: fix the leopard regression and try to package a new bzr-gtk :-/07:14
vilaThe later is required as the last release version don't work with 1.18....07:14
vilaand I'll try to create the PPAs that time07:15
lifelessso, I think we have many more high level tests that we need at the moment. Thats not a reason not to write ones we need. But I feel an urge to be parsimonious about adding them.07:15
vilalifeless: agreed, and many of them should be turned into lower level ones too07:15
pooliei think it's unbalanced07:16
poolielike here we have a major feature and there's not really any integration tests07:16
pooliei think in some older tests there are probably too many high level tests07:16
poolieand the ones we do have are probably too slow to run and too hard to debug07:17
bialixhi igc07:29
igchi bialix: no explorer work so far today - hopefully tonight after dinner07:30
bialixok07:30
bialixyou answer my question :-)07:30
bialixvila: bonjour?07:31
igcbialix: still replying to emails in my queue and tying up other stuff :-(07:31
bialixigc: don't worry07:31
bialixigc: I'm just want to know about installer07:32
vilahello bialix !07:32
bialixigc: btw, quick answer on your q in bzr-windows about msi: I think the answer is NO07:32
bialixvila: hello!07:32
igcwell my plan is to package 0.7 tonight and hope someone picks up the ball and gets it into karmic07:33
bialixvila: I'd like to beg you again about merging my patch (now patch for paramiko default)07:33
vilabialix: was on my list :-(07:34
bialixvila: https://code.launchpad.net/~bialix/bzr/win32-paramiko-default/+merge/1056307:34
bialixvila: I'm sorry?07:34
bialixigc: I can't help with karmic. Gary could, but it's hard to catch him07:34
bialixfrom irclogs he was here this night07:35
pooliehello bialix07:37
bialixhello poolie07:38
bialixhow's 2.0beta going?07:38
fullermdFWIW, I'll pretty much always write high-level tests, 'cuz it's very easy to say what I want like that, compared to faking my way through the API...07:48
vilafullermd: And you do right !07:50
vilaI mean, it's a very good way to start, others can then rewrite your tests into lower levels ones07:51
vilaI often start by writing a *shell* script to reproduce a bug (based on a skeleton I derived from one of your bug reports, just because it was using 'bzr' as a parameter to help test against various versions (among other tricks)07:53
vilaonce I Isolate the problem enough I can write more precise tests.07:53
vilaThere has been discussions (I hope it wasn't in a code review :-/) about defining some kind of easy to use language to allow people to write tests more easily, so the idea in the air :)07:54
vilais in the air even (does it make sense in english ?)07:54
fullermdActually, IIRC, I started doing that after I got all riled up about some bug that turned out to be fallout from one of my aliases...07:54
fullermdSo having a var I could stick --no-aliases in was a "Don't be a dumbass in public" mechanism   ;)07:55
bialixI remember this idea was first developed by James Blackwell (?)07:55
vilabialix: sent to pqm08:02
bialixvila: thanks! and 2.0 branch too?08:02
vilabialix: against trunk though08:02
bialixpoolie said in ML 2.0 branch is separate now08:03
vilaindeed08:03
vilayou need explicit approval to land there I think08:03
vilaor the RM will cherry-pick it ?08:04
* fullermd dreads 2.0 betas...08:04
fullermdOnce they start coming out I have to make packaging decisions   :(08:04
bialixpoolie: waht about merging paramiko-default patch to 2.0?08:04
bialixpoolie: what about merging paramiko-default patch to 2.0?08:04
vilafullermd: yeah, yeah, people keep being afraid, but the truth is, we generally fail in unexpected places anyway but rarely in parts people were afraid about :-D08:05
vilafullermd: and if you could send me a short mail pointing to the better instructions to install the most important xBSD distro to test against, I could add it to the test farm one of these days...08:07
vilafullermd: It doesn't have to be detailed as long as it's: download the iso here, boot, click, click, done :)08:07
lifelessbialix: nominate it for 2.0 in launchpad08:08
lifelessor target it08:08
bialixnominate patch?08:08
bialixor nominate bug?08:08
vilabialix: and ensures that it can be merged cleanly into the 2.0 branch (that will help)08:08
vilabialix: bug08:08
bialixvila: it will be merged cleanly yes08:09
fullermdvila: *blink*  Non sequitor?  Or did I forget a conversation?08:09
vilabialix: so that it will either: 1) be merged in 2.0 2) be re-targeted08:09
bialixvila: unless you guys doing extra NEWS items and they are always conflicts08:09
vilaforget about NEWS conflicts, there is no way the RM can avoid handling them :)08:09
bialixvila, lifeless: I have no control over targetting bugs, so...08:10
vilafullermd: Clearly non sequitur, but I wanted to ask for a long time, now, was as good as any other time :)08:11
bialixbug https://bugs.launchpad.net/bzr/+bug/414743 nominated08:11
vilabialix: are you kidding ?08:11
ubottuLaunchpad bug 414743 in bzr "paramiko should be default client for Windows" [High,Fix committed]08:11
bialixvila: about what?08:11
vilaabout nominating bugs, just select the milestone, *that's* nominating :)08:12
vilawow, you're not part of bzr devs team on launchpad... :-/08:12
bialixvila: I'm not part of bzr team @ lp. so I can't08:12
bialixyes08:13
vilabialix: nice picture though :D08:13
bialixthanks08:13
bialixalso is 2 years old08:13
vilaoh, and I was wrong, nominating is a precise meaning, you seem to have done it anyway08:13
* bialix now is older and not so nice :-P08:14
fullermdOoh, that's a good excuse.  I'm gonna use that.08:14
vilafullermd: always happy to help (tm)08:17
fullermdI meant bialix's  :)08:17
bialixsorry?08:18
fullermdI'll try throwing something a sketch together for you.  I only really know Free, though; it's been 10 years or so since I touched Net/Open.08:18
fullermd"older and not so nice"08:18
vilafullermd: whatever you know the best08:18
bialixFree is FreeBSD?08:19
fullermdSome of the test failures, like the '..' one, are so weird I can't believe it actually works anywhere, so that's an easily portable fix.08:19
fullermdThe one with the disappearing revs, I have NFC though.  I don't even have a guess as to the culprit, so I dunno how portable the failure would even be.08:19
* fullermd nods at bialix.08:19
vilafullermd: you have *fixes* for test failures on FreeBSD ????08:20
fullermdNo, but the '..' would be pretty trivial.08:20
bialixfullermd: sorry, it seems I don't follow your last jokes08:20
* bialix trying to steal .desktop file from bzr-gtk08:20
fullermdbialix: Don't worry, it wasn't a very good one.08:20
bialixfullermd: ok, because I like your jokes08:21
bialixanybody knows something] about .desktop files?08:21
bialixanybody knows something about .desktop files?08:21
fullermdHeck, I use ctwm; I don't even know anything about desktops  :]08:22
* bialix even don't know what is ctwm and fear to ask08:23
fullermdThe only proper way to run a GUI, naturally.08:24
vilabialix: pre-historic window manager, a bit younger than twm08:24
fullermdPre-historic?!  Bah.  Kids these days...08:25
bialixlol08:25
fullermdI'll have you know that its latest commit was in June of this year.08:25
vilafullermd: sorry, I'm a bit grumpy because I played with gentto and went as far as twm running... :-D08:26
vilayeah gentto, that's it08:26
fullermdI hear gentto comes with a good hhtp server.08:26
vilaLOL08:27
AfCbialix: the .desktop spec is fairly clear; what are you having trouble with?08:28
bialixAfC: Icon08:28
bialixI've hacked something based on olive-gtk.desktop and pushed to trunk08:28
AfCbialix: Should be just08:28
bialixanybody able to test?08:28
AfCIcon=/fully/qualified/path/to/file.png08:29
bialixAfC: hmm, because bzr-explorer it's a plugin then I dont think I know what will be /fully/qualified/path08:30
AfCI'd show you a working example, but judging by the discourteousness rudeness above, I think we'll skip that.08:31
* bialix wonder...08:32
bialixAfC: I don't quite understand what do you mean08:32
AfCbialix: that was a Gentoo user expressing that he doesn't quite appreciate other people rubbishing the hard work of people who contribute to community distros.08:33
bialixAfC: I'm Windows user/developer08:34
bialixAfC: and I'm native Russian08:34
bialixso if you think I say something wrong -- I'll live with that08:35
AfCbialix: it wasn't you. It was the others.08:35
vilaAfC: ohhh, so sorry, that was a joke about me having lost the habit of installing linux the hard way,08:35
* bialix feels out of sync08:36
AfCbialix: but in this case, the working example I was going to show you was in a Gentoo package [to my knowledge it's not packaged in Debian or Ubuntu or Fedora]08:36
bialixI think I'd better skip all this stuff08:37
AfCbialix: but as the others here would just make fun of me if I attempted to show it, I think we'll just move on.08:37
vilaContrast my requirement to fullermd for an install: 'download iso, boot, click , click' and the way Gentoo is installed... different needs, different means, not a critic of the Gentoo community...08:37
AfCbialix: I do remember that http://standards.freedesktop.org/desktop-entry-spec/latest/apa.html was not much help, but http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s02.html does give the rules08:41
AfCbialix: I believe the FHS path for .desktop files is /usr/share/applications08:42
AfCbialix: I have lots of .desktop files there.08:42
AfCbialix: if you're running Microsoft Windows (only) then that won't be of much help to you08:43
bialixAfC: so IIUC it should be done when packaging08:43
AfCbialix: yeah, that gets tricky08:43
bialixAfC: not only08:43
bialixAfC: but bzr development I do only there08:43
AfCbialix: it's one of those things that the program knows the data for, but that needs to get deployed by make install && packaging08:43
bialixAfC: Ok, thanks08:43
AfCbialix: so what I can show you is a Perl script (a ./configure) that writes out a .desktop file at configure time.08:44
bialixI understand now08:44
AfCbialix: see the very end of http://research.operationaldynamics.com/bzr/slashtime/mainline/configure08:44
bialixI think it will be toooo much for me08:44
AfCbialix: `make install` moves that to $(DESTDIR)$(PREFIX)/share/applications08:45
AfCs/that/the .desktop file that outputs/08:45
bialixI see08:46
AfCbialix: sorry I don't have a cleaner example; most projects do m4 macros or similar template substitution. I did it with Perl08:46
bialixnp08:46
bialixI'm already understand I'm unable to propely do this stuff08:46
* bialix avoids do the things he can't test08:47
AfCbialix: and, for what it's worth, that IS an in-production application, so it is a real example08:47
AfCbialix: even if it's a very tiny program08:47
bialixtiny?08:47
AfCbialix: the package is just a small program that tells you the time[zone] in various places: http://blogs.operationaldynamics.com/andrew/software/slashtime/slashtime-the-graphical-version.html08:48
bialixI understand08:48
AfC"tiny" :)08:49
bialix:-)08:49
AfCbut "complete" in the sense that it installs properly, has translations, has a .desktop file, etc08:49
AfCThe cafe I am sitting in is closing. See ya08:51
* bialix waves08:51
* igc dinner09:30
pooliehello again bialix09:43
bialixhello again poolie09:46
bialixpoolie: I've tried to ask about including paramiko-default patch to 2.009:47
pooliehey09:47
bialixvila said you should judge09:47
pooliei just sent another post in the metronome thread09:47
pooliewell, as you know, i think it's a good idea in general09:48
poolieif we're going to do it we should do it before 2.0beta09:49
bialixso we going to?09:50
pooliewhat's the worst that could happen?09:51
poolie:)09:51
bialixpeople continu asking why push to lp does not work on windows?09:52
bialix*continue09:53
pooliei guess if there are people who have complicated putty setups eg to set up proxies they might stop working09:54
bialixas I said BZR_SSH=plink force it09:55
bialixand this mentioned in NEWS in Compatibility break section09:55
bialixI'm aware about 3 cases when plink does not work with lp09:56
pooliemm09:56
bialixit seems it depends on actual plink/putty version09:57
pooliealso, it would kind of avoid unnecessary variation09:57
poolielike if you have bzr working ok, and then for some other reason you install putty, it'll start doing something different09:58
bialixit?09:58
poolieit meaning this change09:58
bialixyes09:58
vilameh, where are the 1.18 and 2.0 branches on bazaar-vcs.org ? Or does the pqm direclty use the lp branches now ?09:58
poolieso being a bit more selfcontained is worthwhile09:58
poolieyes, direct to lp i think09:58
poolieok, let's do it!09:59
vilapoolie: so I send bialix patch to pqm against lp:bzr/2.0 ?10:00
poolieyes please10:00
bialixthanks gentlemen10:01
pooliejust for future reference, i don't think this kind of fix would be appropriate to merge into the branch after the stable release10:01
pooliethanks for the patch bialix10:01
bialixit was easy10:01
vilawow, oh yes, lp:bzr/2.0 resolves to ~bzr-qm/bzr/2.0 .... cute :)10:01
poolieok so i should probably go...10:02
vilapoolie: need some help ?10:02
vilapoolie: GO !10:02
poolieok, cheerio10:03
vilabialix: your started your branch from bzr.dev after 2.0 got created...10:04
bialix(and melody from crazy frog fly away...)10:04
bialixvila: ashes on my head!10:04
pooliehttps://edge.launchpad.net/bzr/+milestone/2.0 :)10:04
bialixvila: if you have rebase plugin installed, then cherrypicking will be easy10:08
vilabialix: no10:08
vilabialix: I mean, I don't have it installed10:09
bialixyou want me to cherrypick it?10:09
vilayes please10:09
bialixk10:09
bialixlp:bzr/2.0 yes?10:09
vilabialix: yup10:10
bialixvila: your no applicable to both cases10:15
vila? cherrry-pick is not easy ?10:16
bialixno, it's easy if you know how to run rebase :-P10:17
bialixjelmer should be proud of his weird design of -r argument for rebase command!10:17
bialixvila: rebased, and no conflicts encountered!10:18
vilapushed somewhere ?10:19
bialixvila: quick check: latest revision in 2.0 branch is luks patch?10:19
bialixvila: pushing now10:19
vilarevno 4634 luks patch for branch --switch10:20
bialixvila: bzr+ssh://bazaar.launchpad.net/~bialix/bzr/win32-paramiko-default-2.0/10:21
bialixpushed10:21
vilabialix: sent to pqm10:23
bialixthx10:23
vilaI should certainly try to merge 2.0 to trunk sooner rather than later to catch the conflicts asap10:24
vilabialix: remind me to do that if I forget :D10:25
bialixtomorrow?10:25
bialixor after 2.0 is out?10:25
vilabialix: once it's landed in the 2.0 branch10:26
bialixhmmmmm10:26
bialixtomorrow then ;-)10:26
vilaok10:26
vilabialix: still there ?10:56
bialixyip11:00
bialixvila: what's up?11:00
vilaha, tortoisebzr now includes a wtcache.py file that uses the 'with' feature11:01
vilais 2.6 a strong requirement on windows now ?11:01
vilait makes the dev/dev installer build fails11:02
bialixwtcache? I think it's recent work from Naoki INADA11:02
vilayup11:02
bialixvila: no, it's wrong11:02
bialixhe's asking about testing his new work11:02
bialixwait a sec11:03
vilathis has landed on lp:tortoisebzr .... that's more than testing :)11:03
bialixvila: https://lists.launchpad.net/tortoisebzr-developers/msg00041.html11:03
bialixvila: lp:tbzr is open for everyone and Naoki the one who trying to maintain it11:04
bialixyou should not be so grumpy11:04
bialixwrite him a mail, ok?11:04
bialix(preferrable using ML, but it's up to you)11:04
vilanot grumpy ! (Damn, am I grumpy today ? Afc first now bialix, soon fullermd ? ) :-) :-/11:04
vilabialix: just a heads-up, that's what the test farm is for :-D11:05
bialixvila: err! no! no! you're wonderfuil today11:05
bialixbad word chosen by me11:05
bialixsory11:05
bialixsorry11:05
vilaif you can pass the info to INADA, that would be nice !11:05
vilabialix: is he here ?11:06
bialixok, so I'll answer him to tbzr ML. is ti what you want?11:06
bialixhe?11:06
vilayes please, he asked for feedback, that's feedback :)11:06
vilaINADA, is he here on IRC ?11:06
bialixhis nick at lp: songofcandy11:07
bialixor something like that11:08
bialixI'm not sure he's chatting here11:08
bialixJapan timezone IIUC11:08
bialixvila: do you have precise traceback or error message?11:08
vilajust a sec11:08
vilahttp://babune.ladeuil.net:26862/builders/installer-dev-plugin-dev/builds/35/steps/compile/logs/stdio11:09
vilalook at the end11:09
bialix(cough)11:10
bialixis it URL stable?11:10
vilabialix: pretty stable yes11:11
bialixvila: error said it's not error but warning11:11
vilabialix: and it's read-only now11:11
vila SyntaxError: invalid syntax (wtcache.py, line 202)11:11
vilafirst the warning then an error, at least, that's how I read it11:12
vilabialix: the fix should a mere s/with/try+finally/ but without a way to test...11:13
bialixvila: http://pastebin.com/m75032c50 ok?11:14
fullermdvila: Hmmwhat?  I have to be grumpy now?  But I just got coffee...11:14
vilabialix: perfect11:14
vilafullermd: you don't have too, you have to say *I* am :)11:15
vilafullermd: you don't have too, you just have to say *I* am :)11:15
fullermdOh.  Well, that's why I had to get coffee, see.  'cuz you're so grumpy.  And stuff.11:15
bialixlol11:15
vilahehe, and people think that because I work from home I can't have a good laugh....11:16
bialixlol11:16
AfCI don't work from home. But I have a _really_ short commute from my home to my office.11:16
fullermdHeck, that's WHY you work from home.  If you stare at a computer screen for hours, then bust out laughing in an office, people eventually put you in a straitjacket.11:16
bialixvila: thanks for head up, mail sent, waiting for songofacandy response11:17
fullermdI mean, so I hear.  Not that I would ever be in a situation where I'd have such an experience.  No siree Bob.  That would be crazy.11:17
vilafullermd: indeed11:18
bialixfullermd: I do this all the time11:19
bialixin the office11:19
AfCfullermd: what's wrong with wearing a straitjacket in the office?11:19
fullermdAfC: It depends on who puts you in it   :p11:19
AfCfullermd: and what colour it is. White is so passé11:20
fullermdYah,  Tie-dye is much more festive.11:20
mrevellSzilvester -- around?11:29
mwhudsonmrevell: i think he's phanatic when he's here11:35
mrevellhey mwhudson, expanding your nick soon? Thanks, yeah, looks like he's not around.11:35
mwhudsonmrevell: not sure about that, people give intellectronica enough grief for a long nick :)11:35
* mwhudson zzz11:36
mrevell:)11:36
=== JaredWigmore is now known as JaredW
bialixvila: ping12:02
bialixvila: check mail, Naoki said he's fixed this issue, how hard is to test with your army of slaves?12:03
quicksilverit's the cost of the whips which really gets you down.12:05
* bialix seems to lost his sense of humor today. too little coffee in the blood maybe12:10
vilabialix: test launched, I'll keep you informed12:11
bialixcool12:12
danigmHello, is there a hook to send mails at post-commit? like in subversion? I saw that exists bzr-email plugin but I want tu put in my server and not in every client12:25
bialixdanigm: https://launchpad.net/bzr-hookless-email12:30
danigmbialix: ok, thanks12:31
=== mrevell is now known as mrevellunch
=== abentley1 is now known as abentley
=== abentley1 is now known as abentley
vilabialix: test ok ! congrats to Naoki :)13:17
vilabialix: I was a bit long as I had to manually update the branch... I don't understand why, but that doesn't really matter for now13:17
vilatest farm all green again :)13:18
bialixvila: how about publishing that installer as "nightly" build for testing?13:24
vilabialix: I have no idea of its quality *today*... but that's indeed the mid-term plan13:25
bialixwell, Naoki asked for testing his changes13:25
bialixbut it's almost impossible to do without any installer13:25
bialixeven broken one13:25
vilaAIUI jam uses the same script to build the official installers (using dev/release instead of dev/dev)13:25
=== mrevellunch is now known as mrevell
vilaabentley: BB down ?13:35
=== abentley1 is now known as abentley
vilaabentley: BB down ?13:58
vilaabentley: not sure you got my first message13:58
abentleyvila: restarted.14:08
vilaabentley: thanks14:08
jamvila: I use release/release to build the official installers "make installer-all PYTHON=..."14:11
vilajam: yeah, right thanks for the heads-up :)14:12
vilajam: good morning :)14:12
vilajam: already get your first coffee ? :D14:13
jamvila: yep14:14
=== Noldorin_ is now known as Noldorin
=== loxs_wrk is now known as loxs
bialixvila/jam: so what about "nightly" builds for windows installer/tbz14:47
bialixtbzr?14:48
vilabialix, jam: I see two parts: 1) deciding whether the dev/dev installer is correctly built (jam ?), 2) Finding the right process to upload the installers to ... lp ?14:49
vilajam: for some context: the builds have been green for some days except this morning due to an update in tbzr, I raised the problem, bialix caught it, Naoki fixed it14:50
vilajam: a concrete example of the usefulness of the build farm :)14:51
vilajam: but now, bialix want more ! :-D14:51
bialix... nad garyvdm would like to test it but asked for installer14:51
bialix*and14:51
bialix*rats14:51
* bialix don't want more14:51
bialixI've just threw idea14:52
jamso i think vila points out that we have daily builds14:52
* vila rats forgot the BIG RED FLASHING JOKE :)14:52
jamwe just need to figure out where to put them14:52
bialixlp is not the good place14:52
jamlp seems like it would be an ok place14:53
jamgiven that the nightly-ppa is there14:53
vilaI love the agreement :)14:53
vilabialix: why not a good place ?14:53
jamIt isn't perfect, though14:54
jamas from what I can tell, downloads are release specific14:54
jamI suppose we could create a "windows-nightly" release target?14:54
bialixmaybe to distinguish nightly it should be named something appropriate?14:54
jamI also don't know how we would prune out old downloads like they do with old ppa items14:55
vilaerr, aren't the nightly names already contain the trunk revno ?14:55
bialixvila: because it should be separate from official stables?14:55
* pygi almost convinced libburnia folks (e.g. myself and some others) to move to bzr :p14:55
vilabialix: ho, that's what the PPA are for, but may be the nightly PPA doesn't have the right kind of download space14:56
vilapygi: If you can't convince yourself.... :-D14:56
bialixPPA != download installers area?14:56
bialixpygi afraids of qbzr and garyvdm?14:56
pygibialix, nah, one of the devs started with VCS back in the time we started with the project14:57
pygiand he doesn't understand all the benefits of bzr just yet (he uses it in a bad way)14:57
pygi(we use svn for most components atm, only use bzr for one)14:57
bialixVCS or VSS?14:57
bialixpygi: I'm bad in jokes today14:58
pygiI know14:58
pygi:P14:58
bialix:-P14:58
pygivila, isn't that always the hardest? :)14:58
vilahmm, right, ~bzr-nightly-ppa is a team, not a project, it can have a PPA but not an upload area, AIUI14:58
vilapygi: depends.... ;)14:58
pygivila, on cheese?14:59
vilapygi: hardest cheese ?15:01
pygivila, no..I asked what does it depends on xD15:01
vila:)15:03
jamvila: I have a question for you. Did you see any of the conversation robert and I had about the 'sort_gc_optimal' stuff?15:18
vilaon IRC ?15:19
jamyeah15:20
jamlast night15:20
jamI can rehash the high points if you want15:20
vilaI prefer :-) I was rather sleepy when I read that15:21
vila(yes, I was lurking :)15:21
jamso... topo_sort is non deterministic15:21
jamas it depends on sort order from dicts15:22
jamright now when we pack a repo15:22
jamwe do "sort_gc_optimal"15:22
jamwhich is basically15:22
jamreversed(topo_sort())15:22
jamso it is also non-deterministic15:23
jamWe also have a concept that fetching between 2a repos should be "groupcompress" ordered.15:23
jamWith the idea that streaming one to another can opportunistically repack a little bit15:23
jamThe fundamental problem is that we 're-use' blocks when streaming from another repo15:23
jamso if you have a poorly packed repo15:23
jamand you stream it into another15:23
jamyou end up with a poorly packed repo, that has only 1 pack file15:24
jamand thus autopack will never 'clean up' the new repo15:24
jamso we would *like* to have a way to opportunistically repack on the fly15:24
jamwithout having that degrade into repacking everything all the time15:24
jamone possibility15:24
jamif sort_gc_optimal was more stable15:24
jamwas that you could compare the stream with the 'optimal' ordering15:24
jamand if it was close enough, re-use the incoming stream15:25
jamif it was different enough15:25
jamrepack15:25
vilaha yes, my first reaction was: 1) make topo_sort deterministic, 2) switch to merge_sort order,15:25
jambecause it is currently non-deterministic15:25
jamthat doesn't really work15:25
jamso the problem is 'what is deterministic' :)15:25
vilahehe, hence 2)15:26
jamgiven a graph, you want to get identical results between repos15:26
jamwhich is a starting point15:26
jamthe issue is that given 2 *similar but not identical* graphs, you want them to somehow be similar15:26
pooliehello jam, vila15:26
jamhi poolie15:26
pooliewe overlap again15:26
jampoolie: yep. You're up way too late again :)15:26
vilahow identical ? fully identical or identical enough ? :-}15:27
jamwell the point is that if they are fully identical then you should get exact results15:27
jamthat is mostly a given15:27
jambut often you will have 2 repos with slightly different revs15:28
jamand you want the sorting between them to be "stable" in a similar sense15:28
vilaright, so merge_sort works where topo_sort fails15:28
jamsort of15:28
jambut merge_sort isn't all that stable either15:28
vilait isn't stable with ghosts only, and I'd argue that filing ghosts is a f. good occasion to recompress15:29
jamvila: let me give an example, just a sec15:31
jamhttp://paste.ubuntu.com/259307/15:32
jamso if you consider that one side has graph F and the other G15:32
pooliejam, the only fixcommitted bug from spiv i see is https://bugs.edge.launchpad.net/bzr/+bug/40265715:33
ubottuLaunchpad bug 402657 in bzr "2a fetch over dumb transport reads one group at a time" [Critical,Fix committed]15:33
pooliewhich does have a branch attached but maybe not an mp15:33
poolieactually it does have https://code.edge.launchpad.net/~spiv/bzr/gc-batching/+merge/1064315:33
jamit does15:33
jamI just didn't see it in my inbox for some reason15:33
jamI'll certainly review it15:33
jamargh... hopefully this is a MAD issue15:33
jamhis MP has: ``bzr push`` locally on windows will no longer give a locking error with15:33
jammaybe he merged Robert's branch before it landed...15:34
pooliemm15:35
poolieprobably out of sync15:35
poolieyou could diff it again yourself15:35
jamyeah15:35
spivjam: yeah, that would be a MAD issue I think :(15:35
jamjust painful how many times we run into code review problems15:35
jamthough I suppose we can now switch to having "bzr.dev" hosted on LP15:35
jamsince we've had success doing that for the release branches15:36
vilajam: hmm, merge sort should be: A B|C D|E F or A B|C D|E G (same level nodes can be forced to respect an arbitrary but stable order (think revid alphanumerical))15:36
spivLaunchpad could pay attention to the base_revision_id of merge directives and if it's not present in the target rescan before generating a diff.15:36
jamvila: I'm not sure that you understand merge-sort15:36
spivWell, mirror then scan.15:36
jamit is "topological, with revisions appearing just before the rev that merged them"15:36
spiv(Although in this case I created the merge proposal via the web, so that wouldn't have helped...)15:37
jamspiv: supposedly it does something different if you send an MD attachment, rather than say "propose this branch"15:37
vilajam: I can see that, and I think it's a weakness as you just demonstrate :)15:37
spivAnyway, it *is* late, and I'm off to sleep :)15:37
jamat least I've seen comments from Aaron that it re-uses the exact patch you sent15:37
jamspiv: sleep well15:37
jamvila: so while investigating, I also realized that the 'most stable' sort order may not be the best "compression" order.15:37
jambut I figured it would be good to talk about possibilities15:38
jamfor example15:38
vilaif you want stability you need leveling,15:38
jamsorted((gdfo, revision_id) for gdfo, revision_id in revisions)15:38
jamhowever15:38
jamfor *best compression* order15:38
jamit is probably *not* good to group by gdfo15:38
jamas they *specifically* don't have ancestry in common15:38
hsnanybody knows if sf.net hosted trac supports bzr plugin?15:39
jamor they couldn't have the same gdfo15:39
vilacorrect15:39
jamcertainly we would need to actually do real-world values to be sure15:39
vilaI was about to say that merge_sort flatten the rev space but we want different ways to flatten15:39
jambut my gut says that gdfo would be more stable15:39
pooliehsn: i don't know, but given they support bzr it seems like a reasonable thing they should do15:39
jambut would be worse compression15:39
jamversus depth-first sort of sorting15:39
vilamy guts agree with yours :)15:40
jamso right now I have an updated "gc_sort" which is topo_sort, but at each of the steps it sorts the parent_keys/child_keys15:40
vilai.e. A BD CE F ?15:41
jamthough perhaps it is enough to just go via parent_keys15:41
jamsince that is a stable ordering15:41
jamF D B E C A15:41
jamis the current order, I believe15:42
vilaright, exactly what I said :-) (Believe it or not :)15:42
jamand the other would be15:42
jamG D B E C A15:42
vilaand what if G has D as second parent ?15:42
fullermdG files a paternity suit, obviously.  It plays out on national TV.  Big scandal.15:43
* vila puts his tie-dye suit back15:44
jamvila: D *is* G's second parent15:44
jamthe point is that it was sorted(parent_keys)15:44
jamD < E15:44
vilaok, that was unclear,15:44
jamso there is an open question of whether that is important15:44
jamif you don't have it15:45
jamthen you get15:45
vilathe question was: is it independent of the parent order15:45
jamF E C D B A15:45
jamG D B E C A15:45
jamwell, depending on whether you walk right->left parent or left->right parent15:45
jambut walking left->right the 'right' gets put on the stack last, and thus gets popped off first15:46
jamprobably we would want to walk left-parents first15:46
jamhmm....15:46
jamI wonder if walking left parents first is more important than lexicographical order15:46
vilawalking when ?15:46
vilaoh, missed that line15:47
vilano, I don't get it, what walk, what stack ?15:47
vilawhen you create the group from the full texts ? You walk the graph ?15:48
jamvila: we sort the graph to figure out how we want to group the texts15:50
jamtopo_sort uses a stack of nodes left to walk15:50
jamgo to a node15:50
jamif parents are ready15:50
jampush them on to the stack15:50
jampop from the stack to go to the next node15:50
jamthere are other ways15:51
jamlike everything in 'pending' is ready to be evaluated15:51
jamevaluate all pending nodes before evaluating their parents15:51
jama bit more of a 'breadth-first' method15:51
vilaoh, you're coding gc_sort ?15:51
jamsimilarly for the (gdfo, revision_id) sorted version15:51
jamvila: well, updating it. Given that we already have one based on topo_sort :)15:52
jamI don't really want to make topo_sort perfectly stable, because it gets to be *fast*15:52
vilaok, I missed that part of the context :)15:52
vilaI think having a dedicated gc_sort is the way to go15:52
jamI agree :)15:54
jamI'm just trying to define the problem space well enough to decide on all the options for sorting an arbitrary graph :)15:54
jamfor example, I *could* do merge_sort(sorted(tips))15:55
jamand define merge-sort when there is more than one tip15:55
jamgiven that the algorithm is only defined for 1 tip15:55
jamof course, you can always have "special_tip => [tip1, tip2, tip3]" and filter special_tip back out at the end15:55
cristi_anhi,what is the diff between bzr checkout and bzr clone or branch15:56
cristi_an?15:56
vilaexactly and force or not an order on the tips15:56
jamcristi_an: in a bzr checkout when you do "bzr commit" it commits the change to the source branch, and then locally15:58
jamversus only committing locally, and you have to 'bzr push' the data back to the source15:58
cristi_anjam: and otherwise localluy15:58
cristi_aninteresting and so diff from cvs and svn15:58
jamnote that one of the main benefits is when you want to collaborate on a shared branch15:58
jamsince it helps to keep the 2 parties in sync15:58
jamif one commits, the other has to update before they can commit15:59
jamoften, it is desirable to work on your own local branches only to get things done before they are integrated15:59
cristi_anyep but the merge is done ok15:59
cristi_analter ?15:59
cristi_anlater15:59
jamhowever managing the *integration* branch is very well done via checkouts15:59
cristi_anjam: last sentece i did not fully understood16:00
cristi_an:(16:00
jamYou have a project16:01
jamit will almost always have an integration branch of some sort16:01
jam(trunk, head, development focus, etc.)16:01
cristi_antrunk...yes16:01
cristi_anas in svn16:01
jamyou do work on branches16:02
cristi_anthat is more familiar to me16:02
jambut eventually that work is integrated into another branch16:02
jam(trunk)16:02
cristi_ancorrect ar some point16:02
jamif multiple people are committing to an integration branch16:02
jama good way to collaborate16:02
jamis via 'bzr checkout'16:02
jamrather than having a local copy16:02
cristi_anthat is ...a pian in the ass16:02
jamwhich may be out of date16:02
jama bzr checkout requires you to be up-to-date before you can commit16:03
cristi_anthat is more like svn cvs style16:03
cristi_anwith checkout16:03
jamcristi_an: so you can still develop your feature in a branch. But then "cd trunk-checkout; bzr merge ../my-feature/branch; bzr commit -m "merging my feature""16:03
jamcheckouts in bzr are a way to bridge the gap between:16:04
jamI'm developing independently (distrbuted)16:04
jamI'm collaborating  (centralized)16:04
jamAnything you can do with checkouts you can do with regular branches and a bit of care16:04
jamcheckouts just help with the 'bit of care' part16:04
cristi_ani see16:05
jamvila: right16:05
jamthe main problem with "force an order on the tips"16:05
jamis that any arbitrary new tip can upset the ordering16:05
jamif you sorted(tips)16:05
jamthen if you have G F, and someone commits an "A"16:05
jamsuddenly your whole graph gets rebalanced based on A16:05
jamsince that is now the new sort tip16:06
jamof course, sorting somehow is better than not sorting at all16:06
jamvila: and this is now a bit circular. But it is the bits I'm trying to understand as I come up with the graph => order of texts in groups algorithm16:06
vilaright, it should only occur at the "tip[s]" of the graph so, only for the last inserted revisions16:06
jamvila: well, most algorithms are dependent on the starting point16:07
jammerge_sort and topo_sort both obviously being effectde16:07
jameffected16:07
jamaffected... actually16:07
jam(i think, I'm really bad about that one)16:07
vilaone question then, we're talking about file graphs here right ? How many revisions can you put into a group ?16:07
jamvila: as many as will fit16:07
jamyes it is a bit loose16:07
jamthe current rule is:16:08
jamfit up to 2MB worth of mixed-file-id data, or 4MB of single file-id data16:08
vilabut inside a single pack right, until the next autopack that is16:08
jamor 2x the size of the largest content, if it is >4MB16:08
vila?16:08
jamvila: well, we don't split groups between packs (yet, if ever)16:08
cristi_anjam i reviewd out discussion16:08
cristi_anjam: thx much more clear now16:09
vilaMy point is that inside a pack you don't insert so your graph is immutable16:09
jamcristi_an: happy to help16:09
jamvila: sure, but when you transmit those to another repo...16:09
jamor during pack16:09
jametc16:09
jamMy "big picture" work is opportunistically repacking groups16:09
jamduring transmission16:09
jamand the "little picture" is that we need a stable way of listing content, so that the opportunistic repacker doesn't flip-flop all the time16:10
vilabut even in that context you know the full graph you care about no ?16:10
jamthinking that things should be group A B C then C B A then BCA then...16:10
cristi_anhow can i update a branch ?16:10
cristi_ansince a checkout is bzr update16:10
jamcristi_an: a regular branch is usually "bzr pull" a checkout is usually "bzr update"16:10
cristi_ansame as for checkout ?16:11
vilacould you really receive disconnected parts of a graph, starting a group and then receive connecting parts while still using the same group ?16:11
cristi_ani mean for a project that was get usign checkout ?16:11
jamvila: well, if you consider a streaming interface, yes16:11
vilaha !16:11
jamyou would get C => [A B], A => [], B => [A]16:12
cristi_anjam16:12
cristi_anthx16:12
jamhowever, that isn't particularly of concern16:12
jamwell maybe some16:12
jamget_record_stream() determines the order to send data16:12
vilajam: I would tend to punt during the transfer waiting for the next autopack to get it right, is that acceptable ?16:12
jambut insert_record_stream() is responsible for putting that data into the target repo, and possibly rebuilding groups16:13
jamvila: we have determined that it is not16:13
vilaif the sending order can acted upon then... surely that's better16:13
jamspecifically16:13
jamif my source repo has 1 large pack, and 200 loose packs16:13
jamand I fetch from that16:13
jamthe data stream will create 1 large pack16:13
jamwith lots of loose data inside16:13
jamand then my target repository16:13
jamwill have a single large pack16:13
jamthat will never get repacked16:13
jamToo big to fail.... :)16:14
viladon't do it then :)16:14
vilacreate several smaller packs16:14
jamvila: how do we know what to put where?16:14
jamwhat heuristic do we use that we are ready to start a new pack16:14
jamat the moment, what I'm thinking16:15
vilasize16:15
jamis to have insert_record_stream() keep a "pending group" open16:15
jamand if it gets a record that it thinks needs repacking16:15
jamto put it into the pending group16:15
jamwith the algorithm there being16:15
jama Group with 1 entry16:15
jam(at the moment)16:15
jamand then fetch requests things in 'groupcompress' order16:15
jamso if things are out-of-order they will get repacked on the fly16:15
jamas we will split up the old group if it doesn't yield data in the correct order automatically16:16
jamI'm not sure if you understand that from just what I've written. But it makes sense in my head...16:16
vilatrying to rephrase: you have a way to detect that you're creating a bad group and trigger its reconstruction afterwards ?16:17
jamvila: mmm...16:17
jamthe source is already split up into groups16:17
jamif we request "unordered" we get the groups as they exist16:17
jamif we make a request for "topological" or "groupcompress" ordered16:18
jamthen the source will send groups that match the requested ordering16:18
jambut will create new groups if it needs to16:18
jamor truncate existing groups, etc.16:18
jamat the moment16:18
jamwe have bug #40264516:19
ubottuLaunchpad bug 402645 in bzr "fetch for --2a formats seems to be fragmenting" [Critical,In progress] https://launchpad.net/bugs/40264516:19
jamwhich is that we make a groupcompress request16:19
vilaso why not use unordered ? It seems to guarantee that the groups are not that bad and can be made better at the next repack16:19
jamwhich causes the source to create small group fragments16:19
jamvila: see above as for "at next repack"16:19
jamafter initial fetch16:19
jam"next repack" never happens16:19
vilabut if the groups are correct that's not a problem16:20
jamwell, for the data transmitted with the initial fetch, it will never be repacked via autopack16:20
jamvila: but they aren't in a real world repo16:20
jamwhich has some amount of "perfect" groups16:20
=== Noldorin_ is now known as Noldorin
jamand then a whole lot of new "not yet autopacked" groups16:20
jamand probably some "autopacked, but not with all the new stuff yet"16:20
jamgiven that our "optimal packing" is newest first16:20
jamwe can never be truly optimal in a live repo16:20
jamsince there will always be a bit more new stuff16:20
vilahmmm16:21
jamso the other bug is bug #40265216:21
ubottuLaunchpad bug 402652 in bzr "smart fetch for --2a does not opportunistically combine groups" [High,Triaged] https://launchpad.net/bugs/40265216:21
jamthe twin to #40264516:21
vilaI'm back to the idea that we should create several packs16:21
jamnamely, if we are going to fragment, then we should recombine16:21
jamvila: that is a possibility16:21
jambut how do we know what/when/where to do that?16:21
jamremember that individual packs are meant to be fairly self-contained16:22
jamthough I guess not fully self contained16:22
jamgiven that a pack with rev 10 won't have the text files for rev 916:22
jamwell, from rev 9 that are still present in rev1016:22
vilawhere is the easiest: only locally do you have the right info to do a good job, the knowledge  can't be shared16:22
vilawhen: repack, repack, repack16:23
jamvila: so I already have a patch for review for bug #40264516:23
ubottuLaunchpad bug 402645 in bzr "fetch for --2a formats seems to be fragmenting" [Critical,In progress] https://launchpad.net/bugs/40264516:23
jamwhich would be nice to get reviewed16:23
vilathat could not be simpler that handled at repack time16:23
jamI think lifeless was so-so on it, but I don't think he was blocking16:23
vilathat left what... and that one is not easy :D16:24
jamvila: so... the problem with 'repack' time, is that for very large projects repacking everything takes a while16:24
jamit would be nice to have a lighter repack16:24
jamwhich is what we have autopack for today16:24
jambut that assumes that a single pack file is already as optimally packed as it could be16:24
jamone option16:24
vilayeah, I mean autopack, sorry, the point where you decided to group the last 10 packs16:25
jamis that we get the pack code to produce deterministic output16:25
jamsuch that we compare what a pack actually contains16:25
jamwith what the optimizer would create16:25
vilawait !16:25
jamand if they differ, redo the work16:25
vilayou just pointed out the flaw !16:25
vilawe assume that a single pack file is already optimally packed16:25
vilathat's wrong and we know when16:26
vilaso how about repacking that one when we know it's wrong ? Is it already too late ?16:26
vilarepacking with a special sense here: don't try to combine with others, focus on that one16:26
vilaor not...16:26
jamvila: how do we know when?16:27
viladidn't you say you can identify that a group badly compressed ?16:27
jam(its a serious question, how do we detect that a pack is sub-optimal without fully repacking)16:27
jamvila: I'm saying maybe we can16:27
jampotentially by checking the sort order16:28
jamthough that requires....16:28
jama deterministic sort order16:28
jamwhich ... is where I started this discussion :)16:28
vilagc_sort is deterministic, we agreeD on that :)16:28
jamit is not16:28
jamit potentially is16:28
vilait should16:28
jamso here is the next issue with determinism, and why it would be good to be stable when changing graph16:29
jamconsider16:29
jamA B C D E F G16:29
vilaand locally you can even realize that you're receiving a group that will be better compressed here but the other side couldn't know16:29
jamwhich are currently in groups of:16:29
jam[G F E] [D C B A]16:29
jamit would be good that when adding H16:29
jamwe don't end up with16:29
jam[H G F] [E D C] [B A]16:29
jamIf instead we could get16:29
jam[H G F E] [D C B A]16:30
jamthat would mean that our 'lite-repack' doesn't have to touch everything16:30
jamjust a group here and there that we push some extra data into16:30
jamvila: you can, but if you aren't going to look beyond the current pack file, you actually have *less* data...16:30
vilaone question: is it legal to create groups in new packs from bits of groups in old packs ?16:30
jamit is legal to have multiple copies of a text in different packs16:31
jamIs that sufficient for your question?16:31
vilaright16:31
jamof course, having 2 copies of a text in your repository is, by definition, sub optimal :)16:32
vilaso we can create a new pack with only well compressed groups and wait for the autopack to clean the dust16:32
vilaof force the cleaning16:32
jamvila: so I think you are saying that Repository.start_write_group() should be creating 2 pack files16:32
jamone with 'seems to be good' data16:32
jamand one with 'seems to need repacking' data16:33
jamthough again, if you are only creating 2 packs...16:33
jamautopack doesn't kick in for a while16:33
vilabut you force it with a focus on the need repacking one16:33
vilawhat worries me is that we may still transfer too much data...16:34
jamvila: well, there are other problems. Like the fact that 'optimally' you would probably want to mix some of the data in the 'needs repacking' pack with the data in the 'fully packed' pack16:35
vilanahhh, what is the risk that a group contains irrelevant data for a given fetch ? Isn't it capped by your 2M limit anyway ? Or can that trigger multiple times for a single fetch16:35
jamConsider a group of a single file content16:35
jamwhich has 100 revs of that content, and you get a single 'ungrouped' text of the same file16:36
jamvila: so the server side code knows that you are requesting XX bytes out of the 2M group, and can opportunistically split up a group16:36
jamwhich is currently causing our fragmentation issues :)16:36
vilaIs it a bug that it split too much or is needed for some reason ?16:37
jamthe bug is that our current fetch says:16:39
jamgive me the first 2 texts from group A, and the first 2 texts from group B, then the middle 3 texts from A, then middle 3 from B, then the last 2 from A, and last 2 from B16:40
jamwhich causes a nice 7 entry group A and 7-entry B to be split up16:40
jaminto 6 groups 2, 2, 3, 3, 2, 216:40
jamthe *good* is that we don't send the full 14 texts multiple times16:40
jamthe bad is we end up fragmenting without recombining afterwards16:40
jamThe original idea we had for smart fetch was bug #40265216:41
ubottuLaunchpad bug 402652 in bzr "smart fetch for --2a does not opportunistically combine groups" [High,Triaged] https://launchpad.net/bugs/40265216:41
jamwe could create optimal groups on the fly16:41
jam(whether that ends up being done in the server or the client...)16:41
vilaI vote for the client... half-heartedly :-/16:42
jamvila: in theory client scales better, because you have 1 server and N clients16:42
vilaIt's the fetch for the smart server or also for dumb ones ?16:43
jamthat said, because of 'push vs pull vs copy ' who the client is ...16:43
jam(it can be the source or target, or neither as an intermediary)16:43
jamvila: so it is basically the same fetch, it just depends on the layering16:43
jam"smart fetch" is16:43
jamdumb_fetch => SmartObject => bytes on the wire => RemoteRepository => local repo16:44
jamversus16:44
jamdumb_fetch => local_repo :)16:44
jamSo for plain 'http' requests, we have to read the whole group16:45
jamand then locally we split it up into smaller bits16:45
jamwe have a local cache of groups16:45
jamso we are unlikely to fetch the same big group twice16:45
jamthough it is possible that we do so if we are really bad about our fetch ordering16:45
vila1) we shouldn't "fragmenting without recombining" or at least we should give hints about it so that the other side knows there is work to do,16:50
vila2) if the "smart" is to send multiple groups to reduce the amount of data transmitted and we fail to achieve that, that's not smart :-/16:52
jamvila: I'm pretty sure (2) is working16:56
jamwith the caveat that it is introducing (1) :)16:56
vilaso if we are happy with 2, the only problem is to not consider the received pack as optimally compressed no ?16:57
vilaWhat if you just look at that pack file, counting groups/file and deciding if it's worth keeping or not ?16:58
vilaKind of an autopack after fetch focused on the just received pack ?16:59
=== deryck is now known as deryck[lunch]
vilaYou can even spawn it in the background :-)17:00
* kfogel is away: lunch + an errand17:12
oubiwannlifeless: hey man, I fixed that branch and re-submitted the review17:26
jamoubiwann: just so you know, lifeless is usually sleeping for another 4hrs or so17:31
oubiwannjam: yeah, that's what I figured...17:31
oubiwannjam: I msg'ed him in the off chance that he checks his irc highlights ;-)17:31
jamit does17:32
=== deryck[lunch] is now known as deryck
=== beuno is now known as beuno-afk
vilapfffffffff18:02
vilajam: ping18:03
jamvila: ?18:03
vilajam: I just upload new packages for bzr-gtk in bzr-beta-ppa18:03
vilaWhen should I do the same for bzr-ppa at the latest  for 1.18 ?18:04
vilawell, doesn't reallt matter I suspect18:04
jamI think you should copy them from the beta ppa18:04
vilawell, now that the script is written... :-)18:05
garyvdmHi vila, jam18:05
vilahi garyvdm , too bad, I'm about to leave :-)18:06
garyvdmnp - just saying hi.18:06
garyvdmHi bialix18:06
bialixHi garyvdm!18:06
vilaI've seen your blueprint for the conflict manager, nice job, I'll try to comment if I find the time before you code it :-D18:06
bialixgaryvdm: have some quick questions18:07
bialixmay I?18:07
garyvdmsure18:07
bialixgaryvdm: you can answer in short form18:07
garyvdmvila: There lots more that I still have in my head.18:07
vilajames_w: builddeb rocks, just wanted to let you know :)18:07
vilajames_w: bzr-builddeb I meant !18:08
james_wthanks :-)18:08
bialixgaryvdm: 1) your fix for qdiff and painting is great. is it possible to do similar thing for annotate? today annotate is slow on scrolling...18:08
bialixjames_w: hi, great idea around bzr-build18:08
vilagaryvdm: as all of us :) The tricky thing is to get them out :)18:08
bialixjames_w: at first I've thought you steal my scmproj cookies :-)18:09
garyvdmbialix: annotate is slow to scroll because it's only loading revision on screen, like qlog.18:09
bialixjames_w: sorry: bzr-builder of course18:09
bialixgaryvdm: and so?18:10
garyvdmbialix: I plan to make both qlog and qannotate be a bit more aggressive with revision loading.18:10
garyvdmbialix: Its the same bit of code.18:10
bialixgaryvdm: that's great, especially if you put this agression inth thread ;-)18:10
garyvdm:-o18:10
bialixok, ok18:10
bialixoh, ok18:10
james_wbialix: yeah, it is quite similar to scmproj :-)18:10
bialixjames_w: but it's much more than that in one area and much less than that in other18:11
bialix;-)18:11
bialixbut I like the idea18:11
james_wheh18:11
bialixmaybe I can persuade guys like jam to use it for working with windows installer configuration18:11
bialixgaryvdm: 2nd q: oh, you already answer it about agressive loading18:13
bialixgaryvdm: maybe I'll put some my thoughts about threads/subprocesses and multipass work as text document? (not wiki :-P) and we can work on it toghether?18:14
bialixgaryvdm: 3rd) can we put throbber as status bar?18:14
bialixsomething like in firefox18:14
bialix(and other browsers)18:14
garyvdmbialix: If you want to look at the qlog/qannotate revisions loading, the code is in lib/revtreeview.py18:15
garyvdmbialix: You can put the throbber anywhere, so it is a question of design.18:15
bialixmostly I'm not very like as it appears and disappears18:15
garyvdmThe throbber will look funny just bellow the buttons.18:16
garyvdmOr where you thinking above the buttons?18:16
bialixwell, if it will be status bar, then we have to use progress bar instead of spinning wheel18:16
bialixno, I mean status bar, like in firefox18:16
bialixwannan screenshot?18:17
garyvdmDon't worry. I know what you mean18:17
bialixok18:17
bialixgaryvdm: igc is not asked you about packaging bzr-explorer?18:18
garyvdmbialix: maybe just have a throbber that sits in the top right, with no text like firefox...18:18
garyvdmNo18:18
bialixtop right? under title bar icon/buttons?18:19
garyvdmbialix: My knowledge about debian packaging in limited to "How to update qbzr's packages."18:19
garyvdmbialix: I'll have a shot on the weekend.18:20
bialixnew firefox (at least on windows) lacks this spinning wheel at top right, but I remember it18:20
bialix"How to update qbzr's packages." -- that's cool anyway18:20
garyvdmI did not even notice that the top right throbber had gone...18:21
bialixgaryvdm: I've just asked. igc want bzr-explorer 0.7 into karmic18:21
bialix(I'm about of packaging 0.7 release now)18:21
garyvdmbialix: 0.7 - I just read on the ml about 0.8?18:22
bialixbzr-explorer 0.7 is not released yet18:23
bialixtonight wil be18:23
garyvdmOh - worry - miss read18:23
garyvdm*sorry18:23
bialixnp18:23
bialixgaryvdm: also I want to redesign qbzr.conf. completelly18:23
jama18:24
bialixI'm thinking about this many months18:24
bialixjam: ?18:24
jamsorry, wrong window18:24
garyvdmbialix: I would recommend that you try find someone else to do the packaging, cause I will be very slow. Maybe luks?18:24
bialixgaryvdm: don;t worry about packaging, I'm sure Ian will find the way18:25
bialixI was unsure is he asking you or not18:25
garyvdmbialix: To be honest, I'm not to familiar with the .conf code. You know it much better.18:26
bialixgaryvdm: about qbzr.conf: I want to put data in more sections and subsections. instead of keep everything in [DEFAULT]. If you have any thoughts on this topic we can discuss it. otherwise I'm planning to work on it soon18:26
bialixah, ok18:26
bialixI'm still unsure ow to organize things like geometry settings, color settings18:27
bialixs/ow/how/18:27
garyvdmYes - It would be nice if the the window sizes were separate from every thing else.18:27
bialixand I want some universal MRU handling (latest 10 pull locations used, push, commit messages etc)18:28
bialixgaryvdm: precisely.18:28
bialixit was my first intent18:28
* bialix often mulling some ideas several weeks/months because there is always bugs to fix rather than redesign deep internal code18:29
bialixgaryvdm: also I want to redesign most of qsubprocess windows: to always show working branch/tree location.18:29
garyvdmYes18:30
garyvdmLike qcommit18:30
bialixI found it's very easy to lost identity while working with multiple branches in bzr-explorer18:30
bialixyep, but maybe a bit shorter18:30
bialixgaryvdm: and perhaps latest. today I've asked about qrevert to revision18:31
bialixI'm not filed a bug report yet18:31
bialixtrying to understand where to put this control18:32
garyvdmbialix: I have the same thing. I've been thinking about this for about this for about a year now: http://bazaar-vcs.org/qbzr/Blueprint/diffmerge18:32
garyvdmNote that blueprint is not finished...18:32
bialixwe have several dialogs where we expecting user can specify revision18:33
garyvdmLots still in my head.18:33
bialixgaryvdm: I like your screenshots18:33
bialixvery much18:33
bialixvery impressive18:33
bialixit seems meld's way is too complicated (from screenshots)18:33
bialixso, garyvdm, what we can do about revision selector? ;-)18:34
garyvdmScreenshots made with balsamiq18:34
garyvdmbialix: Yes I need to finish that.18:34
bialixI remember you stumbled upon some bugs/issues with qt18:35
garyvdmigc wants me to make it do all different types of revision selectors.18:35
bialixI'm still thinking about reusing qlog widget18:35
garyvdmYhea - had problems putting qlog inside a qcombobox18:36
bialixis it possible to run separate dialog with qlog-like graph and allow user to click/dbl-click on revision and we pick it?18:36
garyvdmThat would be easy18:36
bialixfor selecting range -- just draw the mouse with button pressed and all18:37
bialixor something like that18:37
bialixsomething easy18:37
garyvdmbialix: I'm busy trying to use jam's new graph code to make qlog faster.18:38
garyvdmIt's promising.18:39
bialixgaryvdm: I'd like to fix https://bugs.launchpad.net/qbzr/+bug/41789518:39
ubottuLaunchpad bug 417895 in qbzr "qannotate error when clicking on line which origin is dotted revno" [Critical,Confirmed]18:39
bialixif you will have a time to comment on it, I'll try to find the root of problem18:39
jamgaryvdm: btw, feedback is welcome if you find "it would be nicer if..."18:39
bialixhe, faster :-(18:39
bialixheh18:40
bialixtoday qlog on bzr.dev opens for me ~10 seconds18:40
garyvdmjam: sure, I've allready got a draft mail :-)18:40
garyvdmbialix: I want that to be 1sec...18:41
bialixI will be happy if it start painting latest revno from the start and then loading the tail later18:41
jamhmm... cold cache it is 18s here, 12s before the window shows18:41
jamhot, 5s18:42
bialix(and working in thread because it's completely ignore repaint while doing loading)18:42
garyvdmSpeed is important for using it for a revision selector18:42
bialixI think we have to load only mainline first18:42
garyvdmIt takes about 45 sec for OOo18:42
garyvdmyes18:42
bialixbecause for revision selector this is what you need 90% of the time18:42
jamwell, for OOo, *everything* is mainline...18:43
bialixoh, I recall18:43
bialixgaryvdm: qlog on multiple branches18:43
bialixgaryvdm: can we dont show dotted revnos for non-trunk branches?18:43
* garyvdm hides under the desk.18:43
bialixno, it's easy question18:44
garyvdmor the right revno...18:44
bialixright mainline revno would be confusing18:44
bialixbut dotted revno is unusable18:44
bialixI can't merge using this revno18:44
garyvdmEasy to not show the wrong revno18:45
bialixI'll be happy just to see no revno at all18:45
* bialix has too much questions/ideas so not everything is filed as bugs18:45
garyvdm:-)18:46
bialixgaryvdm: it was last question. I promise!18:47
garyvdmjam: for OOo, I think we have to look at loading just part of the mainline...18:47
garyvdmSure18:47
* bialix packaging 0.7 now18:47
bialixoh18:48
bialixand after rebase qlog refresh crashed...18:48
jamgaryvdm: so... qlog could just load enough of the mainline to fill the first screen18:48
* bialix hides18:48
jamand read those revisions so that it could put up summary messages18:48
jamand then spawn something that would load the rest of the data18:48
garyvdmJam: yes18:48
jamyou can number mainline revs, etc18:48
jamwithout needing the full graph18:48
garyvdmbialix: please log a bug.18:49
jamarguably, we could have something inbetween 'get_parent_map()' and 'get_known_graph_ancestry()', I'm just not sure exactly how to flesh that out18:49
jamso I didn't bother yet18:49
jam(give me as much parent information as you can cheaply determine from these tips)18:49
jamnote also that if something like OOo switches, they will likely have a better conversion that actually makes use of their metadata in cvs to do merges18:50
jamI'm not positive of that18:50
jambut they have 3rd party tools to do a lot of merging, etc. for them18:50
jambuilt on top of cvs18:50
jamso there is some merge info there if people chose to extract it18:50
garyvdmI need to get a copy of a OOo branch...18:50
jamping igc, he uploaded it somewhere18:51
jamlet me check18:51
bialixdoes mysql branch is also very heavy and have much merge info?18:51
jambialix: mysql is *very* bushy18:51
garyvdmbialix: Yes - I do have copy of that.18:51
jamsomething like 65k ancestry revs, versus... 3k mainline?18:51
bialixbushy? hmmm18:51
* bialix wonder what fullermd would say about this18:52
garyvdmjam: Aprox how many mb is OOo branch. I have limited bandwidth.18:52
bialixgigs?18:52
jamyeah18:52
jamchecking18:53
jam1.3GB in tar.bz2 form18:53
jam945MB in .bzr/18:53
* bialix wonder when people start using torrents to get such big repos18:53
jambialix: there already is gittorrent, IIRC18:53
bialixcool18:53
jamgaryvdm: 3.0GB of .bzr/ + working tree18:54
bialixwow18:54
jamgaryvdm: http://people.canonical.com/~ianc/benchmarks/repos/bzr/18:54
jamthat has, emacs, OOo, python, mozilla, etc.18:55
bialixinteresting how big lp sources?18:55
garyvdmCool18:55
bialixcomparing to those18:55
jambialix: about 100-200MB, IIRC18:55
jam(note that numbers quoted are for --2a formats... LP was 1.2GB in --pack-0.92)18:56
jamMySQL is 600MB in --pack-0.92, around 225MB in --2a, IIRC18:56
bialixjam: because bzr is also used packs as repo format it's possible to build bzrtorrent, hm?18:56
garyvdmjam: I think I'm going to ask igc to post me a flash drive with some repos on. It will be cheaper that way :-(18:56
* pgega is away: I'm busy18:56
jambialix: well, I think it is based on git's sha1 content stuff. But certainly we *could* do a torrent-like protocol. I thought someone brought it up on the mailing list a while back18:57
jamgaryvdm: where do you live?18:57
garyvdmSouth Africa18:57
bialixjam: yeah sha-1 hashes should helps them18:57
garyvdmSomeone worked out that if you wanted to download more than 5gib in south africa, it's quicker to fly to hong kong, download it there, and fly back...18:59
jamwe have sha1 hashes, but things are addressed in that sense18:59
jamgaryvdm: well, there is the old 'lorry full of backup tapes' question18:59
bialixbtw jam, how's hard to implement commit --amend? is it possible to avoid uncommit/commit dance to simply fix commit message?18:59
jamat what point is a truck full of backup tapes higher bandwidth than OC-3 ?18:59
* pgega is back (gone 00:03:15)19:00
jambialix: The hardest pressure would be to get it past review19:00
jamI don't see the specific benefit over uncommit/commit myself.19:00
jamgiven that as I understand it19:00
jamcommit --ammend == uncommit + commit19:00
bialixuse case: you have changes in your tree when you realize you need amend19:00
jamas in, it takes the current content on disk19:00
jamand recommits it19:00
jambialix: git commit --amend (I believe) will include those changes19:00
jamperhaps not if you haven't 'added' them?19:01
bialixhm19:01
jamnot really sure19:01
jambut as I understood19:01
jamit was a way to resolve conflicts in the merge19:01
jamwhich means it has to include content changes as well as metadata changes19:01
bialixI was under impression it just create new commit object for old tree/blobs19:01
bialixit == git19:01
emmajanebeuno-afk, ping when you've got a minute.19:01
jambialix: The discussion I read about it was talking about what to do when an autocommit after-merge got something wrong19:02
jamand the recommendation was to use commit --amend19:02
jamhence... it has to change content somehow19:02
garyvdmbialix: bushy mysql branch: http://imagebin.ca/view/3GLAnke.html . I just expanded the twisties on the screen. It gets much wider that that...19:02
bialixI don't use git at all, only read the docs sometimes19:02
jamgaryvdm: so... mysql also has the policy of letting anyone overwrite the mainline19:02
jamso "bzr merge trunk; bzr commit -m "merge trunk into my branch"; bzr push trunk" is acceptable to them19:03
jamwhich means their history is much harder to understand19:03
garyvdmjam: Yes. I chatted to vila about that at uds. They need a "land" command19:03
jamgaryvdm: there are a lot of possibilities. They need to allow one first :)19:03
jamfor example, setting 'append-revisions-only' would force the issue19:04
jambut they didn't want to impact the developers19:04
garyvdmI think I would find "land" command usefull too.19:04
jamgaryvdm: what about 'bzr merge --swap-parents' ?19:04
bialixjam: one day after 2.0 I'll asking you a lot about file-specific commit messages. I want them in qbzr19:04
* garyvdm goes to look19:04
jamgaryvdm: doesn't exist yet19:04
jamjust ~ the same idea as land19:04
garyvdm:-)19:04
garyvdmYes19:04
garyvdmland == merge --swap-parents19:05
bialixand we'll need commit --revision-properties-from-file FILE19:05
bialixmerge-to19:05
luksI still think it's a bad idea19:06
garyvdmHi luks,19:06
lukshey19:06
garyvdmImportant for mysql people to use qbzr19:06
bialixlukc: which one?19:06
luksbialix: per-file commit messages as they are implemented in bzr-gtk19:06
bialixheh19:07
bialixthey became stadard de-facto now19:07
bialixand only jam knows all secrets of them!19:07
bialix(joke)19:07
luksit just hides information if there is no official support in bzrlib19:08
bialixluks: this is the latest feature bzr-gtk has and we don't19:08
garyvdmbialix: we can start with showing per file commit messages in qlog, and qannotate (In the revision html view)19:08
=== pgega is now known as pgega|away
bialixvila said me it's officially supported19:08
bialixor something like that19:08
luksbialix: yet bzr doesn't support them, loggerhead doesn't support them, etc.19:08
garyvdmI'm sure. I think mysql pays for bzr support.19:09
bialixgaryvdm: yes, but we need commit support too19:09
bialixgaryvdm: yes, although and not to us19:09
garyvdm:-)19:09
bialixso we can ignore these properties19:09
bialixit's just mater of competition with bzr-gtk19:10
luksI find it weird to update tools just to fit some weird workflow19:10
luksI can completely understand why it was done in bzr-gtk19:10
garyvdmBialix: I think that mysql guys would love for qlog to show pfcm (per file commit messages) because bzr viz is unusable on the mysql branch.19:10
bialixbecause it's core gui tools19:10
jamgaryvdm: As I Understand they have a custom "glog" which uses gtk widgets and does effectively qlog19:11
bialixbzr-gtk ^19:11
luksheh19:11
garyvdmheh!~19:11
* bialix does not see difference19:11
garyvdmjust mainline, or expandable?19:12
garyvdmjam^19:12
jamgaryvdm: expandable19:13
jambialix: 'bzr vis' doesn't have twisties19:13
jamso you get *all* revisions *all* the time19:13
bialixah19:13
bialixso it quickly become unusable on big histories19:13
jamyep19:13
garyvdmI wonder why that is not in bzr-gtk.19:13
jamgaryvdm: I really don't know19:13
jamother than some concerns about "not developing a VCS" to get in trouble with their existing bk license19:14
garyvdmany idea where I can find the code?19:14
garyvdmI c19:14
jamwhether that has finally run out or not, I don't know19:14
jamguilheimb is the best mysql contact I know of19:14
jamhe just sent an email to the list if you want to get his address19:14
garyvdmvila might know too19:14
=== bialix is now known as bialix-dinner
garyvdmjam: I was thinking about storing gdfo, and I'm not sure why ghosts are a problem, because you can calculate the gdfo on commit, and then when you pull, you copy the gdfo from the branch you are pulling from?19:19
jamgaryvdm: fetch can bring in a node which was a ghost locally without you realizing it19:20
jamgaryvdm: http://paste.ubuntu.com/259422/19:21
jamtime goes down19:21
jammerging D into B will bring in the ghost19:21
garyvdmok19:21
jamcausing B to have a new gdfo19:21
garyvdmbla19:23
garyvdmjam: but the gdfo for b and d are know, and the gdfo for the new revision is the max(gdfo of parents)19:25
garyvdmmax(gdfo of parents) +119:25
jamgaryvdm: the gdfo for b *changes* when the ghost is filled in19:26
jamwe need to detect that19:26
jamand propagate that change19:26
jamgaryvdm: for example: http://paste.ubuntu.com/259426/19:26
jammerging D into Z19:27
* vila remembers when jam explained him the first time and send some love to garyvdm :-)19:27
jam(so in those graphs, the first one has 'ghost' as a ghost, but the second has the actual revision.)19:27
jamif you merge D into Z19:27
jamit has to renumber, B, X, Y, Z19:27
=== vila is now known as vila-dinner
jamIn the first graph, we think the gdfo(B) == 2 (origin => A => B)19:28
jamhowever, after filling in the ghost it is 319:28
jamorigin => A => C => ghost => B19:28
jamsorry. it is 419:28
garyvdmAre the ghost in that dag the same rev?19:29
jamgaryvdm: right. In the first it is a real ghost, in the second it is a known revision19:29
jam(the whole point is that 'filling in ghosts' is a problem for caching gdfo)19:30
jamand unless you track a list of ghosts, it isn't cheap to determine what ghosts may have been filled in by fetch19:30
jamif any19:30
garyvdmOk lest say the ghost is rev g19:30
jamsure19:30
garyvdmWho ever committed b would have had to have g in their repo19:31
garyvdmSo the correct gdfo of g was know the b was commited19:31
jamgaryvdm: yes. but bzr-svn has had a great knack for introducing a ghost in other people's repos19:32
jamand ...19:32
jamwouldn't store the gdfo property19:32
garyvdmSo bzr-svn whould need to check for introducing a ghost on fetch, but normal bzr would not.19:33
jamgaryvdm: it all depends on how ghosts can be created and when they can be filled19:35
jamconverting from Arch is another way that ghosts were generated19:36
jametc19:36
garyvdmjam: ok I see.19:36
jamAnd fetching bzr-svn => bzr branch can create a pure bzr branch that has a ghost19:36
jamand then fetching that bzr branch to another bzr branch can propagate that ghost19:36
jamand then fetching into that from the original bzr branch will fill in the ghost19:36
jamI can draw a diagram if you prefer19:37
jambasically, though, allowing a bzr revision to be stored in a non bzr location19:37
garyvdmDW. I understand.19:37
jamand then pulled out19:37
jam*could* introduce all kinds of craziness19:37
garyvdmJam: and checking for ghosts on fetch would involve loading the whole graph.19:37
jamgaryvdm: unless we start keeping a list somewhere of things that are ghosts. Yes19:39
garyvdmyes19:39
jamalso, if you are loading the whole graph, you may as well number it from scratch19:39
jamsince the numbering is ... low ms19:39
jamversus the loading19:39
jamI think gdfo on OOo is something like 700ms versus 10+s to load the whole graph19:40
garyvdmSo is the plan to track the ghosts?19:40
garyvdmHi amanica!19:40
jamgaryvdm: well, if we want to cache gdfo, I think we have to track ghosts19:40
jamwe don't do either yet19:40
jamvila-dinner is the one looking at that side of it19:41
jam:)19:41
amanicaHi garyvdm! :)19:41
=== bialix-dinner is now known as bialix
=== EdwinGrubbs is now known as Edwin-lunch
garyvdmjam: My ideas for KnownGraph, and question about find_ancestry are very brief, So I'll ask you here.19:50
garyvdmFor KnownGraph, It would be nice if I could acquire via a public api the parents, and children for a revision.19:51
garyvdmQlog uses that, I would be nice if there was just one copy.19:52
jameasy enough to add19:52
jamwould you want it to be multi-way returning a dict?19:52
jamor just a single node?19:52
garyvdmJam: just single node19:52
jamKG.get_parents(key)19:52
jamor KG.get_parent_map(keys)19:52
jamwould you rather get the node directly, and have a way to walk node child and parents?19:53
jamor do you prefer to have KG as the pure api?19:53
jam(at the moment, the internals are slightly different between the KGN for python and pyrex)19:53
garyvdmKG.get_parents(key), KG.get_children(key) would be cool19:53
garyvdmI'll do a patch for that.19:54
garyvdmOk 2nd question: This is how I'm using find_ancestry: http://paste.ubuntu.com/259445/19:56
garyvdmKeys are in the format (revid,)19:56
garyvdmIs there a quick way to get just revid?19:56
garyvdmjam ^19:57
jamkey[-1] ?19:58
jamAlso, I'm fairly sure that your else: clause will fail19:59
jambecause CombinedGraphIndex doesn't implement _find_ancestors() only find_ancestry()19:59
jamoh, and revisions._index is not a CombinedGraphIndex19:59
jambut a _GCGraphIndex or a _KnitGraphIndex19:59
* garyvdm tests.20:00
garyvdmjam: I don't understand what ref_list_num is for. Is it ok for me to just pass 0, like you do in groupcompress.get_known_graph_ancestry?20:10
jamgaryvdm: Indexes store a list of referenced revisions, which is repository specific20:11
=== CardinalXiminez_ is now known as CardinalFang
jamit turns out that all current repos have the regular 'parents' as the first entry20:12
jam(KnitPack also stores the compression parent as the second entry, Groupcompress doesn't have a second entry)20:12
jambut it is why the index code doesn't claim to know the right value20:12
jamand gets it passed in from higher levels20:12
garyvdmI see, so I should just pass 0 then.20:13
jamgaryvdm: you honestly shouldn't really be accessing that low of a level from qbzr20:13
jamas it could technically be different in a different repo20:13
jamfor now, yes, you could just pass 020:15
garyvdmOk - Then I need higher level way to get the whole ancestory from multiple repos.20:15
lifelessgaryvdm: repository.get_graph()20:17
garyvdmlifeless: hi20:17
jamlifeless: well, he'd like to get it in a KnownGraph form. :)20:17
lifelesshi :)20:17
garyvdmLifeless: I'm trying to take advantage of the better performance of find_ancestry20:18
jamgaryvdm: you could do: g = repository.get_graph(other_repo); pm = dict((r, p) for r, p in g.iter_ancestry([tips]) if p is not None); kg = KnownGraph(pm)20:18
jambut that doesn't give you the benefit of faster ancestry search20:18
jamsearch/loading20:18
lifelessgaryvdm: then you need to work on exposing it cleanly higher up20:19
garyvdmlifeless: Yes20:19
lifelessotherwise you'll just end up repeating all of te logic to handle stacking etc20:19
garyvdmjam: Any reason why not Graph.iter_ancestry could use find_ancestry?20:20
chrispitzerI want to branch a working copy off of my repo without keeping it connected to the repo.  What's the command for this...?20:21
jamgaryvdm: layering issues?20:21
lifelesschrispitzer: bzr branch20:21
chrispitzeryea, but then bzr push will go back to the parrent... won't it?20:21
jamit would certainly be the expected use case20:21
chrispitzerI don't want that20:21
lifelessthen don't push ?20:21
jambut iter_ancestry is a bit silly to cast up into a generator when the lower level is creating dicts20:21
garyvdmjam: I c20:22
lifelesschrispitzer: if you create a separate branch, you can push anywhere you like20:22
jamgaryvdm: also, I'm pretty sure get_known_graph_ancestry() doesn't handle stacking yet...20:22
jamas you have to explicitly support stacking everywhere, you never (anymore) get it for free20:23
garyvdmchrispitzer: You can remember a new push location with bzr push new_push --remember20:23
jamespecially when you don't even get fallbacks over RemoteRepository anymore...20:23
jamgaryvdm: and... nobody noticed that it was broken because again, stacking requires explicit testing, since it can't just be a permutation on existing formats...20:24
garyvdmjam: So in that case, I shall stick to using repo.get_graph().iter_ancestry( ) for now20:24
* jam really dislikes the overall impact of stacking, as it breaks things over and over and over again20:24
jamgaryvdm: yeah probably20:25
chrispitzerthanks20:26
bialixjam: does stacking even worse os locks?20:29
bialixI don't believe20:29
bialix:-)20:29
jambialix: stacking has caused more direct bugs in bzr than just about any other feature20:29
bialixdirect bugs easier to fix?20:30
jamit requires a whole lot of code to know whether the thing it is looking at is stacked or not20:30
jamespecially given that RemoteRepository is no longer abstracting away the fact of stacking20:30
bialixoh20:30
jamso the client now needs to know about stacking, and do operations 2x, etc.20:31
jambialix: not to mention all the recent stuff about "filling in parent inventories", etc.20:31
jamwhich broke fetch, commit, merging a bundle, autopack, pack, upgrade, ...20:31
bialixI'm happy to not know about all this nightmares20:31
bialixbut it scary20:32
bialixjam: btw, did you saw james_w's new bzr-builder plugin?20:33
=== Edwin-lunch is now known as EdwinGrubbs
garyvdmjam: for KnownGraph.get_parents(key), should it check if the key is in the graph and return None if it is not, or just let a KeyError get raise?20:36
jamgaryvdm: I would probably raise an exception20:36
jamI think the common uses20:37
jammean that you should only be using keys that it has told you about20:37
jamso it is easier to write code that doesn't have to check if None20:37
jamthe bigger question is what to return for ghosts?20:37
garyvdmok20:37
garyvdm[]?20:37
jamSince they have a node with parents of None20:37
garyvdmjam: [] would be the nicest for qbzr use. However, returning None may be usefull for other20:39
garyvdmusers of the api20:39
garyvdmto know if a Node is a gost20:40
jamgaryvdm: well, kg.merge_sort() now directly filters out ghosts nodes from the return value20:40
jamso you can pass in ghosts without having to filter20:40
garyvdmOk, in that case, I'll just return None.20:41
garyvdmjam: Sorry to bother you so much. I've added a test that I expect to pass for the py version, and fail for the pyx version. But I don't get any failers.20:56
garyvdmHow can I check that it is testing the pyx version.20:56
jamgaryvdm: how are you creating the KnownGraph instance?20:56
jamself.create_known_graph() ?20:57
jamyou can also just print kg20:57
jamand it should be obvious whether it is python or pyre20:57
jampyrex20:57
garyvdmself.make_known_graph20:57
garyvdmok20:57
garyvdmbla - I was running bzr selftest, not ./bzr selftest20:59
jam:)21:22
lifelessjam: shelf on windows nearly fixed.21:37
lifelessjam: is there a bug for it?21:37
jamlifeless: bug #30500621:38
ubottuLaunchpad bug 305006 in bzr "shelve fails on win32 with "Could not acquire lock"" [Medium,In progress] https://launchpad.net/bugs/30500621:38
jamI believe21:38
garyvdmjam: Thanks alot for all the help.21:52
garyvdmNight all21:53
lifelessjam: hai five!22:05
jam? got shelve to work?22:06
jamlifeless: grats22:06
lifelessyup22:06
lifeless96 passing tests22:06
lifelessand a bit of test stipple cleaned up22:06
lifelessjam: branch is up, review request mailed.22:13
lifelessjam: only 5 thisFails calls in tree now.22:13
lifelessabentley: you might like to review it too, as I think you use shelf in pipelines implementation.22:15
lifelessabentley: are you around? I have a merge_inner question22:34
abentleylifeless: on the phone22:34
lifelessgimme a ping when you have a minute then.22:35
lifelessoubiwann: thanks22:46
lifelessoubiwann: shall look again22:46
oubiwannlifeless: sweet -- thanks!22:46
lifelessjam: thanks23:08
bialixdoes bzrlib has helper function to deteremine is given location (or pair tree/branch) is actually light checkout?23:20
lifeless<when he returns> bialix: I don't think so. tree.bzrdir.root_transport.base != tree.branch.bzrdir.root_transport_base though.23:27
abentleylifeless: ping23:40
lifelessabentley: hi. so there is a single test left that does locking operations that won't work on windows23:41
lifelessbzrlib.tests.per_workingtree.test_workingtree, test_merge_revert in that23:42
lifelessin that, the merge_inner call fails23:43
lifelessit fails because Merger replaces the base tree with a new revision tree23:44
lifelessbut 'base' is a modified tree, so I'm not sure that its safe for Merger to do that.23:44
lifelessI'm hoping to get a better understanding from you of this part of the code base23:44
abentleylifeless: Where does this happen?23:44
lifelessin set_base_revision I think. I paged it out since I pinged you, and I'm running low on blood sugar now, I was about to eat when you pinged.23:45
lifelessCan you bear with me while I do that ? be about 10 minutes23:45
abentleylifeless: I'm looking....23:46
lifelessif you want to see the error, remove the thisFailsS... line at the top of that test.23:47
lifelessback soon23:47
abentleylifeless: It looks like jam wanted to update Merger.base_rev_id, so he called set_base_revision, which has side effects that I can't imagine he wanted.23:58

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!