/srv/irclogs.ubuntu.com/2007/12/11/#bzr.txt

=== Mez|OnAir is now known as Mez
jdstrandis there a bzr 1.0 backport for gutsy available?  (I tried myself, but it doesn't seem to be working right)00:13
spivjdstrand: http://bazaar-vcs.org/DistroDownloads00:14
jdstrandI just ran dpkg-buildpackage on bzr 1.0~rc2-2, but am getting errors against a 1.0.0.candidate.1 tree00:14
jdstrandspiv: thanks!00:15
abentleyjam: I was going to review your Graph.heads optimization, but things seem to be a bit messy-- e.g. it adds preload_parents, which your "Fixes for find_differences()" then takes away.00:20
igchi abentley00:21
abentleyigc: Hi.00:21
igcabentley: re pkg_resources, is it easy to include in our code?00:21
igcseems to be part of setuptools00:21
abentleyYes, it is part of setuptools.00:22
igcand the pep adding it to python is a future thing I gather00:22
igcs/is/in/00:22
abentleyYes.00:22
igcit looks the right idea ...00:22
abentleyConsidering we want bazaar to be installable as an egg, using setuptools doesn't seem too crazy.00:22
igcI'm just not overly comfortable making setuptools a dependency just the sake of this00:22
abentleyWell, it may make more sense to reinvent the wheel.00:23
abentleyBut I thought it was worth discussing at least.00:24
igcI'm pleased you mentioned it00:24
igcI wasn't aware of it00:24
abentleyI have no idea how hard or easy it would be to include by itself.00:24
igcI can't find anything along those lines after a brief search00:25
igcit probably isn't a big deal ...00:25
igcbut it feels a little like a huge hammer to smash a small nut in this case (to me at least)00:26
igcI just want to load doc from files and not python strings :-)00:26
abentleyWhat it does give you is location-independence for resources.00:27
igcI was happy with leaving the docs where they were but it doesn't work with the Windows installer apparently00:27
abentleyIf your file is in a zip, getting a python string is better than getting a faile.00:27
abentleys/faile/file00:27
igctrue00:29
abentleypkg_resources is 82k, 2.5k lines.00:30
abentleySo it would be a lot to manage ourselves.00:30
abentleyWhat we could do is strive for api compatibility.00:31
abentleyOr we could just solve it a simpler way for this case.00:31
igcHmm00:31
igcI would like to get ref material out of the UG for 1.0 so ...00:32
igchow about I raise an issue about making an api ...00:32
igcthat is compatible with pkg_resources00:33
abentleySounds good to me.00:33
igcfor 1.0, I'll make the files py ones with big strings in them00:33
igcso things don't break in zip files00:33
abentleyEh?00:33
igcwell ...00:34
abentleyyou can just have an API that returns the contents of a file as a string.00:34
igcyour point about loading from files will break00:34
igcok00:35
abentleypkg_resources can give you filenames if you must have them, but this will mean extracting the files from the zip first.00:35
abentleySo IIRC, it's encouraged to retrieve file-like objects or strings.00:36
igcI don't need filenames really00:36
igchelp_topics._load_from_file() currently takes a topic and returns a string00:36
igcthat's all I care about at the high level00:36
igcinternally, I get that content via deriving a filename but ...00:37
abentleyRight.  So the resource API should return strings or file-like objects, rather than paths.  That's all I meant about zips.00:37
igcI could derive a string in py module instead say00:37
abentleyYou mean stuffing our existing text into py files?00:38
abentleyDoesn't that defeat the purpose of keeping them in doc/en?00:38
igcdoc/en is no good for alex00:39
igcmy orginal patch had them there and he wanted them moved00:39
igcthe windows installer doesn't package doc/*, just the generated files I believe00:39
abentleyI don't think that's a good tradeoff.00:40
igcok ...00:40
igcso if we leave the files in doc/en ...00:40
abentleyI don't know enough about the windows installer.00:40
igcand mark them as User Reference only topics ...00:40
igcthen the runtime system doesn't need to find them00:41
abentleyBut it must have a way of accessing resources.00:41
igcand alex's problem goes away00:41
abentleyProbably pkg_resources, in fact.00:41
igcactually, only generate.doc.py needs them -to build bzr_man.txt during make00:41
poolieigc, interesting mail about including batteries on windows00:46
poolieis it really unavoidable that there are two somewhat incompatible windows environments?00:46
pooliethat kinda suck00:46
poolies00:46
igcpoolie: yeah - we have some work to do I think00:47
igcI saw a complaint yesterday re hg00:47
igcthe grumble was that it bundled a dozen plugins but people had to turn them on :-(00:47
igcin comparison, git has bisect etc enabled by default00:48
igcso, in other words ...00:48
igcgit was deemed low admin because it just worked out of the box00:48
igcwe shouldn't try to satisfy everyone but ...00:49
igcI'm beginning to think we ought to at least be bundling more, perhaps via meta-packages00:50
igcdisk space is cheap :-)00:50
igcit's bandwidth in downloading the stuff that I think people get concerned about00:51
pooliei think we should too00:51
poolieeven then, that's pretty small00:51
poolieexcept perhaps for dependent libraries like qt00:52
pooliemaybe we could offer a "standard" and "minimal" install00:52
igcyes00:52
fullermdCompile time and general system dirtiness are concerns too.00:53
pooliehow do you mean?00:53
igcparticularly on Windows and OS X00:53
fullermdqt, to take your example, takes AGES to build.  Longer than Firefox even, last I looked.00:53
poolieoh, on BSD or Gentoo?00:54
poolie("you build qt?" :-)00:54
pooliei wouldn't expect most people would build it from source00:54
fullermdWell, I don't, no.  And I don't want to start because of some third-level dependancy of a package for a VCS I'm going to use the CLI of  ;)00:54
poolienot to neglect those who do have to, but it's probably a minority cas00:54
pooliee00:54
pooliebut you wouldn't install a binary of it?00:55
igcfullermd: I'm good with qbzr, bzr-gtk and bzr-svn being separate installers00:55
fullermdWell, no.  But even if so, that falls into the 'system cleanliness' side; I don't like installing extra stuff I'm not going to use, particularly big bunches of extra stuff.00:56
fullermdI mean, just installing bzrtools needs graphviz.00:56
abentleySo I'm looking at py2exe, and there are recipes for including data files.00:56
igcit's more about what we bundle as "standard" plugins to match the expectations of functionality people have00:57
fullermdAnd that pulls in half of X.00:57
abentleyhttp://www.py2exe.org/index.cgi/AddingConfigFiles00:57
igcabentley: I'll take a look00:57
abentleySo I really think this is not a tool limitation.00:57
ndimHmm. If I get bzr.dev using rsync, the first thing I receive is bzr.dev/.bzr.backup/?00:57
abentleyfullermd: graphviz is supposted to be optional.  Please smack anyone who makes it mandatory.00:58
fullermdabentley: I maintain the port; what sort of masochist do you take me for?   ;)00:59
fullermdI could OPTIONS-ify it I s'pose.01:00
abentleyhehe01:00
abentleyI think Bazaar is the only hard dependency of bzrtools.01:01
abentleyThe rest are used by one command or another.01:02
fullermdThe deps in the port are currently bzr, rsync, and dot.  I think I'd just leave rsync; it's not too big, and it's self-contained.01:02
abentleySo you're not supporting baz-import?01:03
fullermdWell, I haven't really done much with the port except update the versions; lulf created it originally.01:03
abentleyAh.01:03
fullermdI just inherited it and bzr from him.01:03
abentleyDo I know lulf?01:03
fullermdUlf Lilleengen.01:04
fullermdThink he's still listed as maintainer of the baz port.  There's a relaxing job   ;)01:04
abentleyLol.01:05
ndimIs there a good reason for bzr.dev to contain both .bzr and .bzr.backup?01:05
ndimUhm. Make that "Is it on purpose that bzr.dev contains both .bzr and .bzr.backup?"01:05
abentleySounds like an accident to me, but not a harmful one.01:06
ndimIt just doubles the download volume.01:06
ndim:)01:06
pooliendim, downloaded using what method?01:08
pooliersync?01:08
poolieigc, i'd like to talk more about batteries-included, but we should do the release first01:09
igcpoolie: it's a 1.1 thing IMO01:09
poolieigc, on the movement into the user reference01:10
ndimpoolie: rsync, yes. my local bzr is a little too old.01:10
poolie(which i know is a different topic)01:10
pooliendim, i'll move the backup01:10
pooliehm, i can't move it myself01:11
poolieigc, i share jam's view about the desirability of keeping docs in text files rather than inside py files01:12
poolieif possible01:12
igcpoolie: I'd prefer that too01:12
abentleypoolie: Have you considered how to un-merge using annotations?01:21
abentleyi.e. given revisions x and y, where y is descended from x, remove all the changes introduced by x?01:22
poolieabentley, i have not, but it's an interesting idea01:22
abentleyI've been thinking about it as an approach to reverse-cherrypicking, but it seems complicated.01:23
abentleyreverse-cherrypicking is about the only thing that merge3 can do that annotate cannot.01:26
jamspiv: ping01:38
spivjam: pong01:39
jamspiv:  do you know what the per-node overhead is for a set() ?01:40
spivjam: very similar to a dict01:41
jamwhich is?01:41
spivjam: standard PyObject overhead (the PyObject_HEAD fields) plus a couple more fields, plus a "smalltable"01:41
spivjam: depending on the number of entries in the set, it'll put all the entries in the PySetObject if they are under a certain threshold01:42
spivjam: otherwise it'll malloc separate space for the set items.01:42
jamwell, I'm doing a set() of the ancestry of nodes in bzr.dev01:43
jamso I have 7.3k sets01:43
spiv(the threshold seems to be 8)01:43
jamand 63M nodes inside those sets01:43
spiv(gdb) p sizeof(PySetObject)01:44
spiv$1 = 10001:44
jamI'm seeing 29 bytes per entry in the set01:44
jamwell, lets try it a different wy01:44
jamway01:44
spivSo is just holding the sets in memory the problem, or is it when you try to do an operation on the sets?01:45
jam7.3k * 100 = 730KB01:45
jamWell, I just loaded them, and it takes 1.8GB of Ram01:45
jamso the PySetObject overhead doesn't seem to be the expense01:45
jamBut the 28 bytes per entry *in* the set is01:46
jamspiv: shouldn't it be something like 10 bytes per node? Something to give you a pointer to the real PyObject01:47
spivWhat are the objects?  Strings?01:47
jamor am I triggering something funny in the "smalltable" code01:47
jamspiv: yes01:47
jambut they are bzr.dev revision ids01:47
jamso ~60 bytes each01:47
jam15k total01:47
spivThe "smalltable" code is basically just "if len(set) < 8: store in the struct directly for cache coherence/memory fragmentation goodness"01:47
jamhmm... maybe that is 900MB, seems a bit big01:48
jamah, 900 KB01:48
jamthat makes more sense01:48
spivAlso, (gdb) p sizeof(PyStringObject)01:48
spiv$5 = 2401:48
jamspiv: sure, but aren't the PyStringObjects re-used?01:48
jamIf I have 1 set with 15000 entries01:48
jamset1 = set(...15kentries...)01:49
jamset2 = set()01:49
jamset2.update(set)01:49
jamset2.add('a')01:49
spivjam: they might be reused, depending on how you construct them.01:49
spivjam: there's an easy way to find out01:49
spivjam: do a set(id(x) for x in ...) :)01:49
spivBut if you're building new sets by "set2.update(set1)" like in your example there, then it'd just reference already existing objects, yeah.01:51
jamspiv: If I do you set(id(x) ...) and then do a set difference01:51
jamI get the same number of nodes01:51
jamas just doing a direct set difference01:51
spivSo "len(my_set)" should always be the same as "len(set(id(x) for x in my_set)))" (assuming the __eq__ of the setitems behave normally).01:54
jamspiv: so doing: all = set()01:54
jamfor rev, nodes in self.ancestries.iteritems(): all.add(id(rev)); all.update(id(r) for r in nodes)01:54
spivBut what's more interesting is "ids = set(id(x) for x in my_set); ids.update(id(x) for x in my_set2); len(ids)"01:55
jam(build up a set of the id of every piece I can find)01:55
jam(Pdb) len(all)01:55
jam1549901:55
jamSo all of the revision id strings seem to be properly shared01:55
spivOk.01:55
spivNext question: are you sure it's these sets that are the problem?01:55
jamspiv: well, I can say that it is during creation of these sets that my memory bloats01:56
jamspiv: the code is here: http://bzr.arbash-meinel.com/plugins/test_graph/01:56
spivBecause it sounds to me like 15k strings of ~60 bytes + 7.3k sets isn't adding up...01:56
spivjam: http://www.twistedmatrix.com/users/spiv/countrefs.py01:56
jamspiv: I completely agree, that is why I'm confused01:56
spivjam: use that or something like it to get a count of the number of instances of various types.01:57
jam(Pdb) countrefs.mostRefs(10)01:58
jam[(152841, <type 'tuple'>), (8158, <type 'function'>), (7411, <type 'set'>), (3030, <type 'dict'>), (1499, <type 'list'>), (1156, <type 'weakref'>), (985, <type 'type'>), (779, <type 'builtin_function_or_method'>), (625, <type 'wrapper_descriptor'>), (566, <type 'getset_descriptor'>)]01:58
jam152k tuples is a bit01:58
jambut still not 1.8GB worth of data, IMO01:59
spivWell, it depends on how big the tuples are...01:59
spivYou can find out :)01:59
spivall_tuples = [t for t in gc.get_objects() if type(t) is tuple]01:59
spivThen you can try e.g. max(len(t) for t in all_tuples)02:00
spivPity there's no "histogram" builtin ;)02:00
jamspiv: sum(len(obj) for obj in gc.get_objects() if type(obj) == tuple)02:01
jam37958302:01
jamwith 152k tuples02:01
jamthat puts most of them at 202:01
spivYou can get the median with print sorted(all_tuples, key=len)[len(all_tuples)//2] ;)02:01
spivHmm, so no smoking gun there either.02:02
spivIt's possible the leak is in a type not tracked by gc (not a "heaptype" or whatever the jargon is).02:02
jamprint sorted(all_tuples, key=len)[len(all_tuples)//2]02:02
jam(None, False)02:02
jamweird02:02
spivOh, that printed the median tuple, rather than the length of the median tuple.  Heh.02:03
spivStill, that supports your "most of them are len 2" calculation :)02:03
jambut it is still 202:03
spivOk, so the space isn't consumed by the sets, the strings, or the tuples.02:04
jam1500 lists, of total length 10k02:04
jamagain, not super long02:04
jamspiv: can you try the code and see if you get the same effect?02:04
jam(it is a bzr plugin, put it in ~/.bazaar/plugins and just run: "bzr test-graph bzr.dev")02:05
spivSo, at this point I'd try running without the optional C extensions (in case there's a leak there), and without plugins (in case e.g. the svn plugin is getting involved and thus getting its known memory leaks involved).02:05
spivOk, will do.02:05
jamWell, I can do that, but the code is generally really simple02:06
spivjam: I don't think I want to run that command :)02:11
jamwhy?02:11
spivjam: I only have 1G of RAM on this laptop :)02:11
jamdon't want to use the ram?02:11
jamspiv: you could try it on something smaller02:11
spivI will :)02:11
jambzrtools works for me02:11
jambut doesn't bloat nearly as much02:11
jamspiv: on my machine I have definitely tracked it down to the get_ancestry_for_interesting()02:12
jambefore the loop I'm at 25MB (with the revision graph loaded)02:12
jamafter the function, I'm at 1.8GB02:12
jamspiv: also, python spends a long time during close, I assume doing garbage cleanup02:15
abentleyStrange.  I just "fixed" the BB performance issues by rebooting.02:17
abentleyIt was at 45% IO wait with nothing running.02:18
TaldenHow do you handle shared code in projects? We have a CVS project where some source is shared between us and another organisation.02:20
jamspiv: it seems that sets simply wrap a dict in python2.4...02:21
jam*     data is a dictionary whose values are all True.02:21
spivjam: oh, I was assuming you were using 2.502:22
abentleyTalden: Generally, you package the shared code separately.02:22
spivjam: which has a dedicated set type (based on the dict type's code, but a little leaner)02:22
jamspiv: I am, I just have the 2.4 code available :)02:22
abentleyTalden: libraries lend themselves to this treatment especially well.02:22
jamspiv: downloading the 2.5 source now02:23
Taldenabentley: We both contribute to the shared components code.  Many of our developers would simply end up having to handle two separate projects and shipping code into the dependent project (with a general understanding that it's not maintained there).02:23
TaldenThis is acheived in CVS with a little backend hackery to mount the shared code in an appropriate path in the CVS backend.02:24
spivjam: I have a bzr-svn import of python trunk and the py3k branch on my laptop :)02:24
jamspiv: oooh02:24
jamit won't matter for this code02:24
jamas it only focuses on merge nodes02:24
TaldenI am NOT promoting backend hackery and am fully aware that this isn't going to fly in DVCS land.02:24
abentleyTalden: okay, I don't understand your requirements yet.02:25
Talden(1) Neither org can see the others non-shared code.02:25
Talden(2) We both contribute to the code on HEAD and frequently make contributions on our own branches that make their way to HEAD via merges.02:25
Talden(3) History of shared content is visible to all (to help make sense of changes originating from two orgs with very different core-business).02:25
abentleyWhy would having a separate tree lead to stuff not being maintained?02:25
Taldenabentley: Maybe I've misunderstood your suggestion02:26
jamspiv: so if I'm looking at it correctly, the overhead of a set entry should be just 8 bytes, right?02:26
jama 'long' for the hash, and a PyObject* for the key02:27
abentleySo for the shared code, I'm suggesting that should be one branch, and your non-shared code should be another branch.02:27
TaldenBranches or separate ancestry?02:28
abentleyTotally separate ancestry.02:28
TaldenRight... so a developer can't 'mount' the shared code inside the path of their branch of main code right? Or does bzr know to handle nested branches somehow?02:30
spivjam: that sounds right to me02:30
jamso still, something weird is happening02:30
jam63M keys *8bytes is only 500 MB02:30
jamA lot, but I'm seeing almost 4x that02:30
spivIt's possibly just python's memory management.02:32
spivCreating/resizing lots of sets might be leading to memory fragmentation.02:32
abentleyTalden: There has been work on that, but it's not complete.02:33
abentleyThere are packages that let you set up a nested tree, but don't keep things up-to-date.02:33
jamspiv: well, doing "set1.copy().update(set2)" doesn't seem to improve things02:40
abentleyTalden: if by "mount", you just mean sticking one tree inside the other, that's easy.02:40
* igc lunch - bbl02:40
jamand that hits on 5.6k of 7.3k nodes02:40
jamI guess it is actually "s = set1.copy(); s.update(set2); s.add(r)"02:41
jambut I guess that involves 2 resizes, and I don't know what sort of internal grow algorithms are used02:41
jamspiv: I think you are right about the malloc() issues02:43
jamIf I change the calls to do:02:44
spivjam: so, one interesting point is that sets' internal tables are larger than the number of entries, btw.02:44
jamancestries[revision_id] = ancestry.copy()02:44
jamThen it drops to 1.4G02:44
jamfrom 1.8G02:44
jamspiv: all of the "dummy" nodes?02:45
spivjam: they can be twice to four times larger than the number of entries after a resize, I think; obviously you want some sparseness to avoid too many hash collisions, and provide space for new entries, etc.02:45
spiv(maybe frozensets are more compact?)02:47
jamspiv: they seem to always be powers of 202:47
jamnewsize <<= 102:47
jammask = newsize - 1;02:47
jamSo probably when we trip past 8k revisions02:47
jamit jumps to 16k for each revision02:48
jamand once we get past 16k (in a few revisions) it will jump to 32k02:48
spivjam: well, see also "set_table_resize(so, so->used>50000 ? so->used*2 : so->used*4);" that e.g. set_add_key does.02:49
jamso grow by 4x if < 50k nodes02:50
jamoh, actually have the hash be 1/4 full if < 50k used nodes02:50
jamand 2k full otherwise02:50
jamso with 8k nodes, we have 32k tables02:50
jamand above that it goes to 64k tables02:51
jamand 4:1 is about what I'm seeing02:52
jam8 bytes per node, but an average overhead of 3 blank nodes per real node02:52
spivjam: what about "ancestries[revision_id] = frozenset(ancestry)"?  I don't think it's any more compact than set.copy, but maybe...02:55
jamspiv: just finished that one02:55
jamstill 1.3G02:55
jamso the same as .copy()02:55
jambut better than not doing it (1.8G)02:55
jamspiv: thanks for helping me track this down02:57
spivjam: you're welcome.02:57
spivjam: I'll get back to other stuff now I think02:57
jamsorry for distracting you for so long02:57
spivjam: It's been fun poking at this stuff02:57
spivEven if it is hard to get good answers about python memory consumption!02:57
jamspiv: yeah, I wish part of the PyObject protocol was to have a "mem_size" variable02:58
jamor function for objects02:58
jamso you could loop and figure out what was consuming your ram02:58
spivI think a "mem_size" method would be helpful, but also deceptive.02:59
spivA bit like how looking at the memory stats for processes in "top" is deceptive.03:00
spivBecause accounting shared memory is hard, if three processes share the same pages, should you say that each process "costs" 1/3 of that memory?  That's often a bit too simplistic an analysis.03:02
spivjam: so one idea for you: http://rafb.net/p/SRFLNW38.html03:10
spivjam: trading memory for time, basically03:10
lifelessjam: 'area'.03:13
Taldenabentley: Thanks for the feedback... I went and looked into the support for nested branches and there doesn't look like much there yet.  It looks like some developer handholding will be needed for us to maintain similar code-sharing workflow to what we have now.  I guess I'll soon see how much impact this might have on my chances of moving us to bzr.03:14
spivjam: (what's this plugin checking, anyway?)03:15
lifelessi386: back in syd ?03:17
=== hexmode` is now known as hexmode
i386lifeless: yep03:18
i386Got back this morning03:18
i386Feeling pretty good for jetlag03:18
lifelesscool03:18
i386etc03:18
i386hows things?03:18
lifelessgood03:19
lifelessrelaxing :)03:20
i386Yeah me too03:20
i386Im attempting to quit smoking03:20
i386so im chewing this special gum03:20
i386_lifeless: james unplugged the router :/03:22
lifelessi386_: lol03:24
fullermdSee what happens when you quit smoking?  :p03:27
i386_Yeah03:30
i386_Actually this gum does the trick so far03:30
i386_except I want to vomit03:30
lifelesseek03:30
lifelesswhen Lynne quit she just cold-turkeyed03:31
fullermdI didn't exactly _quit_.  I just ran out, and haven't bothered to buy another pack in the last 7 years?  Something like that...03:31
fullermdI have a friend who advocates a different system.  Don't fight it; every time you want a cigarette, just eat one.03:33
lifelessrofl03:33
RichElswickhi all03:35
lifelessjam: I mailed poolies details to get the canonical commercial packaging folk to do it for my vacation03:36
RichElswickwhen pushing a new branch up to a server in a new location, (via sftp) should the files transfer as well as the .bzr files?03:36
poolielifeless, hi03:39
poolieRichElswick, no, only the .bzr directory is transferred over sftp atm03:40
RichElswickso I would need to transfer the files as well?03:40
RichElswickthen others would be able to download the version controlled files?03:40
poolieif others download from that directory, they'll get the whole lot03:41
poolieigc, re your chapter 703:41
poolieit's good, but it seems a bit out of place in this manual03:41
RichElswickok, which is what I sort of figured.03:41
RichElswickmust be my ftp account setup then.03:41
pooliewhat's going wrong?03:42
lifelesshi poolie03:42
RichElswickyou can test it out if you have a sec...03:43
RichElswickhttp://detroitcreativetalent.com/SSD/RandomGen/03:43
RichElswickis the location I uploaded the files ot.03:43
RichElswickto as a test.03:43
pooliehm, the problem seems to be with your web server03:43
pooliebzr info http://detroitcreativetalent.com/SSD/RandomGen/03:44
pooliebzr: ERROR: Unknown branch format: '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd03:44
poolie...03:44
poolieit's redirecting to an error page or something03:44
poolielifeless, can you tell me what arch.ubuntu.com is still used for, if anything?03:46
RichElswickok, thanks03:47
lifelesspoolie: in jan if thats ok, I don't really want to page work in03:52
lifelessor should I say, I really don't want to page work in03:52
poolieyeah, totally fine04:02
pooliei should have said that04:02
RichElswickpoolie: thanks for the help... looks like my upload via bzr push sftp... didn't work out as I thought it would, so I uploaded the .bzr directory manually and it works now, thanks!04:07
PengHm, my repo for bzr has fifteen different packs.05:43
PengHaha, on my very next pull, it repacked down to three.05:45
lifeless:)05:46
PengWhy three? It's the old 58 MB one, plus a new 2 MB one and new 360 KB one.05:47
PengDoes auto-packing do any optimization like "bzr pack" does/will?05:48
lifelessno05:57
thumperhi lifeless05:57
lifelessautopack tries to minimise the amount of work it does05:57
lifelesspack tries to perform global performance optimisations (well, if the patch I put up the day I went on leave has been merged :))05:57
lifelesshi thumper05:57
Penglifeless: Ordering revision texts in topological order? That just went in.06:01
spivlifeless: yep, jam merged it I think.06:01
spivlifeless: (just bzr.dev, not 1.0)06:01
Penglifeless: Does it do enough that it could be worth running "bzr pack"? What about on a server where the repo is just used for push/pull?06:02
lifelessPeng: if you have tens of thousands of revisions, it'll make log a bit faster06:09
lifelessPeng: so autopack exists to prevent latency growing without bounds06:10
Penglifeless: Right.06:10
Penglifeless: Why did it create two small packs instead of one?06:10
lifelessPeng: thats why 3 packs - it left your largest alone because it wouldn't make any substantial difference to latency to rewrite the big one; but it would take a lot more time to rewrite it.06:10
lifeless(imagine you were pushing into a sftp repo; you don't want that to download and upload the entire repo on a autopack, because auto pack is quite common)06:11
Penglifeless: Yeah. I understand why it left the largest one, but why create two smaller ones instead of one?06:11
PengHypothetical situation: In chronological order, I have 1 100 MB pack, 10 100 KB packs, 1 50 MB pack, and 10 more 100 KB packs. Is auto-pack smart enough to leave the 50 and 100 MB packs alone but repack the others?06:13
lifelessPeng: there is a bug open06:15
lifelessPeng: autopack is fairly smart. at the moment its a bit 'clever' too but that should go.06:15
=== Peng changed the topic of #bzr to: Bazaar Version Control System | http://bazaar-vcs.org/ | please test http://bazaar-vcs.org/releases/src/bzr-1.0rc3.tar.gz
PengHey, 174 KB/sec.09:09
PengWait, that's still only 1400 Kbit/sec. That sucks.09:09
fullermdYou realize, of course, that the topic is a hot potato.  Having once touched it, you're now responsible for it forever more   :p09:09
PengWell.09:11
PengI'll just change my nick to lifeless_ and everyone will think he did it.09:11
PengWTF?09:25
PengIf I try to push this branch over bzr+ssh, the local bzr freezes sucking 100% of the CPU forever.09:25
PengI just tried pushing over sftp, and it finished after 20 seconds. There is a *lot* of data to push.09:25
PengEven weirder is that it seems to be intact.09:33
PengNow, when I uncommitted and recommitted something, it's been pushing for a few minutes now with lots of network activity!09:34
PengOh. Last time I tried to push when I gave it a few minutes, almost all of hte CPU time was sys.09:36
PengMaybe it wasn't frozen, or something.09:36
PengPushing over SFTP now, it's not using much CPU, but it's using 250 MB of RAM..09:40
Peng(Actually, it's using about zero CPU.)09:40
PengIt's gaining maybe a MB of RAM a second.09:40
* Peng wanders off.09:42
datoabentley: I barely understand the public_branch stuff for `bzr send`, but do you think it could make sense to use as public_branch the parent_branch of the submit_branch, maybe recursively, until it's not local?09:51
PengOkay, good, now it's not using so much RAM.09:56
Pengdato: public_branch is simple: it's the public URL of the branch (http://bazaar-vcs.org/bzr/bzr.dev/ or whatever).09:56
datoyes, that'd be included in the "barely"09:57
PengHeh.09:57
PengRight.09:57
PengHello hello.10:07
PengHello.10:07
PengSo apparently it's uploading a very large pack.10:08
PengThe progress bar is completely useless.10:08
PengIt has 22 packs, so it might be repacking.10:09
PengErk, this would work better over bzr+ssh.10:09
PengAfter this much has been uploaded, I'm not going to kill it and switch, though...10:09
=== mrevell__ is now known as mrevell
* fullermd blinks.10:19
fullermdWhat happened to the ability to 'log' historic files?10:19
fullermdI could swear that worked at one time.10:21
PengWhee test coverage!10:22
PengWow, now the uploaded pack is almost 100 MB. Now I think I'm glad I'm not using bzr+ssh..10:22
PengIt probably would've gotten killed by now.10:23
PengOr is bzr+ssh good at RAM usage?10:23
fullermdWould you expect it to use more than the sftp server-side?10:24
PengYes.10:25
Pengsftp-server is currently using 3 MB.10:25
PengI'd be shocked if I ever caught bzr using less than 15.10:26
fullermdWell, yeah, the constant factor is higher.10:26
PengYeah.10:26
fullermdBut writing the file shouldn't add much.10:26
PengAnd, of course, it has to actually calculate stuff.10:26
Pengfullermd: Does it just write the file verbatim or process it?10:27
PengOh my god.10:27
fullermdTTBOMK, push just uses all vfs functionality still.10:27
PengIt took it 55 minutes and a 120 MB upload for it to realize the branches had diverged.10:27
PengWait.10:28
PengI don't know if it was 120 MB. I was misreading another old file in upload/ that's 12 MB.10:29
PengBut it was definitely over 100 MB.10:29
PengBrilliant, bzr.10:29
PengOh, good. It didn't delete it. It's in packs/.10:30
PengI guess it updates the repo, then tries to update the branch.10:30
PengIt repacked the remote side down to 7 packs.10:32
PengFrom 22.10:32
PengIt still left a couple small old ones.10:32
PengWhile combining a couple new huge ones.10:32
ubotuNew bug: #175520 in bzr "log can't see historic filenames" [Undecided,New] https://launchpad.net/bugs/17552010:46
ubotuNew bug: #175524 in bzr "http test server is not 1.1 compliant" [High,Confirmed] https://launchpad.net/bugs/17552411:15
zerokhi :-)11:55
zerokprobably a really stupid slightly off topic question, but would i violate the gpl if i write a bsd-licensed application that imports the bzrlib?11:56
luksI can't speak for bzrlib specifically, but generally importing gpl code into bsd code is against the gpl12:02
zerokalso importing in the sense of just having somewhere in your code "import otherlib"?12:03
luksthat is no different than dynamic linking in c applications12:04
zerok:-( i guess this means i can dump 20% of my application and remove scm altogether with bzr and hg being under gpl v2 :-( thanks for the info :)12:05
PengJust out of curiosity, what's your application?12:06
zerokPeng, it's a simple docutils wrapper that combines docutils with stuff like the jinja template engine and pygments and also simply allows to process multiple documents at a time (and also generates a index for those documents). and to get the mtime of a document i wanted to use the last mtime as seen from a scm12:08
luksyou can write a gpl plugin for bzrlib and run bzr in a separate process :)12:08
zerokwhich would defeat the purpose for wrting that tool in python in the first place ;-)12:08
PengYou could do something sucky like running 'python -c "import bzrlib; ..." in a separate process.12:11
zeroktrue, but i guess i will just remove that code :-( would have been a neat feature though ;)12:11
zerokcd12:11
zerokwrong window ^_^12:11
luksI don't suppose canonical would sue you for importing bzrlib, though :)12:12
zerokluks, :) i still prefer to be on the safe side :) so perhaps i will just write some kind of plugin infrastructure for that code and post a plugin thta does what i want on my homepage as "example" :P12:13
luks:)12:13
luksthat's how gstreamer does it12:13
zerokso far only mercurial is affected anyway ^_^12:14
zerokhttp://codebrowse.launchpad.net/~zerok/rstsuite/main/annotate/zerok%40zerokspot.com-20071211113206-rnyh73s36xuw7dxr?file_id=__init__.py-20071027132757-ow0jgpc6iiwc1buy-2 ^_^12:14
abentleydato: That would be a wild guess.  I don't think it's unreasonable to ask people to set public branches for their local mirrors.12:30
abentleydato: The other thing you can do is just not use a local mirror for "send": bzr send http://bazaar-vcs.org/bzr/bzr.1.0/12:57
PengThat would waste some bandwidth though, right?13:09
kwwiihi all13:10
kwwiianyone know who made these t-shirts: http://sinecera.de/DSC03480.JPG ???13:12
jamcanonical brought them to pycon last year, but I don't know what company they used13:15
mwhudsonwe should get some more of them...13:17
abentleyI would like one...13:17
zeroksame here :)13:17
jamyeah, so would I13:17
jamthe funny thing is that none of the real developers got one13:17
zeroklol13:18
jamwe were talking about possibly slogans at the last all-hands meeting13:18
jamSo a new one may be on the way13:19
=== RichElswick is now known as q3sour
* mwhudson dances a smug little dance13:20
kwwiijam, mwhudson: hehehe, canonical is trying to figure who made them so that we can make more :-)13:26
jamI thought I recognized your name, but /whois didn't show me anything interesting13:27
kwwii;-)13:27
kwwiibtw, I am making an eps version of the bzr logo for the new advertising agency13:28
kwwiiso if anyone knows the pantone colors for the logo, let me know :-)13:29
mwhudsonoh, duh13:33
jelmerzerok: you could provide a plugin that adds bzr or hg support13:34
jelmerzerok: and distribute that separately13:35
zerokjelmer, yes, will do that the moment i have a idea how to handle plugins in my little tool :)13:35
jelmerah, k :-)13:35
zerokjelmer, it just feels like such an overkill for such a simple tool ;)13:36
zerokbut eventually i will end up doing it anyway since i want to extend rst in the same way13:36
ndimkwwii: I like that T-Shirt. Can I get one with "bazaar/git/everything-but-SVN-or-CVS" written on it?13:39
ndim:)13:39
kwwiindim: hehe, if you point me to the person with the original artwork, I could try :p13:41
=== doko_ is now known as doko
jamspiv: Just to reply to your comment, the code is just stress testing our graph ancestry code, to make sure that I'm giving correct answers before we finally approve it.13:51
jamspiv: So basically I find all of the merge nodes in an ancestry (such as bzr.dev), and then test that find_difference() gives the same results as set operations, and that heads() gives reasonable results.13:52
sabdflwhats the syntax for bzr commit --fixes with multiple lp bug numbers?14:10
LarstiQsabdfl: iirc, --fixes lp:# --fixes lp:# --fixes lp:#14:16
sabdflthanks LarstiQ14:17
sabdflis there a command to show the properties on a revision?14:18
mwhudsonsabdfl: i've resorted to python2.4 -c 'from bzrlib import branch; b=branch.Branch.open("."); print b.revno(), b.repository.get_revision(b.last_revision()).properties' in the past14:21
LarstiQsabdfl: cat-revision may also do it, but perhaps not in a format that you prefer14:22
=== cprov is now known as cprov-lunch
PengApparently when git packs, it can store deltas between any revision, not just related ones. Interesting, no?14:48
datoabentley: ok, thanks. I've set up public_branch now.14:56
ubotuNew bug: #175569 in bzr "cat-revision gives backtrace when invalid revid is specified" [Undecided,New] https://launchpad.net/bugs/17556915:05
jamPeng: yes, that is something we are looking at. It can also store deltas between arbitrary file texts15:06
jamUsing a heuristic to determine that these file texts should be similar to those15:06
lukswouldn't that make extraction slower? (since you usually need those left-hand parent texts together)15:08
jamPeng: IIRC it uses the basename of the file to find similar names15:10
jamwhich works well for the Kernel15:10
jambecause they have lots of Makefile and other repeated files15:10
ubotuNew bug: #175570 in bzr "bzr cat over bzr protocol fails" [Undecided,New] https://launchpad.net/bugs/17557015:10
jama quick search through bzrlib shows 2 Makefiles (not very similar)15:11
jamand a bunch of __init__.py files15:11
jamwhich might compress well because of common Copyright headers15:11
jamand no other repeated filenames15:11
jamluks: It uses some other heuristics, too15:11
jamSpecifically, it also sorts by text size15:12
jamand tends to put the largest text as a fulltext15:12
jamwhich is often the most recent15:12
jam(because people usually *add* and rarely remove)15:12
jamluks: anyway, I found a few sub-optimal cases for git's algorithm15:13
jamat least, if I was implementing it the way they did15:13
jamgoing by ancestry did a *lot* better than going purely by file size15:13
jamespecially for merge nodes15:13
jamsince merge nodes tend to have a diff to one parent of the sum of changes on the other side15:13
jamanyway, the #1 thing we want to get is arbitrary compression parents15:15
luksbut that's also size vs. extraction speed, IMO15:15
jamso that we can experiment and find out what works best15:15
luksbecause using the right parent would give you smaller diffs, but for extraction is better if texts have the same base, no?15:15
ubotuNew bug: #175572 in bzr "smart server emits traceback while get log via bzr protocol" [Undecided,New] https://launchpad.net/bugs/17557215:15
jamluks: well, at the very least the fewest number of bytes to read to reconstruct all the texts you want15:16
jambut some of that gets really hand-wavy15:16
jamoh, I also found that for *generating* them, usually the base that makes the smallest diff15:18
jamalso makes for the *fastest* diff15:18
jamluks: the other problem with using right parent is more when you use both parents15:18
jambecause then you have to extract 2 histories for the file15:18
jamrather than just along one direction15:18
luksbut you rarely do that, especially in bzr15:18
jamluks: compare against the non-left parent? Probably true15:19
luksyep15:19
jambut "build_tree" performance is probably a bigger deal than "diff"15:19
jamsince you usually only diff a small number of files15:19
jambuild_tree touches every file15:19
lukshmm, actually even if you use non-left parent you usually get the same base, because not many branches have over 100 commits before they get merged (or whatever is the max delta chain constant)15:24
=== cprov-lunch is now known as cprov
=== mrevell_ is now known as mrevell
ubotuNew bug: #175589 in bzr "suggested update when bound branch is out of date does confusing things" [Undecided,New] https://launchpad.net/bugs/17558916:30
Qhestiondoes bazaar run under jython?16:44
beunoQhestion, I'm pretty sure it doesn't16:45
Qhestionany reason for that?16:45
Qhestioni mean, i would like to build something on bazaar, and i am pretty sure i will use java16:46
beunoQhestion, I don't know the specifics, Verterok does, but he usually isn't here at this hour. I think it has something to do with the OS calls, but I might be wrong. It's the lack of Jython's support for some features16:46
jamQhestion: jython was stuck in python <=2.3 ?? and we require 2.416:47
Qhestiondammit16:47
jamI thought Verterok mentioned that jython would be updating to 2.5 compatibility16:47
jamReal Soon Now16:47
beunothere you go, a much nicer explanation  :D16:47
Qhestionone day bazaar will get me to switch to python...16:47
jamAs far as running the test-suite on jython16:47
jamWe use os.chdir() as part of the test-suite16:47
jamto ensure that tests have sanitized directories to work in16:47
jam(basic sandboxing of each test)16:48
jambut AFAIK Java doesn't support chdir()16:48
beunoQhestion, Verterok does interact with bzr from Java (eclipse, specifically) using a plugin he wrote to output XML and parse it16:48
datojam: really? </java-ignorant>16:48
jamdato: last I knew, it was part of the java security model16:48
jamto sort of hide anything like cwd16:48
Qhestionjava-ignorant? what is so bad about java?16:48
jamI *do* know that jython with python2.3 does not implement os.chdir()16:49
datoQhestion: I was stating that I don't know much myself about java intrinsics16:49
Qhestionoh ok16:49
jamQhestion: I can also say that for commandline apps, java's startup overhead is pretty prohibitive16:49
jambut for something like an IDE which stays up for a while16:49
jamit isn't something you pay for every command16:49
jamAnyway, I haven't tried bzrlib in jython for >1 year16:50
Qhestionwell, java needs only ONE startup16:50
Qhestionanyway, this is the only negative thing i see about java...16:50
ubotuNew bug: #175594 in bzr "UnicodeDecodeError after commiting" [Undecided,New] https://launchpad.net/bugs/17559416:50
jamThings could certainly have changed since then16:51
jamQhestion: if you are using a program which starts and stops a lot16:51
jamdoes java leave the interpreter running in the background?16:51
Qhestionthats not what i mean16:51
Qhestionjam, its what windows does for you16:51
Qhestionof course it needs startup16:51
Qhestionbut thats within 0.05 seconds16:51
Qhestionthe REALLY slow thing is applets, but thats not really java16:52
Qhestionlets see. i just ran "ant" twice.16:52
beunothe only Java apps I use take forever to start (eclipse, azureus and openoffice)16:52
Qhestion'ant' is the 'make' of java16:52
beunoand openoffice rarely uses java16:53
jambeuno: is OOo actually java?16:53
Qhestionbeuno, that has NOTHING todo with java16:53
QhestionNOTHING.16:53
beunojam, in some bits, yes16:53
Qhestionok results: first ant run (since computer restart): ca. 1 second16:53
Qhestionsecond run: cant count that fast16:53
beunojam, if you disable java in OOo, you lack some features, but it starts up 12x faster16:53
jamQhestion: so there are 2 bits... you can keep the interpreter running, which means all java processes re-use the interpreter. AKA one crashes they all die16:53
Qhestionno, jam, no16:53
jamQhestion: or you can spawn new ones and pay for it16:54
jamQhestion: it has to kill the interpreter16:54
jamnot just a simple exception16:54
Qhestionjam, its what all programs do16:54
Qhestionthey get cached16:54
jamanyway, I'm happy to hear that java got better, though16:54
Qhestionok another stupid thing of java: Swing16:54
Qhestionthe standard user interface16:55
Qhestionit looks ugly, feels ugly, and is slow16:55
Qhestionon any platform!16:55
beunoQhestion, I've heard the java > python migration is pretty painless...   :p16:56
Qhestionanyway, dont want to start a language war here, especially since bazaar is written in python, which means i am on the wrong side...16:56
Qhestionbeuno, actually i use python pretty much16:56
Qhestionfor SMALL scripts16:56
Qhestion(everything less 5kB)16:56
Qhestionbut i definitely love the features eclipse offers me - especially code completion16:57
beunoah, I tend to use bash in those scenarios16:57
dato.oO(so if it grows more than 5kB, you rewrite in java? :-P)16:57
beunobtw, what do you bzr guys use to code in python?  jam?16:57
Qhestionsince there is no code completion / intellisense stuff for pyhon anyway, i just use Vim16:57
jambeuno: vim16:57
Qhestiondato: head of planning? ;)16:57
* dato vim too.16:58
Qhestionoh good.16:58
Qhestionso, what about code completion?16:58
jam^P16:58
jam^X ^L16:58
Qhestioncheater!16:58
Qhestionerrm in english please?16:58
jam Vim has code completion16:58
jamusing Ctrl+P16:59
beunoQhestion, ^ == control16:59
jamfor single word completion16:59
jamand Ctrl+X Ctrl+L for whole-line completion16:59
Qhestionbeuno yes, realized that too late16:59
jamA bit emacs-ish for my taste, but it generally works16:59
jamI tried eclipse...16:59
jamThe problem is that it really didn't want to work on files that were not in an Eclipse project17:00
jamwhich was okay, I can create on and add them17:00
Qhestionoh not THAT sort of code completion17:00
jamBut then an Eclipse project was fixed17:00
Qhestioni meant intelligent code completion17:00
jambased on Absolute path17:00
jamRather than saying "the files underneath this directory"17:01
jamwhich means that having 100 different branches of bzr.dev (which I do)17:01
jamis out of the question17:01
Qhestionlike, showing what is in namespace xyz and showing api docs in a popup when selecting one item17:01
jamI wasn't going to go through the Eclipse overhead every time I wanted to work on a feature branch17:01
jamQhestion: ctags -R .17:01
jamAnd then in vim17:01
jam^]17:01
Qhestionis that a command?17:01
Qhestioni am just too new in vim...17:02
jamWill follow the tags to the definition under the current position17:02
Qhestionhow do i enable that?17:02
jamQhestion: ctags is a program which reads code and builds up a "tags" file of where there definitions are located17:02
jamI don't know if it is bundled into gvim for windows or not17:02
Qhestiongvim?17:02
Qhestionhuh?17:02
Qhestionahh yes i remember17:02
jamOn Mac, I see a Tools/Build Tags file17:02
jamin the menu17:02
Qhestion"(18:03:01) jam: in the menu" --> for that you need a menu :/17:03
Qhestionwe are talking about vim right?17:03
beunoQhestion, gvim, it's a GUI for vim17:04
Qhestion"(18:02:52) Qhestion: ahh yes i remember", but i dont use it...17:04
Qhestionmaybe i should17:04
beunoQhestion, in the end, it's whatever you're comfortable with I guess17:05
* dato idly wonders if he'll still use vim, or at least some modal editor, in 2030.17:05
beunoalthough vim seems to win over people eventually17:05
Qhestionits not that i dislike vim. its just... well, i am only half through the manual17:05
jamQhestion: if you go through the tutorial, it does a decent job of warming you up to it17:06
jamOh, the other eclipse issue... no proper vim integration for its editor :)17:06
jamIt had some sort of vim plugin17:06
jambut the only good one was like $2017:07
jamAnd the limited teaser they had was broken17:07
Qhestionjam, there is eclipse-vim...17:07
jamSo I couldn't evaluate whether it would be worth anything17:07
Qhestionnot that i checked it...17:07
jamQhestion: I'm guessing that is the one I was looking at17:07
jamI had similar issues with the W IDE17:07
Qhestionon the other hand, there is something that integrates eclipse (headless, no gui, just lib) into vim (ui)17:08
jamWingware17:08
jamIt *had* a Vim mode, but it didn't support the best Vim command17:08
jam'.'17:08
jam(To redo the last action, which I use *all* the time)17:08
jamAnd is, IMO, one of the strongest reasons to use vim17:08
Qhestionjust another question: how often do you use your browser (!) to look at apidocs?17:08
jamOne you get used to the idea of applying commands to a movement range17:09
jamQhestion: pretty much never17:09
Qhestion???!?!?!?17:09
datojam: now that you mention "."17:09
datojam: http://chistera.yi.org/~adeodato/blog/uuu, in case it can amuse you17:09
jamQhestion: I find jumping around source code just a ":e bzrlib/foo.py" away17:09
jamdato: interesting17:10
jamYeah, ViM uses "uuu"17:10
jam"U" is the confusing one for me :)17:10
jamQhestion: the other thing you have to watch out for with vim.... Getting the Capslock turned on17:10
jamSuddenly your editor nukes itself17:10
Qhestionhehe17:10
Qhestionor missing the right key with the finger...17:10
jamk == scroll one line down, K == lookup this function in the man pages17:11
Qhestionand suddenly doing something dangerous...17:11
datojust make CapsLock an additional control key17:11
datobe done with it :)17:11
jamj == scroll one line up, J == wrap the next line onto this one17:11
Qhestionbtw how can i use copy/paste with vim?17:11
jamQhestion: on the plus side ViM has "uuuu" when you really need it :)17:11
jamQhestion: y == "yank"17:12
jamp == paste17:12
jamP == paste before this location, p == paste after this location17:12
jamQhestion: the other thing you need to get used to, is that Vim has commands that take movement keys17:12
jamso "yj" is copy from this to the line above17:13
jam"yk" is yank from this to the line below17:13
jam"yw" is yank from this word to the next17:13
datojam: backwards17:13
dato(above/below)17:13
Qhestionyes17:13
jamdato: my fingers know the difference17:13
jammy mind does not17:13
datohehe17:13
Qhestionwell, having played nethack a lot, same goes for me17:13
jamQhestion: when you get *used* to it. It is very intuitive and powerful17:13
Qhestionalthough nethack was *before* vim for me17:14
jam"yt)" copy all characters until you get to an end parenthesis17:14
jam"c%" change all of the characters between the current parenthesis and its matching one17:14
Qhestionhjkl is intuitive for me, second-class code completion isnt17:14
jamI use "c%" a lot to change the arguments to a function17:14
datojam: "t" and "f" are teh awesome, yet many vim users do not know about them17:15
jamAlso, you can configure both bash and zsh to use "set -o vi"17:15
datoct" anyone?17:15
jamand you get to edit your command line17:15
jamdato: yep17:15
jamQhestion: also, readline supports vim mode17:15
Qhestionthe command i like most in vim DEFINITELY is17:15
Qhestion"help!"17:15
jamso you can put into ~/.inputrc:17:16
jamset editing-mode vi17:16
jam$if mode=vi17:16
jam    set editing-mode vi17:16
jam        set keymap vi17:16
jam$endif17:16
datoQhestion: nice17:16
jamAnd then in python17:16
jamyou get vim mode as well17:16
jam(in interactive python shell)17:16
jamas well as any other apps that use INPUTRC and readline17:16
jamThe only problem is it doesn't always support all of the 'c%' craziness17:16
jamso once you've been spoiled by ViM, some of the Vi-like implementations fall a bit flat17:17
Qhestionhmm if there is no .inputrc in my ~, shall i just create one?17:20
jamQhestion: yeah17:20
jamYou may also need to set the environment variable INPUTRC17:20
jamexport INPUTRC=~/.inputrc17:20
jamworks for me17:20
jam(I put it in both ~/.bashrc, and ~/.zshrc)17:21
Qhestionon windows! :/17:21
jamQhestion: I'm not sure there, you could set INPUTRC in environment variables17:21
Qhestioni know windows is ugly. i just wait for kde 4 to be released and then switch back17:21
jamI can't walk you through the specific dialogs17:21
Qhestionto the home path or to the file?17:21
jamQhestion: file17:22
Qhestiondialogs? there is SET for that ;)17:22
jamQhestion: but SET is only for the current command17:22
jamcmd.exe17:22
jamSetting it by dialogs sets it from there onward17:22
jamSomething like Right-click on My Computer, Settings, One page is Environment Variables and Virtual Memory settings17:23
jamand you have to click a button to pop up another dialog17:23
jamwhich lets you set All-user env vars17:23
jamas well as just env vars for your user17:23
Qhestionjam: for current console session, you mean. anyway, i want to test it first17:24
Qhestionso now that i have that command17:26
Qhestionerm file i meant17:26
Qhestionhow do i trigger the auto completion?17:26
jamQhestion: for what program?17:26
Qhestionvim :)17:26
jamVim has completion inside it17:26
Qhestioni made that .inputrc file17:26
Qhestionwhich you told me to make17:26
Qhestionnow what do i do now?17:26
jamAFAIK windows cmd.exe doesn't handle vim-style completion17:26
jamyou need to be running bash or zsh17:27
jamQhestion: if you are just running vim17:27
jamthen it should already have it17:27
Qhestionyes, but what is the key for it?17:28
jamTo complete a word? ^p for "previous existing" and "^n" for next17:28
jamso you type something like "get_fo^p^p^p" until it completes like you want it to17:29
Qhestionif i try for example "raw_in^p" it says not found17:30
Qhestionalthough THIS sort of autocompletion is what i want17:30
jamQhestion: I don't believe Vim has Intellisense yet, though I think it is high in priority17:30
jamIt has "matching string" completion17:30
Qhestionsame goes for "os.^p", which i would LIKE to display every thing in os17:30
jamso if you have a file open with "raw_input" then it will find it17:30
jamQhestion: vim doesn't do that17:30
jam(I haven't really needed it)17:30
Qhestionyet? so vim is young? :/17:31
jamIt is hard to do that for python, because it is a bit dynamic, so systems which try are at best approximating17:31
datojam: I think vim 7 got something, omnicompletion I think they call it17:31
dato:help new-omni-completion17:31
dato(never tried it)17:31
Qhestionoh yeah there was a funny comment: "High dynamic means you dont know what it will do until you run it."17:31
Qhestionoh i just remembered one more stupid thing about java: ram usage17:35
Qhestioni just thought about using my VERY old notebook for programming... but definitly not with java17:35
jamdato: so new-omni-completion is not supported for python??17:36
jamAt least, that seems to be what it is saying17:36
jamWell, it says it is supported17:36
jambut doesn't give you a link to more details17:36
jamAnd doing "^X ^O" gives me "omnifunc not set"17:37
Qhestionhmm C can call Python functions right?17:39
datojam: try :set omnifunc=pythoncomplete#Complete17:39
jamQhestion: yes, at least you can embed the python interpreter into a C program17:40
datojam: the distributed ftplugin/python.vim does that, and it... works17:40
datoO M G17:40
datowith help in the top17:40
Qhestionjam: and Java can call C. so Java should be able to call python...17:41
jamQhestion: sure, but that doesn't mean you get nice-to-use objects in Java17:41
Qhestioni dont care for that17:42
Qhestionall i want is to call the bazaar functions17:42
Qhestionas if would call em from the command line17:42
beunoQhestion, Verterok does that from eclipse17:43
beunofor the bzr-eclipse plugin17:43
Qhestionproblem: the returned data should be easily parsable17:43
Qhestionand easy = programming_effort + cpu_effort17:43
beunoQhestion, parsing XML seems to fall into the category, doesn't it?17:44
jamQhestion: well, you can do "bzrlib.commands.main()" but otherwise you probably want to deal in real objects17:44
Qhestionwhy oh why is bazaar written in python? i understand that python is the better language, but javas tools are waaaaaaay more comfortable...17:46
LeoNerdBecause most languages are chosen for their suitability to the problem, not because someone happens to have a little IDE widget they prefer17:46
Qhestionthat was a rhetorical question.17:47
Qhestion("why do they always answer my rhetorical questions?" -- "i know!")17:47
Qhestionoh nice, i will write it in python then. damned.17:48
=== cprov is now known as cprov-away
thatchbzr question (0.91 and 0.92) -- is 'bzr diff' supposed to show file timestamps in utc?19:14
PengHey, you're right, it does.19:21
jelmerhmm, there appears to be overlap betwene bzr-cpick and replay in bzr-rebase19:23
datooh, I never heard of -cpick19:24
thatchPeng: do you think the utc-ness is intentional so I should get used to it, or patch/file bug?20:03
lifelessthatch: I think we want to accept any timestamp and then show them consistently20:04
lifelessso we should change log & diff and others at the same time; I thought there was a bug around this20:05
thatchlifeless: you know I'm awful at coming up with good search terms for bzr bugs and/or docs...20:05
thatchI find bug 12131320:06
ubotuLaunchpad bug 121313 in bzr "bzr info shows me times in unuseful timezones" [Low,Confirmed] https://launchpad.net/bugs/12131320:06
lifelessthats probably it20:08
thatchI should just get used to knowing when it is in UTC, eh? :)20:10
lifelesslol no -20:10
zerokhi :)20:45
datolifeless, thatch: relatedly, bzr log time zone is configurable via --timezone (local, original, or utc)20:50
datod'oh, of course it says that in the bug that thatch pasted :)20:52
AfCFrustrating: because the current releases are called 1.0rcX, Gentoo is waiting until the next "real" release to package it, and not bothering with the rc's. I tried pointing out that 1.0rc1 == 0.93, but they didn't buy it.22:05
datogo debian! :-P22:06
Kamping_Kaisertheres me thinking gentoo packaged everything with source *grin*22:07
pooliehello22:12
pooliehi andrew - that's a bit annoying22:13
poolieit would be good to get it in at least behind a mask (if i recall the term correctly)22:13
AfCpoolie: yeah, that's what I was trying to convince them to do, but they sat on it. Alas.22:13
AfCDid those problems with the bzr:// functionality not working with packs get resolved?22:14
poolieafc, yes, i believe they are22:32
AfCThat's encouraging to hear.22:32
AfC[it is faintly disturbing to me that the Bazaar project doesn't use bzr:// in publishing itself]22:33
pooliewe should really set that up22:38
pooliein fact, i think it either is live on launchpad now, or will be soon22:38
PengSeriously? Gentoo won't package it?22:38
pooliei'll check22:39
AfCPeng: they _could_ package it, but they didn't feel like it, waiting for an "actual" release instead.22:43
PengWell, you *have* been releasing a lot of RCs.22:44
AfCPeng: (I'm sure if a Gentoo packager had been actively using it, then it'd be a different story, but for a package a person isn't using & testing & caring about, it's not entirely unreasonable)22:44
AfCPeng: (you mean "they"; I'm not one of the Bazaar hackers)22:45
PengOkay, they.22:45
PengIt's not unreasonable. It's just unfortunate, especially since bzr.dev is almost as good as releases.22:46
poolieit would be nice someday to get a gentoo ebuild that installs from trunk23:22
poolieas i believe they do with emacs23:22
pooliebut, let's get debs of that at least, first23:22
poolieigc, could you add me as a pypi admin for bzr sometime?23:23
poolieusername 'mbp'23:23
igcpoolie: sure23:24
pooliethanks23:24
pooliejam, it varies between compilers on 64 bit platforms whether a long is 32 or 64 bits23:26
abentley Gentoo not giving users the latest & greatest?  How very un-Gentooish.23:26
poolieiirc, for gcc it's 64 bits, for ms only 3223:26
jamhmm... I don't know that dot will gracefully handle 2068 nodes with text, what do you guys think?23:34
denndaHey there. I have a patchfile (output from bzr diff). How do I apply those patches?23:35
jambzr diff | patch -p0 ?23:35
denndapatch patchfile.patch didn't do anything23:35
jamdennda: I think you need -p023:36
jamand usually you pass it in on stdin23:36
jampatch -p0 < patchfile.patch23:36
denndaah yes23:36
denndait seems not to take a file as argument23:36
denndagood. worked. thank you23:37
* jam => family time23:37
=== mw is now known as mw|brb
lifelessdennda: also, bzrtools has 'bzr patch'23:57

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