/srv/irclogs.ubuntu.com/2011/05/31/#bzr.txt

spivMorning folks.01:19
pooliehi spiv02:28
pooliemy turn to flip from waking at 3 to waking at 10 :)02:28
=== idnaria is now known as idnar
spivHeh02:34
poolielifeless: i don't totally understand your comment in https://code.launchpad.net/~gagern/bzr/bug421776-sftp-move/+merge/6270805:44
ubot5Ubuntu bug 62708 in bluefish (Ubuntu) "Please sync bluefish_1.0.6-1 from Debian unstable (main)" [Wishlist,Fix released]05:44
lifelesspoolie: we don't know the provenance of the existing file05:44
pooliehm05:45
pooliewe can safely assume it came from another bzr process?05:45
pooliewe don't know whether that process is still running, dead, etc05:45
lifelessright05:45
poolieso...?05:46
lifelessI would be wary of assuming the file matches what we're uploading05:47
poolieif it exists, the process that wrote it thought it was correct at the time it finished writing05:47
poolieit may have been wrong (buggy)05:47
poolieor there might have been file corruption05:47
lifelesstrue. And either that process failed to link it in, failed to unlink it, died, or raced with us on linking it in and did so immediately before we last read the pack list05:48
pooliebut, those possiblities don't seem any more likely here than for any other existing pack file05:48
lifelesswell05:48
lifelessCall me conservative :)05:48
poolieif you're asserting for example "a race means it's more likely the file suffered corruption" that's fine, i'm happy to consider it05:49
pooliei just want to understand what you're saying05:49
lifelessI couldn't really put a probability on it05:50
lifelessbut I would worry about trusting something that may have crashed when we don't have to05:50
poolieok05:51
lifelessfor instance05:51
lifelessif the machine powered off, without ordering between file renames etc, we might have a zero length file with the right name, not linked into pack-names05:52
poolieyes, that's very possible05:53
poolieit's also possible it would end up showing it mentioned in pack-names and yet also have the wrong content05:53
lifelessyes05:53
poolieso, being extra careful in this case seems a bit odd05:53
lifelessuhm05:54
lifelessthis doesn't seem like being extra careful05:54
poolieyou say "we should check if the existing file is intact"05:54
lifelessonce its in pack names (in the absence of attackers) we know that the prior bzr process completed05:55
pooliei don't understand why we would do that over sftp but not locally05:55
lifelesswe don't know if the fs went awol or not05:55
lifelesspoolie: we would do it locally too, wouldn't we ?05:55
pooliehang on, "we know that the prior bzr process05:55
pooliecompleted" --> that's not true if the machine crashed without an ordered journal of renames05:56
poolieaiui this bug is sftp specific, about the general pack upload code not working the same way over sftp05:56
poolieimbw05:59
pooliei'm going to read the general pack code05:59
lifelesspoolie: so IIRC locally we rename over the top05:59
lifelesswe resolve by assuming our new file is correct - which is the ultimate form of lack-of-trust06:00
lifelessso this case (which for -very- narrow windows win32 might display too) is when we cannot atomically rename over the top06:00
lifelessand we don't have a safe rename-out-of-the-way dance that others could use to handle the file-is-temporarily-missing case06:01
poolieright, we do06:01
poolieok, so using .move (which really means, force replace) would be most consistent with what we do locally06:03
lifelessyes06:03
lifelessI was suggesting a verification scan (for the pack and the indices) as a workaround to deal with the race condition.06:04
pooliein other words you like his current patch?06:04
lifelessuhm, I think its evolved since I commented06:04
poolieyes06:05
poolieperhaps rather than delete-and-replace we should move the existing pack into the obsolete directory, so if we're interrupted after deleting it, we won't lose06:05
lifelessso move has this race condition06:05
lifelessI don't particularly like that :)06:06
lifelessI don't want to block anyone06:06
lifelessI was trying to highlight the interacting constraints06:06
pooliedon't like moving it to obsolete-packs?06:07
pooliethanks for the review06:07
pooliei do appreciate it06:07
poolieam just trying to understand it :(06:07
poolies//:)06:07
poolieso there is actually an sftp rename operation argument saying what behaviour you want06:08
lifelessideally we'd make it behave like a local fs :)06:08
pooliehm06:09
poolieseems there is possibly a small race on windows too, if we delete then rename06:10
poolieok, thanks for that06:16
lifelessits possible to address the race by having a predictable path to look for fallback files06:17
lifelessor even just spin on the path in clients06:17
pooliein the hope it will appear again soon?06:17
lifelessright06:18
poolieright06:18
pooliethey're probably separate bugs06:18
lifelessbut if its linked in pack-names06:18
lifelessI think you need 2 paths - a normal one and a before-naming-into-place one06:18
pooliefor here, i think asking sftp to overwrite, and forcing the overwrite, is probably safe06:18
lifelessso that repo recovery can do something sensible06:18
poolies/safe/an improvement06:18
lifelessI think we have retry-on-missing-packs now06:18
lifelessI worry about a network interrupt during that race though06:18
lifelesshow will the repo be recovered06:19
poolieright, i'm most concerned by the connection dropping (or the server crashing) after it applies the deletion but before the new file moves into place06:19
pooliespiv, teddy, should i actually do a patch for jml's try_import?06:26
poolieit does clean things up and it should make pylint cleaner06:26
pooliebit of an optional yak though06:27
poolie(there are something like 100 'except ImportError' catches at present)06:27
jampoolie: after it deletes but before it renames, is probably before we write pack-names07:20
jamI was concerned at one point, but now... locally we overwrite on posix systems07:20
jamand I think "crash" on Windows07:20
jamit seems fine to overwrite on remote systems *without* validation07:20
jambecuase we justuploaded content *we* are happy with07:20
jamwho cares if there is unreferenced garbage that we get rid of07:20
jamcorrupted or not07:20
jamwe aren't re-instating the pack file that we think was corrupted07:21
jam"might have been"07:21
poolieright07:21
jamwe are putting the new hottness there07:21
poolieright07:22
pooliehello btw07:22
jamThe only race I can think of is 2 processes both renaming into place, and being ready to update pack-names. p1's rename succeeds so it goes to write pack-names07:22
jamp2 sees the collision, renames out of the way07:23
jamthen p1 writes pack-names, and the machine crashes07:23
jambefore p2 finallizes its insert07:23
jampoolie: but, a) I think sftp rename dance does try to preserve the old file as a .tmp07:24
poolieso you could possibly manually recover07:25
pooliehm, fancy_rename asserts sftp rename won't let you overwrite07:25
poolieperhaps either we didn't know of that option, or it wasn't supported then07:26
poolieor still isn't supported by servers07:26
poolieso it sounds like you're ok with my last comment07:26
vilahi all07:27
jampoolie: "rename" is intentionally for lock/held directories07:27
jamwe don't want to overwrite dirs that aren't empty07:27
jamthat happened accidentally on some sftp implementations, like launchpads07:27
jammove is the "rename according to posix"07:27
vilapoolie, jam: Sounds like another concurrency testing case, how about trying the no-threads approach there to see how it works ?07:28
jamvila: in this case, a callback at the right time seems very appropriate, because it is *very* sensitive to timing07:28
vilathat's why I suggest trying it07:30
jampoolie: I'm checking your comments.07:42
jamvila: I think there is a hole, I'm not sure it is worth fixing07:42
pooliehi vila07:42
pooliei agree using a callback and no threads would be good07:43
poolievila i will try to reply to your opus07:43
jampoolie: I believe the stardand secsh spec is actually 3, at least back when I was researching it a lot, you couldn't guarantee support for anything newer07:44
vilapoolie: not urgetn, I'd rather be unblocked on the reviews (well, unless they are tied)07:44
jamthere were some file open apis and some remote hash apis that would have been promising at th etime07:44
jamanyway, if we wanted to change Transport.move() to try to use that flag, i'm for it07:44
jambut *not* Transport.rename07:44
pooliejam btw you're pp this week07:44
jampoolie: yep07:45
poolievila, i think the reviews are unblocked07:45
jamfor sftp we don't want to overwrite a held/info directory that already exists07:45
pooliei would really rather the tests were not threaded07:45
pooliebut i won't absolutely block them07:45
poolieotoh it seems easy to change them07:45
pooliejam, right, the directory overwrite behaviour is very important it not change07:45
vilameh, neither one got a vote, am I being too conservative reading the comments ?07:46
poolievila, i guess i'd put it in a similar case to tests that use subprocesses: use it if you have to, but if we end up doing it a lot something may be wrong, and we don't want to set a pattern of doing it07:46
jamvila: I think the reason I haven't been faster at approving stuff is that I'm still pretty uncomfortable with lots of little bits across the whole stack. Which doesn't give me confidence in any given piece.07:48
jamI do realize that you've had your head in it more07:48
vilaI agree with the principle, but I don't feel it applies to a case where tests were copied before you raised the issue07:48
poolievila, i think i meant them both to be +tweak07:48
jamso I'm willing to defer to your focused insight where it matters07:48
poolievila i think this is kind of showing the cost of landing goes up more than linearly07:48
pooliewith the size07:48
poolieotoh some things perhaps can't be done piecewise07:48
jamI think I like the idea in broad terms07:49
vilapoolie: you mean that splitting this work in smaller pieces didn't help ?07:49
pooliehm, not sure07:49
pooliethis was a bit like: write one big thing; chop it up; propose all the pieces07:50
poolieas opposed to proposing smaller bits as you go07:50
pooliebut perhaps there are hidden costs to that07:50
vilaI think we discussed being a bit less risk averse so I'd delighted to see our policy go more in the direction: this bit is controversial, add A FIXME, address it later, rather than: this bit is controversial, let's reach a consensus before landing it07:51
jamvila: I think I've tried to do that, I think the fact that it seems to come up at most stages concerns me07:52
vilaespecially when there is not enough energy spent on reaching a consensus by all parties involved07:52
jam(10 stages, and 5 of them have "FIXME" seems a bit odd, if only 1 or 2...)07:52
pooliei think the thing is that when there are many related patches in flight the whole thing gets a bit harder to discuss07:52
jammaybe I'm mis-estimating07:52
vilabut if they are all in the same patch they are hard (~impossible) to review07:52
pooliewell, there is doing without consensus; and then there is also being more willing to get consensus even on something that's imperfect07:53
pooliepersonally i like the second concept better07:53
vilathe above remarks were general, in this specific case, I've been proposing scaffolding code (and tests) that I think shouldn't be reviewed as strictly as code that will stay (especially tests)07:54
vilaI can't reach a point where we can discuss on the end result if I had to constantly refine code I intend to throw away in the end, this start discussions on code that is not there to discuss about07:55
jamvila: having code that you are throwing away in the end is odd, and inconsistent with how we usually do it, hence we don't really know how to act on it.07:55
jamI understand your view point07:56
jamjust saying it is coming from a place we don't usually look at07:56
jamhence confusion and delay07:56
poolieright07:56
pooliewhat's a good example of scaffolding here?07:56
poolieare you talking about code to support apis you intend to get rid of?07:56
vilathis a good discussion, I'm not throwing stones, I feel there is several issues and no easy solution, so we should discuss07:56
vila_CompatibleStack, the tests with threads are the most obvious ones07:57
vilathe Stores (already have FIXME), the xxxStacks (already have FIXME)07:57
pooliehm07:58
pooliei think generally speaking if there's some code that's a bit ugly or inefficient but there's a comment explaining it will be soon deprecated, people ought to take that into account in reviewing07:58
poolie(they might still think it's too buggy or something)07:58
pooliei think generally "I will throw this out in the future" is not very relevant to reviews07:59
vilaI don't think I can implement a full deployment, add new features, provide a migration path and only then break into pieces for review without incurring a huge push back... (not to mention the delay just to reach that)07:59
pooliebecause it's hard to know for sure that you actually will come back to do it07:59
pooliesomething more important could come up next week, or you could get sick or whatever07:59
vilayup, it's hard to know07:59
poolieso they need to make sense individually07:59
vilawhich is why I insist on putting a name and a date in FIXMEs07:59
poolieshrug, there are named dated fixmes from years ago08:00
poolieit's a good practice but it is no guarantee they'll be fixed08:00
pooliewe should be ok with stepwise refinement; promises it'll be better in future are really not that important imo08:00
vilaI think it's better than not putting them08:01
pooliethe fixme comments?08:01
vilayes08:01
pooliei agree they're good08:01
vilaand my goal for config is to have none of them left in config.py08:03
vila(I just review them and I strongly confirm)08:03
vilaso it's hard for me to buy the "you won't fix it" argument there and instead it makes my life harder to fix them *now*08:04
vilawhich I think is close to the root cause of my frustration there08:04
pooliehm08:05
pooliewell, it's good to talk it over08:05
poolieone way to look at it, which might be oversimplified08:05
poolieis that there are things that must be fixed before landing; and things that don't need to be08:05
pooliewe should be careful where we draw the line08:05
pooliebut, if something really is in the first class, then it actually must be fixed; an earnest intention to do it later is by definition not enough08:06
vilaright, I generally tend to fix things I don't fully agree with to make landing easier, if I don't intend to fix quickly, I file bugs or add FIXMEs, the distinction between the two may not be clear enough as sometimes I use FIXME for issues that are so big I don't even have a good answer for them08:08
vilaor are so unrelated to the proposal I just punt to avoid falling into yak-shaving mode08:09
jampoolie: correct. Though if enough of "doesn't need to be fixed before landing's it gives some unease about the stack08:10
vilalike 'external_url should accepts an optional relpath' where the implications are all over the place08:11
vilaha, no, I filed a bug for this one :)08:11
pooliejam what do you mean "about the stack"?08:11
vilathe whole config work08:11
poolieso, i haven't reviewed every branch08:12
jampoolie: the stack of changes that are being proposed. If you have 5 patches pending, and each one has a FIXME or 2, it makes (at least me) concerned08:12
pooliei think on the whole, having a bunch of branches that possibly interacts, or possibly fix some problems in lower layers08:12
poolieit's actually harder to review than just one big patch08:12
jamSometimes unnecessarily so.08:12
pooliepossibly this is partly a bug inlp08:12
pooliejam, right08:13
pooliealso it's harder to see what the actual eventual big picture will be08:13
jampoolie: I think it depends on how inter-related the stack of patches is.08:13
jamsometimes layering can easily separate out bits08:13
vilaalso, the approach I tool was to (try to) minimize the scaffolding so adding each piece can raise its own issues (say: lock remote config files currently ignores control.conf which is used only on lp but doesn't have (AFAIK) corresponding tests to exercise against)08:13
poolieprobably08:13
jambut if a later patch modifies *the same code*08:13
jamthen it isn't really separated08:13
vilaI tried to use devnotes to track the big picture, but the issue here is that it conflates know issues with solutions that requires new features and I'm only at the no-new-features replacement stage :-/08:14
* vila nods about higher threads fixing issues in lower threads08:14
vilathat makes reviewers life hard08:14
pooliei'd like to be tracking it against a doc in the developer guide08:15
pooliei'm not sure which active branch, if any, might be adding or updating that08:15
poolieis there one? or is it landen?08:15
vilaon the other hand, the past experience with big patches is there to demonstrate this doesn't work either so I had to try something else which we are debugging right now :-}08:15
pooliealso, that's an issue with having a stack of patches08:15
poolieyou can't easily see the overall change to some thing08:15
poolie(couldbe fixed with tooling, or even just having an overall integration branch)08:16
poolievila, so, i don't know08:19
poolieit would be good to work out how to make this less frustrating08:20
vilahttps://code.launchpad.net/~vila/bzr/new-config/+merge/56887 ?08:20
pooliei feel it's a bit hard to see the big picture08:21
vilaright, so, do you confirm you're ok to land the current branches ?08:22
vilaThe good thing I see in this approach is that we get rid of agreed upon code with some pieces still needing work08:22
vilaat least it becomes possible to make independent proposals for these pieces08:23
vilaAs a reviewer myself, I prefer a smaller followup than a bigger proposal08:23
poolieso to me the thing that seems to work best is to just have one mp at a time, make it self contained (both without introducing new serious problems, and hopefully also improving something) and then do a series of those08:23
vilaSometimes it means *I* should do the followup though...08:24
poolieis new-config current as the overall thing, or have the others moved?08:24
pooliebecause i feel like that diff is not so big as to be impossible to review08:24
vilaargh, but the current series was pushed to the point I could actually present a use case because people weren't seeing how the lower threads will work !08:24
poolieand it would address this thing of not having an overall picture08:24
vilalet me check08:25
pooliehm08:25
vilahmm, it seems to be current (in my local loom) , tip is pushed, but lp diff is bogus :-(08:26
pooliere the issue of not seeing how lower levels will work08:26
pooliei think08:26
poolieit's not necessary to see them used from code08:26
pooliebut i would look for, either it makes the current code at that level cleaner by refactoring it08:27
poolieor, at least the cover letter can tell a story about how introducing this will later let us do a particular thing08:27
pooliea prose description of what you're steering for would i think be enough08:27
vilahmm, you mean something with a restricted target compared to devnotes ?08:28
pooliewhat's a good example08:28
vilaof what ?08:29
poolieanyhow "weren't seeing how the lower threads will work" --> I think just a good cover letter should be able to solve this; we don't need hundreds of lines of code08:29
poolieexample of not seeing how the lower levels will work08:29
vilawell, the weakref branch ?08:31
vilathe _compatibleStack ?08:32
pooliecan you give me the url?08:32
poolieso your current-config is everything merged in together?08:33
vilahttps://code.launchpad.net/~vila/bzr/config-lock-remote/+merge/6241808:33
vilapoolie: don't know yet, waiting for lp to refresh08:33
vilaright, looks better, n oidea about the conflicts though...08:34
pooliefor instance, in that branch, i'd like to know whether there is developer documentation of .unload()08:34
vilais the fact that 5 FIXMEs are in red there saying something ? :D08:35
poolieit's not easy to see whether that's true08:35
pooliewell, that's good08:35
pooliei guess i could just ask you08:35
vilathere is a doc string for unload()08:36
poolieyes08:36
vilaargh, self._save() ??? Wtf08:36
pooliewhich is good08:36
poolieit's a bit like the conversation with jr at the sprint08:37
vilahmm, which one ?08:37
pooliethat docstrings i think aren't so good at giving people an overview of what they'resupposed to know about08:37
vilahmpf, you think the actual ones are better ? Not throwing stones again but... I try to improve and I try to not wait for perfection before proposing :D08:38
pooliewhich actual ones?08:39
vilahehe, exactly :)08:39
poolieyou're saying the developer guide is not better than the docstrings at the moment?08:39
pooliewell, i don't think we should block your landings on having a perfect developer guide08:41
pooliei think it's reasonable to ask about it08:41
spivI don't think better/worse is the way to compare the dev guide to the docstrings08:41
poolieand in fact that developer guide content could be a good way to communicate where this is going08:41
spivThey serve different purposes I think08:41
spiv"guide" vs. "reference manual" broadly speaking08:41
poolieright08:42
pooliethe guide should tell you where to begin08:42
vilaright, I think issues about unload() would be encountered during tests for new Stores rather than by people using them08:42
spivUnfortunately I have to log off now due to ill wife, but it's an interesting discussion you've been having.08:42
poolie:)08:42
pooliehope she gets better soon08:42
vilaspiv: take care of her, there will be logs ;)08:43
pooliei'm sure she'll find that reassuring :)08:43
vilahehe08:43
vilaback to the dev guide, just at this minute, I don't know whether it's good or not08:44
vilaIt may be a bit too soon to put too much effort into it though since I haven't reach the point where I can say: ok, I've been able to deploy for all actual uses (no new features), the Store implementation is complete08:45
vilaBut at that point, I will be able to write a doc saying: this is how it works, this is what is needed to implement a new one08:45
vilaSo I'd say a bug is appropriate to track this08:46
vilahmm08:46
pooliehm08:46
pooliei think it's easier to write as you go along08:46
pooliebut perhaps i should do a followon patch that tries to explain it, as i understand it08:47
* vila falls to his knees08:47
vilaplease do so !08:47
vilaThat would be so much more productive as far as I'm concerned !08:47
vilaAnd probably illustrates how I think the reviews should evolve: many comments should just be : blah, blah, if you dont get the picture, look at lp:~bzr/bzr/blah-blah08:49
vilawill avoid a bunch of round-trips08:49
poolie?08:50
pooliewhat do you mean?08:50
vilafollowon patches could be done *during* review08:51
vilato the reviewee (sp?) can just merge them08:52
gourspeed improvements are main thing arriving in 2.4?08:52
vilaa trivial example is spelling mistakes, it's almost as fast to fix them and push a branch for the reviewer, but it avoids a roundtrip for the reviewee08:53
vilawell, roundtrips may be more for less trivial stuff but you get the idea08:54
pooliegour: probably the largest thing: http://doc.bazaar.canonical.com/bzr.dev/en/whats-new/whats-new-in-2.4.html08:54
vilaa more involved example would be the tests with threads ;-)08:54
poolievila, yes, and there too lp could handle it a bit better08:54
gourpoolie: thanks...i was looking for such doc, but could not find it08:55
pooliearguably we should make some of these branches team-owned so that other people can directly commit to them08:55
poolieperhaps08:55
poolievila, i'm reading your doc08:55
vilathe devnotes one ?08:55
poolieno, the threads mail08:55
vilaoh, start with the followup :)08:56
poolieyou can just send it to the list if you want08:56
poolieit's a bit rambly08:56
vilaand come back to the main one then08:56
pooliei agree that these tests should mostly look like a sequence diagram08:56
pooliethat is a good way to express it08:56
poolieso the question then i guess is, what way of writing the test best expresses the sequence diagram08:57
poolieand, which way of writing it is least likely to have accidental problems08:57
vilayup08:57
pooliei think writing it as tests is no clearer (probably less clear); and much more likely to have bad consequences such as hangs08:57
vilaI don't think there is a clear cut to favor one above the other08:58
poolieto me it is clear from our experience so far08:58
pooliethere are clear tests for concurrency that work in a single thread08:58
vilaI've made significant progress regarding hangs (and there really are several kind of hangs, the babune ones are only one)08:59
* gour considers that 2.4 will be one very fine release08:59
vilas//are only one sort)08:59
pooliewell, i'm glad, and i appreciate that08:59
pooliebut, it's better if we can just avoid the issue08:59
pooliegour :) me too08:59
vilaindeed08:59
pooliefor instance if you look at test_lockdir09:00
poolieand perhaps as a single example test_20_lock_contested09:00
gouri'm moving full to bzr now (will migrate some repos from fossil via git)09:00
pooliethis *could* be written with threads, but i think it's pretty clear, and much less likely to have weird problems, the way it is09:00
gour*fully09:00
poolie:)09:01
vilapoolie: right (nit:  addCleanup(lf1.unlock))09:01
pooliegood point09:02
poolieit's a very old test, from before we had that09:02
poolie(though it could have used finally, of course)09:02
vilapoolie: sure, it's fine as is09:02
vilaWhat I would love on this thread in test issue is that we go a bit further using the config ones as an example09:03
vilaI've looked at them again and frankly, they are old too09:04
vilain the sense that in they were written for a bug which in the end is really addressed by using an atomic write09:04
vilaand since it's atomic, the initial issue of having two processes mixing its content is moot and the tests are just... relying on this assumption anyway09:05
pooliehm09:06
vilathey *were* useful for me in my actual work as ~blackbox tests ensuring the new code paths were covered09:06
vilabut since the new code path *also* assumes an atomic write, the same remark applies...09:06
pooliemm i see what you mean about you copying existing test09:06
vilasimply deleting them seems extreme though09:06
poolieok; i have to talk to jam now09:07
vilapoolie: before you left: you didn't answer to the "meh, neither one got a vote, am I being too conservative reading the comments ?"09:08
gourAfC: hiya, is bzr still your preferred dvcs? (/me still remembers your 'orthogonal patches' post)09:09
poolieconfig-lock is needsinfo09:10
* vila blinks09:11
vilanot approved then ?09:11
AfCgour: hello09:14
gourAfC: hiya09:15
AfCgour: yes, I still use Bazaar pretty much exclusively.09:15
gourAfC: that's nice to hear...i did experiment (after leaving) darcs with mtn and fossil for some time, but now i'm moving fully to bzr09:16
=== hunger_ is now known as hunger
AfCgour: that puts me at odds with most of the other hackers I collaborate with, but I don't really care. Our having switched to Bazaar predates their having switched from CVS to Subversion, and their subsequent Git infatuation doesn't impress me much either.09:17
gourhe he...i also cannot grok git and use bzr-git in such cases...it's quite good09:18
fullermdI always assume that when I disagree with everyone around me, it's 'cuz I'm right and they're wrong.09:18
fullermd...  of course, when I _agree_ with everyone around me, that's also because I'm right and they're wrong.  They're just wrong in more subtle ways.09:19
AfCfullermd: have you ever considered moving to a medium sized mountain top in India and becoming a guru?09:20
gourlol09:20
fullermdOh, absolutely.  But have you priced out decent 'net connectivity on mountain tops lately?!09:20
AfCwisdom is not bought without sacrifice.09:21
fullermdSure, but couldn't I just trade a firstborn or a limb instead?  A man's gotta draw the line somewhere.09:21
gourhere is some wisdom from the vedas: "In a place where there are no scholars, even a men of petty knowledge is worshiped just as in the land devoid of trees, even a castor oil plant is considered as a big tree."09:23
vilagour: castor is the new kid in town but I'd rather stick with goats09:24
AfCGoatherds Unanimous09:25
phanatichi, do you have any suggestions how i could fix an inventory corruption? https://bugs.launchpad.net/bzr/+bug/62068410:05
ubot5Ubuntu bug 620684 in Bazaar "ERROR file id "None" is not present in the tree when checking the root entry" [Medium,Confirmed]10:05
gourvila: ;)10:06
vilapoolie: just foudn you comment on config-lock-remote with needsinfo (which *is* approved), but I was referring to config-locks and config-lock-branch :-/10:37
poolievila, sorry, i want to get these fixed up and landed but it's getting too late here10:40
vilapoolie: I'll switch to something else then, enjoy your evening10:41
pooliejam or i or both will concentrate on them later this week and try to get you unblocked10:44
jamvila: actually I'd like to do some phone chatting with you if you want. *right* now I need to go eat some food.10:45
vilahehe, jam (and I) won't be there that much later this week :D10:45
vilaThursday is a holiday here10:45
vilajam: sure, I will eat a bit later though. What subjects do you have in mind ?10:59
jamvila: just to go over your config stuff in a live chat and get it done, rather than high latency email/irc11:00
jamvila: I feel like we had you do a big work on your own, and we need to rectify that. "big" (more than 1 weeks worth of work) should really be a collaboration.11:01
jamfor config, you're the only one that really has the state in your head, and we've had disjoint reviewers, etc.11:01
jamso nobody else really understands it. So either we are rubber stamping because we know you're smart, or we are fragmenting on details we don't understand.11:02
vilajam: interesting point of view, I'm glad you discussed with poolie :D11:03
vilaIndeed, I should have realized it sooner...11:03
vilaI guess it's hard to realize how much people understand without seeing code so the devnotes document wasn't that useful (or too broad or aiming too far in the future)11:04
jamvila: it has been a general issue for us. I've hit it as well when I do major work. It is really hard to get major work landed, if it wasn't a collaboration.11:04
vilaThat reminds me of the i18n effort too11:04
jamso lets make them collaborations.11:04
vilayup, I welcome that !11:05
poolie:) hooray, i can sleep soundly11:06
pooliegood night, gets11:06
poolie*gents11:06
vilayeah, I corrected the typo before seeing the fix !11:07
pooliehi jelmer, welcome back11:07
jelmerhi poolie, thanks :)11:07
jelmerthings appear to have been busy here last week :)11:08
vilajam, poolie: I thing there are far enough itches there for anybody to find several to scratch...11:08
vilajelmer: yeah, when we woke up from your patch avalanches we realized we had some of our own :D11:09
vilajelmer: but please, keep the snow balls rolling !11:09
pooliei wonder where jr is11:09
poolieon holiday this week maybe11:09
poolieanyhow, see you tomorrow11:09
jelmerhave a good night poolie11:11
jelmervila: :)11:11
=== mbp_ is now known as poolie
* vila lunch time11:40
gouri'd like to convert all my old fossil repos into bzr. fossil has --git export command which can create fast-import stream...now i wonder if i could do fossil --> bzr in one step?11:48
gouri've tried with the following: fossil export --git -R ~/repos/fossil/admin/cfgfiles.fossil| bzr fast-import -11:49
gourbut bzr crashes11:49
gourhere is the paste - http://pastebin.com/zT10Re9611:50
fullermdThat sounds like bzr and the fastimport plugin being mismatched.11:51
fullermdThough at least you're using a sensible OS   :p11:51
gour:-)11:52
gourhere it is https://bugs.launchpad.net/bzr-fastimport/+bug/48578811:53
ubot5Ubuntu bug 485788 in Bazaar Fast Import "bzr fast-import fails: AttributeError: 'CHKInventory' object has no attribute 'copy'" [Medium,Triaged]11:53
jelmergour: looking..12:09
jelmergour: still there? Can you try a different fastimport on that fastimport file?12:12
gourjelmer: will do...after lunch12:14
gourjelmer: what do you mean 'different' ?12:15
gouranother format?12:15
jelmergour: latest revision12:15
jelmersee the bug report12:15
gourok12:15
CaMason_hi guys. I have a branch with several merges that may be missing some revisions - is there a command to show a list of 'tips' or old commits?12:16
jelmerCaMason_: hi12:20
CaMason_hello12:20
jelmerCaMason_: bzr heads (from the bzrtools plugin) should be able to help12:20
jelmerin particular, "bzr heads --dead"12:20
CaMason_thanks. blank.12:21
CaMason_I might have to take a look through a backup. Thanks12:21
mvohi, a quick question, if I want to copy a file (not rename) and retain history, is there a way to do that with bzr? i.e. bzr copy gtk2.py gtk3.py and then going wild on gtk3.py12:22
jelmerhi Michael12:22
jelmermvo: No, there's no way to track files across copies at the moment12:22
jelmerwe have some thoughts on how to do so, and bzr is will probably support it in some form or another in the future - but today it's not supported12:23
mvojelmer: ok, thanks!12:23
jamhey Riddell, just looking at your zlib patch now12:53
Riddellthanks jam, if it's rubbish feel free to tell me so :)12:54
gourjelmer: http://pastebin.com/YReiaLQ012:56
jelmergour: try again?12:57
vilawhat happened to bzr-2.3.3 for natty ?12:57
jelmer(r319)12:57
jelmervila: I'm not sure - were we going to do a SRU?12:58
vilasame here, searching for poolie's sru page (or was it maxb's page ?)12:58
vilaa wiki to keep track of the srus12:58
maxbhttp://wiki.bazaar.canonical.com/UbuntuStableReleaseUpdates12:59
vilamaxb: you rock :)12:59
vilagoogle: can you beat maxb and mgz for *my* requests ? Bah, of course you can't !12:59
vilamaxb: If I read this page correctly, 2.1.4 is still in the pipe and 2.3.3 hasn't been started, right ?13:00
vilabug #494221 is marked fix released, rmadison still says 2.1.1 for lucid, 2.1.4 for lucid-updates13:02
ubot5Launchpad bug 494221 in Bazaar 2.1 "KeyError in remove_recursive_id during commit" [High,Fix released] https://launchpad.net/bugs/49422113:02
vilaso the SRU for 2.1.4 is completed no ?13:02
gourjelmer: http://pastebin.com/BS2HbXV113:04
jelmergour: that fastimport stream must be quite unusual :-/13:04
jelmergour: is the stream public?13:05
gourjelmer: no, but i can try with another one which is public...wait a minute13:06
jamjelmer: https://code.launchpad.net/~nmb/bzr/merge-force-doc/+merge/6293813:10
jamyou voted approve after poolie asked for some changes13:10
jamwas that just delayed email?13:10
jelmerjam: Uhm, yeah, let me retract that13:11
jelmerjam: Done - thanks13:11
vilaPP ftw :)13:12
maxbvila: Ah, right, looks like 2.1.4 has been promoted13:20
* maxb wonders what the dates symbolise13:21
vilamaxb: last modification of the topic ?13:21
maxboh. "The date is the upstream source release date." a bit below13:21
viladamn, good catch13:22
maxbI wonder why that's useful13:22
vilaI think it gives some rough idea of how long it took to complete the SRU13:23
vilawell, rather since when it has started13:23
vila-ish13:23
vila:)13:23
vila. o O (That was really a clear summary, your S/N ratio sky-rockets !)13:24
fullermdWell, if it's TOO clear, it's a full report, not just a summary   :p13:26
gourjelmer: i cloned fossil repo available with fossil clone http://www.fossil-scm.org/ myclone.fossil and then try to fast-export/import and got - http://pastebin.com/czLmWLdb. Fossil is available at http://www.fossil-scm.org/download.html and compiles into single-file executable.13:29
jelmergour: can you upload the problematic fast import file to the bug report?13:31
gourjelmer: you mean git-export format created by fossil?13:33
jelmergour: yeah13:33
jelmerthe bit you pipe into bzr fastimport13:33
gourok13:34
gourjelmer: it's 471M...shall i compress it somehow?13:34
jelmergour: can you perhaps see if it's possible to reproduce the issue from a trivial fossil repository?13:35
gourok13:35
maxbSo, yes, it would be appropriate to get the 2.3.3 SRU underway now13:38
maxbbug 616878 is a non-trivial behaviour change which would require particularly careful analysis13:39
ubot5Launchpad bug 616878 in Bazaar "bzr commit error because of no identity (should look at /etc/mailname)" [High,Fix released] https://launchpad.net/bugs/61687813:39
gourjelmer: small file is attached to the bug report13:39
jelmerh13:40
maxbWe'll need to be particularly careful, as it's not the sort of change normally SRUed13:40
jelmergour: thanks13:40
vilajam: finally available, are you ? Mumble ? Phone ? Here ?13:56
=== smoser` is now known as smoser
jam1hey vila, probably about 20min for me14:05
jam1then mumble or phone14:05
jam1or sip if you have it set up14:05
vilano, only mumble and phone, but I think I can call you for free14:06
vilamumble leaves both of my hands free though and I suspect I may need them :)14:06
jam1uhm.... heh heh14:10
jelmergour: fixed14:15
jelmergour: though I should note that the way fossil uses fastimport seems really odd14:15
=== jam1 is now known as jam
gourjelmer: let me try...otoh, i just want to convert repos to bzr...one-time event14:23
gourjelmer: drh also complained how git handles it14:24
jelmergour: drh?14:25
jamvila: logging into mumble now14:25
gourjelmer: dr richard hipp, author of fossil & sqlite14:26
jelmergour: I agree with him fast-import isn't ideal (it's very git centered), but the way fossil seems to use it is inconsistent with how all other systems (including git, where it originated) use it14:27
gourjelmer: i see...otoh, attempt to import my 'olod' repo gives - http://pastebin.com/CSAZGPfp14:29
jelmergour: can git import that file without problems?14:30
gourlet me try14:30
gourjelmer: it does import14:36
jelmergour: are you trying to import into a clean bzr branch?14:36
gourjelmer: yes14:38
jelmergour: in that case I'm out of ideas14:39
jelmergour: an alternative might be to import via Git14:39
gourthat's what i'm trying now14:41
gourimport via git fails as well14:56
smoserhm... i had a link to a list of packages that were broken for udd, but i can't find that link.15:11
smoseranyone?15:11
smoserfound it.15:13
smoserhttp://package-import.ubuntu.com/status/15:13
gourjelmer: i've tried to export git repo and import into fossil & bzr...former works, the latter fails15:13
smosermy next question would be "how does one get a package removed from that list"15:14
jelmersmoser, by fixing the relevant bugs in the package importer15:14
jelmergour, how does importing into bzr fail?15:15
gourjelmer: http://pastebin.com/CvwEcVaH15:15
gouri used: git fast-export --all15:16
jelmergour, what version of git?15:16
gourgit version 1.7.4.515:17
jamvila: http://paste.ubuntu.com/615364/15:18
jelmergour, I'm afraid I'm out of ideas in that case15:24
jelmergour, or perhaps clone the git repository with bzr-git?15:25
gourjelmer: ok15:25
gourjelmer: you can export from git and import into bzr?15:25
gourjelmer: i clone many repos with bzr-git, but i wanted to test whether bzr fast-import cam import from git15:25
jelmergour, I haven't seen a lot of issues with bzr-fastimport, its testsuite also covers a fair number of corner cases15:30
jelmerthat said, you seem to've hit an open bug15:30
gouri've tried from random git repo to export and import into bzr...same error15:31
gourso, it's not just cae with fossil-exported repos15:31
jelmerin that case there might be an external thing15:31
gour?15:32
jelmerI've never seen that particular error with bzr-fastimport and I've done dozens of imports15:32
jelmerare you using python-fastimport trunk?15:33
gouri just tried with https://github.com/cournape/Bento  -same problem15:35
gouryes, trunk version15:35
jelmergour, what exact command are you running to export that repo?15:37
gourjelmer: git fast-export --all > ../repo.fi15:38
jelmer15:39:01 Imported 1826 revisions, updating 1 branch and 1 tree in 0:00:1915:39
gourand then: bzr fast-import ../repo.fi fro mwithin newlly-init bzr repo15:39
gourstrange15:39
jelmergour: trunk bzr-fastimport *and* trunk python-fastimport?15:40
gourjelmer: found what's the problem15:41
maxbOh, I've been meaning to ask - does this look like a transient error?     bzrlib.errors.TooManyConcurrentRequests:<module>:main:import_package:make_db_set:get_branch_parts:open:open:open_from_transport:open:_open:__init__:_probe_bzrdir:_rpc_open_2_1:_call:call:call_expecting_body:_call_and_read_response:_send_request:_construct_protocol:get_request:__init__15:41
gourthe directory which i used for testing was somehoe, initiliazed as shared-repo15:41
gourjelmer: now it works directly piping it from fossil15:45
gourbut import is only partial..another problem15:47
jelmergour, partial in what way?15:47
jamvila: http://paste.ubuntu.com/615380/15:49
gourjelmer: not all revisions are imported...fossil --> git has all revisions15:49
jerrybQuestion:  I'm learning bazaar after a while with svn.  I'm wondering if/how I can do "bzr diff <path>" to show the last set of changes like I can with "svn diff -rprev <path>".15:50
gournow i'll try git --> bzr15:50
jamvila: http://paste.ubuntu.com/615383/15:50
jamhttp://paste.ubuntu.com/615384/15:51
gourjelmer: fossil --> git imported only ~300revisions, while fossil --> git --> bzr all of 'em (~500)15:51
gours/fossil --> git/fossil --> bzr15:52
maxbsmoser: Did you have a particular package in mind?15:54
smoseri dont care a lot about 'nut' i was just doing a merge and saw it broken.15:54
smoseri have to say that doing merges with bzr is a whole lot nicer than with 'grab-merge'15:54
jelmergour: bzr fastimport only imports trunk, not other branches by default (see its default output)15:58
gourjelmer: i'm aware of it..the problem was that i did tests in ~/ff dir in which i, by mistake did bzr init ., which was supposed to be done in ~/ff/dir and then, everything was done as within bzr repo which was otherwise empty, but having ~/ff/.bzr greatly confused bzr, as you can see16:01
gourjelmer: maybe something can be done to detect it instead of spitting "BadRestart: Bad restart - attempted to skip commit 39 but matching revision-id is unknown" ?16:02
=== marienz_ is now known as marienz
jelmergour, well, that would require us to know *why* you're getting that error first16:08
gourtrying to reproduce it now, but it stubbornly works :-)16:15
jerrybQuestion:  I'm learning bazaar after a while with svn.  I'm wondering if/how I can do "bzr diff <path>" to show the last set of changes like I can with "svn diff -rprev <path>".16:16
maxb-c-116:18
maxboh, the last set of changes that touched <path> ? That may not be so easy16:18
vila'bzr diff -r-1 <file>' works fine16:19
maxbeven if <file> didn't change in the last revision in the branch?16:20
jerrybvila: doesn't work.  e.g. I got a diff with 'bzr diff -rlast:2 <file>' but nothing with zr diff -r-1 <file>16:22
jerrybmaxb: yes16:22
vilaoooooh, sorry, missed this bit16:22
vilabzr log -l1 <file>16:23
vilawill tell you the rev16:23
cr3how can I branch just the code from a project with minimal .bzr overhead where I don't intend to make any commits nor pulls16:44
maxbI don't think the bzr remote protocol offers a convenient way16:53
cr3maxb: something minimal would be fine too16:53
=== beuno is now known as beuno-lunch
vilamgz: around ?17:48
mgzue.17:48
vilamgz: about cleanups and cycles17:49
vilawhen the test has run (or fail) the cleanups are run and deleted right ?17:49
vilaso any reference in a cleanup method can't be involved in a cycle, still right ?17:49
mgzyup, though it's not always obvious if there are other cycles.17:50
mgzit's safe to pass a bound method as a cleanup callback though17:50
vilaright, in my case it's not even a bound method ;)17:51
vilamgz: thanks, that answers my question17:52
=== beuno-lunch is now known as beuno
=== mnepton is now known as mneptok
=== yofel_ is now known as yofel
chxhi. in the past there was a Drupal mirror on launchpad. We built the site based on that. Now Drupal uses git (*weep*) and I am trying to merge. This is not trivial to say the least. How can I tell bzr that the other tree (i created with bzr-git or fastimport, doesnt matter much) revision 14503 is pretty much the same as r17861 here? (It wasnt the same but close enough that merge can work from there)21:45
chxbzr merge -r 14503..-1 gives me a content conflict for every file.21:45
jelmerchx: that's the "parallel import" problem - it's a nontrivial thing to fix21:46
chxYes.21:46
chxI figured as much.21:47
chxhey you are the guy who write dulwich arent  you21:47
maxbAnyone with jubany access got a moment? I'd like a ./requeue_package.py --auto xbl21:47
chxand fastimport too21:48
chxand bzr-git as well?21:48
chxjelmer: Hi! You are my guy that's for sure :D21:48
jelmerchx: Yeah, I'm active in all three projects by coincidence :)21:49
jelmerhey maxb21:49
maxbHello21:49
chxjelmer: so... are there some docs i should rtfm to deal with the problem? or just give up, roll a monster patch apply and struggle?21:50
chxhehe googling bzr parallel import leads to http://wiki.bazaar.canonical.com/ThreeWishes here where it's one of jelmer's wishes21:50
jelmerchx: I'm not aware of any docs; you should be able to do some sort of fancy rewrite of the old branch to make it use the same file ids as the new (git) branch21:51
jelmerchx: however, there is no command that can do that at the moment21:51
maxbI wonder if it's possible to contrive something useful by means of rm / add --file-ids-from=21:52
jelmerchx: it might be worthwhile to ask on the list, other people might have better ideas21:52
chxjelmer: https://lists.canonical.com/mailman/listinfo/bazaar this?21:54
jelmerchx: yep21:54
maxbchx: Is there an import of drupal's git registered on Launchpad?21:55
chxmaxb: no :(21:56
chxmaxb: David owns the Drupal branch21:57
maxbWell, I suggest making one, then :-)21:57
chxok wrote David Strauss an email so we can do that21:57
maxbDo you need to?21:59
maxbThe drupal website is pretty unfriendly to people looking for its VCS21:59
maxbHm. Looks like a bzr-git import may be frustrated by bzr-git's current lack of support for importing anything other than the repository's HEAD branch22:04
chxmaxb:  i have a fastimport to work from tho22:09
maxbFastimport is considerably less convenient to incrementally update22:11
chxthats for sure :/22:12
* maxb ponders putting "UDD failure ratchet: 487" in the topic22:12
chx48722:13
chx487?22:13
chxmaxb: well, i can do the bzr rm ; bzr add --file-ids-from dance for sure22:13
maxbchx: So, I'd be inclined to do a bzr-git branch from a local git clone of whichever drupal branch you want to track22:14
chxmaxb: and then bzr rm --keep ; bzr add --file-ids-from ?22:14
maxb(487 Ubuntu/Debian packages currently failing to import into Bazaar branches)22:14
chxah22:15
jelmermaxb: How will "bzr add --file-ids-from" help, it means losing the history of all existing files. In that case, why not simply discard the existing history and rely on the new git history?22:15
jelmermaxb: also, nice work on the UDD progress :)22:15
maxbI was thinking that with some combination of rm / add --file-ids-from / merge / revert . it might be possible to make bzr behave in a roughly desirable manner22:16
chxi am happy to lose core history22:17
chxi have more copies of core history than i can possible care for :P22:17
maxbThough I've had a fair amount of beer, so I might be missing something :-)22:17
chxyeah that's what i am trying to do now22:18
maxbI think it would roughly play out as:22:21
maxb1) Check out the latest upstream revision in the ancestry of your old site branch22:22
maxb2) bzr rm --keep everything; bzr add --file-ids-from the-new-import .22:22
maxb3) bzr merge -r 0..-1 the-new-import; bzr revert .22:23
maxbwith a commit after 2) and 3)22:23
maxb4) bzr merge the result of 3) into the tip of the old site branch; bzr revert .; bzr commit22:24
maxb5) bzr merge the new upstream import (with fingers crossed) :-)22:24
maxbor something like that22:24
chxmaxb: this bzr rm // bzr add --file-ids-from worked beautifully22:42
chxmaxb: we dropped from 1042 content conflicts to 31 text conficlits and they are going fast (i am down to 14)22:42
pooliehi maxb, jelmer23:09
jelmerg'morning poolie23:11
pooliei hope you had a good trip23:14
jelmeryeah, it was great - nothing but sun and nature for a week :)23:16
jelmerhow was yours?23:16
poolienothing but motorcycles and mountains and rain for four days23:16
pooliealso great23:17
pooliethe rain is a mixed blessing23:17
poolieit feels good when you get out of it ;)23:17
jelmer:)23:17
jelmerJust because it's rain, or does it also make for slippery driving?23:18
poolieit's potentially a bit slippery, but i just go gently and it doesn't bother me23:18
poolieit's more just getting cold and wet23:18
pooliei had not reckoned on how much colder andwetter wales was than london23:19
poolieit must have been something like 10C over 200km, without much change in elevation23:19
pooliejust more exposed to the Atlantic I suppose, and less human heat sources23:19
jelmeroh wow, that's quite a bit colder indeed :)23:20
chxmaxb: OH at https://code.launchpad.net/~vcs-imports/drupal/head23:43
chxmaxb: you recreated this?23:43
chxmaxb: this needs to be , imo, git://23:44
chxmaxb: or maybe just the trailing slash is wrong?23:47

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