/srv/irclogs.ubuntu.com/2007/08/30/#bzr.txt

pooliebtw there's some docstring corrections in my pack-repo branch12:03
lifelessI'm thinking about this knit change12:04
lifelessheres what I plan:12:04
lifeless - add a new subclass of knit that writes a different knit record but can read either12:04
lifeless - add a new interknit to convert data from regular knits to this12:04
lifelesschange packs to use the new knit12:05
abentleyabadger1999: Thanks.  I've emailed the other contributors, to confirm it's okay with them (though I understand I'm not required to by law).12:05
abadger1999That's excellent.  Thanks for helping me clear that up.12:05
=== kiko [n=kiko@canonical/launchpad/pdpc.supporter.active.kiko] has joined #bzr
=== kiko is now known as kiko-afk
kiko-afk<yml> I am still getting the same error on windows : bzr: ERROR : ERROR 2 The system cannot find the file specified12:11
kiko-afkhas anyone seen this error?12:11
lifelessno12:11
lifelessif you run with BZR_PDB=1 you can drop into pdb and poke around12:11
lifelessor check .bzr.log for a backtrace12:11
kiko-afkit's windows though12:11
lifelessye12:12
lifelesss12:12
lifelessbzr version will show where the log file is12:12
lifeless(bzr --version)12:12
abadger1999abentley: BTW, I have a little patch that makes python setup.py sdist include the COPYING file12:13
abadger1999 http://toshio.fedorapeople.org/packages/trac+bzr-install.patch12:13
kiko-afkintriguing! thanks.12:13
abentleyI don't understand your setup.py change.12:15
abadger1999I'm not sure why, but setuptools is deciding not to include COPYING in the tarball even though it is listed in data_files12:16
abadger1999moving it from data_files to MANIFEST.in makes setuptools more cooperative.12:16
abentleyweird.12:17
abadger1999There's also some setuptools documentation that makes me think that data_files is for real data_files that the python module depends on at runtime12:17
abadger1999While MANIFEST.in can feed files into the tarball that aren't put into the installed module tree.12:18
abentleyOkay, I'll take it on trust.12:18
abadger1999heh. Thanks :-)12:19
abentleylifeless: I don't know if the bzr.dev deb Recommends xdg-utils, but it should.  (The recent bzr send updates use xdg-email if possible)12:30
lifelessprobably doesn't.12:30
lifelessI haven't started building dailies yet though12:30
abentleyOkay.12:30
abentleyJust thought of that, reading today's IRC log.12:31
lifelessthanks12:31
lifelessuhm, where to record this :)12:31
=== cprov is now known as cprov-out
=== Janzert [n=Brian@75-134-223-54.dhcp.trcy.mi.charter.com] has joined #bzr
=== jelmer [n=jelmer@a62-251-123-16.adsl.xs4all.nl] has joined #bzr
beunodoes anyone know why someone would be getting these errors: http://paste.ubuntu-nl.org/35614/12:42
poolieit looks like it's trying to run putty and failing12:43
=== igc [n=igc@ppp121-45-197-71.lns1.bne1.internode.on.net] has joined #bzr
igcmorning12:43
beunopoolie: I believe it's related to: https://bugs.launchpad.net/bzr/+bug/10715512:44
ubotuLaunchpad bug 107155 in bzr "_get_vendor_by_inspection incorrectly determines "plink" to be the executable" [Medium,Confirmed] 12:44
=== bac [n=bac@canonical/launchpad/bac] has joined #bzr
=== sabdfl [n=sabdfl@ubuntu/member/pdpc.silver.sabdfl] has left #bzr []
pooliehi igc12:48
beunoit is  :D12:49
pooliebeuno, yes, that looks like it12:49
igcmorning poolie. Feeling better today?12:49
pooliesuggest you try the workoround12:49
beunoit fixed it for him, thanks poolie12:49
poolieigc: no :)12:49
pooliebeuno, could you try to write a patch for it that  changes the code that determines the ssh version ?12:49
beunopoolie: I can give it a try, yes   :D12:51
beunoI'll have to find a pc with windows around the office to test it, but I guess it shouldn't be too hard12:51
=== jml [n=jml@ppp108-61.static.internode.on.net] has joined #bzr
=== abentley [n=abentley@bas8-toronto63-1088754407.dsl.bell.ca] has left #bzr []
=== p4tux [n=p4tux@189.169.75.18] has joined #bzr
=== abentley [n=abentley@bas8-toronto63-1088754407.dsl.bell.ca] has joined #bzr
=== BjornT [n=bjorn@canonical/launchpad/BjornT] has joined #bzr
Janzertwould anyone have a guesstimate for when win32 0.90 installers will be up?01:27
poolieJanzert, typically they come within a day or two of the release01:28
lifelessI'm not sure who is building them this time01:28
pooliealexander haro?01:28
Janzertok, thanks01:29
=== orospakr [n=orospakr@bas4-ottawa23-1167864821.dsl.bell.ca] has joined #bzr
lifelessyah01:32
lifelessmight need a oing01:32
=== mthaddon [n=mthaddon@canonical/launchpad/mthaddon] has joined #bzr
=== mw is now known as mw|out
=== tonyy [n=anthony@ubuntu/member/tonyyarusso] has joined #bzr
=== tonyy is now known as tonyyarusso
=== spiv [n=andrew@canonical/launchpad/spiv] has joined #bzr
=== markvandenborre [n=mark@ubuntu/member/markvandenborre] has joined #bzr
lifelessok, should have our 0.90 debs up shortly, last build glitches for feisty gutsy sid seem fixed02:24
=== lifeless foods
=== n2diy__ is now known as n2diy
tonyyarussobtw, in case anyone cares I asked Apress and O'Reilly if they had any plans for a Bazaar book.  Both said no, not at this time, but were open to proposals.02:35
kiko-afkif they pay me a million dollars I will write two books on bzr02:37
=== bac [n=bac@canonical/launchpad/bac] has joined #bzr
=== orutherfurd [n=orutherf@dsl092-164-022.wdc2.dsl.speakeasy.net] has joined #bzr
=== beuno [n=beuno@201-213-170-7.net.prima.net.ar] has joined #bzr
=== NamNguyen [n=namnt@148.177.217.131] has joined #bzr
lifelessspiv: hows that digit ?03:34
=== bac [n=bac@canonical/launchpad/bac] has joined #bzr
spivlifeless: in motion ;)03:35
pooliedigit?03:36
=== lifeless defers to spiv
spivI used a phrase like "I need to extract my digit" in a call yesterday when talking about getting the latest hpss fetch optimisation work up for review.03:38
poolielifeless, there's an extension of look before you leap03:44
pooliewhich is about giving nice error messages if someone uses an api wrongly03:44
pooliefor example if you give just a string rather than a tuple to an index as a key,03:45
poolieit just fails to match, or gives you a 'weird' error when trying to insert03:45
pooliei would have thought this was a bug, but it's probably not - checking everything takes time03:45
poolieand once i realize it's my bug it won't happen again03:45
lifelessright03:46
poolieyou do pay the cost of developers being more mystified when they have bugs though03:46
poolieso possibly we should arrange to run with -O in normal use, but with assertions on in development03:47
lifelessso I'd be much happier if "asd"[0] [0]  errored03:47
pooliethat sorta thing03:47
lifelesswell in this case its a string blackhole03:48
lifeless(1,2)[0] [0]  errors03:48
poolieanother thing like that was the patch from aaron i reviewed a while ago03:48
pooliethings that are meant to yield a sequence of strings can silently return just a string instead, potentially making you do much more work03:48
lifelessyup03:48
lifelessmy pet wish for python - have a byte data type. not *bytes*, *byte*.03:49
pooliemm03:49
pooliewoot03:53
lifelessso gzipping is a net win03:53
lifelesswe spend 4m20 seconds in IO if we don't gzip03:53
lifeless1m40 if we do03:53
lifelessthis is for a copy of mozilla, naturally03:57
=== ubotu [n=ubotu@ubuntu/bot/ubotu] has joined #bzr
=== Janzert [n=Brian@75-134-223-54.dhcp.trcy.mi.charter.com] has left #bzr []
beunopoolie, I'm finishing up the patch for bug #107155, should I just send it to the ML with [MERGE]  in the topic, or would you like to review it?04:15
ubotuLaunchpad bug 107155 in bzr "_get_vendor_by_inspection incorrectly determines "plink" to be the executable" [Medium,Confirmed]  https://launchpad.net/bugs/10715504:15
lifelessbeuno: just send to the lsit; things get reviewed there :)04:16
beunolifeless, should of guessed, thanks.  I'm a bit nervous as this is actually changing code in bzr, I'm not that confident yet  :p04:17
poolielifeless, do you want to talk about gzip some more?04:20
=== igc lunch
lifelesssorry, no browser:04:25
lifelessgzip each hunk04:25
lifelessreal    5m53.774s04:25
lifelessuser    4m7.047s04:25
lifelesssys     0m12.901s04:25
lifelessno gzip04:25
lifelessreal    7m8.611s04:25
lifelessuser    2m41.846s04:25
lifelesssys     0m16.821s04:25
lifelessgzip entire contents04:25
lifelessreal    4m46.153s04:26
lifelessuser    4m29.457s04:26
lifelesssys     0m11.961s04:26
lifelessso we spend nearly 50% of our user time doing gzip04:26
lifelessbut overall time is IO bound for mozilla's tree if we don't gzip04:27
beunolifeless, should of guessed, thanks.  I'm a bit nervous as this is actually changing code in bzr, I'm not that confident yet  :p04:43
beuno(sorry, wrong windows)04:43
lifeless:)04:43
beunoirssi still confuses me with the actual terminal sometimes, so up + enter is dangerous  :p04:44
abentleyigc: ping05:06
igchi abentley05:07
abentleyHi there.05:07
=== bheekling [n=bheeklin@220.225.2.107] has joined #bzr
abentleyI wanted to try and get a clearer idea of the distinction between "user guide" material and "user reference" material.05:08
igcthe 'reference' should cover every detail ...05:08
bheeklingDoes bzr work from behind an http proxy?05:08
bheeklingie, if I set the http_proxy etc variables05:08
abentley'cause the hook document was definitely meant as a how-to.05:09
igcbut not bother explaining how to use those details05:09
lifelessbheekling: yes05:09
igchow-to is definitely 'User Guide' material05:09
bheeklingit doesn't seem to be working for me, it says "bzr: ERROR: Transport error: Server refuses to fullfil the request"05:09
igcabentley: I'm pleased to see hooks added to the User Guide ...05:09
lifelessbheekling: interesting. You might try http+httplib05:09
lifelessrather htan just http05:10
igcThe list of actual hooks though also lives in the Reference I feel05:10
lifelessand please file a bug with as much information as you have - what proxy server05:10
abentleyigc: I think a certain amount of reference material is necessary to any how-to.05:10
igcyes. At least enough to explain things and give samples05:11
bheeklinglifeless, what do you mean by http+httplib?05:11
abentleyI guess I could ignore all the other hook types and just talk about the push hook.05:12
igcabentley: if and when we get lots of hooks, I don't think I want all of them in the Guide05:12
abentleyAnd then link to a hook reference.05:12
igcThat sounds good05:13
lifelessbheekling: 'bzr OPERATION http+urllib://server/path'05:14
abentleyWhat is strange but true is I often 'bzr pull' my own patches off Bundle Buggy.  The hook docs were written at work, but I'll finish them at home.05:14
igcI download patches off BB all the time, even though their in my email somewhere05:15
igcs/their/they're/05:16
abentleyigc: I download my own patches, though.05:16
igcok, you win :-)05:16
igccan't beat that :-)05:17
bheeklinglifeless, it works with that, thanks :)05:20
lifelessbheekling: can you please file a bug?05:20
lifelessbheekling: specify what proxy you have if you know05:20
bheeklinglifeless, okay, I'll do that05:21
lifelessthanks05:21
bheeklinglifeless, correction, it seems bzr works with my proxy just fine, that problem was a random fluctuation I think :)05:29
bheeklingIts importing happily now05:29
igcpoolie: any further thoughts re whether -D needs to stay a global option or not? I'm planning to make it a "standard option" instead of a global one unless I hear a reason not to05:42
lifelessit affects everythin05:43
lifelessso it should be global IMNSHO05:43
igcok - so it *must* remain global?05:44
poolieigc, hi05:45
lifelessI think so, because we might do e.g. -Dcommand at some point, to track ui loading05:45
lifelessif we're happy not to do that, then having it standard is ok05:45
igcIt seems to me that the limitations re global options are aceptable to -D05:46
lifelessprofiling is the most boringest thing05:47
poolieigc, i agree it's ok to change it05:47
poolieis there a particular motivation for changing it?05:47
igcI can certainly see a case where parsing it before anything else would be required05:47
igcpoolie: just following up your email05:47
igc... where you thought out loud about 'maybe -D doesn't need to remain global'05:48
igcIIRC that is05:48
lifelessok05:49
lifelessannotations cost us heaps05:49
lifeless$ rm -rf .bzr && bzr --no-plugins  init --experimental && bzr --no-plugins add > /dev/null && time ~/source/baz/repository/bzr --no-plugins  commit -m "Initial commit"  2>/dev/null05:49
igcso poolie, given the feedback from lifeless, I'll leave it global05:49
lifelessreal    3m50.336s05:49
lifelessuser    3m34.897s05:49
lifelesssys     0m10.941s05:49
lifelessthats a 30 second improvement05:49
lifelesson initial commit05:49
lifelessjust by not caching annotations05:50
lifeless(4m23 to 3m50)05:50
igclifeless: interesting05:50
abentleylifeless: that's strange, because annotations do require sequence matching, but so does knit delta generation, and AIUI, they share the same sequence matching.05:59
lifelesswe do less string manipulation without annotations06:00
lifelessbecause annotations are stored as line prefixes in the knit record06:00
abentleySo even changing our annotation representation might help a lot?06:01
lifelesspotentially06:02
poolielifeless, one thing you could try is using lzo compression06:02
pooliewhich uses less cpu than gzip06:02
lifelessI found nearly no difference using one gzip file versus one-per-record06:03
lifelessuser    4m29.457s06:03
lifelessuser    4m3.963s06:03
lifelessin fact, it went backwards06:03
lifelesswhich was weird06:03
abentleySmaller working set, maybe.06:04
poolielifeless, is there already a container record that says "give me the contents of the bytes record at (off,len)"?06:05
lifelesspoolie: EPARSE06:06
lifelessdo you mean API ?06:06
pooliemy index tells me i want the record at a certain location in the container06:06
poolieyes, api06:06
pooliemistyped06:06
lifelesspack.make_readv_reader06:07
poolieexcellent06:08
lifelessabentley: I don't think so; compressing the entire pack to a single zip should have nearly identical memory use06:09
lifelessI htink there is still room for considerable noise06:10
lifelessbtw feisty gutsy sid repos on bazaar-vcs.org have bzr/bzrtools/bzr-gtk 0.90 now06:10
abentleylifeless: nice.06:10
abentleyEdgy?06:10
lifelesson my list06:10
abentleyAh.  Not as easy to update, then?06:11
lifelessnot quite, got to back out some packaging changes that removed explicit versioning on depends06:11
ajmitchetch is the same?06:11
lifelessyah06:12
NamNguyencan we cast a vote with BB's web interface?06:15
lifelessif you have an account; accounts are granted when abentley things you are sane06:15
NamNguyenlifeless: i'm running bb on my machine06:15
NamNguyenbut i cant find any button to approve or decline a merge request06:16
abentleyNamNguyen: Congratulations.  AFAIK, that's the first independent install.06:16
abentleyNamNguyen: You have to be logged in.06:16
NamNguyenabentley: and i have logged in06:16
igcManNguyen: have a read of http://bazaar-vcs.org/IanClatworthy/CoreDeveloperHandbook. It should answer some of the questions you had yesterday06:16
igcNamNguyen: ^^^06:17
abentleySo it should show you voting options from "reject" to "approve" on the request page.06:17
NamNguyeni see a list of tabs, but i dont see any buttons06:18
poolielifeless, it looks like i want something like that, but creating a BytesRecordReader, not a ContainerReader...06:18
abentleyYou need to go to the page for a particular request.06:18
lifelesspoolie: you want one record out?06:18
pooliewell, possibly more than one06:19
lifelesspoolie: thats going to perform badly on high latency links06:19
abentleyBy clicking on the summary link06:19
lifelesspoolie: I don't see why it doesn't do what you need - you iterate the container to get the byte records you want06:19
NamNguyenabentley: thank you, it's weird, now i can see it, i was so sure i didn't see that before06:20
poolieoh i see06:20
abentleyNo problem.06:20
pooliethere's just one more layer...06:20
abentleyI saw earlier you were upset it used procmail.  Does your server not have procmail?06:21
NamNguyenit's running on windows06:21
abentleyAmazing.06:22
NamNguyenso i wrote a pop3 client to manually poll at 5-min interval06:22
NamNguyenand submit it to the web06:22
abentleyHmm.  Maybe that makes sense for Windows.06:23
NamNguyenyea, it doesn't have local maildir06:23
NamNguyenbut of course, then it wouldn't be "real-time" enough06:23
lifelesscygwin has procmail if you want it06:23
abentleyWell, you certainly can set up a local mail server on Windows, I just imagine it's a pain.06:25
NamNguyeni'm using gmail apps06:25
lifelesssetup.exe from cygwin, select fetchmail and procmail; or at least thats what I'd do:)06:25
NamNguyenit's better just to write a few lines of pop306:25
abentleylifeless: You shameless former-cygwin-developer, you :-)06:27
lifeless:)06:27
=== g0ph3r [n=g0ph3r@p57A0BCD6.dip0.t-ipconnect.de] has joined #bzr
abentleyNamNguyen: Well, if you've got any feedback on Bundle Buggy, I'd be interested to hear.  But I'm off to bed in a minute.06:30
NamNguyenlinking bb and pqm06:30
NamNguyenbut, good night aaron06:30
=== AfC [n=andrew@office.syd.operationaldynamics.com] has joined #bzr
NamNguyenit'd be a complete solution for patch management06:30
abentleyAh.  The reason BB doesn't submit to PQM is because usually by the time a patch has been approved, it no longer merges cleanly.06:31
NamNguyenso a human is required after all06:33
abentleyWell, for the Bazaar codebase at least.06:33
poolieit would be nice to have them integrated06:34
pooliesomeday06:34
abentleyWe are constantly updating the top of the NEWS file, so we get conflicts there.06:34
lifelessthe big difference is in userspace06:35
lifelesshg spend 1 minute in userspace06:35
lifelesswe spend 3.5-4.506:35
poolieand is it mostly in gzip, or was that a wild goose chase?06:35
lifelesswe spend 1m20 in gzip06:36
lifelessgzip each hunk06:36
lifeless(with hot source files)06:36
lifelessreal    4m23.884s06:36
lifelessuser    4m3.963s06:36
lifelesssys     0m11.649s06:36
lifelessno gzip06:36
lifelessreal    7m8.611s06:36
lifelessuser    2m41.846s06:36
lifelesssys     0m16.821s06:36
lifelessgzip entire pack06:36
lifelessreal    4m46.153s06:36
lifelessuser    4m29.457s06:36
lifelesssys     0m11.961s06:36
AfC"hot source files"06:37
=== AfC has an image if Bazaar being used by a XXX movie company.
abentleyG'night, folkds.06:38
abentleyfolks, even.06:38
lifelessnight abentley06:40
lifelessthis is interesting06:40
lifeless du -sh .bzr/06:40
lifeless142M    .bzr/06:40
lifelessthats the pack repo06:40
lifelesshg had a 280M repo06:40
lifelesswith no annotations, naturally06:41
lifelesspoolie: up to a chat ?06:41
AfC(what are annotations?)06:41
poolielifeless, in a sec06:42
AfC(heard them mentioned here a few times as having a space impact)06:42
poolieAfC, our memory of what revision changed a line06:42
lifelessAfC: precalculated line -> revision id mappings06:42
poolieit makes gannotate and weave merge fast06:42
lifelessAfC: what makes 'bzr blame' so fast06:42
AfCHuh06:42
AfCNeat. Thanks.06:42
lifelesspoolie: ok, ring my mobile please, I'm going for a walk06:43
fullermdPack repo of what?06:44
pooliemozilla06:45
=== fullermd blinks.
fullermdThat's freakin' small.06:46
pooliejust the initial import i think06:46
AfCNot sure if you gents saw this on planet.gnome.org or elsewhere, but this post by Alex Gravely is excellent, http://www.beatniksoftware.com/blog/?p=7406:48
fullermdOooh, ok.  So it's merely "rather nice", not "mind-zonkingly tiny".06:50
=== orospakr [n=orospakr@bas4-ottawa23-1167864821.dsl.bell.ca] has joined #bzr
lifeless du -sh .07:11
lifeless669M    .07:11
lifeless du -sh .bzr/07:11
lifeless142M    .bzr/07:11
lifelessso 550M for the source07:11
=== ollie_r [n=orutherf@dsl092-164-022.wdc2.dsl.speakeasy.net] has joined #bzr
lifelessholy fuck this test is taking forever07:47
lifelessa$ python -m timeit -s 'from bzrlib.tuned_gzip import GzipFile; from bzrlib.osutils import pumpfile' "of=GzipFile('/dev/null', 'wb'); pumpfile(file('../mozilla.tar', 'rb'), of); of.close()"07:47
abadger1999Hmm... bzr branch bzr+ssh:// seems to have a regression compared to bzr branch sftp://08:06
abadger1999 bzr branch bzr+ssh://fedorapeople.org/home/fedora/toshio/public_html/bzr-repo/packagedb/fedora-packagedb-stable08:06
abadger1999Copying repository content as tarball...08:06
abadger1999bzr: ERROR: Tags not supported by BzrBranch5('file:///var/tmp/fedora-packagedb-stable/'); you may be able to use bzr upgrade --dirstate-tags.08:06
lifelessthere is a bug on this08:07
=== duckx [n=Duck@tox.dyndns.org] has joined #bzr
=== Basic_py [n=Basic@gatekeeper.real-time.com] has joined #bzr
=== ThomasAH [n=thomas@aktaia.intevation.org] has joined #bzr
=== siretart [i=siretart@ubuntu/member/siretart] has joined #bzr
abadger1999Cool.  I'll go look in launchpad.08:08
lifeless(but no fix yet)08:08
lifelesswhen spivs patches arrive they will fix it08:08
abadger1999excellent.  Thanks for the info.08:12
=== aadis [n=aaditya@122.167.214.15] has joined #bzr
lifeless(by deprecating that other api)08:16
=== allenap [n=allenap@212.233.37.68] has joined #bzr
=== james_w [i=jw2328@jameswestby.net] has joined #bzr
=== tonyy [n=anthony@ubuntu/member/tonyyarusso] has joined #bzr
=== Lo-lan-do [n=roland@mirenboite.placard.fr.eu.org] has joined #bzr
=== tonyy is now known as tonyyarusso
=== sverrej [n=sverrej@tul-1x-dhcp016.studby.uio.no] has joined #bzr
=== dato [n=adeodato@84.120.252.50.dyn.user.ono.com] has joined #bzr
=== hstuart [n=hstuart@0x503e9913.virnxx12.adsl-dhcp.tele.dk] has joined #bzr
=== aadis [n=aaditya@122.167.214.15] has joined #bzr
=== BjornT [n=bjorn@canonical/launchpad/BjornT] has joined #bzr
pooliespiv, hi?09:55
spivpoolie: hello09:58
spivHmm, will have to finish this email on the train.10:01
=== spiv -> gone
=== dhon__ [n=dhon@60-240-97-109.static.tpgi.com.au] has joined #bzr
=== Lo-lan-do [n=roland@mirenboite.placard.fr.eu.org] has joined #bzr
=== herzel [i=herzel@gateway/tor/x-6f1ce91419018516] has joined #bzr
Lo-lan-doHello all.10:07
pooliespiv, quick call?10:08
=== mrevell [n=matthew@canonical/launchpad/mrevell] has joined #bzr
Lo-lan-doIs there a way to have a branch living under another directory than where the repository is stored?10:08
poolieno, it has to be contained within the repository10:08
datobut, you can just put it elsewhere10:09
pooliethis is more for avoiding confusion than technical reasons10:09
Lo-lan-doIs that a theoretical impossibility?10:09
Lo-lan-doAh, no, good.10:09
poolieum10:09
datothe revisions will not be transferred to the repository, but you can push them by hand10:09
Lo-lan-doActually, let me come up with the context.10:09
poolielet me make sure i understand? do you mean you want a branch whose history is stored in a directory that's not above the branch?10:09
datoor you can create a lightwheit checkout of a branch elsewhere in the filesystem10:09
=== ubuntulog [i=ubuntulo@trider-g7.fabbione.net] has joined #bzr
=== Topic for #bzr: The Bazaar Version Control System | http://bazaar-vcs.org/ | Bazaar 0.90 is out - http://bazaar-vcs.org/releases/src/bzr-0.90.tar.gz | Please complete the Bazaar User Survey - http://www.surveymonkey.com/s.aspx?sm=L94RvLswhKdktrxiHWiX3g_3d_3d
=== Topic (#bzr): set by james_w at Tue Aug 28 23:38:27 2007
=== ipkiss [i=ipkiss@nat/ecp/x-800f2584e8d354ec] has joined #bzr
lifelessLo-lan-do: yes, local push will create trees; there should be a bug on that10:58
Lo-lan-do'kay.  I can live with that for now, since there's remove-tree :-)10:59
=== aadis_ [n=aaditya@122.167.176.221] has joined #bzr
Lo-lan-doAh, but bzr branch doesn't know about --create-prefix.11:02
=== Lo-lan-do goes mkdir
=== herzel [i=herzel@gateway/tor/x-4dfb4447af28058a] has joined #bzr
=== luks [i=lukas@unaffiliated/luks] has joined #bzr
=== gabe_ [n=gabriel@91.84.56.254] has joined #bzr
=== Demitar [n=demitar@c-212-031-190-120.cust.broadway.se] has joined #bzr
=== dato [n=adeodato@84.120.252.50.dyn.user.ono.com] has joined #bzr
=== ubotu [n=ubotu@ubuntu/bot/ubotu] has joined #bzr
=== dato [n=adeodato@84.120.252.50.dyn.user.ono.com] has joined #bzr
=== ubotu [n=ubotu@ubuntu/bot/ubotu] has joined #bzr
=== jelmer [n=jelmer@a62-251-123-16.adsl.xs4all.nl] has joined #bzr
mwhudsonis there a bzr-gtk 0.90 deb yet?12:30
jelmerthere is one in debian, not sure whether it's been uploaded to bazaar-vcs.org or ubuntu yet12:31
mwhudsonah12:31
=== ubotu [n=ubotu@ubuntu/bot/ubotu] has joined #bzr
fullermdthumper: Whoops, I lied.  It's post-0.90, so no release yet.12:31
hstuartmwhudson, jelmer, it's up in feisty at least12:32
hstuartat least an apt-get upgrade fetched it for me this morning12:33
mwhudsonit is?12:33
jelmerah, ok - so it's up on bazaar-vcs.org12:33
mwhudsonoh12:33
mwhudsoni don't have bazaar-vcs.org in my repo list12:33
hstuartI live life dangerously ;)12:33
mwhudsonwell, i run bzr.dev most of the time...12:36
elmobzr's managed to take a 30Mb tree and turn it into 51Mb just to import - is that ratio expected?12:36
hstuarthmm, the bzr upgrade on my second box is failing, though12:37
hstuartgetting a: error in control file: `Files' value not specified at /usr/sbin/install-docs line 804, </usr/share/doc-base/bzr> line 1012:37
mwhudsonelmo: i'm not quite sure what you mean by 'import'12:41
mwhudsonthat ratio does seem a little big, how compressible is the stuff you're importing?12:41
elmomwhudson: bzr init; bzr add; bzr commit12:42
elmomwhudson: it's /etc/gconf from a feisty fesktop; I suspect very compressible in a tar sense, less so in an indiviual file sense12:43
mwhudsoni would expect that to increase the size of the tree by ~the size of the tree when gzipped12:43
mwhudsoneach file gzipped independently12:43
mwhudsonhstuart: hm, me too12:44
=== ddaa [n=david@canonical/launchpad/ddaa] has joined #bzr
hstuartso... who do we lynch? ;)12:46
=== asabil [n=asabil@62.70.2.252] has joined #bzr
=== rocky [n=rocky@stjhnf0121w-142163169024.pppoe-dynamic.nl.aliant.net] has joined #bzr
rockyhmm... the new feisty deb for bzr 0.90 seems busted?12:48
hstuartslightly12:48
rockylol12:48
rockykk... just making sure someone knew ;)12:48
hstuartyou can solve it by adding this line to /usr/share/doc-base/bzr : Files: /usr/share/doc/bzr/html/index.html   as the last line12:48
hstuartnot sure whether that's a decent fix, but it got the rest through installation here12:49
rockyah thanks12:50
rockyhere's a quick question ... when i install bzr deb it says "INFO: using old version '/usr/bin/python2.3'" because i manually installed python2.3 into /usr/bin ... /usr/bin/python points at python2.5 so why would it be saying that?12:51
hstuartno idea, sorry12:51
rockyhm... time to ask #ubuntu i suppose ;)12:52
=== rocky [n=rocky@stjhnf0121w-142163169024.pppoe-dynamic.nl.aliant.net] has left #bzr []
datohstuart: yeah, known problem (re install-docs). I think lifeless is on top of it.01:02
hstuartok, great01:09
lifelessyes01:22
lifelesshad a missing output dir, but otherwise its looking good01:22
=== mrevell is now known as mrevell-lunch
=== bac [n=bac@canonical/launchpad/bac] has joined #bzr
=== lunatic [n=francois@erlannic.irisa.fr] has joined #bzr
lunaticis it possible to cancel a pending merge ?01:42
=== NamNguyen [n=namnt@cm246.delta196.maxonline.com.sg] has joined #bzr
datolunatic, `bzr revert`, if I understood you correctly01:43
=== herzel [i=herzel@gateway/tor/x-63e166cbfb8e4646] has joined #bzr
lunaticyes but revert does not stop the status message to display "pending merge"01:44
=== ollie [n=orutherf@dsl092-164-022.wdc2.dsl.speakeasy.net] has joined #bzr
datolunatic: it does, it does. at least here it does.01:45
lunaticok, so I perhaps have a strangeness here01:46
lunaticthanks for all01:46
abentleylunatic: "revert ." will not clear the pending merge, only "revert" with no arguments.01:51
=== Lo-lan-do [n=roland@mirenboite.placard.fr.eu.org] has left #bzr ["Leaving"]
=== cprov [n=cprov@canonical/launchpad/cprov] has joined #bzr
abentleylifeless: The major costs in annotation, diffing and merging are sequence matching operations.  It would be nice to serialize the get_matching_blocks output.  Could you investigate how much that costs?02:02
lifelesswhats the difference between that and our deltas today?02:03
lifelesshmm, actually 10pm here02:04
kiko-afklifeless, one trivial question02:04
lifelessI'm going to finish my talk slides and sleep02:04
lifelessremind me tomorrow :)02:04
kiko-afklifeless, does the new (packs?) format produce a smaller file than the knit?02:04
kiko-afkour knits are now 250MB!02:05
lifelesskiko-afk: launchpads ?02:05
kiko-afkyes02:05
lifeless250M seems a little small to me02:06
mwhudsoni think kiko just means the inventory.knit ?02:07
lifeless$ ls -lh launchpad.packs/.bzr/repository/packs02:07
lifelesstotal 347M02:07
lifeless-rw-r--r-- 1 robertc warthogs 346M 2007-08-16 07:55 9e0bcc57d834ca3ae0b5f5844d82dedb.pack02:07
lifeless~$ ls -lh launchpad.packs/.bzr/repository/indices/02:07
lifelesstotal 25M02:07
lifeless-rw-r--r-- 1 robertc warthogs 2.1M 2007-08-16 07:55 9e0bcc57d834ca3ae0b5f5844d82dedb.iix02:07
lifeless-rw-r--r-- 1 robertc warthogs 2.1M 2007-08-16 07:55 9e0bcc57d834ca3ae0b5f5844d82dedb.rix02:07
lifeless-rw-r--r-- 1 robertc warthogs 1.2M 2007-08-16 07:55 9e0bcc57d834ca3ae0b5f5844d82dedb.six02:07
lifeless-rw-r--r-- 1 robertc warthogs  19M 2007-08-16 07:55 9e0bcc57d834ca3ae0b5f5844d82dedb.tix02:07
lifelessdu -sh on a knit repo:02:07
lifeless434M02:08
lifelesswith --apparent, 395M02:08
lifelessso yes smaller02:08
lifelessmainly due to a more effective dictionay compression on the indices02:09
lifelesskiko-afk: the big win is the ability to partially read indices though02:09
lifelessand for you, the streaming network push will reduce push and pull times dramatically02:10
lifelesseven without the smart server02:10
=== Zindar [n=erik@stockholm.ardendo.se] has joined #bzr
kiko-afklifeless, yes, just the inventory.knit file.02:10
kiko-afkwill that file be smaller?02:10
lifelessthat file does not exist anymore02:10
kiko-afkare there any other large files like that?02:11
lifelessyes, the .pack files :)02:11
lifelesssee the ls -lh I gave above02:11
kiko-afk346mb, wow.02:12
lifelessits the entire database02:12
lifelessincluding your sample debs :)02:12
lifelesskiko-afk: I have sent instructions on how to dogfood packs to the bazaar mailing list02:12
lifelesskiko-afk: .pack files are write-once02:13
lifelesskiko-afk: they can be rsynced much more safely02:14
kiko-afklifeless, so we rewrite the 346mb to other files later?02:14
lifelessthough still not entirely as safe as using bzr itself; but I can push at 80% of rsync speed.02:14
lifelesskiko-afk: yes, with logarithmic backoff. So for that 346MB file we're probably at 20K commits in it02:15
lifelessor something like that.02:15
lifelessso I'd expect a rewrite of it at 100K commits02:15
lifelessuntil then its static02:15
=== mrevell-lunch is now known as mrevell
kiko-afklifeless, I wonder why using a single file that large is a good idea -- why shouldn't we have a smaller ceiling in order to avoid disk frag and just general problems with dealing with it.02:16
lifelessthe design rationale covers this I believe02:17
lifelessin short, we have a smaller VFS requirement set, better control over physical disk layout, the ability to avoid many roundtrips to access data02:18
kiko-afkby using a single file?02:18
kiko-afkI'd be interested in reading that02:18
lifelesswe write a single file & its indices during commit02:18
lifelessevery 10 commits we collapse these to 1 files with 10 commits02:19
lifelessevery 100 commits we collapse 10x10 commits packs to 1x100 commit pack02:19
lifelessetc02:19
kiko-afkhow interesting02:19
kiko-afkdoes that not grow exponentially more expensive?02:19
lifelesslogarithmic backoff02:19
kiko-afki.e. when it's time to move the 1000 commits it will hurt? :)02:20
lifelessit will, but:02:20
lifelessbzr+ssh does it on the server02:20
lifelessthe move is cheap as its little more than a readv + write02:20
lifelesswhen we do a push we create a single pack anyway, regardless of the number of commits being pushed02:21
lifelessso its actuall less often than every 10 operations that this kicks in remotely, in the common case02:22
lifelesswe can only issue a single readv for one file at a time02:22
lifelessour biggest network performance problem is latency02:22
lifelessso consider moz - 55K files02:22
lifeless55K indices02:22
lifelessthats 110K * RTT at a minimum02:23
=== aadis [n=aaditya@122.167.176.221] has joined #bzr
lifeless112000 commits - thats 4 .pack files, wit 4 indices each - we can in principal pull the whole data in 16 * RTT02:24
=== niemeyer [n=niemeyer@200-103-134-216.ctame705.dsl.brasiltelecom.net.br] has joined #bzr
=== mw|out [n=mw@189.146.15.187] has joined #bzr
=== kanhaiya1kk [n=kanhaiya@freemap.in] has joined #bzr
=== deadwill [n=deadwill@146037.fln.virtua.com.br] has joined #bzr
=== kiko-afk is now known as kiko
lifelesskiko: anyhow, my performance figures so far back up this strategy; I can push from here to london only 25% slower than rsync, and thats without much tuning at all02:46
kikolifeless, that's pretty sweet. good job!02:46
kikolifeless, I was wondering if the larger pack size doesn't hurt on local operations too though -- it should of course02:46
lifelesstotal data is the same02:47
lifelessso the page cache pressure cannot be worse02:47
lifelesshowever the number of files is smaller02:47
lifelessso there's less dentries to care about02:47
=== herzel [i=herzel@gateway/tor/x-3a60182277dca347] has joined #bzr
lifelessnight all03:15
=== aadis [n=aaditya@122.167.176.221] has joined #bzr
=== jamesh [n=james@canonical/launchpad/jamesh] has joined #bzr
=== bac [n=bac@canonical/launchpad/bac] has joined #bzr
=== bac_ [n=bac@rrcs-67-79-191-210.se.biz.rr.com] has joined #bzr
=== gldnspud [n=gldnspud@72.171.93.139] has joined #bzr
=== dato [n=adeodato@debian/developer/adeodato] has joined #bzr
=== bac_ is now known as bac
=== ubotu [n=ubotu@ubuntu/bot/ubotu] has joined #bzr
=== mthaddon [n=mthaddon@canonical/launchpad/mthaddon] has joined #bzr
=== sabdfl [i=sabdfl@ubuntu/member/pdpc.silver.sabdfl] has joined #bzr
=== bwinton [n=bwinton@mail.phantomfiber.com] has joined #bzr
=== ignas [n=ignas@office.pov.lt] has joined #bzr
ignashow do i revert a bzr checkout to some older date?04:06
bwintonbzr help revert04:08
gabe_bzr revert -r 4504:08
bwintonfollowed by: bzr help revisionspec04:08
gabe_for example?04:08
bwintonI think he meant more "bzr revert -r date:yesterday", Gabe...04:09
bwintonOr "bzr revert -r date:2007-08-14,17:10:14"...04:09
ignasbwinton: thank you04:10
bwintonMy pleasure!  (It's amazing what bzr help will tell you...  I swear it's one of my favourite features...)04:10
ignasbwinton: indeed, just that it was "Waaah, it's broken, how do i make it work again" situation ;)04:11
=== aadis [n=aaditya@122.167.176.221] has joined #bzr
=== p4tux [n=p4tux@189.169.75.18] has joined #bzr
=== mw|out is now known as mw
=== hsn_ [n=radim@234.114.broadband5.iol.cz] has joined #bzr
=== mrevell is now known as mrevell-tea
=== orospakr [n=orospakr@132.213.238.4] has joined #bzr
=== jelmer [n=jelmer@ip120-149-212-87.adsl2.versatel.nl] has joined #bzr
=== mrevell-tea is now known as mrevell
=== hsn_ [n=radim@234.114.broadband5.iol.cz] has joined #bzr
=== dremon [n=alien@pankratov.speedxs.nl] has joined #bzr
=== cprov is now known as cprov-lunch
=== Demitar [n=demitar@c-212-031-190-120.cust.broadway.se] has joined #bzr
=== beuno [n=beuno@44-111-231-201.fibertel.com.ar] has joined #bzr
=== tchan [n=tchan@lunar-linux/developer/tchan] has joined #bzr
=== beuno [n=beuno@44-111-231-201.fibertel.com.ar] has joined #bzr
=== aadis [n=aaditya@122.167.176.221] has joined #bzr
=== jelmer [n=jelmer@a62-251-123-16.adsl.xs4all.nl] has joined #bzr
=== Starting logfile irclogs/bzr.log
=== ubuntulog [i=ubuntulo@ubuntu/bot/ubuntulog] has joined #bzr
=== Topic for #bzr: The Bazaar Version Control System | http://bazaar-vcs.org/ | Bazaar 0.90 is out - http://bazaar-vcs.org/releases/src/bzr-0.90.tar.gz | Please complete the Bazaar User Survey - http://www.surveymonkey.com/s.aspx?sm=L94RvLswhKdktrxiHWiX3g_3d_3d
=== Topic (#bzr): set by james_w at Tue Aug 28 23:38:27 2007
=== herzel [i=herzel@gateway/tor/x-2fbd6f081b927074] has joined #bzr
=== kiko is now known as kiko-fud
=== ddaa [n=david@canonical/launchpad/ddaa] has joined #bzr
=== beuno [n=beuno@44-111-231-201.fibertel.com.ar] has joined #bzr
=== bac [n=bac@canonical/launchpad/bac] has joined #bzr
=== asak [n=alexis@201-26-117-66.dsl.telesp.net.br] has joined #bzr
=== g4bor [n=g4bor@chello089173070091.chello.sk] has joined #bzr
=== Peng [n=mnordhof@fl-69-69-148-134.dyn.embarqhsd.net] has joined #bzr
=== kiko-fud is now known as kiko
ubotuNew bug: #135891 in bzr "bzr 0.9.0 package blows up" [Undecided,New]  https://launchpad.net/bugs/13589107:55
=== herzel [i=herzel@gateway/tor/x-4a64597d1f5da008] has joined #bzr
=== sverrej [n=sverrej@tul-1x-dhcp014.studby.uio.no] has joined #bzr
=== Demitar [n=demitar@c-212-031-190-120.cust.broadway.se] has joined #bzr
=== aadis [n=aaditya@122.167.176.221] has joined #bzr
=== bratsche_ [n=cody@adsl-68-94-47-188.dsl.rcsntx.swbell.net] has joined #bzr
jkakarSo, it looks like the problem I reported above (#135891) has resulted in a completely b0rked bzr install.09:04
jkakarI'm getting this complaint when I try to run bzr: bzr: ERROR: Couldn't import bzrlib and dependencies.09:05
=== g0ph3r [n=g0ph3r@p57A0B341.dip0.t-ipconnect.de] has joined #bzr
jkakarI guess the quickest/easiest thing I can do is download a tarball from the website and munge my PYTHONPATH.09:05
bwintonI thought the quicker fix would be to add the Files line, and re-install...09:08
bwinton(I'm looking up the message on gmane for you, but there was a thread about it earlier today...)09:10
jkakarbwinton: Oh, maybe you're right.09:11
jkakarbwinton: Thanks for looking up the message.09:11
datojkakar: try this:09:12
bwinton(Sadly, it looks like the web interface is down...)09:12
jkakarbwinton: I found it (in my mail), thanks.09:12
dato# echo "Files: /usr/share/doc/bzr/html/*.html" >>/usr/share/doc-base/bzr09:12
dato# dpkg --configure -a09:12
bwintonNo worries.  I'm glad you could find it.09:12
jkakardato: Thanks!09:13
datoI'm fairly confident it will work, but please report back :)09:13
jkakardato: Not quite.09:14
jkakar$ sudo echo "Files: /usr/share/doc/bzr/html/*.html" >>/usr/share/doc-base/bzr09:14
jkakarbash: /usr/share/doc-base/bzr: Permission denied09:14
jkakarEditing the file by hand with 'sudo emacs ...' works. :)09:14
datoright, you cant use >> with sudo09:14
datosince the >> runs as your user09:14
bwintonCan't you do something along the lines of "sudo ( cat ... >> foo )", to spawn a root process?09:15
datobwinton: yes. eg. sudo bash -c "echo "Files: /usr/share/doc/bzr/html/*.html" >>/usr/share/doc-base/bzr"09:15
jkakarbwinton, dato: Thanks for the help; I'm happy and unblocked. :)09:17
bwintonMy pleasure.09:18
bwintonHey, is it possible for a mere mortal to run a Launchpad instance of their own?09:18
bwintoni.e. if I wanted something Launchpad-y for my company's private internal source code...09:19
Odd_Blokebwinton: Nope, Launchpad isn't Free software yet for precisely that reason.09:19
=== tetron|mac [n=tetron@c-24-91-136-46.hsd1.ma.comcast.net] has joined #bzr
bwintonWait, for precisely which reason?09:19
Odd_BlokeIt's intended to be a central point of development which doesn't work so well if there are several hundred of them. :p09:20
=== gander [n=gander@agander.plus.com] has joined #bzr
tetron|macI get a syntax error trying to set up bzr on OS X.  something about 'from bzrlib.symbol_versioning import (deprecated_function,'  ?09:20
bwintonSo it's aiming more to be a Sourceforge, and less to be a Trac?09:20
jkakarbwinton: I recommend you talk to emurphy@canonical.com about private commercial access to LP.09:21
jkakarbwinton: He's statik on freenode, and often present in this channel.09:21
bwintonjkakar: Thanks.  I probably won't since my company is still using VSS, but it's good to know that there's a contact for that sort of thing...09:22
tetron|macthis is with bzr 0.90, the latest release...  and stock Python 2.4.4 on OS X.  is this a known bug?09:22
jkakarbwinton: Oh, VSS is so sad.  I feel for you. :)09:22
bwintonYeah.  The server went down one day, and the whole office stopped working for a couple of hours...  Actually, it was kind of nice...  :)09:23
jkakarHeh09:26
tetron|macanyone?  anyone have any idea why "setup.py" on bzr 0.90 just totally fails?09:26
bwintonWhich platform, what's the error message?09:29
bwintonSorry, OSX, failed import...09:29
bwintonNo idea.  I can say that it works for me on OSX.  But that's not exactly helpful, is it?09:29
=== shirish [n=shirish@59.95.26.37] has joined #bzr
tetron|macnever mind, I think I know what's wrong09:30
bwintonI'm on Python 2.4.3, installed as a framework.09:30
bwintonYeah?  What was it?09:30
tetron|macit's suddenly decided to revert to using the system Python 2.3.5...  I swear I have 2.4 installed though09:31
bwintonYeah...  I get that a lot too.  I've gone so far as to put /Library/Frameworks/Python.Framework/Versions/Current/... in the #! line of a bunch of my cgi scripts...09:32
=== hsn_ [n=radim@234.114.broadband5.iol.cz] has joined #bzr
=== cprov-lunch is now known as cprov
g0ph3rerm... i'm not sure but it seems that bzr got recently updated (to 0.90) on my ubuntu box, which seems to have broken my bzr installation. i'm unable to run it and i see dpkg errors in synaptic... is this related to the earlier thread here? (in other words: can i fix this issue by the echo command above?)09:40
datog0ph3r: yes09:40
bwintongopher: Give it a try, and let us know.  ;)09:40
g0ph3rok, will do so09:40
=== kiko is now known as kiko-afk
g0ph3rok, this fixed it. synaptic now completed the package setup and i'm able to run bzr now...09:45
g0ph3ris there somewhere where this should/needs to be tracked as a bug09:46
g0ph3r+?09:46
datog0ph3r: it's reported already, https://launchpad.net/bugs/13589109:46
ubotuLaunchpad bug 135891 in bzr "bzr 0.9.0 package blows up" [Undecided,New] 09:46
g0ph3rthx09:47
g0ph3rok, just left a comment with the error message that bzr threw (at least for me) for others to easier find this bug... seems i missed it since my search didn't find the error message :)09:52
g0ph3rthanks a lot for your help folks!09:52
ddaaIs it valid to have a branch reference point to a path, or are only file: URIs accepted for local references?10:14
=== aklaver [n=aklaver@66-224-233-230.atgi.net] has joined #bzr
=== mw [n=mw@189.146.15.187] has joined #bzr
=== bwinton_ [n=bwinton@mail.phantomfiber.com] has joined #bzr
lifelessddaa: URL's only10:21
beunoyay! my patch seems to have fixed bug #107155. I should use bzr bundle to generate the patch and send it?10:21
ubotuLaunchpad bug 107155 in bzr "_get_vendor_by_inspection incorrectly determines "plink" to be the executable" [Medium,Confirmed]  https://launchpad.net/bugs/10715510:21
lifelessbeuno: bzr send10:21
ddaalifeless: thx10:21
=== bwinton_ is now known as bwinton
beunolifeless, great, thanks10:22
=== bwinton [n=bwinton@mail.phantomfiber.com] has left #bzr []
=== bwinton [n=bwinton@mail.phantomfiber.com] has joined #bzr
beunolifeless, bzr won't send it directly, right?  I have to generate the patch file first and attach it to an email?10:23
lifelessit will fire up your mail client10:25
lifelessif you have bzr.dev10:25
beunowierd, it doesn't...  I'll just add -o and send it manually like last time10:26
=== sverrej [n=sverrej@tul-1x-dhcp013.studby.uio.no] has joined #bzr
=== cprov is now known as cprov-out
=== asabil [n=asabil@ti0035a340-0802.bb.online.no] has joined #bzr
=== ddaa [n=david@canonical/launchpad/ddaa] has joined #bzr
=== cprov [n=cprov@canonical/launchpad/cprov] has joined #bzr
=== bwinton [n=bwinton@mail.phantomfiber.com] has left #bzr []
abentleybeuno: What happened when you tried send without -o?11:54
lifelessmorning abentley11:56
abentleymorning.11:56
beunoabentley, it opened up nano11:56
lifelessabentley: interesting performance note11:57
beunoaaah, wait, I needed to write my message there  :p11:57
beunoI'm not very bright today11:57
lifelesstime to write 1MB of data in python - as a single block of bytes - 19usec. Time to write 1MB of 1000 lines using writelines - 500usec, Time to ''.join(lines) then write - 620usec.11:57
lifelessbeuno: :)11:58
beunoI wrote the patch yesterday though  :p11:58
abentleybeuno: If you install xdg-utils, it will use your default mail client.  It also can be configured directly for Thunderbird, Evolution and Kmail.11:59
beunoabentley, great, installing now, thanks12:00
beunoworks perfectly  :D  (is that a suggested in the deb package?)12:00
datono, this conv. reminded me of that, thanks12:01
datobut gnite now12:02

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