/srv/irclogs.ubuntu.com/2010/09/21/#bzr.txt

spivGood morning00:56
spivnews_merge should be active on PQM now00:57
pooliehiya spiv01:12
poolieyay!01:12
pooliemkanat: hi?02:07
mkanatpoolie: Howdy!02:07
pooliehi there02:07
poolieare you free to work on some loggerhead bugs now? or perhaps already doing so?02:07
mkanatpoolie: Yeah, I could do some. :-)02:08
mkanatpoolie: Not at this exact second, but probably today or tomorrow.02:08
poolieok02:12
pooliei was just reminded by seeing a notice of another hang the other day02:12
pooliewbn to either get to the bottom of it, or go to a multiprocess thing02:12
poolieor both02:12
mkanatpoolie: Yeah, for sure.02:13
mkanatpoolie: The multiprocess thing is a big project, though.02:13
pooliewell, actually fixing things is more satisfying02:17
mkanatpoolie: Absolutely!02:17
mkanatpoolie: I've done so many small, focused hang fixes that would all have been obsoleted if we just had a better architecture.02:17
pooliehm02:18
mkanatpoolie: Except for one deadlock, the hangs that I've fixed haven't really been hangs--they've just been the system getting overloaded.02:18
pooliei wonder if someone else could work with you on changing the process architecture02:18
pooliehm02:18
mkanatpoolie: Ultimately I suspect it's something that would be most efficiently done by one developer.02:18
poolieperhaps02:18
mkanatpoolie: The codebase isn't so large that it would have to be a team effort, I think.02:19
poolieit would be nice to at least get review of it by someone else02:19
mkanatpoolie: I'm not saying that that one developer has to be me.02:19
mkanatpoolie: Oh, absolutely.02:19
mkanatpoolie: One reviewer and one developer would probably be a good match.02:19
pooliemkanat: ok, let's do it02:46
mkanatpoolie: Sweet!02:46
mkanatpoolie: I'll start feasibility studies probably today or tomorrow.02:46
poolieif possible keep it isolated in wsgi stuff as much as is sensible so we can switch that layer later02:46
poolieand let's think about supportability/traceability stuff02:46
poolielike keeping oops reporting, perhaps something to show where time is spent02:47
pooliebut mostly, see if you can get the basic switch done02:47
pooliehave fun02:47
pooliedon't go silent02:47
mkanatpoolie: Okay. :-)02:47
mkanatpoolie: Because we're switching from a threading model to a process model, though, there will be a lot of stuff that isn't in the WSGI layer.02:48
mkanatpoolie: Since we will be removing locks, and we can't share variables anymore.02:48
poolieok02:48
poolieperhaps you could explain this in a mail rather than to me02:48
poolieprobably we should talk about that in mail02:48
mkanatpoolie: Okay. I will as soon as I get further into finding out what's actually require.d02:51
mkanat*required02:51
jbowtieI'm thinking of wrapping the docstrings in builtins.py in gettext calls in order to enable translation of at least the help text. Am I overlooking anything obvious?03:20
jbowtieIt should work for class docstrings; would have to be more complicated if we used method docstrings in the help output.03:21
lifelessperformance03:25
lifelessit depends on what you mean03:27
lifelessif you mean 'pass the help text to gettext when rendering help' - that should be fine.03:27
jbowtielifeless: well you still need to mark the strings for translation.03:28
lifelesswhy?03:28
jbowtielifeless: So that they end up in the POT file?03:29
lifelessthere are other ways of doing that03:29
lifelesswe know all things to translate via introspection03:29
lifelessjbowtie: _() will run afunction for every string at load time for the system, its a terrible overhead03:30
jbowtieI'd be happy to know what those are, all the programs I translate use gettext.03:30
lifelessjbowtie: for command in commands: text = command.help(); line = command.run._im_co.__line__ ...03:31
* lifeless is handwaving03:31
lifelessjbowtie: in C _() is free because the code is not executed unless you go down the code path; thats not the case for python.03:32
lifelessstatic attributes are executed at module time.03:32
jbowtielifeless: Well then maybe we shouldn't be using docstrings for documentation?03:32
jbowtieI'm just concerned that currently I can't translate bazaar via Launchpad.03:33
lifelessjbowtie: why not? they are designed for it03:33
lifelessjbowtie: so, definitely doable; some glue needed.03:33
jbowtieHandwoven glue that will need to be run every time a docstring changes?03:34
jbowtieI'm just dubious, everything ends up getting patched to gettext eventually, or programs end up not getting translated.03:35
spivWell, like whatever bit of gettext that extracts _() syntax into POT files needs to be re-run when those strings change.03:35
spivIt's just that rather than having a "extract _() calls in source into list of translatable strings" step, we'd have "run $handwave that has no runtime penalty in Python" step.03:36
mkanatlifeless: Is Launchpad using a multi-threaded or multi-process server, right now?03:38
lifelessmkanat: multi threaded03:38
spivWe could even look at automating that step, e.g. PQM updating the set of strings to translate in Launchpad after every merge.03:38
mkanatlifeless: Okay. Have you guys done any investigation on moving to multi-process, or are you scaling OK with multi-threaded? I'm starting to investigate possibilities for loggerhead.03:39
lifelessmkanat: we have 12 or so machines running lp itself03:40
jbowtieAll right, I'll go look at the source for xgettext for a while.03:40
lifelessmkanat: I have concerns about performance with threads and am investigating single-threaded instances (one request at a time) - because we already have a solid layer 7 proxy handing stuff to the backends03:41
lifelesswe could point that at loggerhead very easily03:41
lifelessmkanat: e.g. tell paste to use 1 thread only and run up 4 loggerhead instances03:41
lifelessmkanat: no need, in such an approach, for any multi-process glue.03:41
lifelessmkanat: I have a bias against multi process wsgi; U1 tried that had it was a fairly bad experience for them.03:42
mkanatlifeless: So I've heard, but I didn't really get any details on what the trouble was.03:42
lifelessme neither03:42
lifelessanyhow the big thing for me is that we already have a multi-process multiplexing system03:43
lifelesswe don't need two.03:43
lifelessfor the launchpad deployment of loggerhead, that is.03:43
mkanatlifeless: Hmm.03:43
lifelessthe simplest way to get one process per request is to drop the thread count to 1 and tell ha proxy to send to 4 instances (or however many we decide to use)03:43
mkanatlifeless: That certainly would be less work.03:44
mkanatlifeless: Although that doesn't get us process management.03:44
lifelessmkanat: what does 'process management' mean03:44
mkanatlifeless: Well, say, the ability to tell when a process is hung and kill it, and then spawn another process.03:45
mkanatlifeless: It's something that could be done with sysadmin work.03:45
mkanatlifeless: But it's nicer to just have it in the app.03:45
lifelessah, 'spawning' was the name of the thing that gave u1 grief, IIRC03:45
mkanatlifeless: Right, that's the only major multi-process WSGI server.03:45
mkanatlifeless: But it's been years since U1 used that, and there have been a lot of Spawning releases since then; it's a very active project.03:45
lifelesslong term I'd like to be able to share the bazaar.launchpad.net load with the rest of the servers; with safeguards for rogue stuff03:46
lifelessbut thats -long- term, we're nowhere near ready for that03:46
mkanatlifeless: You mean make loggerhead part of the normal server pool?03:47
lifelessmkanat: anytihng that makes it easier to switch between paste, paste-w/1-thread, spawning, and in-lpnet-appservers is a good investment03:47
lifelessmkanat: yes, just another wsgi site in the app03:47
lifelessin the middle tier03:48
mkanatlifeless: Okay.03:48
mkanatlifeless: Who would I ask about what the U1 problems were with Spawning?03:48
lifelesswhat tz are you in?03:48
mkanatlifeless: Pacific03:49
mkanatAmerica/Los_Angeles03:49
lifelessstatik: would be a good entry point03:49
lifelesshe's not leading the team anymore but he'll know who was involved03:49
mkanatlifeless: Great, thanks. :-)03:49
mkanatlifeless: So from your viewpoint on the Launchpad technical side, what you'd like to see from loggerhead is a framework that makes it easier to fit it into whatever WSGI configuration you want to use.03:50
lifelessI think that that would be a wise thing to work on03:52
lifelessI think fixing the hangs is important too, because a hang is a user not getting a response.03:53
mkanatlifeless: The hangs are a scaling problem.03:53
mkanatlifeless: Or a deadlock problem.03:53
lifelessand I think fixing the performance is also important03:53
mkanatlifeless: Both of which are fixed by having multiple processes.03:53
lifelessmkanat: deadlocking on what?03:53
mkanatlifeless: Depends.03:53
mkanatlifeless: Last deadlock I fixed (it was several months ago) as I recall was in cache access.03:53
lifelessso, bzr serve itself is threaded.03:54
mkanatlifeless: I'm just saying in general that the hangs are either a performance problem or a deadlock problem.03:54
lifelessmkanat: so by perf problem you mean 'not a hang, just slow' ?03:54
mkanatlifeless: I mean either, really.03:54
mkanatlifeless: Oh, yes, I see what you mean. Yes.03:54
mkanatlifeless: It's so slow that it might as well have hung.03:55
lifelessok03:55
lifelessand the actual hangs are generally deadlocks03:55
mkanatlifeless: Well, there generally aren't actual hangs.03:55
mkanatlifeless: I fixed one deadlock.03:55
mkanatlifeless: Also, bzr itself is not thread-safe.03:55
lifelessso03:55
lifelessbzr needs to be threadsafe03:56
lifeless or move to aprocess model for 'bzr serve', itself.03:56
mkanatlifeless: That seemed like a pretty low priority, making all of it thread-safe to the degree that loggerhead would need.03:56
lifelessmkanat: the thing is that we support 'bzr serve' so if loggerhead has an issue with bzr thread safety, so does bzr.03:56
mkanatlifeless: Nobody runs a persistent bzr serve.03:57
lifelessmkanat: yes, they do :) We get discussion from time to time.03:57
lifelessmkanat: even if they don't, while we claim it as a supported feature...03:57
lifelessmkanat: I'm not saying you shouldn't change loggerhead models03:57
lifelessI'm just saying that poolie has a strong desire and incentive to have the core be solid and robust03:58
mkanatlifeless: Okay.04:02
=== timchen119 is now known as nasloc__
mkanatlifeless: I didn't get the impression that global thread-safety across all of bzr was going to happen within the next few years.04:11
mkanatlifeless: And even if you make "bzr serve" thread-safe, that doesn't make loggerhead thread-safe. bzr serve doesn't need to run the annotate code, for example.04:12
mkanatAt least, as far as I understand things.04:12
lifelessmkanat: I'm not aware of many if any remaining unsafe things04:14
lifelessmkanat: I think the right thing to do is ask poolie04:14
mkanatlifeless: Okay. In any case, I don't think that multi-threaded server is a good future for loggerhead (or for any Python web app).04:16
mkanatlifeless: I think that either your 1-thread solution or Spawning is probably a good way forward.04:16
lifelessmkanat: sounds reasonable to me; for spawning I'd really want to know we're going to be able to jump on it when it dies.04:16
mkanatlifeless: Dies as a project, or...?04:17
lifelessone problem with spawning is that if the parent process has any threads, fork() becomes (sadly) dangerous04:17
lifelessmkanat: the server04:17
mkanatlifeless: Okay. So the parent just has to be single-threaded.04:17
lifelessmkanat: yeah, which can be hard to enfoce.04:17
mkanatlifeless: Well, but I have complete control over the entire application, so it shouldn't be too much of a problem.04:19
AfCWe run persistent bzr serve :)04:20
mkanatAfC: Okay. :-) Under a high load?04:23
AfCmkanat: no, not really04:23
mkanatYeah. I think loggerhead is the only high-load multi-threaded application that interacts with bzr.04:24
=== Ursinha is now known as Ursinha-zzz
* poolie reappears04:52
poolielifeless: as i said to mkanat when i started, i don't think mpm vs internal fixes are either or04:53
poolieexcept in the sense that you choose one of them to work on at any particular moment04:53
lifelessyeah04:54
lifelessmakes sense to me04:54
pooliehaving spent X amount of timing doing fixes within a single-process multithread model04:55
poolieperhaps we should now alternate04:55
mkanatThat makes sense.04:56
pooliethat pyutil patch looks nice, spiv06:12
pooliei haven't read it closely yet06:12
spivOh good :)06:13
spivI was starting to wonder if it was too much of a yak shave, but the repetition of a bug-prone idiom was really grating.06:14
poolieok06:14
lifelessspiv: thank you06:14
pooliei'm going to try to interactively test my launchpad dkim/gpg fixes branch06:15
pooliethen go back to stale lock detection06:15
poolieubuntu mounted (using LABEL=) my snapshot of home, not the real home06:15
pooliewhich made things a bit interesting06:15
pooliethus my sudden disappearance06:15
spivGetting an interactive test environment running for that sounds a bit intimidating.06:15
spivHeh, tricky!06:15
pooliemm it might be06:15
pooliewgrant pointed me to doc/mailbox.txt06:16
pooliewhich might be a good way to test it06:16
pooliewe'll see06:16
pooliein theory i can tell it to just pull mails from a directory, or get a test to run from a canned mail06:16
spiv*nod*06:16
spmistr there's a bzr/gnome plugin that will update a desktop flag/alert that there are/aren't branches updated? Does that tool or one like it 1. access codehost bzr+ssh; 2. on a regular schedule? or more randomised? 3. thundering herd? ie all checks at once, vs randomly spread over the given period?07:07
spmOr possibly something else. But evil is happening. https://lpstats.canonical.com/graphs/CrowberryLoadAverage/20100921/20100922/07:08
spmit seems to be the same bunch of branches too; fwiw.07:08
spivWow, interesting.07:09
poolieis that maybe vila's bzr-gardener?07:11
vilahi all07:24
vilahmm, me ?07:25
poolieno, not you07:25
pooliehi vila07:25
vilalet see, I have ~350 branches I think, and it takes a while to query them all07:26
vilawow, *something* is happening indeed :)07:26
spmvila: yeah, not you :-)07:26
vilaregarding bzr-gardener, it's not optimized at all so far, but should *reduce* the load on the server ultimately by doing *less* queries07:27
vilaspm: so roughly the load has doubled right ?07:28
spmvila: yeah07:28
vilaspm: was there an update around this point ? lp or bzr /07:28
vila?07:28
vilacrowberry == code.lp.net right ?07:29
spmyup07:29
spmand no, no code update07:29
spmI think. checking...07:29
spmno. not since the release.07:30
pooliethanks for feeding my patches up spiv08:06
pooliethe break-lock may fail pqm, i forget08:07
spivThat's ok, I'm curious to see what the failures are if there are any, and also I figure it might give news_merge a chance to show if it's working.08:07
spivAlthough maybe those merges cause a bunch of NEWS entries to appear under 2.3b1 that will need to be moved to 2.3b2...08:08
spiv(not so much due to news_merge as due to letting branches sit unmerged for so long)08:08
poolieah it was a conflict, but not in news08:09
pooliebut it should be good now08:10
vilaspiv: yeah, that's why I gave the warning to the Patch Pilot, may be you missed it ?08:11
spivvila: apparently!08:14
spivIt's not a big deal to fix them up just after they land.08:14
spivAnd easier than fixing them up before, thanks to the way LP reviews work :/08:14
vilayeah.. we still need to fix the root problem but until then a single patch to fix the NEWS entries wfm08:16
spivAn option for news_merge to force new entries to be put in the latest release seems good, except for the times when you want to change older releases (merge from 2.x -> 2.x+1, or fixing typos, etc)08:17
vilaspiv: I see "Simplify connect_ssh/sftp error"  in the pqm queue, great, I was about to report that babune repeatedly fail in test_bad_connection_ssh so if something is still wrong after your patch we hopefully know it soon08:18
vilaspiv: or allow a "floating" release so that you can insert the entries either in bzr-2.2.1 or bzr-next08:19
vilaor bzr-dev whatever08:19
spivvila: yeah, I'm still not 100% comfortable with it, but after sleeping on it I think the best way to get comfortable is to get it in trunk and battle-tested.08:19
vilaspiv: I've run it across all platforms with success as mentioned in the mp, it's better than the actual (and faulty) access to e.errno08:20
spivvila: or provide a way to override the always-add-to-newest behaviour per landing...08:20
spivYeah, I think it's ok, I'm just still bugged by the fact that I don't understand the intent of the old code.  Probably that's because the old code was wrong :)08:21
vilabzr-next *is* always-add-to-newest, if you don't use it... you don't use it :)08:21
spivSure.08:22
vilaspiv: it could be that the old code was relying on a bug in the test code...08:22
spivHeh.08:22
vilathe comment can be read as: "We are time dependent here, let's catch it"08:23
vilaor rather08:24
vilait may have been inspired by a time dependent behaviour08:24
spivYeah, that's true.08:33
vilapoolie: I'm a bit stuck on the SRU process, bug #528041 seems to imply that I need to propose a branch (and lifeless mentioned disjoint history :-/) plus pitti replied with: "please upload"08:44
ubot5`Launchpad bug 528041 in bzr (Ubuntu Lucid) "bzr: ERROR: exceptions.AssertionError: _remember_remote_is_before((2, 1)) called, but _remember_remote_is_before((1, 6)) was called previously. (affected: 22, heat: 145)" [Undecided,Confirmed] https://launchpad.net/bugs/52804108:44
vilapoolie: both of which are close to chinese to me :-(08:45
vilafor the former I mean that building the same kind of branch as lifeless did is08:45
lifelessvila: ?08:54
bialixspiv: why not approving the patch for 2.0 as well?08:56
vilalifeless: I'm lost in the dependencies between the branch you created there, the bzr stable branches and the bzr packaging branches08:56
vilalifeless: oh, and I forgot the debian branches08:57
lifelessvila: oh; sorry ;P09:00
bialixbonjour vila!09:01
vilabialix: _0/09:01
=== spike_ is now known as spikeWRK
bialixnever seen before this acronym: aTdHvAaNnKcSe09:02
fullermd's not an acryonym, just a visual joke.09:02
* bialix thinks vila had too big head today09:02
vilabialix: hehe, easier to decode with the caps :)09:02
vilabialix: _./09:02
bialixrotfl09:02
bialix\o_09:03
fullermd\o/ ^o^ /o_ /o\09:04
bialixa gull?09:04
fullermd(it's fun to stay at the...)09:04
vilapoolie: and on the overall releases, it seems that many things depends on the debian branches being updated, yet, I'm still unclear about which releases debian really cares about (my best guess so far is 2.1/2.2/2.3 though I think they carry only two of them :)09:05
poolievila: packages.debian.org/bzr09:05
bialixheya poolie09:05
pooliehi bialix09:06
vilapoolie: ha, cool, I've mailed the debian packagers for bzr but I'm still waiting for an answer, this is indeed part of it ;)09:06
poolievila mind you that doesn't exactly answer the question09:06
pooliei guess it's 2.1, 2.2, 2.309:06
vilaamazingly 2.3b1 is already there09:07
vilaha, right, jelmer did that09:08
pooliei wonder when natty opens, or whether it's already open09:08
wgrantIt can't open until Maverick's released.09:08
wgrantWe'd like to change that, but it's Hard.09:08
poolieah i thought so09:09
poolieok, i'm going to head off09:09
vilajelmer: pingaling09:09
vilaGaryvdM: stop reading my thoughts09:20
GaryvdM????09:20
GaryvdMHi all09:20
vilaGaryvdM: Naoki just committed on bug #64155709:20
ubot5`Launchpad bug 641557 in TortoiseBZR "error while trying to run command via context menu (affected: 2, heat: 12)" [Critical,Fix committed] https://launchpad.net/bugs/64155709:20
vilaGaryvdM: I was thinking about you and it's irritating to see you arriving just as this second as if you were reading my thoughts *again*. I told you to not do that anymore !09:21
GaryvdM1. Develop mind reader. 2 Use mind reader. 3. ????? 4. Profit09:22
GaryvdM*2. Use mind reader on vila09:22
vilayeah, yeah, they all say that ! That's not because I'm not paranoid that they aren't all after me !09:22
vilaGaryvdM: more seriously, I was updating http://wiki.bazaar.canonical.com/Releases/2.2.1, you're currently building the windows installers right ?09:23
fullermdI'm paranoid.  But am I paranoid ENOUGH?09:24
vilafullermd: never09:24
fullermdThat's just what I expected you to say!09:24
GaryvdMvila: Yes - Sorry - I ment to do that, but got side tracked.09:24
vilafullermd: did you notice those black helicopters *behind* you ?09:24
vilafullermd: no need to turn around, they do that too so they are *still* behind you09:24
vilaGaryvdM: no need to be sorry !09:25
* fullermd nods wildly at vila.09:25
vilalol09:25
fullermd's why I lay on my back.  Then I only have to worry about the black subterrines.09:25
vilaOh, I'm fine on this side... mines you know09:26
vilaWho build the OSX installers ? Gordon ? I can't remember his IRC nick. Someone ?09:27
spivbialix: only because I didn't see it in the queue, it turns out it was the very last thing on the +activereviews page because someone else had already voted Approve09:38
spivbialix: I just changed the status to Approved for you09:38
=== bialix_ is now known as bialix
knittlwhat exactly is stored in a versionedfile/text-object? each line with: text of that line, author, date? or just text + revid?09:49
knittlfor current format if that changed over time09:50
bialixvila: Gordon is doxxxx (not sure about qty of Xs)10:00
thumperhey10:00
vilabialix: ha right, of course, thanks !10:00
thumperhttp://doc.bazaar.canonical.com/developers/integration.html comes from where?10:00
thumperI've got a request for some extra examples for that page10:00
bialixthumper: lp:bzr-alldocs10:00
bialixthumper, sorry10:01
vilain the source tree you mean ?10:01
thumperI'd really like examples for getting a diff for a revision10:01
bialixthumper: it's inside bzr.dev/doc/developers10:01
thumperand a diff for a revision for a particular file10:01
thumperalso, how do I get a revision id from a revno?10:01
thumperfor a branch?10:01
vilaBranch.dotted_revno_to_revision_id ?10:03
vilathumper: could be costly10:04
thumpervila: I'm only dealing with mainline revisions10:04
fullermdIf it's non-dotted, there's another method, which is oodles cheaper.10:04
thumperdoes that make it easier?10:04
vilathumper: Branch.get_rev_id10:05
vilathumper: in the worst case the whole ancestry graph is loaded :-/10:06
dleeWhat's the quickest way (when no one at the server end is awake) to determine the version of an svn server?  I just read the bit about metadata pumped into svn by bzr when the upstream svn server is 1.4.10:06
=== bigjools is now known as bigjools-afk
Glenjamindlee: programaitcally?10:07
Glenjaminit's in the footer of the webdav repo browser usually if thats good enough10:07
dleeAh, embarrassing - and yeah good enough.  I'd looked in lots of places but not with a browser to the svn path10:08
thumpervila: what is the history optional param to the get_rev_id method?10:10
vilathumper: no idea :) Let me see10:11
Glenjaminit'd be useful if you added an example of how to turn the input from the revision option into a revision_id :)10:14
Glenjaminor does it do that itself? I didn't check10:14
vilathumper: shame it's not documented nor used a lot :-/ It seems to be a simple list with the revids int it indexed by revno -110:15
vilas/int/in/10:15
vilathumper: but almost no callers use it10:16
thumperheh10:16
vilathumper: do you intend to use it a lot for the same branch or is it just one call here and there ?10:16
thumperI intend to be able to walk back through history in jumps of say 20 revisions10:17
thumperfor display on a web page10:17
thumperI could just have the revision history cached actually10:18
thumperas webapp overhead10:18
thumperit wouldn't be too bad10:18
* thumper thinks of loggerhead10:18
thumperperhaps not so much of a good idea10:18
thumperlets skip caches I think10:18
thumpervila: primarily for page or site history for wikkid10:19
thumperhow do you get commit history for a single file?10:20
vilathumper: the clean way or the dirty way ? :D10:21
thumperactually, I might put down the laptop and watch Chuck :)10:21
thumpervila: clean please10:21
thumperefficient10:21
vilathumper: hehe, the dirty is efficient ;)10:21
vilabut, well, wikkid context, so focus on single files, no dir contents involved and you always start with a known path/file-id10:22
vilathumper: correct ?10:22
thumperyep10:22
thumperseriously though, I'm walking away ;010:23
thumperlaptop is back in the office now10:23
thumperand the warmth is in the lounge10:23
thumpercaio10:23
vilathumper: ok, np, I've starting playing around with wikkid10:23
thumpercool10:23
Glenjaminhttp://wikkid.biz/ ?10:23
vilathumper: more as a user but with some opinoins :)10:23
vilaGlenjamin: lp:wikkid10:23
Glenjaminoh wow, that sounds clever10:24
vilaGlenjamin: yeah, thumper is :)10:24
GaryvdMthumper: I've been refactoring qlog's internals. One of the things I have done is separate the cache form the state, so that it can be used more easily in a web environment (I had loggerhead in mind).10:26
GaryvdMthumper: One of the things it can do is show a history view, filtered by file id.10:27
GaryvdMor file ids10:27
GaryvdMthumper: so it my be use full to you.10:27
GaryvdMMy refactored code is here: lp:~garyvdm/qbzr/log_refactor/10:28
GaryvdMthumper: It's maybe to soon to use for your purposes, but please keep it in mind.10:29
GaryvdMthumper: If you take a look, look at lib/loggraphprovider.py10:30
GaryvdMthumper: You would cache a LogGraphProvider for the branch, and a FileIdFilter per file, and then create a GraphProviderFilterState per request.10:33
bialixhey GaryvdM10:41
GaryvdMHi bialix.10:41
bialixshould I do the release of 0.19.2 tonight?10:41
GaryvdMI don't mind doing it.10:42
xrmxhello, what does this mean? bzr: ERROR: Connection error: while sending POST /bazaar/: [Errno 0] Error10:42
bialixGaryvdM: please, land your latest patch10:42
GaryvdMok10:43
bialixxrmx: it depends on your URL10:44
xrmxbialix, bzr branch lp:wikipbx , works in my machine, does not work on a chroot10:44
bialixhmm10:44
xrmxbialix, chroot can ping outside world10:44
bialixmaybe because you need to run bzr lp-login on chroot?10:45
GaryvdMbialix: Done10:45
Glenjaminshouldn't do to branch10:45
bialixGaryvdM: thanks10:45
bialixxrmx: smells like a bug10:45
xrmxbialix, my chroot is base debian squeeze plus apt-get install git bzr10:46
xrmxbialix, bzr 2.1.210:46
Glenjamincan you post the ~/bzr.log ?10:47
GaryvdMsetting bzr lp-login would require copying you ssh key to the chroot10:47
GaryvdMAh - I think I know what is wrong...10:48
xrmxGlenjamin, http://pastebin.com/8QShrp9w10:48
* GaryvdM finds bug10:48
GaryvdMxrmx: Maybe try bzr branch http://bazaar.launchpad.net/~wikipbx-dev/wikipbx/trunk10:49
xrmxGaryvdM, that works fine thanks10:50
knittlwhat exactly is stored in a versionedfile/text-object? each line with: text of that line, author, date? or just text + revid? (latest format version if that matters)10:51
GaryvdMxrmx: I think your bug has a similar cause to bug 63446610:53
ubot5`Launchpad bug 634466 in Launchpad Bazaar Integration "bzr branch lp:subvertpy fails as it gets a private branch url. (affected: 1, heat: 6)" [Medium,Triaged] https://launchpad.net/bugs/63446610:53
GaryvdMxrmx: Please log a bug: https://bugs.edge.launchpad.net/launchpad-code/+filebug10:54
GaryvdMknittl: Disclaimer: I'm not fimilar with the internals of versionedfile. What I'm saying is based on my knowledge of the api.10:56
knittlGaryvdM: that's ok. versionedfile is just an API10:56
knittland it's more than nothing :D10:56
GaryvdMknittl: I think that it only stores the text.10:56
GaryvdMThe revid is in the reference to the versionedfile object.10:57
knittlhow can the text be mapped to revisions?10:57
knittllet me explain shortly what i got so far, maybe you can fill in the missing bits. i'm going top down10:58
knittlrevision object: stores message, time, committer, branchnick, random revid (mail+time+random)10:58
knittlplus a sha1 of the inventory10:59
knittland parents of course10:59
GaryvdMright10:59
knittlinventory maps file_ids to canonical paths10:59
knittlso there is no composite pattern, an inventory cannot contain another inventory11:00
knittlalso stores the executable bit per path but that's unimportant compared to the other stuff11:00
knittlcorrect?11:01
GaryvdMThink so11:01
knittlfile_ids do not change. ever11:01
GaryvdMright11:02
knittli think inventory also stores some hash of the files, but that will not matter for our simple case (without verifying content)11:02
knittlso, how will an revision+inventory get the right version of the file?11:02
knittlthat's the bit i don't understand11:03
GaryvdMI'm looking at the code for RevisionTree.get_file11:03
xrmxGaryvdM, bug filed at https://bugs.edge.launchpad.net/launchpad-code/+bug/64424411:04
ubot5`Launchpad bug 644244 in Launchpad Bazaar Integration "can't bzr branch lp:wikipbx from chroot (affected: 1, heat: 6)" [Undecided,New]11:04
GaryvdMRevision tree knows it's revid11:04
GaryvdMAnd we give it a file id11:04
knittlso a revisiontree = state of an inventory?11:04
GaryvdMThat calls self._repository.iter_files_bytes((revid, fileid))11:05
knittlok, but the files have to store the revid of each line/change?11:05
knittlotherwise you cannot reconstruct a particular version11:05
GaryvdMRevision tree is a abstraction of a inventory, + file texts. It has the similar api to a WorkingTree, and others11:06
knittlthat does not really answer my question11:08
lifelessknittl: the strict answer to your question is 'no, they do not'11:09
lifelessthere are many ways to implement that api11:10
knittllifeless: ok. then how can we reconstruct an exact version of a file for a given revision/inventory/'whatever you call it'11:10
GaryvdMMy understanding is that there is an index to say (revid, fileid) -> where it is stored, and where it is stored just has the text - no knowledge of the revid it's for.11:11
GaryvdMlifeless know much more than me :-)11:11
* lifeless is going to sleep11:11
lifelessGaryvdM has it right11:11
knittlGaryvdM: yes. but fileids do not change. so how can you map from revid -> fileid?11:11
knittlbecause fileids stay the same over all revisions11:11
knittlif the contents of a file change, its id stays the same11:12
knittlthat's the part i am confused about11:12
GaryvdMYou start with a revid and a fileid and ask for the text. You don't start with the text, and get the revid.11:12
knittlGaryvdM: yes11:12
knittlyou have a revision (revid) and the filename (which looks up the fileid in the inventory)11:12
knittlthen what? how do i get the correct version of the file?11:13
GaryvdMYou allready have the revid - to get the text, you can call RevisionTree.get_file11:14
GaryvdMThe fact that the fileid may have only been edited by a previous revision is handled by the api.11:15
knittlso a file stores revids -> text?11:15
knittl* a versionedfile contains multiple revisions?11:16
GaryvdMI *think* a versionedfile object stores (revid, fileid) -> text11:16
knittland then maps revid -> state of file11:16
knittlwell, you access a versionedfile 'textstore' (?) via its fileid11:17
knittlso it only needs to map revid -> text11:17
GaryvdMOk - my be wrong there11:17
knittlindependent of weave/groupcompress/delta/snapshot storage?11:17
knittland that is what i was saying all along: 'text' objects (versionedfile) map revid -> lines/state/text11:18
GaryvdMVersionedFile is a very low level api. I'm not sure what you are trying to achive, but would recommend maybe working with I higher level api, e.g. RevisionTree11:19
* GaryvdM reads the VersionedFile code11:19
knittlnot interested in 'working with an api'11:19
knittli'm interested in the inner workings and low level storage mechanisms11:19
knittl(still, because i haven't managed in weeks to fully understand and nobody in here could properly explain the bazaar object/storage model)11:20
GaryvdMOk - Then I'm the wrong person to answer - sorry.11:21
spivknittl: the low-level storage in the current format is pretty complex, aside from the revision/inventory/versionedfile abstractions that you are starting to know your way around, you need to understand packs, groupcompress and possibly the CHK maps depending on what you want to know.  And I suppose for completeness I should mention the btree indices for the stores.11:29
knittlspiv: yeah, i noticed it's complex, because nobody knows it xD11:29
spivknittl: it's not so much that nobody in here can properly explain it as that to do so takes quite a bit of time :)11:29
knittlspiv: but tell me, am i right with my understanding of versionedfile?11:30
knittlversionedfile (accessed by fileid) stores revid -> content11:30
spivThat the key into the 'texts' versionedfile is 'fileid'?  No.11:30
knittlor revid -> changes (depending on the storage format)11:30
spivThe key into that versionedfile is (file id, rev id)11:30
knittlbut a versionedfile only contains a single file?11:31
spivNo.11:31
knittlwhat then?11:31
spivThe API is actually called VersionedFiles11:31
spivPlural.11:31
knittlwith single file i mean: all versions of a file over time11:31
knittlversionedfile.py here (singular)11:31
spivOr rather the VersionedFiles class is the preferred abstraction.11:32
knittlwhich contains multiple versionedfile objects?11:32
knittlanyways, let me try again :D11:33
knittlto get the contents of a file for a particular revision i'm using (fileid, revid)11:34
knittlso somewhere inside file (text) storage there has to be a place to store the revid?11:34
spivNone of the APIs of VersionedFiles return a VersionedFile object.  That's not the key to understanding this.11:34
knittllet's not talk about concrete implemantions of that api11:35
spivI need to go in a moment, but I'll quickly reiterate what I described the other day.11:35
spivSay you have a revision, and want the contents of the file known as 'doc/manual.txt' in that revision.11:35
knittlyes11:36
knittli only know of that file because it's stored in the inventory for that revision11:36
spivYou have the revision already, so you know the revid.11:37
spivSo you can lookup the inventory for that revision by using that rev-id as the key for the 'inventories' store11:37
knittlbut i don't know the filename11:37
knittlyes, and from the inventory i get fileid from filename11:37
spiv(or if you want to view the repository as a unified keyspace, by looking up ('inventories', rev-id) as the key)11:37
spivThen you ask the inventory object for the inventory entry for that path, 'doc/manual.txt'11:38
spivThat inventory entry will have, among other attributes, a file-id and a "revision_id"11:38
knittlrevid is the same as the revisions revid?11:38
spivThat "revision_id" might be the same as the revision id you already have, but for instance if the file hasn't changed in recent revisions it'll be some older ID.11:39
knittlok11:39
spivSo you can't assume its value, you have to check the inventory for it.11:39
knittlbut it's a revid that can be mapped to a revision11:39
knittlit's 'last changed revid' for a file11:39
spivThen you can use that (file-id, revision-id) pair as a key in the 'texts' store11:39
spivTo get the bytes of the contents of that file.11:40
spivIt's not 'last changed revid' necessarily.11:40
knittlspiv: why not last changed? you said if it didn't change in the last revision it will be an older one11:40
spivIt may often happen to coincide with that, but in fact nothing in the implementation requires it matches the ID of any stored revisions at all.11:40
knittlfilid+revid = content11:41
spivknittl: maybe the file contents were reverted11:41
knittlspiv: so it could be any revid? not even existing? what's the sense in that11:41
spivknittl: maybe an import from a foreign system stored things slightly differently to the default implementation in bzrlib11:41
spivknittl: it's just an random, unique value — like rev-id is.11:41
knittlbut again i ask: fileid+revid = content. so i need to store the revid for lines of text?11:42
knittlspiv: does it usually match a revision rev_id or is that unlikely?11:42
spivI don't know what "I need to store" means here.11:42
knittlto be able to map from id -> content i need to store both id and content11:42
spivIt usually does, but I wouldn't rely upon it.11:42
spiv(it might match a revision not present in this repo, for instance)11:43
knittlid in an index and content in a binary file11:43
spivWhat do you mean when you say "id" here?11:43
knittlin that case fileid+revid11:44
spivI've described already exactly how to access the content, model-wise.11:44
spiv(the exact bytes on disk are of course involve many more details)11:44
spivWe call that a key11:44
knittli didn't ask about exact bytes11:44
knittlfilestore maps (fileid,revid) -> content?11:45
spivThe 'texts' store does that, yes.11:45
spivAs I'm pretty sure I've said at least three times now :/11:46
knittlgood. didn't i ask that ages ago?11:46
spivAnd didn't say that ages ago?11:46
knittland if it maps (which it does you tell me)11:46
spivs/say/I say/11:46
knittlit needs to store fileid, revid and content11:46
knittlright?11:46
knittlthat's what i want to know …11:46
spivWhat did you think I meant by "look up" and "use as a key", I wonder?11:47
knittlspiv: i asked several times, and you always denied and put it in different wordings11:47
knittlyou said: »no, it blah«11:47
knittli'm just confused about this overly complex system11:47
spivIf I contradicted you, it's because you're using terminology inconsistently with how we use it.11:48
spivWhich is only going to lead to confusion and frustration, so please be patient if I insist on being precise.11:49
knittlbecause it's easier for me to understand 'text store stores file id, rev id, content' than to say 'bla, api, maps, key, …'11:49
knittli'm sorry, if i sound rude, but it's not easy to grasp all that11:49
spiv'stores file id, rev id, content' is just too imprecise.11:49
knittlwhy? it stores all of them, and then establishes a mapping11:50
Glenjaminbut these are low level APIs, they're not supposed to be easy to grasp - they're abstracted away from the user/developer by APIs/UIs that are11:50
spivIt doesn't suggests to me that they are stored together as a composite value, rather than that 2 of those are used to map to the other.11:50
knittlGlenjamin: hg uses revlogs (easy), git uses hashes with references to other hashes (also easy)11:50
Glenjaminbut neither are a feature11:51
spivWe'd usually say the texts store stores, well, texts, or content if you like.11:51
knittlis format 2a the same as knitpack format?11:51
spivAnd the key for a text is the (file id, rev id) pair.11:51
knittlspiv: and some index stores the ids and maps it to the store11:51
spivNo, 2a is quite different to knitpack.11:51
knittlwhere can i find docs on 2a?11:52
knittlhttp://doc.bazaar.canonical.com/latest/developers/packrepo.html11:52
spivknittl: well, I think you can see simplifying it to "stores file id, rev id, content" is omitting important structural details.11:52
spiv2a == groupcompress packs + CHK inventories.11:53
knittlwhere's the documentation/explanation of 2a?11:53
knittlhttp://doc.bazaar.canonical.com/latest/developers/groupcompress-design.html 2a?11:54
spivSee RepositoryFormat2a in bzrlib/repofmt/groupcompress_repo.py11:54
knittlspiv: reading thousands of sourcecode lines does not help me to understand, i'm sorry. i've already read function names, comments, …11:55
spivThat's a description of the "groupcompress" part, that doesn't cover the CHK inventories11:55
spivknittl: Well, there are docstrings that say relatively useful things like "A CHK repository that uses the bencode revision serializer."11:55
knittlhttp://doc.bazaar.canonical.com/latest/developers/inventory.html11:55
spivWhich isn't immensely helpful, but it gives some pointers.11:55
spivAs does the classes it in turn references.11:56
spivAnyway, I must go.11:56
knittlok, thanks11:56
spivI'm sorry you feel it's overly complex, but fortunately or otherwise we didn't write it for your comprehension ;)11:56
spivGood luck, until tomorrow perhaps ;)11:56
knittlthere should be documentation nevertheless11:57
knittli want to understand the version control system i'd trust my data11:57
spiv(back very briefly) So you understand exactly how your filesystem turns your data into bytes on media?  And partition tables?  ;)12:00
spivOk, really gone :)12:00
knittlno, but i understand partition tables12:01
knittland i guess there's documentation for filesystems12:01
knittlwhich format does not change every 2 months12:01
GaryvdMknittl: Thats 1. rude, 2. no longer true. 2a is more than a year old, with a commitment to stay as the default for much longer.12:03
vilaHoping to get help from people by constantly bashing their work, way to go !12:03
knittlGaryvdM: it was true for the past12:03
knittlalso i found a lot of 'in development formats'12:04
knittlso i'm wondering12:04
knittlvila: well, there is no 'documentationy' documentation which explains the inner workings, which i find very sad12:04
vilaEPARSE, I'm not an native english documentationy means ?12:05
knittlvila: it's a made up adjective from 'documentation'12:05
knittlfor me comments in source code do not count as documentation12:06
vilathen we don't have a documentation suited to your needs12:06
knittl… which i find very sad12:06
vilawe know that12:06
vila(both that we don't have this documentation and that you're sad)12:07
knittlyes, i said it twice already12:07
Hydroxis there at least a plan to add documentation?12:07
vilaoh of course there is a plan12:07
vilasee https://bugs.edge.launchpad.net/bzr/+bugs12:08
vila2000 are open, 200 of high priority, now is that plan part of these 200 ? I'm not sure12:08
vilaThis is a GPL project, everybody is welcome to scratch his own itch, and a lot of people are... without this documentation so far12:09
vilaDon't get me wrong, I asked the same question very early after joining the project thinking it will help me to start quicker12:10
knittlvila: i could only write documentation if i understood the internals12:10
vilaWell, I didn't start quicker but that wasn't a blocking factor either12:10
vilaknittl: I didn't ask you to12:11
knittldidn't say that12:11
Hydroxvila, do you write documentation about the things you add to bzr (other the code comments)?12:15
vilaHydrox: when needed yes, most of my time is spent fixing bugs though, so generally it means making the code respect what the doc says ;-)12:16
vilaHydrox: most of our doc is also targeted at users, mozt of the bzr hackers hang around here and on the mailing list where most of the internal knowledge is shared via discussions, merge proposals, etc. Nobody felt the need to summarize to put that into proper documentation, but any start will certainly be warmly welcome12:18
=== Meths_ is now known as Meths
=== bigjools-afk is now known as bigjools
vilajelmer: Pingaling14:17
rockyjelmer, hey are you following setuptoolsbzr at all ?14:23
Fuunice, bazaar install crashed windows explorer :)15:35
vilaFuu: file a bug mentioning versions (OS, bzr, etc), that's unheard of AFAIK15:37
Fuui'll do that15:37
Fuuit wasnt why i came here though, just joined before even attempting to install :)15:38
vilaFuu: you're welcome in all cases ;)15:38
Fuuthank you15:38
jelmervila: hi15:38
jelmerrocky: hi15:38
vilajelmer: hey !15:39
jelmerrocky: no, what about it?15:39
vilajelmer: so my ping was about the new bzr releases and their impact on debian15:45
vilajelmer: I see you already packaged 2.3b1 and I'm wondering what else needs to be done15:46
vilajelmer: 2.2.1 for sid, 2.1.3 for squeeze and 2.0.6 for lenny-backports ?15:47
vilajelmer: I'm not a debian expert, just reading: http://packages.debian.org/search?keywords=bzr :-D15:47
vilajelmer: and also, may be more important, are the debian branches in sync with the packaging branches on lp ? Do they share the same history ? etc15:49
vilajelmer: and before I ask for the ponny, feel free to update http://wiki.bazaar.canonical.com/Releases/2.2.1 (and 2.0.6, 2.1.3 and 2.3b1 though I already updated the later)15:50
vilajelmer: where is my ponny ?15:50
arahello all!16:06
araI am getting this error when pushing a new branch:16:06
ara> Using default stacking branch /~ubuntu-qa-website-devel/ubuntu-qa-website/trunk at lp-97781328:///~ubuntu-qa-website-devel/ubuntu-qa-website16:06
ara bzr: ERROR: KnitPackRepository('lp-97781328:///~ubuntu-qa-website-devel/ubuntu-qa-website/trunk/.bzr/repository')16:06
ara is not compatible with16:06
ara CHKInventoryRepository('lp-97781328:///~ubuntu-qa-website-devel/ubuntu-qa-website/wordpress-theme/.bzr/repository')16:06
ara different rich-root support16:06
araany ideas?16:06
jamara: one of them is in 0.92 format, the other is in 2a format, which are not directly compatible. (upgrading to 2a is a one-way upgrade)16:13
jamit looks like trunk is in 0.92, and the one you are trying to create is in 2a16:13
jameither:16:14
jama) Get trunk to upgrade to 2a16:14
jamb) rework so that you're local stuff is in 0.92, and then push that to a new branch16:14
arahow do I a)16:14
ara?16:15
arabzr --upgrade 2a?16:15
jamara: "bzr upgrade --format=2a lp:ubuntu-qa-website"16:15
arajam, thanks a lot!16:15
jam(though --format=2a is now the default for upgrade)16:15
arathe process crashed :(16:21
arahttp://pastebin.ubuntu.com/497788/16:22
araI can report the bug, if it is interesting16:22
fullermdI believe that's a bug in 2.2.0, fixed in 2.2.1.16:24
arafullermd, can I use a bzr daily build to test?16:25
fullermdIf it's new enough, I guess.  It's probably just as easy to use 2.2.1 though.16:26
maxb2.2.1 isn't in the PPA yet, so a good option might be to branch the release branch and build it16:27
maxbbzr branch lp:bzr/2.2 && cd 2.2 && python setup.py build_ext -i && ./bzr whatever16:27
jamara, fullermd: I just changed and https://edge.launchpad.net/~bzr/+archive/proposed16:27
jamseems to say that the packages haven't been uploaded yet16:27
jamara: is this your personal project ? (you have direct admin access?)16:27
arajam, I do have admin access16:28
jamif you want to join me to the group, I can upgrade it for you, and then leave group16:28
arajam, OK, is jam your lp id?16:28
jamjameinel16:28
arajam, added16:29
jamara: working on it16:35
arajam, thanks!16:35
jamara: hmmm it is giving me permission denied errors16:36
arajam, weird, as the owner is ubuntu-qa-website-devel and you are now part of it...16:37
jamyeah, but I'm getting the same error elsewhere, still investigating16:37
jamara: I'm guessing it might have had something to do with the new URLs that thumper worked on (bazaar.launchpad.net/+branch/ubuntu-qa-website vs ~ubuntu-qa-website-devel/ubuntu-qa-website/trunk)16:42
jamI don't know that for sure16:42
jambut I got it working16:42
arathanks!16:43
jamara: I'll let you know when the upgrade finishes16:43
arajam, cool :)16:43
jamara: looks to have completed16:48
arajam, thanks a lot, will try now the push16:51
=== beuno is now known as beuno-lunch
jeremywHello all.17:08
arajam, it worked, thanks!17:10
jamara: happy to help17:10
jeremywI'm writing a thing wrapper to some choice VCS systems and I'm wanting to add Bazaar support to my application.  I've read the integration wiki page but one thing it doesn't talk about is repository creation.17:12
jeremywI'd really like to understand the moving parts a little better.  Anyone got a minute to help me understand what a bzr repository is composed of?17:13
jeremywBasically, I'll be creating server-side repositories that will only be accessed via a network server and NEVER locally.17:13
Glenjaminjeremyw: is your wrapper for the client or the server?17:14
fullermdjeremyw: Be sure you're ascribing the right level of meaning to 'repositories'...17:14
jeremywWhere I've gotten to at this point is I've found bzrlib.builtins.cmd_init_repository.run().17:14
jeremywfullermd: That's what I'm learning is that I think my terminology is different than what bzr uses.17:14
Glenjamini think you actually want a bzrdir17:14
jeremywGlenjamin: This would be a library uses on the server for things like repository creation and repository browsing.  For simplicity, let's just pretend I was writing a repository browser.  (That being said, please don't try to get me to use XXX repository browser as this is just an example scenario.)17:15
jeremywGlenjamin: Yeah.  I see that being used in the function mentioned above.17:16
Glenjaminbut repository browser XXX is great! D:17:16
jeremywhaha17:16
jeremywGlenjamin++17:16
fullermdI always worry about projects to create wrappers like that.  It's sure to wind up being an ugly force-fit to one system or another...17:16
jeremywWell, this tool needs to create repositories that can be accessed remotely by users but also accessed locally via my API to do things like creating the repository browser.17:17
Glenjaminjeremyw: http://doc.bazaar.canonical.com/bzr.2.2/en/user-guide/core_concepts.html17:17
jeremywfullermd: Well, I'm trying to do less wrapping and more direct bzrlib usage.17:17
Glenjaminadmittedly its not exactly clear on repositories17:17
jeremywRight now, I just subprocess.Popen to "bzr init PATH".  ;)17:17
Glenjaminif speed isn't an issue, thats likely to cause the least surprises17:18
jeremywGlenjamin: That's what I'm seeing right now...everything I've seen (docs/examples/etc) barely talk about repositories.17:18
Glenjaminbasically, bazaar doesn't have the repository concept in the same way as other VCSes17:18
fullermdI mean wrapping in a conceptual sense.  In svn, frex, you have to take a lot of care where you put a repository, because you can't do anything outside of one, and can hardly to anything between them.17:18
jeremywGlenjamin: Well, I'd still rather do this in a Pythonic way so I'll likely use bzrlib.builtins.cmd_init_repository.run() but I'm wondering if that is ideal/performant.17:19
Glenjamina repository is simply somewhere revisions are stored, normal branches just have their own repo17:19
jeremywfullermd: Understood.17:19
fullermdWhereas in bzr, it's totally different.  Meanwhile, in bzr, you have a branch granularity you center around, whereas in svn-land branches practically don't exist, and you deal with semi-arbitrary subdivisions of the repository.17:19
Glenjaminin most cases, the repository concept in other VCSes maps to a bazaar branch17:19
Glenjaminsort-of17:19
jeremywThat's what rockstar was telling me.17:19
Glenjamini think that calling bazaar commands is likely to be the safest option, maybe going one level down and using the API the command wraps17:20
Glenjaminbut no lower17:20
jeremywCool.  Now if I wanted to understand these terms a little better and how they interact, where should I start?17:21
vilafrom fullermd wiki page I'm searching vainly for a few minutes17:22
GlenjaminI'm only really familiar with the concepts from using it i think17:22
jeremywI'm reading that wiki page and the integration page.17:22
fullermdhttp://wiki.bazaar.canonical.com/MatthewFuller/SpotDocs/PiecesInBrief17:22
fullermdThe Length-ier discussion linked at the bottom has some inter-VCS comparisons at the end too, which may be useful.17:23
vilayeah, this one, damn ff17:23
jeremywfullermd: Thanks man.  I appreciate it.17:23
Glenjaminare there other articles like this? I'm about to introduce 40 or so students to bazaar with a centralised smart server next week17:23
Glenjaminin previous years we gave them svn+tortoise, and i want something less rubbish.17:24
jeremywI agree that wrapping vcs is usually bad but my project practically requires it.  I have a tool that will support N VCS systems so I need a way to do this stuff programmatically.17:24
fullermdGlenjamin: I've got those SpotDocs covering general concepts (which I still need to do some weed-whacking on the editing of), the interactions of push/pull/merge/etc, and how the rev numbering and history structuring affects things.17:26
fullermdIf my tuits would stop being all rectangular...17:26
jelmervila: sorry, I was interrupted bny breakfast17:29
vilajelmer: sure, and since it was a long one, you had to take a nap :-D17:29
jelmervila: >-)17:29
vilajelmer: kidding :)17:29
jelmervila: What are the lp branches you were referring to?17:30
fullermdMmmm...   nap...17:30
jeremywfullermd: By a quirk of history and naming, that whole conglomeration (Repository, Branch, and Working Tree) is often colloquially called a "branch".17:30
jeremywLoving it.  :)17:30
vilajelmer: the lp:ubuntu/xxx/bzr17:30
fullermdjeremyw: In retrospect, sure, it's lovable.  When I started using bzr, and vented some epic ranting about it on #bzr, not so much   :p17:31
vilajelmer: well, the lp:~bzr/unbuntu/<distro>/bzr to be precise17:31
jelmervila: No, they're different. lp:debian/xxx/bzr would be the ones matching those on bzr.debian.org, except they have the same contents but different revision data17:31
vilajelmer: argh17:31
vilahence my question :-/17:32
jeremywfullermd: Well, I was speaking more about how that summed up what you were saying in here.  :)17:32
jelmervila: james_w might be able to fix that17:32
jelmerjames_w: ^17:32
vilajelmer: fixing as in updating/rewriting the debian branches ?17:33
jelmervila: making the lp:debian/ branches use the ones from bzr.debian.org directly rather than having it create them from scratch based on the source packages17:34
vilajelmer: ha, right, yeah good first step, but the disjoint history will remain.17:35
vilajelmer: and which bzr releases are supposed to find their way in the debian world ? 2.3b1 has, but what about 2.2.1, 2.13 and 2.0.6 ?17:35
vila2.1.3, I don't care (yet) about 2.1317:36
fullermdI do.  Can I have 2.13 right now plz?17:37
vilafullermd: bzr pull --from-future lp:bzr/2.1317:41
vilafullermd: you may encounter ENOTIMPLEMETEND though...17:41
* jeremyw expects to be a bzr expert after reading these four pages...17:41
jeremyw;)17:41
fullermdbzr: ERROR: exceptions.ReversedEntropyArrow17:42
roryybug 202374 might actually be easy \o/17:42
ubot5`Launchpad bug 202374 in Bazaar "pull and update should accept --show-base (affected: 0, heat: 0)" [Medium,Confirmed] https://launchpad.net/bugs/20237417:42
roryyexcept for the tests, maybe, and all the error checking17:43
roryyoh well17:43
vilafullermd: ha cool, so --from-future has been implemented, the error you're seeing should be shallow17:43
fullermdOh, very shallow, if you perceived it from 4 dimensions.  Just infinitely deep in 3   :p17:44
vilaget new glasses :-D17:44
vilaI heard good things about 3D ones.. should work there too I'm sure (otherwise they wouldn't be talking so much about them)17:45
fullermdWhat, you suggest Klein bottle lenses?17:46
vilayeah17:48
fullermdWell, it would be a unique look, I guess.  The chicks would dig it.17:48
viladogs too17:51
maxbjelmer: So, for the immediate series of releases, should I wait until 2.2.1 lands in a debian branch before I do the PPA packaging, or should I go ahead with the PPAs anyway?17:54
fullermdjeremyw: Well, that's the goal   :)   Understanding the foundations, working out what various commands yield, or what should be done to achieve a given end-state, _should_ (at least in theory) be a fairly straightforward exercise.17:55
fullermdjeremyw: And those pages are a (sadly time-limited) attempt of mine to lay out those bricks.17:55
vilamaxb: my gut feeling is that you should go ahead, but we need a better short/middle/long (dunno) term solution17:56
=== beuno-lunch is now known as beuno
maxboh urgh17:59
maxbthe bzr ppa brances are a complete mess18:00
maxbThe debian packaging history and the udd parallel import have been merged together18:00
vilamaxb: which means you can merge from debian branches but ignore everything except the debian dir ?18:01
vilamaxb: or worse ?18:01
maxbwhich means the history is an evil incomprehensible mess18:01
vilamaxb: ha :-/18:02
vilamaxb: dir you tried bzr qlog bzr-* ? It helps a bit18:03
maxbAlso, the debian experimental branch contains a .bzrignore.THIS.THIS file, which is just silly :-)18:03
vilaoperator error :-/18:03
vilamaxb: bzr qlog bzr-maverick bzr-lucid bzr-karmic bzr-jaunty bzr-hardy18:06
vilamaxb:  ^ is not *that* bad18:06
maxbis just about bearable, yes18:06
maxbnot what I'd call pleasant, though18:06
=== Ursinha is now known as Ursinha-lunch
vilamaxb: yeah :-/18:07
maxbHmm, I definitely need to talk to jelmer, as he seems to have switched from using bzr merge to using bzr merge-upstream for branch maintenance with 2.3b118:07
maxbIs there a quick way to test if two branches have any revisions in common?18:08
vilamaxb: ok, let me know if you're blocked or need anything, I'm about to EOD but I may pass around later18:09
dashmaxb: /join #tmlabs18:09
vilamaxb: just a sec18:09
dashmaxb: oops18:09
dashwrong button18:09
dashmaxb: bzr missing will tell you18:09
maxbdash: I don't want missing, I want bzr not-missing :-)18:09
dashheheh18:09
* fullermd . o O ( bzr gnissim )18:10
maxbAlso I want people to have not applied different merge structures to the hardy ppa branch vs the maverick ppa branch18:10
jeremywfullermd: I apprecite it.18:25
fullermdjeremyw: Were they helpful?18:28
jeremywfullermd: I just got out of the shower.  I'll be reading in about half an hour.  I'll let you know.  Will you be here for a bit?18:28
fullermd(unfortunately not really aimed directly at your problem, but ...)18:28
fullermdOh, good.  My writing hates stinky people   8-}18:29
fullermdI'll probably be around for a little while, yah.18:29
jeremywNo sweat...you're not on the hook or anything.  Just hoping not to miss you when I give my feedback.  ;)18:31
=== deryck is now known as deryck[lunch]
fullermdWell, I'll be in IRC even if I'm snoozing up a storm, so I'll have it in logs if nothing else.18:35
fullermd(if I logged out, who knows what vila would say about me behind my back...)18:36
GaryvdMfullermd: That's why I wget and grep irclogs.ubuntu.com...... ;-z18:38
shakaranHi, I did "bzr bind lp:myproject" now my bazaar repository works like subversion (centralized mode). I want revert to distributed mode, how to make it?19:14
LeoNerdbzr unbind19:14
=== Ursinha-lunch is now known as Ursinha
shakaranjust that? I have many member on the team, Should they have bzr unbind too?19:14
LeoNerdbzr unbind  undoes the  bzr bind   operation19:15
LeoNerdIt's a setting on your particular branch. If they have a checkout/branch of their own, theirs is independent of yours19:15
shakaranthanks LeoNerd19:15
=== deryck[lunch] is now known as deryck
=== khmarbaise_ is now known as khmarbaise
=== Meths_ is now known as Meths
ellimistd_How can I download a specif old revision from launchpad?21:48
ellimistd_*specific21:48
mwhudsonellimistd_: bzr get <branch-url> -r $old_rev21:48
ellimistd_great, thanks21:52
maxbjelmer: Hi, are you around? (wanted to talk about debian packaging)22:03
jeremywfullermd: Just finished reading your docs...they helped a lot.  Thanks.22:36
jelmermaxb: hi22:36
jelmermaxb: somewhat22:36
maxbjelmer: hi. I'd like there to be a branch which I can use as a basis for PPA packages of 2.2.1, but so far I've held off preparing a 2.2.1-1 for sid and asking for sponsorship, on the basis that it's probably easier for someone to just do, than to review22:40
maxbWhat's your thoughts on that?22:40
maxbAlso, I note that with 2.3b1, it looks like you've changed to using 'bzr merge-upstream' to integrate new upstream versions into the packaging branches for Debian22:41
maxbAlso, what's the general criteria on Debian pkg-bazaar membership, and would it make sense for me to request membership if I'm working on this sort of stuff?22:42
jelmermaxb: A sponsorship request for sid would be futile - squeeze is frozen22:43
jelmermaxb: Yeah, you're more than welcome to join the pkg-bazaar team22:43
maxbsid is already ahead of squeeze22:43
maxbTherefore I assumed sid was being kept up to date regardless of the freeze making it less important than usual22:44
jelmermaxb: That's because of unfortunate timing - I uploaded to sid less than 24 hours before squeeze was frozen.22:45
maxbaha22:46
maxbIn that case, is there intent to put 2.2.1 into sid, or will we now leave sid alone until squeeze has released?22:47
pooliehello maxb, jelmer22:50
jeremywfullermd: ping22:50
vishyI did 'bzr init' and then i create branches via bzr branch, which creates a subdirectory.22:56
vishyI accidentally did a bzr pull <branch> in the parent directory22:56
vishyany way to revert it?22:56
vishybzr revert doesn't seem to do anything22:57
maxb'bzr init' creates a new empty branch. 'bzr branch' creates a new branch copying from somewhere else. Doing what you said suggests you may have some confusion between 'bzr init' and 'bzr init-repo'22:57
vishymaxb: ah22:58
vishyi think you are correct22:58
vishymaxb: thanks for the help23:11
jeremywLet's pretend I was a hosting company for Bazaar.  If I understand correctly, 'bzr init-repo' will create a directory that will contain branches.  'bzr init' will create a directory that is a branch.  It seems the former would let the users of the repository create/use as many branches as they want/need while the later will only allow one branch.  Is this correct?23:16
jeremywThe more I think about it, the less it makes sense but I had to ask.23:16
mkanatjeremyw: Yep, you're right.23:17
ddaajeremyw: well that's a way of seeing it23:24
ddaabzr init-repo creates a shared repository23:25
ddaabzr init (and bzr push, bzr branch, etc.) create a branch, if the branch is located in a shared repo, it will use the history store of the shared repo, instead of using a branch-specific store.23:26
ddaaIMO, whether you allow creation or one or multiple branches is not a property of init-repo23:26
ddaaHowever, using a shared repository has a strong impact on access contral.23:27
jeremywI'm learning here so bear with me.  I think the analogy of me being a Bazaar hosting tool makes the msot sense.  The usage pattern I see is: You create a repositroy on the server and N number of users will access this repository by cloning it and pushing to it.23:27
ddaawell23:27
ddaastrictly speaking, in bzr you don't clone a "repository"23:27
jeremywWell, you clone a branch.23:27
jeremywSo if I wanted to allow a repository to have N branches, I'd need a shared repository right?23:28
ddaayup23:28
ddaathat's what shared mean23:28
ddaa"shared history store for multiple branches"23:28
ddaanot "shared by multiple users", that's an orthogonal kind of sharing23:28
jeremywI got you.23:29
ddaaas a commercial hosting, you could also use stacked branches, and a custom bzr+ssh server that optimize new branch uploads without giving write access to everything to every user23:31
ddaaactually, that's exactly what launchpad does :-)23:31
jeremywNice...that's something I'll look into as well.23:36
jeremywWell, I don't plan on being a Bazaar host but at the same time, the needs of my project were easier to explain that way.23:37
ddaawell, there's definitely a niche for "github for bzr"23:41
ddaalaunchpad is too complicated and featurful/confusing for some people23:42
jeremywWhen you have a shared repository, is there still a default branch?23:42
ddaadefault branch?23:42
ddaathere's no such thing in bzr23:42
jeremywWell, 'bzr init' creates a default branch doesn't it?23:42
ddaano, it creates a branch23:42
ddaaI have no idea what you mean by "default branch"23:43
jeremywOh yeah...it's named the same as the parent dir.23:43
jeremywDoh.23:43
jeremywddaa: I'm probably mixing terms here.  My fault.23:43
ddaawell no, it's named the same as the directory of the branch23:43
ddaabecause well, that's what the name of a branch is, the url of its directory23:43
jeremywThat's what I meant.  Sorry.23:43
ddaaand no, bzr init-repo does not create branch at the root of the repository23:44
ddaayou could probably set up something like that, and it would probably work, but I'm not sure you can even achieve it using the command line, without moving stuff in and out of .bzr by hand23:45
jeremywI wonder if a shared repository is necessary.  Let's say I created a repository the same way 'bzr init' did.  I could create another repository the same way and fill it with the contents of another branch riht?23:45
jeremywSo I wouldn't need to have a shared repository.23:46
ddaayeah, we call that a "standalone branch"23:46
ddaathat's a branch with its own non-shared .bzr/repository23:46
ddaathe key object in bzr is the branch23:47
ddaarepositories are just support for branches23:47
jeremywBut you can still create a branch from another branch.23:47
ddaawhy "still"?23:47
ddaaa shared repo is never necessary23:47
jeremywToo many concurrent conversations.23:47
ddaait's just a nice optimization23:48
jeremywI got you.23:48
jeremywCool.23:48
jeremywWell, this has been enlightening.23:49
jeremywddaa: I appreciate explaining things to me.23:51

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