/srv/irclogs.ubuntu.com/2008/06/14/#bzr.txt

lifelesswe're pretty good on disconnected, if I may say so myself00:00
gmpffI saw the story about the renames as first class citizens. And usability seems to be a big driver.00:00
gmpffCool - thanks for the info! Think I'll give it a try.00:00
lifelessexcellent. Just ask here and I'm sure someone will give you a hand, though often weekends are a little quieter than the week00:02
gmpffThanks.00:05
jelmerlifeless: Do you know what triggers display or hiding of progress bars?00:10
lifelessjelmer: yes00:12
jelmerlifeless: bzr-svn's progress bars are sometimes not shown by bzr, even though I know they'r ebeing created00:12
lifelessdo they appear eventuall?00:13
lifelesss/ll/lly/00:13
jelmeryeah00:14
lifelessok00:14
lifelessthere is debounce protection for small operation00:14
lifeless*operations*00:14
lifelesswhat can happy is that your first operation takes more than 0.1 seconds00:18
lifelesse.g, many seconds00:18
lifelesswithout doing a nested child bar or other output00:18
lifelessand this results to the user in no visible output until the first operation finishes00:19
lifelessits possible this is what you are triggering00:19
jelmerhmm, I don't think that's the case. afaik there are progress bars for everything now00:20
jelmer*anything significant00:20
lifelessjelmer: can you trigger this behaviour?00:22
jelmerit appears to be somewhat random to me but I've never spent time looking into it once I hit it00:23
lifelessnext time it hits, ctrl-\ and you'll be in pdb00:23
lifelessits the only thing that occurs to me00:23
lifelessI suppose its possible that there is a bug in the bar nesting resulting a nested bar not triggering a show after the MIN_PAUSE00:24
lifelessor many extremely small bars never getting past MIN_PAUSE each00:24
jelmerhmm00:28
lifelesswow01:25
lifelessinventory extraction really blows01:25
lifeless.37 seconds each01:31
lifelessmakes indexing...slow01:31
mwhudsonthis is the main bzrlib performance pain point in loggerhead too01:42
mwhudsonmake log -v fast and everyone will be happy01:43
=== lamont` is now known as lamont
lifelessmwhudson: well01:55
lifelessI need paths_for(revs_to_fileids) to be fast01:55
lifelesswhich is in principle log -v FILENAME01:55
lifelessto get the xml's only:02:07
lifeless0.01402:07
jelmerlifeless, so it's the xml parsing that's slow basically?02:29
lifelessits a significant factor02:29
lifelessanyhow, new feature time in a sec02:29
lifelessI'm on make it work02:29
lifelessthats better:02:38
lifeless:!bzr search COPYING02:38
lifelessCOPYING in revision 'robertc@robertcollins.net-20080608052044-s7ktacyyyiib8zi4'. Summary: 'No summaries yet.'02:38
lifelessnice and fast:02:39
lifelessMisc/HISTORY in revision 'svn-v3-trunk1:6015fed2-1504-0410-9fe1-9d1591cc4771:python%2Ftrunk:17190'. Summary: 'No summaries yet.'02:39
mwhudsonlifeless: yes, the inventory object creation seems like it might be a bit too all or nothing atm02:40
lifelessso, 1) make it work completed02:41
Peng"No summaries yet."?02:41
lifelessright02:41
lifelessif you do a search that hits a commit message you see02:41
lifelessRevision id 'svn-v3-trunk1:6015fed2-1504-0410-9fe1-9d1591cc4771:python%2Ftrunk:15502'. Summary: 'Fix a problem reported by Oleg Broytmann, who complains that very'02:42
lifelessfile hits used to show the fileid, revision id pair02:42
lifelessmy most recent push makes it show the PATH and revision id02:42
lifelessbut adds 0.3 of a second for every revision indexed03:07
=== mark1 is now known as markh
beunolifeless, around?04:58
lifelessyes05:00
lifeless(must diet sometime)05:00
beunoI'm finally trying to get Loggerhead to use bzr-search05:01
lifelesscool05:01
beunoand, btw, it's always very nice to go through your code   :)05:01
beunoanyway, I just want revids for loggerhead, and, well, each type of hit seems to handle that differently05:02
lifelessso05:03
lifelesswhat do you mean 'just want revids' ?05:03
beunothe results05:03
beunoas to what revisions ids match that query05:03
lifelessrather than say specific paths ?:)05:03
lifelessbtw, did you see:05:04
lifeless11:39 < lifeless> Misc/HISTORY in revision 'svn-v3-trunk1:6015fed2-1504-0410-9fe1-9d1591cc4771:python%2Ftrunk:17190'. Summary: 'No summaries yet.'05:04
lifelesscurrent tip, its extremely slow to index in this manner, I'm fixing that now.05:04
beunoyes, I say, and I pulled, and I jumped right into getting this working  :)05:04
beunoyou're even giving the UI some lovin'  :p05:05
lifelessyah, sexy is a feature :)05:05
lifelessanyhoo05:05
lifelessI guess I'm saying 'why do you want to limit yourself to just the revision_id'05:05
beunowell, I guess it's because I already have the rest of the information05:06
lifelessdo you ?05:06
lifelessso you have file_id, revision_id -> path mappings already available?05:07
beunoand, the current interface for loggerhead accepts a list of revids05:07
beunoyeap05:07
lifelessso05:08
lifelessI think there are a couple of ways to tackle this05:08
lifelessone is to make the Hit interface more pluggable05:08
lifelessso loggerehead can have its own hit types05:08
lifelessthis would involving making the constructor interface homogeneous05:09
beunoyes, although from a glance, it seems to be that if all types had revids and fileids (if applicable) available in the same way, well, that would also cover all the use cases similar to LH05:10
beunobut I may be over-simplifying things05:10
lifelessanother is to make a revision key always be available which lh could interrogate05:11
lifelessbut I think that that is possibly/likely overconstraining the interface05:11
lifelessanyhow05:13
lifelesswhat would you prefer05:13
lifelessdo a patch to make it be like that, with enough tests that I can't accidentally change it on you05:13
lifelessand I'm cool05:13
beunoI'd prefer to "do the right thing", although lazyness is pushing towards the easy fix05:14
beunoI'm looking at how I can make the contructor interface pluggable05:14
beunoin a non-hackish kind of way05:14
lifelessI don't think the right thing is entirely clear yet05:14
lifelessso I'd rather do the thing-that-is-easiest-for-you05:14
beunoI wonder if there are many more use cases for different types05:16
lifelesswell05:18
lifelesstags05:18
lifelessthreads05:18
lifelessphrases05:19
lifelessI'm considering the logics of working tree indexing05:19
lifelessand taking the very core and making it fully generic05:19
beunoworking tree indexing?05:20
lifelessyeah05:20
lifelesswonder where a line of code is in your working tree05:20
lifelessTAGS is kindof primitive05:21
lifelesscan't lookup phrases05:21
lifeless(for instance)05:21
beunoas in the last revision?05:21
beunoor uncommitted changes too?05:21
lifelessuncommitted05:22
beunoI've been also thinking that something *really* cool to add on top of this is something like "who worked on this class/method"05:22
beunoI suppose it would be language-specific05:22
lifelesslast revision in already available, just need an interface to search for revision ids directly (and stash them as terms(05:22
beunobut that would of been very useful for me many times05:23
lifelessit would be interesting indeed05:23
lifelessthe way I would approach is is to add a term for the method to a result which is an author05:23
beunoand that should a fairly straightforward UI in LH05:23
beuno"click on the class/method in annotate, or search for it"05:23
lifelesspossibly author,fileid,revision_id or something05:24
beunohm, yes05:24
lifelessbut this is an example where revision_id starts to become less relevant as a mandatory piece of info05:24
beunoright, I can see that05:24
lifelessanyhow, tell me what works best for you and either do it, or I will for you05:25
beunobut I'd have to whip a new UI in LH, so I can tailor that around what bzr-search gives me05:25
beunoI'll take a stab at a patch now05:25
lifelessthe shortest-possible-path for you is an isinstance check in LH05:26
lifeless1) make it work05:26
lifeless:)05:26
beunoactually, yeah, but being able to get revids in a nicer way will probably tend to break less with newer versions05:29
beunoanyway, yes, I'll make it work in a hackish-sort-of-way, and then go back  :)05:30
=== _W_ is now known as W_
beunoaaaaaaaaaand, it works  :)05:47
lifelessoh yay05:48
lifelessI think I have a corrupt test data set05:48
lifelessjelmer: ping05:48
lifelessah no, rich root breaks my optimised code05:49
=== mwhudson__ is now known as mwhudson
lifelessmuch better06:04
lifelessdid 100 in 0.0627507519722 each06:04
lifelessthats down from 0.3706:04
lifelessits also chopped 150M of memory usage :)06:05
beunowhat did you do?06:06
lifelesspatience kemosabe06:06
beunohahah06:06
* beuno stis back down06:06
beuno*sits06:06
beunowell, LH uses bzr-search06:07
beunoit and rocks06:07
lifelessrevno 3406:07
beunomwhudson, ^06:07
lifelessand you can peek06:07
lifelessbeuno: fantastic06:07
lifelessbeuno: screen shot! or demo site!06:07
lifelessI would love to show bkor it running :)06:07
mwhudsonbeuno: nice!06:07
beunolet's see if the router will let me redirect 808006:08
lifeless34 is pushed FWIW06:08
mwhudsonloggerhead could probably steal that paths_from_ids code06:09
lifelessI don't know if it is faster when looking at a full revision06:09
lifelessbut generally we aren't looking at a full revision in the search code06:10
lifeless(even though we need full xml to process things)06:10
beunolifeless, http://200.127.6.219:8080/bazaar/bzr_garbage/changes06:12
beunosearch away06:12
lifelesscool06:14
lifelessso, you're not showing FileTextHits any different to revision hits?06:14
beunonot yet  :)06:15
lifelessno worries06:15
beunothe sql cache got in the way and I lost a bunch of time on that06:15
beuno(it turns out it doesn't like duplicate hits)06:15
beunoI also want to show hwo many results there are, highlight it (text if in commit message, file if in file)06:16
beunos/hwo/how06:17
lifelessexcellent06:17
lifelesswell, feel free to send me patches to make bzr-search nicer for you06:17
beunobut I should probably have some way to index the repos from LH first  :p06:17
lifelessI *like* patches06:17
* lifeless goes hunting a gnome sysadmin06:18
beunoheh, will do06:18
lifelessI think a limit is the next thing06:19
lifelessto be able to say 'no more than 1000 revs' or whatever06:19
beunoyes, that's probably sensible06:20
beunoand, an "order by relevance"06:20
lifelessI'm thinking for LH actually06:20
lifelesswell, relevance is actually the hard thing about searching :P06:20
lifelessrelevance talks about precision, if you want to read up on IR theory06:21
beunoyeah, start with something basic, like most amount of hits, prioritize commit messages maybe06:21
lifelessmwhudson: actually, I think ids_to_paths should be on Repository06:22
lifelessmwhudson: but, backward compatibility etc06:22
beunosomething basic will be much better than seemingly random order06:22
lifelesslol small deltas:06:22
lifelessdid 100 in 0.00272021055222 each06:22
lifelessbeuno: there is no weighting in the core at the moment though06:23
lifelessbeuno: so any order is equivalent as far as the system is concerned06:23
lifelesswho beuno06:24
beunoehm, Martin?  :p06:24
lifelessgetting your last name right06:24
lifelessto do a demo to Lynne of the web search06:25
lifelessshe was asking how the code was going :)06:25
beunowho Lynne?   :p06:25
lifelesserm, my Fiance! :)06:26
beunoah!  you're enganged. I somehow don't know that06:27
lifelesshehe, enganged :)06:27
lifelessit would be nice to show more details, I get back 1594.2.17  when searching on your name06:28
lifelessbut can't figure out why :)06:28
beunoNEWS?06:28
beunooh, no06:28
lifelesscould you run 'bzr search Albisetti' on that tree?06:29
beunoyes, one sec06:29
lifelessno progress bar is shitting me06:32
lifelesstime to fix that06:32
beunolifeless, bzr search doesn't return that revid06:32
beunoLH's cache must be screwing with me again06:32
lifelessbeuno: so, first bug found :)06:32
beunoyes, thank you  :)06:33
beunoI'm going to rip out most of the cache next week, so if it is a cache bug, it should be squashed with that06:34
lifelessmmm06:36
lifelesswould be nice to be sure of it/be able to show people this :)06:36
beunooh, yes, I won't defer it, just that I won't fix the cache if it is06:36
beunoI'll do some cleanups, like, not hardcode '/home/beuno/bzr_devel/bzr.garbage' into the code, and push it06:37
lifelesssweet06:38
lifelessmwhudson_: welcome back06:40
lifelesspython-packs$ time (bzr search socket inet_pton | head -n1)06:40
lifelessMac/Include/pyconfig.h in revision 'svn-v3-trunk1:6015fed2-1504-0410-9fe1-9d1591cc4771:python%2Ftrunk:22230'. Summary: 'No summaries yet.'06:40
lifelessbzr: broken pipe06:40
lifelessreal    0m0.726s06:40
lifelessuser    0m0.592s06:40
lifelesssys     0m0.084s06:40
beunothat's with the inventory tweaks?06:41
lifelessthey only affect index time06:41
lifelesssearch is orthogonal06:41
beunoah, diffs didn't tell me *where* that change was  :p06:42
lifelessI thought the commit log would :P06:43
beunowell, if we had a bzr pull --show-log...06:43
beuno(yes, I did ignore the commit message, it's just a good time to plug in a feature I want)06:44
beunough, I'm stuck and sleepy. I'm off to bed07:48
beunog'night07:48
lifelessgnight07:49
lifelessabentley: abentley@panoramicfeedback.com-20070410141425-86yh4m1cb6wwnwwm seems to have a corrupt inventory08:21
lifelessabentley: oh, nvm, it's a format behaviour I have not accomodated08:21
abentleyYou mean the fact that it has a unique root?08:22
lifelessI didn't remember what format 5 looked like08:23
lifelessI've written a custom path-from-xml extractor thats 5 times faster than deserialising to an Inventory08:23
abentleylifeless: But we're still on format 5...08:24
lifelesson average that is, for processing deltas when you don't need all-paths08:24
lifelessabentley: right, format-5 rich roots were not in my test suite08:24
lifelessI tried format-5 plain, and rich-root-pack in my test suite08:24
abentleylifeless: that's quite nice.08:25
lifelessIt seems to have worked out well. I'd like to fit it into Repository or some such08:26
lifelessits not optimised yet either08:26
lifelessbut 5 times faster was sufficient to stop at for now08:26
lifelessI'm hoping that some of what I develop may go into the core packs as faster lookups for common things08:38
lifelessthis just came together as an interesting project :)08:38
johnfwith bzr-svn is it possible to work out which svn revision number I've just merged?08:55
lifelessI don't know08:58
PengIf you find a way, I'd like to know.09:16
PengCould tags be used? Does bzr scale well with thousands of tags?09:17
AfCPeng: I don't think you'd want one tag per Subversion revision.09:22
AfCjohnf: if you have a branch which is just a straight pull of a svn+ssh:// URL, then I think the Bazaar revno == Subversion's. I could be wrong, but that was the impression I got. Let me test that hypothesis some.09:22
PengAfC: Why not?09:23
AfCPeng: signal to noise ratio, of one thing: it would make other uses of tagging a little less palatable to use.09:25
PengYeah..09:25
PengI'm really curious if it would still perform well though. (But not curious enough to test it myself.)09:26
AfCHm. bzr[-svn] revno = 219 ; subversion revno = 24909:28
AfCGuess not.09:28
lifelessPeng: they don't09:28
lifelessI would check the svn revision for a property09:28
lifelessjelmer may have stashed it there09:28
PengAfC: svn revisions are repo-wide; bzr revisions are branch-wide.09:29
goursvn should be thrown away...they still have problems after 11 RCs with 1.5.009:38
lifelesshmm, I should add text hit summaries before blogging09:44
* lifeless goes to do that09:44
johnfaha bzr version-info has it10:06
johnfrevision-id: svn-v3-trunk0:90e61fa5-4541-0410-a685-e5b9dba3c764:trunk:7410:06
johnfsvn revision 7410:06
=== pbor|out is now known as pbor
lifelessman10:20
lifelesscrying tiger is _hot_ tonight10:21
thekornhi, is there a way to only show the commit messages from the 'main-line' with 'bzr log'10:26
thekornnot the messages  of the merged changes10:26
lifelesslog --line10:29
lifelessor --short I think too10:29
=== VK5FOSS is now known as Kamping_Kaiser
thekornthanks lifeless, --short looks good10:50
=== Mez|DPC is now known as mez
=== mez is now known as Mez|DPC
=== Mez|DPC is now known as mez
=== mez is now known as Mez|DPC
jelmerjames_w: ping13:27
rexiumDoes anyone know how to commit to an sf.net svn repo with bzr-svn? (or have a link to the relevant documentation?)13:27
jelmerjohnf, ping13:27
james_whi jelmer13:27
jelmerjames_w: debian bug 472543 - does that patch look sensible to you?13:27
ubottuDebian bug 472543 in bzr-builddeb "bzr-builddeb: FTBFS: Unknown command "test-builddeb"" [Serious,Open] http://bugs.debian.org/47254313:27
johnfjelmer: pong13:27
jelmerjohnf: The subversion revision number is sometimes part of the bazaar revision id13:28
johnfjelmer: yep eveuntually worked that out and even blogged about it :)13:28
james_wjelmer: That should have been included in the last upload, maybe I messed up the changelog, let me look.13:28
jelmerjames_w: The BTS doesn't contain any claims it's been fixed13:29
jelmerjohnf: It's not something that's guaranteed though - if the commit was pushed from bzr, it could be a completely different revno13:29
jelmerrexium: Simply use it like any svn repo with bzr-svn13:30
rexiumjelmer, I am getting authentication issues13:30
jelmerrexium, see the FAQ entry about authentication and http13:30
james_wjelmer: ah, my mistake, let me close it.13:31
james_wjelmer: thanks for catching it.13:31
jelmerjames_w: Thanks13:32
* jelmer is chasing down RC bugs at a BSP atm13:32
=== Mez|DPC is now known as mez
=== mez is now known as Mez|DPC
james_wanyone want to review my first attempt at a bzr screencast?16:24
james_whttp://jameswestby.net/scratch/introducing_yourself.ogg16:24
Leonidasjames_w: you speak a little bit too fast, I think.16:27
* Leonidas watches it to the end now16:27
gourjames_w: i think the same - too fast and too long sentences. otherwise it's very nice16:28
* gour watched till the end16:28
* Leonidas too16:29
LeonidasYeah, the text in the console is even pretty much readable.16:30
james_wthanks, I'll try and slow down for my next one.16:30
matkorjames_w: great, but I agree previous comments about speed of talking16:30
gourjames_w: what do you use for casting?16:31
james_wheh, recordmydesktop to capture16:31
gourjames_w: use 'comma' in your speech ;)16:31
james_wbut it gets pretty messy from then to get to the finished product.16:31
james_wgour: heh, what are they?16:32
gourheh, atm i'm doing some video-editing in cinelerra16:32
james_wI tried that, but I couldn't work it out at all.16:32
gourjames_w: look for this ',' sign on your keyboard :-)16:32
* gour thinks video-editing on linux still sucks. hopefully lumiera will fix it, but the project needs help16:33
jelmerjames_w: btw, did you see the announcement of the extremadura vcs-pkg meeting?16:34
james_wjelmer: yeah, I never registered my interest.16:34
Pilkyjames_w: the podcast is good, the audio could do with some work though16:40
Pilkythe music needs to fade in/out before/after you finish talking16:40
Pilkyplus your voice could probably do with being a bit loud16:41
Pilky*louder16:41
james_wI like having a bit of overlap, but I could cut the music a bit further.16:41
Pilkyoh, a bit of overlap is fine, it just seems a bit too much overlap, and seems to drown out your voice a bit16:42
james_wMy mic picks up a lot of noise on my laptop, so I can't have it too much louder, but I'll put my new soundcard in my other machine and see if it is any better there.16:42
james_wthanks for the feedback though.16:42
jelmerjames_w: Ah, ok16:47
jelmerjames_w: Thanks for merging that patch btw16:47
=== bigdo2 is now known as bigdog
rockstarIs there a bzr plugin that will help me create debs from a bzr repository?18:20
Jc2kbzr-builddeb?18:26
Jc2krockstar: https://launchpad.net/bzr-builddeb18:27
rockstarAwesome, thanks.  I knew there was something, but bzr-deb doesn't google well...18:27
Jc2k:)18:28
rockstarThat should belong to the bazaar project group, methinks18:28
james_whi rockstar18:55
james_wgive me a shout if you have any trouble with it.18:55
rockstarjames_w, well, I'm not a great packager.  Ideally what I would like is a tool that just creates a dummy debian/ folder with default files in it...18:56
james_wrockstar: dh-make will do that for you18:57
james_wrockstar: I've added it to the bazaar group, thanks.18:58
rockstarjames_w, well, not without needing a .orig.tar.gz first18:58
james_wrockstar: ah true, though it probably has a "native" package mode that will avoid the need for that.18:59
james_wrockstar: yup, dh_make -n19:00
* rockstar wipes egg off his face19:00
scorpioxyhey guys, i am trying to push via ssh. Isn't the url syntax similar to that of sftp? sftp works, ssh i think is spitting a command not found.19:13
james_wscorpioxy: you need to have bzr installed on the server to use bzr+ssh://19:14
scorpioxyjames_w: i think i do. Issuing bzr does the right thing.19:14
james_wis it installed in the $PATH?19:15
scorpioxyjames_w: yes19:16
james_wand "ssh server bzr" doesn't complain?19:17
scorpioxyjames_w: umm...what is that? do you mean bzr serve?19:18
scorpioxyjames_w: oh oh...never mind19:19
scorpioxyjames_w: it says command not found...but bzr is in my $PATH...this is a shared host, does it have anything to do with that?19:20
james_wscorpioxy: is it in a part of the $PATH that is set in .bashrc or similar?19:22
james_wI've got to go, but I will point you to $BZR_REMOTE_PATH, and suggest that you hang around, because someone else might be able to help.19:22
scorpioxyjames_w: alright, thanks19:22
ddaajelmer: on the bug tracker, I saw you say something along the lines of:19:25
ddaa"branching schemes are unecessary. Kill, kill, ex-ter-mi-na-te"19:26
ddaacould you elaborate on how they are unecessary?19:26
jelmerddaa: hi19:27
jelmerddaa: Yes - they do not need to be part of the revision id19:28
jelmerddaa: Since we can just follow the history of the path we're branching19:28
ddaauh19:28
ddaasorry, dvcs neurons a bit rusty19:29
jelmerthe idea would be to replace branching schemes with a somewhat similar thing called 'repository layouts' that is less intrusive19:29
ddaaI'd love to hear about it.19:29
jelmere.g. just used to determine what a branch is when converting the whole repository, but not when analysing history19:29
ddaalet me think aloud for a bit19:30
ddaaATM, branching scheme are not used to "guess" merges right?19:31
jelmerno, merges are never guessed - only tracked explicitly using file properties19:31
ddaaThe only way you get merge in bzr-svn history is (currently) through revisions created by bzr, svk and eventually svn>=1.5.19:32
jelmercorrect19:32
ddaathe thing is, those merges involve other paths in the svn repo19:34
ddaaand that's where branching schemes get involved19:34
jelmerwhy would that involve branching schemes? We just allow all paths in the repo as branch paths19:35
ddaasorry, I do not think I'll be able to make much sense, this stuff has just gone too hazy :(19:35
ddaamy concern comes from the fact I needed to create a new branching scheme to hack around a limitation in bzr-svn19:36
ddaai.e. when pushing a commit, it tried to inspect some branches that I do not have access to, and failed 40319:36
ddaaIt really should not need to look at those branches (such as "/toolkit/trunk") when pushing to my branch (such as "/language/trunk")19:37
jelmerthat's the bit that's going to be replaced by repository layouts19:38
jelmerit's calling Repository.has_revision() to figure out which of the revisions it will push are already present somewhere in the repository19:38
ddaabut it was easier for me we write a RestrictedTrunkBranchingScheme that just looks at /foo/trunk, /foo/branches/*, and /foo/tags/*19:38
ddaajelmer: the current behaviour is meant to allow things like "commit on A, merge A into B and commit B, push B"?19:40
ddaa(where A and B are svn branches)19:40
jelmerthe current behaviour is meant to support something like this:19:41
jelmerpushing large branch foo to /branches/foo19:42
jelmerthen pushing large branch bar which descends from foo to branches/bar19:42
jelmerthe latter would do a copy from /branches/foo to /branches/bar and then push the extra revisions not yet present in foo19:42
ddaaI see.19:42
jelmeranyway, that bit is not going away, it's jsut going to be more flexible19:43
jelmerso it would be possible for the user to specify how hard bzr-svn would have to look for revisions to reuse19:43
ddaaare you actually working on this (or planning to, at least), or is that a "someone would need to siphon out jelmer's brain and take over" kind of plan?19:44
jelmerI'm working on this bit by bit19:45
jelmerThe initial work (now done) was adding support for having more than one mapping scheme present in the same version of bzr-svn19:45
jelmerso it's now possible to support revisions created with and without branching schemes without having to use a different version of bzr-svn19:45
jelmermost of the branching-scheme-less mapping also already works and I've done ad-hoc testing of it19:46
ddaait knocked my socks off when I saw that if I pushed revisions from with my custom branching scheme, and then switched back to the standard trunk1 scheme, it preserved the shape of the ancestry graph.19:47
ddaajelmer: which kind are you? Motivated by thank you or by complains?19:48
jelmerddaa: yes19:50
jelmerddaa: I mean, both19:50
ddaaI can do both :)19:50
ddaaSo: Thanks, at work they use svn (thanks god!), now I have something which will allow me to make merges without having to reimplement gnu-arch-era star-merge in scripts...19:52
ddaaalso, making bzr-svn to work gave me the motivation to install ubuntu on my office workstation (thanks WUBI)19:52
ddaa(between newline translation on windows native and issues recompiling the python bindings on cygwin, I could not make it work on windows)19:54
jelmerddaa: (-:19:55
jelmercompiling the bindings on Windows should be a lot easier soon19:55
jelmerI've redone them using pyrex19:55
ddaaNow, if only it worked correctly without this ghastly hack of mine, I would be able to recommend it to the other IT folks.19:55
ddaaHOOOORAY19:55
ddaaabout pyrex19:55
jelmerI really regret not having done that earlier, the patches I contributed to the current bindings took much more time than the pyrex bindings19:56
ddaaanyway, the recompiling issue will solve it itself when svn1.5 gets out, right?19:56
ddaanow, with a usable windows version, and better support for access restrictions, that would really take some pain out of the folks who try to do patch management on parallel branches using svn ATM.19:57
ddaathey seem to think it's a law of nature that integrating "deltas" (as they say) involves a mind-dulling amount of conflict resolution.19:58
ddaawell... it's probably is, considering how shit the code is probably organized wrt to version control, but bzr would certainly take some of the pain it out if only they could use it.19:59
ddaajelmer: is that enough motivation for now?19:59
jelmerddaa: :-) Certainly20:00
jelmerI'm still waiting for the complaints though :-P20:00
ddaahu20:00
ddaaI complained that I could not make it work on windows and that I could not recommend it to my co-worker in its current state...20:01
ddaathe rest of the complaints would relate to the lack of a tortoisebzr, but that's not your dept...20:01
ddaajelmer: I'm starting to miss free software hacking20:02
ddaamaybe I could give you a hand if you could give me some bite-sized task and a bit of mentoring.20:02
ddaaI know a bit about bzr and svn conversion kind of things :)20:02
jelmerddaa: (-:20:03
jelmerddaa: The launchpad bugs page probably has some interesting todo things20:05
ddaajelmer: what's the benefit of using revision props instead of file props?20:11
ddaait only provides a marginal performance improvement, as all revisions without revprops will still need to be inspected for fileprop changes for backwards compatibility, and it adds a major new code path.20:13
ddaaI can see how that's "more pure", but I do not see how that's a good technical choice.20:14
ddaaoh, right bug 128496 hit me too, and it's particularly nasty as on french localized windows installation the $HOME contains such non-ascii chars.20:15
ubottuddaa: Error: Could not parse data returned by Launchpad: The read operation timed out (https://launchpad.net/bugs/128496/+text)20:15
* Peng pats ubottu.20:15
ddaabug 128496 "Unable to open native working tree with non-ascii filenames" https://bugs.launchpad.net/bzr-svn/+bug/12849620:16
ubottuLaunchpad bug 128496 in subversion "Unable to open native working tree with non-ascii filenames" [Undecided,New]20:16
ubottuLaunchpad bug 128496 in subversion "Unable to open native working tree with non-ascii filenames" [Undecided,New] https://launchpad.net/bugs/12849620:16
* ddaa punches ubottu in the nose20:16
PengHaha.20:17
jelmerre20:18
jelmerddaa: Revision properties don't show up in "svn diff" and they don't annoy users of commit notification emails or trac users20:18
jelmerddaa: Also, they don't confuse "svn merge" (which tries to merge those preoprties as well)20:18
ddaaOk, that seem like good reasons :)20:18
jelmerddaa: s/pyrex bindings/C bindings/20:54
ddaameh?20:54
ddaaWhy bother? Pyrex does all the tedium for you. And it's deliciously geeky too.20:54
* ddaa thinks he saw something on cheeseshop not too long ago that claimed to be the successor of pyrex20:55
PengCython.20:57
PengI don't know its current status as Pyrex has come back from the dead.20:57
jelmerPyrex and Cython were both too limited20:57
jelmerThey couldn't handle the callbacks in the subversion API that need to return a Subversion error struct when an exception is raised20:58
ddaaThat's funny, I do not remember having such a problem when I investigated pyrex bindings to libsvn for launchpad back then.21:01
jelmerI confirmed with the pyrex/cython developers that it was something that couldn't be handled with either at the moment21:01
ddaaIIRC, the technique I used was21:03
ddaa1. as the svn callback, use a wrapper function that has a try/except catch all and return the appropriate error if it caught an exception21:04
ddaathat's a C function21:04
ddaa2. as the baton of the svn callback, use a python callable21:04
ddaaor a combination of the callable and any desired arguments21:05
ddaathe key being that all svn callbacks are associated to "batons"21:05
ddaajelmer: how is that insufficient?21:05
ddaalifeless:  just in case you missed that one, I know you'll love the look of it. http://pypi.python.org/pypi/multimethod/0.221:06
jelmerddaa: If you catch the exception you can't reraise it again and change the returned struct21:08
ddaaoh... I see21:09
ddaait's for the commit stuff, right?21:09
jelmeryeah, commit editor and ra reporter21:09
ddaayou want to let exceptions from the commit callbacks (I did not look at those) bubble all the way up _through_ the layer of libsvn involved.21:10
jelmeryep21:10
jelmerand if I return NULL it will call continue calling python callbacks21:11
ddaasure, you need to give an error status to libsvn so it returns early. The thing is that you need to store the exception data and traceback in global storage to preserve it while control moves back to the python caller.21:12
ddaaWhich means you need to play really ugly games with the GIL.21:13
ddaaotherwise you could have insanity in multithreaded context21:13
ddaathat's the issue you were trying to solve?21:13
trovila: is there a revision of the webdav plugin that's compatible with bzr 1.5?21:16
troright now i'm getting "not installing http[s]+webdav:// support (only supported for bzr 1.6 and above)" with the latest revision21:16
jelmerddaa: other things were annoying as well - pyrex doesn't support the C preprocessor for example21:17
jelmerso there's no proper way to support both svn 1.4 and functions from svn 1.5 when they're available21:17
ddaaTHAT bit sounds scary21:17
jelmere.g. there's no way to do #ifdef SVN_MINOR_VERSION > 521:18
ddaaI see21:18
ddaaokay, you're clearly outside the kind of problems pyrex tried to solve.21:19
ddaaIf I were you21:19
jelmeryeah, and the Python C API is quite sensible21:19
ddaaI would not have been this much of a perfectionist.21:19
jelmerit took me about a day to do the initial bits in Pyrex and then another day to rewrite all of it in C21:19
jelmer18 hour days :-)21:20
ddaaYou're going to make me look bad. When I was asked how much time it would take to move cscvs-launchpad to pyrex bindings, I said "weeks".21:20
ddaaYou know, test suites, code reviews, etc.21:21
ddaaand also hundreds of users relying on daily code imports.21:21
jelmerwell, this was about 36 hour in total so that's pretty much a full work week21:22
jelmerand I already had a lot of the test code21:22
jelmerand it's not finished yet - there's some segfaults remaining in the C code21:22
jelmernor did I have to do the workarounds you'd have to do in Pyrex :-)21:23
jelmerso I don't think weeks is an unfair estimate21:23
ddaaNot that the work itself was particularly difficult. But getting stuff up to launchpad code-review quality takes fixing up a lot of details like naming, coding standards, docstrings, etc.21:23
ddaaWell, they'd have been happy with c bindings too.21:23
ddaaThere's also the fact that you grok a lot more about libsvn than I do.21:24
ddaaThat's funny when I think of it.21:25
ddaaAt my current job, I'm hacking up a prototype, with better test coverage than mission-critical production code.21:25
ddaaIt's funny enough that I got into a one-of-kind research-development mission where I got to pick Python as implementation language in a business where almost everything is short-cycle development in C++/VB/C# :)21:27
ddaaI need to get this mission over with as soon as possible, or I'll go crazy.21:27
ddaaInvestment banking is definitely not my cup of tea.21:27
jelmer:-) So you're working mostly on Windows these days?21:28
ddaaMostly, yes.21:28
ddaaUntil I decided to install ubuntu on my workstation.21:28
ddaaI went out to learn what the workplace is really like.21:29
ddaaBut somehow, my profile got me into one very special mission.21:30
ddaaMaybe I should have tried to look dumber ;)21:30
jelmer(-:21:31
=== Mez|DPC is now known as mez
=== mez is now known as Mez
=== abadger1999 is now known as Guest56436
=== abadger19991 is now known as abadger2000
=== abadger2000 is now known as abadger1999
awilkinsNo abentley?21:46
jelmerddaa: well, at least you get to do python now rather than something horrible like C++21:47
ddaaWell, I did C++ in a previous life.21:47
* awilkins did VB6 in a previous life21:48
ddaaIf you can get over the "fighting with the compiler" bit, there's plenty of interesting puzzles there.21:48
ddaaThe shame is that most of those puzzles involve working around shortcomings of the language :)21:48
ddaaI mean... most of those puzzles are about working around the language.21:49
jelmerheh21:49
ddaaright, the situation could be a whole lot worse.21:49
ddaaSo I still expect to drive this project to completion. Which will probably take another six months or so.21:50
vilatro: the 1.6 restriction is mostly me being lazy to test against previous revisions. The tests may require a 1.4 or 1.5 but the code itself should be ok with any bzr version you can put your hands on. But out of curiosity, why do you need to stick with 1.5 ?21:54
libwilliamI was listening to a podcast where they talked about Bazaar doing something with XML files for integration into other apps. Is this in progress or implemented already?22:21
beunolibwilliam, yes, it's a plugin, bzr-xmloutput22:22
beunoa few projects are using it22:22
beunohttps://launchpad.net/bzr-xmloutput22:23
libwilliambeuno, thanks ill check it out22:24
beunolibwilliam, was that the IDE Integration podcast?22:24
Verteroklibwilliam: the xmlrpc bit isn't there yet, but we 're working on it22:25
Verterokhi beuno22:25
beunohey Verterok :)22:26
beunolibwilliam, Verterok is the author, so you can blame him for anything that goes wrong  ;)22:26
libwilliambueno, i'm trying to find it again, it might have been from a post I read on This Week In Bazaar or the Launchpad Podcast22:27
libwilliamgreat news, now I know who to point the finger at =)22:27
libwilliamI am doing the integration with Anjuta, and was doing alright using the C/Python API, but I got hung up on trying to get a list of the log messages, so I remembered hearing about this XML thing so figured I would check it out22:28
Verteroksure :)22:29
beunolibwilliam, so you're William Fagan?22:30
libwilliamya22:31
beunoI just added an "email" column to the IDEIntegration wiki: http://bazaar-vcs.org/IDEIntegration22:31
beunoto be able to keep in touch with everyone22:31
beunolibwilliam, so you're making progress with anjuta?22:31
libwilliamI just updated the page22:32
beunolibwilliam, cool, thanks. Have you got any code published yet?  May help to get it out there as soon as possible, for drive-by contributions22:33
beunobrb22:33
Verteroklibwilliam: I'm working in the xmlrpc service for it, my current prototype focus on keeping the same CLI/command oriented interface to minimize the python/bzr startup time for each call...22:34
libwilliamya I am doing alright. I have a lot of the functionality in. Now I am stuck on some issues with doing some things in Bazaar because I am so lost with the Python API22:34
Verteroklibwilliam: next step is to provide low level api (in comparsion to CLI commands)22:35
libwilliamFor example, my log GUI needs to get the log message, commiter, timestamp etc to put into the treeview and I am having a hard time understand the API to get that data22:35
beunolibwilliam, well, with XML it will be trivial22:35
beunobut if you want to use the Python API, let me know and I'll be happy to help you whip up that code22:36
Verteroklibwilliam: did you looked bzrlib/log.py?22:36
libwilliamVertorok, ya I have been looking at the log.py, I have been trying to reproduct the _show_log essentially in C but it has been a pain, so thats when I decided to go look for the XML22:37
Verterokoh, I get it, I can't even imagine how to get that done in C :P22:38
libwilliamya, its been a depressing afternoon trying to figure it out =)22:39
libwilliamso without me really looking into it yet, with the xml plugin would I like request a log, and it will output to xml, then I would parse the xml file?22:39
libwilliamexcuse me for the ignorance, I am asking without looking into it yet22:40
Verteroklibwilliam: yep, the default output is stdout, but you can redirect to a file22:40
ddaaprobably, if you are looking to minimize the python spawning cost, you could use the "shell" command (in bzrtools I believe)22:41
Verteroklibwilliam: just a note, xmloutput trunk overrides builtins commands, my current work is in the standalone_commnand branch to be completetly independent of the bzr builtins commands22:42
ddaato spawn a slave bzr process, then run whatever command line you need and get its output across a pair of stdin/stdout pipes22:42
Verterokddaa: sure, the main problem I have with CLI is the win32/*nix mismatch :( (it's a pain to make it work right in win32)22:44
ddaareally, bzr should offer line protocol to allow access to most of the API functionality without involving a C api, but nobody was really interested enough to make this happen22:44
Verterokactually, cmd.exe is...well ugly :)22:44
ddaaugh22:44
libwilliamverterok, that sounds like it will solve a lot of the issues I have been to scared to dive into. I would like to get this into the next Anjuta build for the next gnome, will the standalone be done by then, if so I will start using that instead of the trunk version22:45
Verteroklibwilliam: bzr branch lp:~guillo.gonzo/bzr-xmloutput/standalone_commands :D22:46
Verterokit's a work in progress, but all the commands implemented in trunk are already there ;)22:46
Verteroklibwilliam: the xmlrpc service branch I'm working builds on top of the changes in standalone_commands, so it's safe start using it22:47
VerterokI'm using it in my current dev branch of bzr-eclipse22:47
libwilliamnice =), I have to go, but it sounds great. can I shoot you an email this week with any questions I have?22:48
Verteroksure22:49
libwilliamthanks a ton everyone, i will be dropping soon22:52
libwilliamdropping in soon*22:52
lifelessddaa: hi23:04
ddaahey lifeless23:07
ddaahow is it goin?23:08
ddaagetting stacked?23:08
lifeless:)23:08
lifelessclosing in on stacked quite rapidly23:08
lifelessdown to the last bits of implementation23:08
lifelessseen bzr-search?23:09
ddaalooks like mwhudson_ got around to eradicating buildbot23:09
ddaathat's the end of an epoch23:09
lifelessthe dinosaurs have fallen23:09
ddaaI saw some bugmail that suggested that23:09
ddaadid not look at bzr-search, just saw your blog23:10
ddaaI do not have a use case for this at all at the moment23:10
ddaaI'm working on a project I'm writing from scratch.23:10
lifelesswhat is it?23:11
ddaaI mean work as in "for real money"23:11
lifelesscool23:11
lifelessis it open?23:11
ddaahell no23:11
ddaait's some stuff to model exotic equity derivatives23:12
lifelessah, traders :P23:12
lifelessprobably challenging and fun23:12
ddaaactually, not traders, more back-office kind of stuff23:12
ddaait's probably highly challenging and fun compared to other projects in this line of work23:13
ddaaI feel a bit lonely though. My code is mostly covered by unit tests using niemeyer's mocker, and I have some second thoughts about it.23:14
lifelessyou're working solo?23:14
ddaapretty much, I have a binom who's handling some of the "figure out the financial meaning of the crap in the database" tedium, and some other people around trying to understand what they want me to do.23:16
ddaaBut as far as object modelling, python coding and testing go, I'm a lone cowboy.23:16
lifelessthat can be lonely indeed23:16
lifelessteddy bears are not as good as people23:16
ddaaThere are some good IT folks around I can use as teddy bear when the need arise.23:17
ddaaMy favourite is the guy who's running the 2000 cpu pricing farm.23:17
ddaaprobably something thumper could relate to :)23:18
ddaaanyway, did you hear about this multimethod hack I pointed you at23:19
lifelessoh, backlog23:19
lifelesslets see23:19
ddaaWhenever I have to code a Visitor pattern to implement multiple dispatch, I can't help but think "python should know better"23:20
lifelessmmm23:20
lifelessmultimethod fits in functional languages really nicely, its part of the idioms23:21
lifelessI don't know that it fits in python well - I mean guido did a multimethod implementation ages ago, but its not been merged23:21
ddaaI seems to me the whole zope adapter thing is a kind of multiple dispatch.23:22
ddaa(being zope, it's probably much more complicated than that, but I guess you see what I mean)23:22
lifelessmmmm, from a certain angle I guess, and if only one method is being called23:24
lifelessbut in ocaml or erlang, multimethods are pervasive23:25
lifelessif-then constructs even use them23:25
ddaasounds funny23:25
lifelessits really elegant, but this is why I am saying they don't feel pythonic to me23:26
lifelessits not that you can't, or that if you do its ugly23:26
ddaafrom my perspective, dispatch and conditionals fit very distinct niches in the OO world.23:26
lifelessits that its not integrated in23:26
ddaait's not part of the culture?23:26
lifelessno, its not part of the language23:27
lifelessmaking dispatch do lookup-on-parameters is a hack layered on the language23:27
lifelessits implemented as double-dispatch23:27
lifelessmmm, do you know ocal/erlang/that-other-common-functional-language-that-isn't-lisp?23:28
ddaayou mean haskell23:29
lifelessyes!23:30
ddaaand no. I have meant to look at those, but I never did.23:30
lifelessI think it also has pattern matching23:30
ddaaThe closest to multimethods was guile's implementation of CLOOP23:30
lifelessso, it was very hard for me to really grok this until I learnt enough of one to think in it23:30
ddaa* the closest I got to multimethods23:30
lifelessand when I did, there was a very large penny that dropped23:30
ddaapattern matching seems to be core in all ML derivatives23:31
lifelesscoming back to python though, are multimethods really pythonic - are they the simplest way, clean, clear, easy to understand23:31
lifelessddaa: yeah, I think ML derived guarantees pattern matching :)23:32
ddaaIt certainly depends on the situation.23:32
ddaaI saw an occurence recently when I ended up doing manual type dispatching because I could not be bothered to code a Visitor.23:32
ddaamh...23:33
lifelessI think as something that some-methods-might-do its inherently unclear (until its available for all methods as a standard language feature)23:33
ddaaI think I see your point.23:35
lifelessbut that said, if it works for your code and looks nice23:35
ddaaFor example, it looks like this implementation of multimethods would only work for module-level functions, not methods.23:35
lifelessuse it, but document clearly that you are, and try to make it as obvious as possible when its being used etc23:36
ddaaI'll probably abstain.23:36
ddaaAt some point, I'll have to design a micro-language to generate the object model I'm currently prototyping.23:37
ddaaMaybe we can construe some way for you to give me feedback on this.23:37
lifelessyou can always drop me a mail23:38
lifelessman23:38
lifelessevolution23:39
lifelessman23:39
lifelessnow that I've written a search engine23:39
lifelessmy respect for evolution has shrunk substantially23:39
ddaaI understand how evolution gives you pain.23:39
ddaafor me it's been in the "stuff that sometimes has to use" box for some time...23:40
ddaathey to have this vastly overengineered internal service with its own micro-language to drive their search and vfolder system.23:41
ddaa* they seem to have23:41
ddaaI still cannot type though.23:41
lifeless:P23:41
ddaaI think it's called "camel-helper" or something like that.23:42
ddaause sylpheed, it's least painful of the local mail readers I've used.23:42
ddaaBut I think I told you that one year ago already :)23:42
lifelessyah23:43
lifelessI use evo because for all the things that shit me, other setups shit me more23:43
ddaaBTW I found something MS Outlook is very good at.23:44
lifeless?23:44
ddaaArranging pointless meetings.23:44
lifelessahha23:44
ddaaThis whole email-calendar integration thing.23:45
mwhudson_ddaa: hello!23:48
* mwhudson_ is not really here though23:49
ddaaI'm going bedwards too.23:49
lifelessddaa: good to catch up, do drop by more often :)23:52
ddaaI've busy with addictions.23:52
ddaaFirst stopping smoking. Then buying a Wii.23:52
ddaaI'm only just coming out of the Wii addiction.23:52
lifelessserial addictions :)23:54
ddaaseriously so23:54
ddaabeddy time23:55
ddaacya around23:55
lifelessbye!23:56

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