/srv/irclogs.ubuntu.com/2009/07/09/#bzr.txt

RenatoSilvaverterok: currently to_file expects str, if we change it with codecs.getwriter, it would now expect unicode00:02
RenatoSilvaverterok: btw, why do you use xml-rpc in java plugin? why not talk directly with xmloputput?00:03
verterokRenatoSilva: I got lost :)00:04
verterokRenatoSilva: directly how?00:05
RenatoSilvaverterok: currently to_file expects str, if we change it with codecs.getwriter, it would now expect unicode, and that py2 auto ascii encode/decode thing would get place, and would raise errors for non-ascii stuff...00:05
RenatoSilvaverterok: I mean for example00:05
RenatoSilvaverterok: you want to pull branch's log, then why not you run bzr locally and parse the XML response? why do you have to send an xml-rpc call to a local server, then get the response and parse it?00:06
RenatoSilvaverterok: the server runs bzr locally anyway00:06
verterokRenatoSilva: mainly for performance reasons00:06
verterokRenatoSilva: the startup time in windows is terrible00:07
RenatoSilvaverterok: you mean xml-rpc server keeps the executable in memory?00:07
verterokRenatoSilva: I'll take a look to the codecs.getwritter, don't have the code fresh enough in my head00:07
verterokRenatoSilva: right, only oone bzr process00:08
verterok*one00:08
RenatoSilvaverterok: there isn't a way to do this in java?00:08
RenatoSilvaverterok: if python does, java does it too ^^00:08
verterokRenatoSilva: hmm...what?00:09
RenatoSilvaverterok: the plugin could load bzr.exe into memory00:09
verterokRenatoSilva: we need to use bzrlib API00:09
RenatoSilvaverterok: oh I see, bzr-java-lib...00:10
verterokRenatoSilva: I'm missing something, could you extend? :)00:10
RenatoSilvaverterok: you mean start bzr.exe every time you need to run a command is too slow, so you put xml-rpc server in scene for keeping one executable in memory, and run the commands faster, right?00:11
verterokRenatoSilva: yeap, exactly00:12
verterokRenatoSilva: take a look to the different *Runner's in bzr-java-lib00:12
RenatoSilvaverterok: I don't have the code right now...00:13
verterokRenatoSilva: the XMLRpc extends the CommandLine00:13
RenatoSilvaverterok: my idea was, when the plugin is loaded, it loads the executable into memory.When it wants to run something, then it activates bzr-java-lib, and passes the cached executable, so that bzr-java-lib does not have to start the proccess.00:14
RenatoSilvaverterok: both bzr-eclipse and bzr-java-lib would need changes in the code to achieve this00:14
RenatoSilvaverterok: however I'm not sure if you can do this kind of thing in Java00:15
verterokRenatoSilva: how would you load the executable into memory and use it several times?00:15
RenatoSilvaverterok: I'm guessing: if python can, then yes java can!00:15
verterokRenatoSilva: I think it could be possible with JNI...but you know...JNI00:15
RenatoSilvaverterok: and how python does?00:16
RenatoSilvaverterok: how does the xml-rpc server loads and keeps the executable in memory?00:17
verterokRenatoSilva: bzr-java-lib executes: bzr start-xmlrpc in a subprocess00:17
RenatoSilvaverterok: also, maybe bazaar should have some kind of "daemon" mode00:17
RenatoSilvaverterok: oh I see, the server is a bzr instance itself + xmlrpc plugin. When you send a command, the server is "inside bzr", so it does not need to run bzr.exe. I thought for a moment that run_bzr was running the process...00:21
verterokRenatoSilva: there is the bzr-serivce plugin00:21
verterokRenatoSilva: right00:21
verterok:)00:21
RenatoSilvaverterok: nice00:22
RenatoSilvaverterok: how does it work? you send raw arguments to a net socket?00:23
verterokRenatoSilva: the bzr-service plugin? or the xmlrpc service?00:23
RenatoSilvaverterok: or do you have a formal protocol?00:23
RenatoSilvaverterok: bzr-service00:23
verterokRenatoSilva: jam wrote it, I think it send the command args via the socket00:24
RenatoSilvaverterok: hum, what do you think is simpler code, talking with xmlrpc or bzr directly?00:25
verterokRenatoSilva: bzr via bzrlib?00:25
RenatoSilvaverterok: ok, but you're the bzr-java-lib developer too, right? :)00:27
RenatoSilvaverterok: not talking about xmloutput anymore hehe00:27
verterokRenatoSilva: xmlrpc is more flexible in that you can talk to it from almost every language00:27
lifelessone issue with xml though00:27
RenatoSilvaverterok: every language?00:27
lifelessnot all bzr commit data can be put into xml now00:27
poolielifeless: hi00:28
RenatoSilvalifeless: yeah, xml is maybe an unecessary middleware00:28
verterokRenatoSilva: bzrlib is only usable from python00:28
lifelesshi poolie00:28
pooliewhat did you mean by "guess-good"?00:29
lifelessthat it had tried to help you ;)00:29
RenatoSilvalifeless: also, things get weird when you send xmloutput stuff through xml-rpc: xml inside xml...00:29
poolieand "it" is?00:30
verterokRenatoSilva: the current xmlrpc service is a sort of a hack :)00:30
lifelessbzr-guess00:30
lifeless're bzr-guess helping you that is good to know'00:30
RenatoSilvaverterok: sorry I read bzrlib as "bza-java-lib"00:30
RenatoSilvaverterok: what I mean with " hum, what do you think is simpler code, talking with xmlrpc or bzr directly?" is00:31
RenatoSilvaverterok: from java code00:31
RenatoSilvaverterok: in bzr-java-lib00:31
poolieoh ok00:31
verterokRenatoSilva: currently there is no way to talk to bzrlib directly from Java, I'm trying to implement OSLocks in Java, in order to use Jython00:33
RenatoSilvaverterok: maybe being able to directly send arguments to bzr, but having the process chached in memory, maybe it would be eassier to java code...00:33
RenatoSilvaverterok: I'm talking about service plugin00:33
verterokRenatoSilva: xmlrpc is quite simple, you just send basic data types and receive the same (Strings, int, HashMap, Arrays)00:34
RenatoSilvaverterok: imagine  in java code something like Bazaar bzr = Bazaar.getServiceInstance(); then you bzr.run('log -r 10..12') ro so, instead of building an XML and send as xml-rpc00:35
RenatoSilvaverterok: what would be easier, that's what I mean00:36
RenatoSilvas/ro/or00:36
verterokRenatoSilva: that's the way bzr-java-lib is sending the command :)00:36
RenatoSilvaverterok: anyway, would  the plugin work if bzr.exe is in another host and you don't have one locally?00:37
verterokRenatoSilva: but it's wrapped in IBazaarClient interface00:37
mwhudsonjelmer: we preserve the sha1 cache between runs now00:38
poolielifeless: quick call?00:39
RenatoSilvaverterok: that's the way bzr-java-lib is sending the command ---> bzr-java-lib could implement the cached process then, using the service plugin, so that users won't need xml-rpc anymore to run bzr faster...00:40
RenatoSilvaverterok: users could choose between xml-rpc or direct talk00:41
lifelesspoolie: sure00:42
RenatoSilva.00:43
verterokRenatoSilva: there is no cached process, it's just a python subprocess running a server00:46
verterokRenatoSilva: the advantage of xmlrpc is that's more standard vs a custom socket service00:46
RenatoSilvaverterok: by cached process I just mean the service plugin00:47
verterokRenatoSilva: in any case, the big plan is to have a more flexible xmlrpc service, using methods instead of running bzr commands00:47
verterokRenatoSilva: and avoiding to send xml in xml ;)00:48
RenatoSilvaok :)00:48
verterokRenatoSilva: also I thinked a *lot* about using other protocol insted of xmlrpc, but the main issue are the dependencies00:49
verterokRenatoSilva: e.g: using google protocol buffers00:50
verterokRenatoSilva: the other option is to use bzr smart server00:50
RenatoSilvaverterok: the protocol could be just command line arguments00:50
RenatoSilvaverterok: Bazaar.getServiceinstance().run("--version")00:51
verterokRenatoSilva: yes, but we need a way to receive the information, and possibly streaming it ;)00:51
RenatoSilvaverterok: through a socket00:51
verterokRenatoSilva: I mean the format of this info00:52
RenatoSilvaverterok: you receive the response throught the socket, then you parse the xmloutput output00:52
RenatoSilvaverterok: format = keep using xmloutput00:52
verterokRenatoSilva: with the current xmlrpc service in xmloutput (or with any other transport, e.g: socket) we need to send the whole info back00:53
verterokRenatoSilva: e.g: bzr log -v of bzr trunk is going to take a while, and it's a lot of info kept in memory (in the case of xmlrpc+xmloutput)00:54
RenatoSilvaverterok: List<IBzrLog> logs = XMLLogParser.parse(Bazaar.getServiceInstance(BZR_PORT).run('xmllog'))00:54
verterokRenatoSilva: we could stream with a custom socket server00:54
verterokRenatoSilva: but why reinvent the wheel ;)00:54
RenatoSilvaverterok: what are you planning to do to stream it?00:56
verterokRenatoSilva: also, using commands isn't such a good idea, in the case of bzr-java-lib it works, but it would be a lot better if we have custom service methods to call00:56
RenatoSilvaverterok: ok a more computer-friendly protocol, cmd line is mostly user-friendly, I agree00:57
verterokRenatoSilva: I think that the first step could be to implement the method to replace the xmllog command, and customize the xmlrpc server to stream the response00:58
RenatoSilvaverterok: doesn't bzr-service stream the response too?00:58
RenatoSilvaverterok: I've heard it's mature...or would that be JRuby?01:05
verterokRenatoSilva: I'm started a little experiment, write a Java version of the OSLocks, to be used with Jython01:05
RenatoSilvaverterok: what's OSLocks?01:06
verteroklifeless: do you think that ^ might work? :)01:06
RenatoSilvaverterok: doesn't Jython gives you full access to python code from java?01:07
RenatoSilvaverterok: what is OSLocks and why do you need it01:07
verterokRenatoSilva: bzr grabs a lock (read and/or write) on some files, it uses fctnl module or pywin32 to do that01:07
verterokRenatoSilva: as the code is C, Jython don't have access to those modules01:08
verterokRenatoSilva: Jython only can use pure python modules01:08
=== tro|| is now known as tro
RenatoSilvaverterok: and you have something in python to access the C code, doesn't bzrlib do this for you?01:09
RenatoSilvaverterok: shouldn't all bzr C code be wrapped to python for proper third-party access?01:09
verterokRenatoSilva: you can write python modules in C, but you can use those in Jython01:10
verterokRenatoSilva: yes, but Jython can't import the required modules01:10
RenatoSilvaverterok: I see01:10
RenatoSilvaverterok: then Jython is not a full python VM right?01:11
verterokRenatoSilva: it's01:11
RenatoSilvaverterok: environment I mean01:11
verterokRenatoSilva: but it can't use C extensions01:11
verterokRenatoSilva: some C extension are already ported to Java01:12
RenatoSilvaverterok: as it does not behave as a complete python vm (containing the c access module)01:12
RenatoSilvaverterok: if python itself can use C extensions, then Jython should be able too maybe01:13
verterokRenatoSilva: because the "system" langauages are different, some python C extensions were ported to Java, so Jython can take advantage of it's speed01:13
verterokRenatoSilva: not really, there is some related work in progress in JRuby using JNA, but not in Jython...yet01:14
RenatoSilvaverterok: ok01:14
wgrantRenatoSilva: It's not a matter of having a "c access module". CPython extensions use the CPython C API, which a Java implementation of Python obviously doesn't have.01:16
* verterok --> dinner, bbl01:16
thumperjelmer: lots of kudos to you, bzr-git imports working well now thanks to mwhudson's recent work to remember the sha1 cache01:17
thumperjelmer: can we do the kernel yet?01:17
thumperjelmer: mwhudson requested vlc which worked taking 13 or so hours, with 34k mainline revisions01:17
RenatoSilvawgrant: I see01:19
* RenatoSilva --> go home01:20
RenatoSilvathanks everybody01:20
wgrantthumper: Now that you've perfected bzr-git imports, can we get bzr-svn too?01:20
lifelessverterok: sorry was on a call01:21
lifelessverterok: whats the question in short?01:21
thumperwgrant: we are trying01:21
thumperwgrant: but it has issues with python 2.4 right now01:21
thumperwgrant: and our migration to python 2.5 took a hit with the developer working on it being sick for a week01:21
wgrantthumper: Well, I see a solution to that that you need to implement in a few months...01:21
wgrantOh, so you're actually doing it>01:21
thumperwgrant: but it is very much in the "near future"01:21
wgrantBut why only 2.5? Because Hardy doesn't have 2.6?01:22
mwhudsonthumper: https://code.edge.launchpad.net/~vcs-imports/wine/git-trunk still not happy :(01:22
thumperwgrant: because we need to migrate zope through 2.5 first01:22
thumperwgrant: we aren't jumping two versions at once01:22
mwhudsonwgrant: because going 2.4 -> 2.5 -> 2.6 is going to be easier than 2.4 -> 2.601:22
wgrantI guess so.01:23
thumpermwhudson: -> #launchpad01:23
lifelessmwhudson: !assertion01:24
mwhudsonlifeless: it's an opinion but a pretty firmly held one01:28
lifelessmwhudson: yeah, I realise.01:29
lifelessI hold the contrary position. Also fairly firmly ;)01:29
mwhudsonwell it's not either of us doing the work, so i guess it doesn't matter very much01:31
pooliethumper: were you going to  or did you propose an lca miniconf?01:43
thumperpoolie: thanks for reminding me, I'll talk to the people this afternoon01:50
verteroklifeless: np01:50
pooliejam, hello, if you're still here01:51
verteroklifeless: it wasn't a question actually :), I'll try to add an OSLock implementation for Jython, using java FileLock class01:52
verteroklifeless: is there any specific issues I should take care of?01:53
verteroklifeless: FileLock docs: http://java.sun.com/javase/6/docs/api/java/nio/channels/FileLock.html01:53
lifelessverterok: not really01:54
lifelessthe main thing would be to test interactions with python bzr oslocking of the dirstate file01:54
lifelessmake sure they mutex properly01:54
lifeless(read locks sharable, write locks exclude all readers and writers)01:55
verteroklifeless: ok, thanks for the tips :)01:55
krisfremenhi all, i have a repo that i made weird changes to, how can i just make one directory go back to the last comit?02:20
lifelessbzr revert -r -2 directoryname02:20
krisfrementhanks lifeless02:21
garyvdmI found a class that tests PyQt models. I'm using it now in qbzr.02:31
garyvdmhttp://paste.ubuntu.com/213349/02:31
garyvdmBut it use assert(). How important is it to use TestCase.assert*()?02:32
pooliegaryvdm: the main difference is that assert is skipped when run with python -O02:33
poolieso02:33
pooliewe ban its use in the main codebase02:33
pooliein tests, it's ok02:33
pooliebut not great02:33
garyvdmpoolie: So do you think I should customize it?02:34
pooliehm02:34
pooliewell, what are you going to do with it?02:35
pooliecopy it into qbzr?02:35
garyvdmYes - I have copied it into qbzr because it is not installed with pyqt02:35
=== mario_ is now known as pygi
garyvdmAnd I call it from qbzr's tests02:36
pooliei wouldn't stress about it02:37
garyvdmOk02:37
pooliehope that helps :)02:38
pooliefor inconclusive advice :)02:39
garyvdmlol02:39
garyvdmHmm - I can get a new test to run.03:03
garyvdmThis is qbzr/lib/tests/test_annotate.py : http://paste.ubuntu.com/213366/03:04
garyvdmbzr selftest -s bp.qbzr.lib.tests.test_annotate = Ran 0 tests03:05
garyvdm*cant get a new test...03:06
lifelessbzr selftest qbzr.*annotate03:07
garyvdmRan 0 tests in 0.149s03:07
lifelessits not being found then03:07
lifelesshav you added the file to the qbzr test list?03:07
garyvdmAh03:08
garyvdmNo03:08
garyvdmThank lifeless.03:08
lifelesspoolie: ping; a) hunger, b) you'll need time to get home for your call03:16
poolielifeless: btw did you file a bug for the unstacking issue with inventories?03:16
pooliewell03:16
poolieif you didn't it's ok, and i might just comment on 39141103:16
lifelessI hadn't no03:18
lifelessI was going to, but your adding a comment would be great03:18
lifelessI've isolated my machine turn offs03:18
pooliespiv, are you here?03:18
lifelessif I hold the left side of my laptop and press firmly (key press firmness) on the top right, it turns off.03:18
pooliethat's handy03:19
pooliemuch better than needing all that clicking through menus :)03:19
lifelessctrl-left click when the right edge is on my knee is enough03:20
=== MTecknology is now known as \MT
=== \MT is now known as MT-
MT-How hard is it to create a bzr repository? Is there any simple guide?03:26
lifelessbzr init-repo DIRECTORY03:29
lifelessbut you may not mean what you think you mean03:29
lifelesswhat do you want to achieve, in nontechnical terms03:29
MT-Me make pushy wordy stuff to metal box thingy and have wordy stuff in metal box thingy to get later :P03:31
MT-I had to have fun with that03:31
lifeless:)03:31
MT-I want to create the repository on the server that was freshly installed with Ubuntu03:31
jampoolie: I'm around for a bit now03:33
pooliejam, was just going to say hi03:34
poolieso "hi'03:34
poolielifeless, leaving now03:34
jamhi poolie03:34
lifelessMT-: sure; but I mean - do you want to put a new project under bzr control? or package trees, or ..?03:35
MT-lifeless: I'll eventually want to put projects in it, I just want the repo available to do things with, fresh installation all the way to having groups of users that can edit specific branches03:36
lifelessMT-: so, bzr doesn't really get organised that way :)03:37
lifelessand the very question led me to suspect you were starting off oddly ;)03:37
lifelessMT-: what VCS are you most familiar with?03:37
MT-lifeless: bzr, but using with launchpad03:38
lifelessok03:38
lifelessso on launchpad each branch is in its own repo03:38
MT-I've setup svn before and had it running over http[03:38
MT-oh03:38
lifelessand bzr will create a repo automatically when you push if there isn't one03:38
spivpoolie: I am, yeah.03:40
lifelessMT-: if you want http/s hosting, you can set that up now03:41
MT-I'd prefer only ssh03:41
lifelessin which case you're already setup:)03:41
MT-not yet :P03:42
MT-I need to find the IP of the server so I can install bzr03:42
lifelessMT-: oh, well thats entirely different :)03:46
lifelessanyhow, use unix permissions to manage access03:46
lifelesstry to keep the permissions for an entire repo the same03:47
lifeless(by which I mean *keep them the same*)03:47
lifelessjust create as many repos as you need03:47
lifelessand for single-shot things, just use 'bzr push bzr+ssh://host/...foo' to push up a branch03:48
MT-Can I set where the repos get created?03:48
lifelesswhen bzr automatically creates one, its inline with the branch03:48
lifelessotherwise they are all manually created03:49
MT-lifeless: I just meant, can I tell bzr that whenever somebody tried to do bzr push bzr+ssh://server/blah, blah is created within /bzr03:54
lifelessthat would push to /blah03:55
lifelessso its very easy, don't give them permission to write to / :)03:55
lifelesswhat I mean is bzr+ssh://server/ == / on the filesystem (unless you've chrooted your ssh environment)03:56
spivAnother option is to configure a different bzr serve command line in your ~/.ssh/authorized_keys.03:58
spivSee e.g. contrib/bzr_ssh_path_limiter \03:58
lifelessspiv: bzr on the client won't run that though03:58
lifelessspiv: isn't the result a permission error ?03:58
spivlifeless: you can create a key that always runs a specified command no matter what the client asks for03:59
MT-I just found the IP03:59
lifelessfooding03:59
spivlifeless: (and that command can then inspect an env variable to get the command client asked for)03:59
MT-So what I need to do is create a bzr group, add myself to the group, then set the group to own the directory where branches can be created in04:03
MT-lifeless: does that sound like what you were saying?04:12
MT-it didn't like that04:17
pooliespiv, so, i'm ready when you are04:44
spivpoolie: ok05:11
MT-When I try to push, I'm getting this error - bzr: ERROR: Unsupported protocol for url "sftp://bzr@208.107.52.90/bzr/tmp": Unable to import paramiko (required for sftp support): No module named paramiko05:22
MT-lovely that I pasted my ip...05:22
MT-ok, I figured it out05:26
MT-YES! I pushed it - although it still needs proper permission setup05:29
lifelessMT-: use bzr+ssh rather than sftp05:57
lifelessMT-: its a lot faster05:57
MT-lifeless: I was just working off a guide online. I think I'm readdy to tackle loggerhead now but I'm not fully sure how05:59
MT-looks like it defaults to port 808005:59
MT-ssh seems to work exactly the same except as you said, much faster :)06:00
MT-I need to wait for the guy to get home and forward the port. We don't have a decent router setup yet.06:02
poolieok, back into 39141106:32
MT-lifeless: you still around?06:47
lifelessby accounts06:47
lifelessthough I'm working on shrinking06:47
MT-lifeless: When I create a branch by pushing it, the branch is owner/group is me, so other users can't access it. How can I make it so the owner is bzr and the group is the top level directory of the files? If I just push a random branch the group is bzr for all files and if I push to a branch I set the group to devs the files group is devs.06:50
MT-hopefully that's easy to deal with. I'm probably thinking wrong too06:50
MT-if I do bzr initi-repo it's root:root, I imagine just changing that to bzr:devs would be easiest06:51
MT-looks like I should justuse mkdir instead of init-repo instead though, maybe06:52
poolielifeless: filed bug 397286 from our call06:52
ubottuLaunchpad bug 397286 in bzr "fetch(find_ghosts=True) may not find all CHKMap pages" [High,Confirmed] https://launchpad.net/bugs/39728606:52
lifelesspoolie: thanks06:52
lifelessMT-: set the sticky bit06:53
MT-?06:53
lifelessMT-: unix permissions06:55
MT-I've never heard of that..06:56
vilahi all06:56
MT-hi06:56
pooliehey vila06:56
lifelessactually, its not the sticky bit thats needed.06:56
lifelessone sec06:56
MT-lifeless: +t ?06:57
MT-or apparently 100006:57
MT-lifeless: whenever you know, I'm all eyes :)07:00
MT-s/know/remember/07:00
lifelessset the group on the dir; oh, and the umask needs to be altered to preserve g+w in new subdirs07:04
lifelessthat should be all thats needed07:04
MT-looks like +s on the parent directory07:04
MT-hrm, that preserved the group07:05
MT-shouldn't that inheret user too?07:06
MT-or is that not possible?07:07
lifelessyou'd need everyone to be the same user for that to happen :P07:14
MT-that's ok then :P07:15
MT-I love how loggerhead is breaking... oh well07:18
MT-not important atm :P07:18
MT-lifeless: I'm confused though.. I add a file to the branch, push the branch, and then no files show up in it07:19
MT-I guess it mush just be a server thing. I pull it and it shows up. Where does bzr keep the files?07:20
lifelessMT-: compressed in a database in .bzr/repository07:21
MT-oh07:21
MT-wow... I'm learning a LOT today07:22
MT-lifeless: thanks for all the help :07:25
MT-:)*07:25
lifelessanytime07:26
MT-probably ina few minutes :P07:27
lifelessEOD07:34
MT-You mean F?07:34
MT-oh - day07:34
MT-lifeless: does that mean you're gone or here for a few minutes?07:36
poolienight07:36
fullermdI'm pretty sure bzr takes care of preserving the g+w if it's set on <mumble>.  I don't believe it tried to explicitly set the group though.07:57
fullermdDepending on FS semantics, it'll inherit automatically all the time (BSD) or when the setgid bit is set on the dir (SysV)07:57
MT-I think bzr is working perfect now - but loggerhead is irritating me07:59
poolievila: bzr-gtk release woo-hoo!08:23
vilapoolie: <cough> yeah ! First release ! :-/08:23
pooliemm, why first release?08:23
poolieyour first one?08:23
vilaHopefully someone can populate the PPAs from there08:23
vilapoolie: yes :)08:23
MT-I'm trying to setup loggerhead. I have no idea what I'm doing... I installed it and I have no idea where to go from here. There doesn't seem to be any apache config created for it08:26
vilaMT-: Good idea ! You should file a bug asking for one08:26
MT-vila: idk if I screwed up or not08:26
MT-vila: Do you know what I'm supposed to do?08:27
pooliei think there's a readme file describing what to do08:27
vilaMT-: no, but I know that you shouldn't have such doubts as a newcomer, so filing a bug right now, before getting your hands dirty will help make future newcomers experience better :)08:28
vilaMT-: try pinging beuno / mwhudson as the usual suspects08:28
MT-vila: I already screwed with too much stuff. If I file a bug on it, It'll be on a fresh system. I did have it working for a short while before I did something stupid (following a random guide)08:29
MT-I'll try to flush everything about loggerhead off this sytem08:30
MT-vila: it's supposed to open port 8080 for it, right?08:31
vilaMT-: sorry, I never installed loggerhead myself so I can't really help here :-/08:32
MT-oh08:32
vilaI kind of understood at one point that the http server was talking to the loggerhead one but even that bit may be outdated08:33
MT-poolie: can you save my sanity?08:34
MT-I fucked this up and idk how to get it back08:34
MT- ^ I think that sums it up. I broke it08:35
poolieyou're not giving us much to go on there...08:35
spivMT-: can you be more specific?08:36
MT-I tried following this guide - http://wiki.flexion.org/LoggerheadServer.html - Then tried aptitude install loggerhead over top of it. It kinda worked but it crashed some so I tried to finish the process. That wouldn't work so I went back the the loggerhead package. I realized how screwed up I made it so I tried to purge apache2 and loggerhead. I searched the system for files named loggerhead and removed them. I tried to them reinstall apache08:38
MT-actually, now I'm getting this error - sh: getcwd() failed: No such file or directory08:39
spivGetting that error in what context?08:42
MT-root@carpo:/etc/apache2# /etc/init.d/loggerhead start08:42
MT-sh: getcwd() failed: No such file or directory08:42
MT-start and stop are the exact same message08:43
bialixhave a question about API versioning08:43
bialixdevelopers/api-versioning.html said: In the plugin foo exporting the API (in __init__.py):08:44
bialixversion_info = (0, 0, 1, 'beta', 1)08:44
bialixapi_version = (0, 0, 1)08:44
bialixwhat if my plugin don't have qpi_version declaration?08:44
bialixdoes bzr will use just version_info?08:45
MT-spiv: dpkg-reconfigure loggerhead and dpkg-reconfigure bzr-search show those messages too08:45
MT-even /etc/init.d/apache2 stop is doing it too....08:45
MT-I have a knack for destroying a system I guess08:46
spivMT-: if /etc/init.d/apache2 is doing that too then it sounds like you've somehow overwritten something pretty crucial in the system.  Hm..08:47
spivMT-: or,08:47
spivMT-: perhaps the shell you are invoking them from is running from a deleted directory?08:48
spivMT-: if you do "cd /" before running those commands, does that help?08:48
MT-doesn't help08:48
spivIt's certainly a misfeature of python on debian/ubuntu that "python setup.py install" of random projects tends to clash badly with OS-installed files.08:49
* MT- sucks at computers08:49
spivbialix: I don't know, sorry :(08:49
spivglyph: hey08:49
pooliebialix: no,08:49
spivglyph: nice to see you in here :)08:50
pooliei think it should just assume nothing about what api you need08:50
poolieie we don't know if you'll work with the current bzrlib or not08:50
bialixwait08:50
bialixit's about compatibility between plugins08:50
bialixe.g. bzr-explorer requires qbzr >= 0.1108:51
pooliespiv can i ask you about test_unstack_fetches in branch_implementations08:51
poolieoh right, this is your api, not the required api08:51
bialixbut qbzr has no api_version declaration in old versions08:51
spivpoolie: you can ask ;)08:51
pooliespiv, i think it ends up with the stacked branch being a local one08:51
bialixso now I'm checking qbzr version manually08:51
poolieeven when it's an iteration that's meant to be testing remote objects08:51
spivWithout looking, that sort of test bug isn't unheard of...08:52
spivpoolie: because of the sprout('newbranch') ?08:53
spivrather than sprout(self.get_url('newbranch')) ?08:53
spivThat looks likely to me.08:53
pooliespiv, yeah08:53
pooliealso, i really want to change get_transport and get_url to something like08:54
poolieget_test_url08:54
spivI'm pretty sure I've seen (and corrected) that exact error in other tests.08:54
poolieto make it more clear it's going to be parameterized depending on the test context08:54
spivIt's probably not hard to grep for.08:54
spivHmm, I think asking "self.get_url" where self is TestCase is pretty clearly doing that already.08:54
MT-spiv: can you tell me what shoudl be in /etc/apache2/envvars ?08:54
lifelesspoolie: I don't see it being any more clear, and think that sort of naming is an antismell08:55
pooliewhy?08:55
spivMT-: mine has http://pastebin.com/mfdeb8df, I haven't edited it since install.08:55
glyphspiv: I'm in here quite a bit :)08:56
spivglyph: and it's nice to see you every time :P08:56
glyphspiv: Well, then!  You too! :)08:57
poolieoh, i guess an antismell would be a good thing?08:57
MT-spiv: what file permissions?08:57
glyphspiv: sadly I am not here for an awesome reason.08:57
lifelesspoolie: I mean 'foo.get_transport' is clearly parameterised already08:57
lifelessby foo08:57
lifelessditto foo.get_url08:57
MT-spiv: nvm...08:57
MT-spiv: how do I get a scratch install of apache?08:57
spivMT-: you might want to try apt-get --reinstall08:58
glyphI still use Hardy on most of my machines.  But, the bzr-gtk packages are broken there.  Are those packages in the PPA supported for Hardy any more, or is it just bzr itself?08:58
MT-spiv: didn't do it..08:59
poolielifeless: well, that's just it, i think it's not clear09:03
pooliethe difference between self.thing and thing is not very large09:03
vilapoolie: I found it unclear for quite some time, but now that I've use get_transport and get_url quite a lot, I can't see how you can change them without massive disruption in the existing tests grep says 726 matches for get_transport and 475 for get_url...09:06
vilaThere mat be places where one or the other miss a relpath parameter, but most of the time (at least in the tests *I* encounter) they seem fine09:07
vilas/mat/may/09:07
pooliewell, i realize most of the tests mostly work09:08
vilaAnd I fixed a couple of bugs where the test were wrongly calling get_transport() instead of self.get_transport()09:08
spivpoolie: I think with get_transport vs. self.get_transport it can be unclear, but there's no non-test equivalent of get_url.09:08
pooliethat's true09:08
poolieand that there are many calls09:08
spivOr not so much unclear as easy to forget to use the self. version, and easy to miss when reading/reviewing.09:09
MT-OK! Apache is back running... now back to figuring out loggerhead09:09
spivActually, when I phrase it like that, that's the same sort of thing as this test bug -- it's easy to call sprout with a string that will implicitly use a local URL, rather than with a URL.09:10
spivIf you had to give it a URL, that test error would be much less likely.09:10
pooliethat's what reminded me09:11
poolie"it's possible to use it correctly" is not very convincing09:11
spivRight, too far down rusty's list.09:11
vilawell, if we could make get_transport() private, it makes me more happy :)09:12
spivIt's easier to misuse than use correctly, at least in the context of testing.09:12
spiv(It's convenient in ad hoc scripts though...)09:12
poolievila: which get_transport?09:12
poolie:)09:12
pooliepresumably you mean the factory function09:12
vilapoolie: yes :D09:13
poolieactually maybe tests for remote objects should have something to prevent them using the temporary directory unless they really want to09:13
pooliei bet if we did that it would find some bugs09:13
pooliespiv, have you thought at all about having a common base class between Repository and RemoteRepository?09:15
pooliesome things might like to live there09:15
spivA little.  It would probably be nice.09:15
poolielike has_same_location etc09:15
pooliei realize it probably can't share much actual implementation09:15
poolieor shouldn't09:15
spivIt could perhaps share some stuff like write group managment.09:16
spivglyph: wb09:17
MT-oh....09:17
glyphspiv: pro tip: fscking 3 terabytes takes a while, and probably shouldn't be done mid-conversation.09:17
spivglyph: I haven't looked at the state of PPA lately, but I see that bzr-gtk finally cut a release today09:18
glyphooh.09:18
glyphspiv: well in that case I'll write a shell script to apt-get update in a tight loop :)09:18
spivglyph: I think the PPA package was probably broken due to lack of a release compatible with current bzr, so with that fixed hopefully someone will update the package soon.09:18
glyphby the way09:19
glyphI have I mentioned that I love bzr?09:19
vilaglyph: no, do you love it ?09:19
glyphBecause I do.  I love it.  I have a natural tendency to be biased towards it, of course, because all you fine folks work on it and I like you so much09:19
glyphbut every time I have to interact with git, darcs, or even hg (and I've been trying out a lot of software recently, so I've been doing a lot of that) I find myself thinking that it would be a lot nicer if it were bzr.09:19
MT-spiv: ok... so loggerhead will load once. If I reload the page or click anythin the daemon dies... -_-09:20
spivglyph: btw, a test conversion I did of Twisted's trunk into the 2a format is only 20M.09:20
glyphspiv: !!!!09:21
glyphoh, just trunk.09:21
glyphStill, I'm pretty sure that's smaller than the SVN equivalent export.09:22
spivYeah, although I don't imagine a bunch of branches is going to explode it that much, the compression is pretty sexy.09:22
glyphIt took a minute, but 'du' reports the current repository is about half a gig.09:23
glyphif trunk is only 20M in 2a, I bet that it will be a looot smaller than that.09:23
spivI'm sure it will be smaller than that!09:23
awilkinsI've done conversions and just as 1.14-rich-root the whole history of all repositories in the project list comes out smaller than a single export of one of the branches09:23
spivISTR the last time I did a full conversion into an earlier format it was under 80M, and 2a is typically much much better...09:24
awilkinsA working copy would be huuuuge in comparison- 1.7 GB x2 is much bigger than 700MB (the bzr repo packs)09:24
awilkinsI converted it to 2a and only got a 50MB reduction from 700MB though09:24
spivIt's a bit confusing because Twisted's repo has some 'branches' that aren't actually branches that confuses bzr-svn a little into making some garbage branches.09:24
glyphspiv: I am 90% sure that the only 'branch' like that is actually 'releases/'09:27
pooliespiv, lifeless, vila, how do we feel at the moment about having eq methods on things like Repository09:27
glyphspiv: so if you could special-case that directory via some configuration...09:27
pooliethat check if they have the same format and location etc09:27
pooliei have mixed feelings09:27
glyphpoolie: better make sure you have __ne__ methods too!  and __gt__ and __lt__ and __ge__ and __le__ and ... ;-)09:27
pooliebut if the checks are cheap and well defined it's probably food09:27
poolieyeah, well, at least ne09:28
spivpoolie: probably food indeed ;)09:29
spivI'm -0 I think.09:29
vilapoolie: I don't have good feeling about it, there equality concept between repository is not that obvious to me, I can easily imagine people considering repositories with the same *content* to be equal09:30
spivI think for something as complicated and general-purpose as a Repository "equality" has several possible meanings.09:30
vilaurgh, forget my typos, what spiv says ;)09:30
spivWhich tends to mean that blessing just one meaning with __eq__ is asking for bugs.  Hence why we have has_same_location.09:30
poolieit would have just been nice to compare x.fallback_repositories == y.fallback_repositories09:31
poolieobviously you can write it out09:31
MT-This is ALL I can get for error logs http://bzr.pastebin.com/m6d8b2cbb09:31
poolieit's a bit longwinded in 2.409:31
MT-error.log is empty09:31
glyphIMHO (not that anyone asked me, I just happen to be paying attention) equality checks should only be on objects which are "values", i.e. are trivially possible to serialize and unserialize.  Things like a "Point" with x, y numbers or "EmailAddress" with description/localpart/domain09:32
glyphI don't even know enough about bzr's internals to know what a "Repository" is but it sounds big and mutable and scary.09:32
vilaand operator overloading is evil :)09:32
glyphoperator overloading is great!  everybody should do it all the time.09:32
MT-loggerhead is dying after every single page load - AH!09:33
vilaIt was evil back in the days where C++ wasn't even standardized, I think it's still evil, far too easy to abuse and leading to some of the most obscure bugs I  ever seen :D09:33
spivglyph: yes, a Repository is all of the above :)09:34
MT-spiv: Does this look decent or very wrong? http://bzr.pastebin.com/ma4b26c309:37
poolieyeah, generally i agree with glyph too09:37
pooliei was just tempted to sin09:37
spivMT-: no idea, sorry, I haven't actually set up loggerhead myself09:37
MT-Can anybody tell me if this file looks right? I'm guessing it's probably why this is breaking? http://bzr.pastebin.com/ma4b26c309:38
spivAh, you need #confessional, not #bzr :P09:38
MT-this is about to make me freak out...09:42
MT-it should be a drop in thing...09:42
poolieMT-: seriously, you can't just say "it's breaking"09:44
pooliewhat's that meant to mean?09:44
poolieMT- read this sometime -> http://www.chiark.greenend.org.uk/~sgtatham/bugs.html09:44
MT-poolie: I pasted log files and explained what happens.09:46
MT-I run /etc/init.d/loggerhead, I load ope page, and it stops running.09:47
MT-no errors09:47
poolieone page?09:47
pooliehm, that's not so good09:47
poolieso the process exited?09:47
MT-odd... I just tried running it in the foreground and it keeps running fine09:48
MT-This keeps working perfect -> start-loggerhead -f -c /etc/loggerhead.conf09:49
MT-Without -f, it dies after the first page load09:50
MT-poolie: Does that sound odd enough??09:51
pooliethat's a bit strange09:54
pooliewhat is -f meant to do?09:55
mwhudsonMT-: serve-branches is easier to use that start-loggerhead09:55
mwhudson(though not packaged as neatly yet)09:55
MT-poolie: keeps it int he foreground09:55
MT-mwhudson: would you please be willing to walk me through setting that up? I think my mind is gone09:56
mwhudsonMT-: well, it's reasonably easy, you run ./serve-branches <where the branches are>09:57
mwhudsonit doesn't daemonize or anything though, so if you want to manage it with initscripts there will be some messing about to do09:57
MT-I got an error :) _ http://bzr.pastebin.com/me75ca2d09:57
mwhudsonehh09:58
MT-wow, it's already 040009:58
mwhudsonMT-: do you have loggerhead installed system-wide?09:58
mwhudsonMT-: and what version are you running?09:58
mwhudson(must be fairly new)09:58
MT-mwhudson: I did aptitude install loggerhead on 9.0409:58
MT-!info loggerhead09:59
ubottuloggerhead (source: loggerhead): Web viewer for Bazaar. In component universe, is optional. Version 1.10-1 (jaunty), package size 489 kB, installed size 3360 kB09:59
mwhudsonMT-: can you run dpkg -l loggerhead?09:59
MT-ii  loggerhead                                     1.10-1                                         Web viewer for Bazaar10:00
poolietry 'debsums loggerhead'?10:00
poolieyou might need 'sudo apt-get install debsums' first10:00
mwhudsonthen i'm really confused, because loggerhead 1.10 doesn't have a main module10:01
mwhudsonwhich is what the error is saying i guess, but also serve-branches from that version shouldn't be trying to import it10:01
MT-all OK10:01
mwhudsonhang on10:02
mwhudson/usr/local/bin/serve-branches10:02
poolierun 'which serve-branches' ?10:02
MT-http://bzr.pastebin.com/m48a8103210:02
mwhudsonthat's not from the package10:02
MT-/usr/local/bin/serve-branches10:03
MT-hrm...10:03
mwhudsonMT-: did you or someone else run 'python setup.py install' perhaps?10:03
poolie17:38 <MT-> I tried following this guide - http://wiki.flexion.org/LoggerheadServer.html -10:03
MT-yup...10:03
poolie            Then tried aptitude install loggerhead over top of it. It kinda worked but it10:03
poolie            crashed some so I tried to finish the process. That wouldn't work so I went back10:03
poolie            the the loggerhead package. I realized how screwed up I made it so I tried to10:03
poolie            purge apache2 and loggerhead. I searched the system for files named loggerhead10:03
poolie            and removed them. I tried to them reinstall apache10:04
MT-mwhudson: Does that exist in any package from the repos?10:04
mwhudsonah10:04
MT-root@carpo:/bzr# find / -name serve-branches10:05
MT-/usr/bin/serve-branches10:05
MT-/usr/local/bin/serve-branches10:05
mwhudsonMT-: i guess you should remove the one in local/bin10:05
MT-:)10:06
poolieok i might call it a night10:06
pooliespiv, i think the unstacking thing is now all working, except that I'm getting TooManyConcurrentRequests10:07
pooliefor the first time in my experience i think this is actually because there really are too many concurrent requests :)10:07
poolienot that there's an earlier error and it's failing to unwind10:07
pooliehttp://bzr.pastebin.com/m6fe21766  <-- like so10:08
MT-mwhudson: is there any easy way to run that from a daemon?10:08
poolieanyhow i'll look tomorrow at how to tastefully make it create a new medium10:08
poolieif there's no better way10:08
pooliegood night all10:08
spivpoolie: :)10:08
mwhudsonMT-: nohup serve-branches ?10:09
mwhudsonMT-: basically, no10:09
mwhudsonMT-: we need to fix that10:09
MT-ok10:09
pooliemm10:09
pooliesurely there's something in the normal initscripts framework to do this?10:10
MT-so for now it's just serve-branches /bzr &10:11
MT-mwhudson: is there any way to make it hide directories?10:11
mwhudsonMT-: not with 1.1010:12
MT-theres a lost+found showing up..10:12
mwhudsonMT-: with loggerhead trunk you can set http_serve = false in locations.conf10:12
MT-bzr is still a baby, isn't it?10:13
mwhudsonloggerhead is, at least10:13
MT-err - that*10:13
MT-mwhudson: could you help me switch to trunk?10:14
mwhudsonMT-: sure, bzr branch lp:loggerhead loggerhead-trunk10:15
mwhudsonMT-: i wouldn't bother installing it system wide, just run it from the directory you branch into10:15
MT-ok10:16
MT-what does serve-branches run as?10:18
MT-I wanna kill that service first :P10:18
mwhudsoni don't understand10:19
MT-I started serve-branches /bzr &, now idk how to kill it...10:19
LarstiQjml: you mentioned a fixed .gdbinit, but I forgot where it lives10:20
vilapoolie: g'night10:22
MT-THERE!10:25
MT-mwhudson: sorry, I had to remember how to use netstat - and the command name10:25
vilaMT-: surely, if you used '&' the pid has been displayed10:26
MT-vila: it wasn't10:26
vilaor is it just the job number ?10:26
vilatry 'fg'10:27
MT-heh... I shoulda thought of that too - but anyway, I found it with netstat10:28
MT-it was running as python10:28
MT-mwhudson: thanks, :D10:43
MT-mwhudson: one last question... Is there any easy way to make loggerhead private?10:43
mwhudsonMT-: run it behind apache using proxypass (and a firewall to stop people getting to the port loggerhead is listening on)10:44
MT-heh... how do I run it behind apache?10:44
mwhudsoni think there is actually some documentation on this in the README file10:45
MT-!info python-pastedeploy10:53
ubottupython-pastedeploy (source: pastedeploy): Load, configure, and compose WSGI applications and servers. In component universe, is optional. Version 1.3.2-1 (jaunty), package size 29 kB, installed size 276 kB10:53
MT-mwhudson: I purged the package11:02
MT-oops11:03
MT-mwhudson: anyway... I created that in conf.d/loggerhead and it didn't work. I don't have a /branches/ so I just left that part out11:05
MT-replaced with /bzr/ *11:05
mwhudsonright, it's only meant to be an example11:06
MT-the branches are located in /bzr11:07
MT-mwhudson: it the directoy I'm putting the proxy on the loggerhead directory or the branch directory? I assumed branches11:09
mwhudsonbranches11:10
=== FryGuy_ is now known as FryGuy-
mwhudsonheh, trying to browse laconica's source is being very slow11:19
mwhudson(it's on gitorious)11:19
mwhudsonmakes me feel a bit better11:19
fullermdWell, you'd expect it to be laconic, now wouldn't you   :p11:20
MT-mwhudson: am I at lesat close here? I'm at least getting 403's now...11:26
mwhudsonthat does sound like it might be progress11:26
MT-it I go to :8080 now it still works fine but I get the hint that I just close off :8080 to the outside world11:27
MT-http://bzr.pastebin.com/m7921386011:27
MT-or do I want that as a directory now...11:28
MT-I was hopeing to have this runnign before nappy time - it's 0530 already :P11:30
MT-I get up at 1200 at the latest11:30
MT-I guess it just doesn't like the documentroot11:33
MT-that's teh reason for the 403's11:33
MT-Closer!11:38
MT-Now I log in and get a 500 error11:38
MT-Ok... so when I try to login I get this error - (13)Permission denied: Could not open password file: /bazaar/lh-users11:44
MT-I know that file is readable...11:44
MT-mwhudson: you have any of those really smart ideas?11:45
mwhudsonwell it sounds like an apache problem i guess11:46
MT-it is now, I'm making progress :D11:47
MT-root@carpo:/var/log/apache2# ls -l /bazaar/lh-users11:47
MT--rwxrwxr-- 1 www-data www-data 22 2009-07-09 05:12 /bazaar/lh-users11:47
* MT- wants sleep and broblem solved11:48
michaelforresthi - would anybody be able to help me come up with a good repository structure for a project I'm working on..?11:48
michaelforrestI have already started with a single branch and have the project on Launchpad, but now I want to have lots of different branches with different feature variations11:49
michaelforrestI've read through http://doc.bazaar-vcs.org/latest/en/user-guide/index.html#advanced-shared-repository-layouts but I'm still not sure how to approach it11:51
fullermdmichaelforrest: Well, for one thing, realize you don't want to approach it as "choosing _A_ repository structure".11:54
fullermdYou want a repository structure for a given place (and time).  Your repository structure in your workspace needn't (and probably doesn't or shouldn't) bear much resemblance to the structure in mine, and neither need be much related to the structure on the central server.11:55
fullermd(of course, that holds double when the central server is LP, since you don't get to do anything with repo structure there  ;)11:55
michaelforrestfullermd: ok so.....11:55
michaelforrestfullermd: say I want to branch locally but keep some of those branches on launchpad11:56
fullermdRemember, repositories aren't semantic units, they're just storage spaces.  Perhaps you mean more project structure than repo structure...11:56
michaelforrestfullermd: argh. I like hierarchy in these things, so I'm looking at the --no-trees stuff, but I think I'll want a working tree for each branch on my local filesystem11:56
michaelforrestfullermd: I want to be able to merge across branches so that .. arg. it seems complicated.11:57
MT-GAHH!!!! If I remove the proxy lines, it works like it should, if I leave them it, it all of a suddent can't read from the password file11:57
michaelforrestfullermd: plus I'm used to git, where I'd only see one branch at a time11:57
fullermdWell, don't mix up problems   :)11:57
michaelforrestfullermd: yes well - I'm trying to get it straight. hence asking for help.11:57
fullermdFirst, forget about repos for the moment.  You'll definitely want to make use of them, but they won't change anything about how you work, so at least for mental modelling purposes forget they exist.11:58
fullermd(e.g., if you have two branches project/a and project/b, working with them would be _exactly_ the same if they shared a repo at project/, versus each having separate internal repos.  So, what you do with repos doesn't affect how you work with stuff like it does in $OTHER_SYSTEM)11:59
fullermdThere's a large historical bias toward workflows where your branch and working tree are 'together'.  You can still work with a lot of treeless branches and a single checkout you switch among them (or multiple checkouts you switch among them, for that matter).12:01
fullermdIt's just not as polished; requires a bit more manual setup.12:01
MT-I've had enough - g'night all12:01
MT-mwhudson: poolie: others: thanks for the help12:02
fullermdmichaelforrest: (does any of that help at all, or am I speaking Greek, or belaboring the painfully obvious?   ;)12:03
michaelforrestfullermd: if I use --no-trees will it behave the same way as git?12:03
michaelforrestfullermd: I could live with that and then use export to output different versions12:04
fullermdNot exactly.  You can setup an analogous workflow, with one WT switch'd among branches.  Various things won't be as polished, though.12:04
michaelforrestbut then I have to synchronise other aspects of the codebase at different points12:04
fullermdBasically, the difference is that in git, the repository is the addressable unit, and branches are named within that.  In bzr, the branches are themselves the addressable unit, and identified purely by their location (URL/path/etc).12:05
michaelforrestok12:05
michaelforrestthat is a useful distinction12:05
fullermdSome commands (like 'switch', to change the branch your WT is on) do some internal magic so you can ACT like you're addressing sibling branches by name.  But it turns it into paths underneath.12:05
fullermdOther commands don't.  'branch', for instance, to create a new branch; I don't think it does, so to create a new branch you have to specify something like a path, not just a name.12:06
fullermd(there are some tools like 'cbranch' in bzrtools that can help automate that too.  I've never used them.  Glancing at the docs, they will take a little config'ing to how your workspace is setup)12:06
michaelforrestmaybe I'd be able to visualise things easier if I installed some of these gui plugins12:07
michaelforrestI tried to install one the other day but it didn't seem to work12:08
fullermdI believe abentley works heavily in that fashion (one tree switch'd among branches).  So he might have some better advice on setting up that workflow; he should be around in a couple hours.12:08
michaelforrestis there a bzr install plugin command?12:08
michaelforrestor something like that?12:08
LarstiQmichaelforrest: no. I do: `cd ~/.bazaar/plugins; bzr get lp:bzr-pluginname pluginname` usually12:08
fullermdNo, nothing builtin.  You can just stick plugins in ~/.bazaar/plugins/.  But that doesn't necessarily help with things like plugins' dependancies, like py-gtk or py-qt or the like.12:09
michaelforrestLarstiQ: that sounds easy enough12:09
michaelforrestfullermd: I think the key is that I will be doing bzr merges as part of my routine build process12:10
vilaLarstiQ: eerk, better do: cd ~/.bazaar ; bzr branch lp:bzr-pluginname plugins/pluginname12:10
fullermdNot sure how much structure a GUI will make visible, though.  Like, things like 'branch layout' don't make the same sorta sense in bzr as they do in git.12:11
michaelforrestso there will be a central branch driving global functionality forward but will occasionally be little 'leaves' with feature variations that need to stay in sync with main app head12:11
LarstiQvila: hmm, how much does that differ, and why not go `bzr branch lp:bzr-pluginname ~/.bazaar/plugins/pluginname` in one go?12:12
vilaeven better !12:12
* vila searching the bug #12:13
michaelforrestsmall step from 'bzr branch lp:bzr-pluginname ~/.bazaar/plugins/pluginname' to a bash command bzr-plugin-install pluginname ;)12:14
vilawell, you're not wrong here :-) While the bzr- prefix is more a social thing than a technical one, I can't think about a case where it will fail...12:15
LarstiQthere are plugins on BzrPlugins not on launchpad12:16
fullermdqbzr   :p12:16
vilalol, yeah, right, I just 'bzr  pull -v' for qbzr for too long :)12:16
fullermdbzrtools too...12:16
LarstiQso yeah, plugin registry and dependency information, then we're good to go12:17
fullermdAlso, a pony.12:17
vilaHa ! Finally, LarstiQ, I was refering to bug #30489112:24
ubottuLaunchpad bug 304891 in bzr "bzr doesn't work in parent directories of python packages with certain names (dup-of: 72227)" [Undecided,New] https://launchpad.net/bugs/30489112:24
ubottuLaunchpad bug 72227 in bzr "should avoid loading modules from working directory" [High,Confirmed] https://launchpad.net/bugs/7222712:24
vilajames_w: ping12:43
james_whi vila12:47
LarstiQvila: why is that not fixed?13:23
LarstiQother than apathy I don't see a reason13:23
vila:-/13:23
fullermdWho wants to lose a bug with a nice palindromic number?13:23
vilalack of time ?13:23
vilaand that too of course :)13:23
vilaeven if, really, a small palindrom ...13:24
intellectronicaaloha14:00
intellectronicabzr dropped to the debugger in the middle of reconciliation of a v2 repo with some old branches14:01
intellectronicavery frustrating, but since i now have a debugger prompt in front of me, is there anything i can do to help figure out what the problem is?14:02
james_wintellectronica: is it a stray "pdb" in the code14:04
james_w?14:04
james_wor are you running under BZR_PDB?14:04
intellectronicai don't know what BZR_PDB is (an environment variable?) so i'd say the former14:05
james_wyeah, environment variable that causes pdb to start if there is an unhandled exception14:07
james_wif you "list" does it point at pdb.set_trace()14:07
james_w?14:07
intellectronicayeah14:08
intellectronicahttp://pastebin.ubuntu.com/213609/14:08
james_wah, it's the SIGQUIT handler14:11
james_wdid you try and kill the process?14:12
james_wthe paste suggests you typed ^\ :-)14:12
intellectronicai didn't, and from the debug listing it looks like bzr sent it, no?14:12
james_w^\** SIGQUIT received,14:13
james_wsignal.signal sets signal handlers, not sends signals14:13
james_wanyway, typing "c" should make it continue14:14
intellectronicaoh well. who knows, maybe i somehow accidentally typed ^\14:14
intellectronicathanks!14:14
james_wnp14:15
james_wlet us know if it happens again14:15
RainCTHey15:03
RainCT«bzr hooks» crashes here, http://paste.ubuntu.com/213639/plain/15:03
rockstarjam, you are freakin' awesome!  Thanks for trying Tarmac on Windows.15:30
jamrockstar: I'm working on making it *work* there15:33
jamif you give me a few more minutes :)15:33
rockstarjam, that's awesome!15:35
jamrockstar: I just got to the point of it popping up a Launchpad window15:37
jamasking for me to authorize access15:38
jamwhat should I do at this point?15:38
jamFor now, I suppose I could set it to read-only15:38
rockstarSo, you could allow it and continue.  It'll save the token it gives you.15:38
rockstarReadonly is good enough.  There's only one thing that writes now, and that's only if you have a test failure.15:38
jamwell, at this point... it is crashing with:15:39
jam  File "build\bdist.win32\egg\httplib2\__init__.py", line 972, in request15:39
jamAttributeError: 'unicode' object has no attribute 'get'15:39
jamHowever, it is getting close15:39
jamAnd that at least looks like it is failing in launchpadlib15:39
jamand not tarmac15:39
intellectronicaabentley: is reconcile atomic? what's the risk if i stop in the middle?15:46
abentleyintellectronica: There's no risk, but it won't pick up where it left off.15:46
intellectronicaabentley: cool, thanks. i'm not worried about that15:47
jamrockstar: I'm pushing up a patch, and submitting a merge request15:51
jamrockstar: It still doesn't work, but that seems to be a launchpadlib issue15:52
jamand not a tarmac one (yet)15:52
rockstarjam, hooray!  Thanks a ton!15:52
jamrockstar: any idea why launchpadlib seems to be using: build\bdist.win32\egg\httplib2\__init__.py ?16:25
jamis it using a custom httplib library?16:25
jamrather that the one in python's stdlib?16:26
rockstarjam, it might.  I know there was a bug about it recently.16:26
rockstarjam, it's probably a question better aimed at leonardr16:26
jamsure, I just don't know any launchpadlib devs, especially ones that are awake right now16:27
jamI know jml and you :)16:27
rockstarjam, :)16:27
jamargh16:29
jamit seems they are doing:16:29
jamcache = tempfile.mkdtemp()16:29
jam            atexit.register(shutil.rmtree, cache)16:29
jamand then "cache" is the path to a cache directory16:30
jamwhich is just a string16:30
jamoh, I guess they try to do:16:30
jamcache = MultipleRepresentationCache(cache)16:30
jamI wonder if "cache" is a Unicode object on Win3216:30
jamyep16:31
jamugh16:31
jamrockstar: so I got it to stop crashing with an exception16:32
jamwhat should I expect its output to be?16:33
jamooop, new exception16:33
jamit seems to assume "/tmp/bzr" is available16:33
jambad tarmac16:33
jamno cookie16:33
rockstarjam, there's a new patch for /tmp/bzr, but I haven't landed that yet.16:33
jamrockstar: Shouldn't it just be part of the Config class?16:34
rockstarjam, it's not right now.16:35
* rockstar looks sheepishly16:35
jamrockstar: .... *I'm* trying to get things to work on win32, and I'm trying to get info from you as to what I can do to make that happen16:35
jamIf you feel that I'm correct that "$TMP" should be in Config16:35
jamI'll put it there16:35
rockstarAh, okay.  Yea, that makes sense to be in Config.16:35
jamrockstar: what do you think about making it "tempfile.mkdtemp" ?16:41
jamDo you prefer not to because it would leave trash around?16:41
jam(as in, you always want to leave 1 directory around, but not 10?)16:41
rockstarjam, that's fine with me.  Trash in the temp dir is pretty standard.16:41
jamor do you even want to leave 1 copy16:41
jamFor example, Launchpadlib does "temp = tempfile.mkdtemp()16:42
jamatexit.register(shutil.rmtree, temp)16:42
rockstarjam, I think I'm already doing something similar, so that would be okay.16:42
jamrockstar: it *is* likely to leave trash in temp, but downloading 100MB projects and leaving them around is a bit ugly16:42
jamrockstar: you seem to do "shutil.rmtree()" if it exists when you go to create it16:43
jambut not otherwise16:43
jamhowever, I'm still wondering if this is the best solution16:43
jamconsidering that we still need to download a lot of data to get "create_checkout" to work16:43
jamnot to mention, you aren't doing "light=True"16:43
jamso it downloads the whole branch16:43
jamfresh16:43
jamevery time16:43
rockstarjam, light=True would be hard on a patch that's about to come in that needs the parent graph.16:43
rockstarDownloading it every time is actually a feature.  I want it to be fresh.16:44
jamrockstar: it *doesn't* scale well to projects like MySQL where you have 600MB to download...16:44
jam(or the old Launchpad which had... 1+GB)16:44
rockstarjam, yeah, that's a good point.16:45
jamHeck, bzr in 1.9 format now has >100MB16:45
rockstarHm, I'll file a bug on that.  We're Tarmac mini sprinting tomorrow.16:45
jamrockstar: ok. I'll let you think about that. I'll just try to get something working, and I'll submit it16:46
rockstarjam, thanks!16:46
jamrockstar: there seems to be "tempfile.gettempdir()" which should probably give /tmp on Linux and $TEMP on windows16:47
jamso I'll go ahead and just to the simple change to that16:47
jamrockstar: how do you run your test suite?16:48
rockstarjam, yeah, I figured there'd be some weirdness in small things like that.  I tried to use os.path.join where I could, but I'm not surprised that I missed some places.16:48
jamyour .cleanup() is a bit strange, too. Given that it ends up checking out the tree a second time16:50
rockstarjam, really?  I hadn't noticed that.16:54
rockstarjam, Could you file a bug with the details?16:54
* rockstar facepalms16:54
lamalexis there any way to find out why bzr thinks this merge is a criss-cross merge?17:04
lamalexit shouldn't be afaik17:04
jamrockstar: so it seems to work, except I believe it is paramiko which is hanging indefinitely when the tarmac script exits17:16
jambzr doesn't notice because we explicitly use17:17
jamos._exit() when we are done17:18
jam(i think)17:18
rockstarjam, you don't have a specific config do you?  I noticed it hangs trying to comment with the test failures.17:18
jamrockstar: So it works to the point of "no candidates to land"17:18
jamand then that "return" triggers17:18
jamand it exits the script, and just hangs17:18
rockstarjam, ah, so it's not the issue I know about.17:18
jamthen again, I just removed the os._exit for bzr, and we still work just fine17:18
jamso I need to probe deeper17:18
jamprobably an atexit() function is being naughty17:19
rockstarjam, that's also a possibility.17:19
jamI swear I've seen in with paramiko, though17:19
jambecause if in the interpreter I run paramiko, I'll get it to hang sometimes17:20
jamhmm... lets see17:20
jamrockstar: the crummy thing is that not even ^C works at that point17:22
rockstarjam, ouch.17:22
rockstarWhy would paramiko even get imported?17:22
jamrockstar: when you download the development target17:23
jamsee bug #39748617:23
ubottuLaunchpad bug 397486 in tarmac "Tarmac does a fresh download of the target *before* checking if anything is ready to land" [Undecided,New] https://launchpad.net/bugs/39748617:23
jamahh, I have a workaround17:24
jamit seems that if you call "sys.exitfunc()" before you actually exit your script17:24
jamthings are happy17:24
dashtarmac? is that an archive tool for OSX17:24
jamthe issue is probably that GC is happening in a weird order17:24
jamdash: Think airports17:24
jamit is a tool for "landing" code17:24
jam(similar to PQM)17:24
jambut more integrated with Launchpad17:25
rockstardash, Tarmac is the new hotness.17:25
rockstarsabdfl said so.17:25
=== kiko is now known as kiko-fud
jamrockstar: so... a few patches up for your review. And with those *and* the launchpadlib ones, I at least get "No branches for landing"17:34
rockstarjam, we're doing the launchpadlib ones right now actually.17:35
=== ddaa1 is now known as ddaa
npoektopyo! is there a way to ignore executables in my code repository other than marking them with .exe (or smth) extension?18:47
sidneijam: thanks for the review! how do i get authorization to submit to bzr's pqm?18:50
garyvdmHi all19:47
jamsidnei: we'll generally ask for a second review, and then the reviewer will submit it20:07
sidneijam: cool. i didn't know that. should it be explained in http://bazaar-vcs.org/BzrDevelopment ?20:08
sidneioh i guess it's in HACKING20:08
sidneiuhm, nada. it only says 'someone with PQM access'20:12
maleptvila: ping20:42
vilamalept: pong20:42
maleptvila: I don't think credits.pickle is in bzr-gtk-0.96.1.tar.gz20:43
vilamalept: :-(20:43
=== thekorn_ is now known as thekorn
vilamalept: you think right :-( The release roadmap is *really* wrong20:45
vilajelmer: I did my best from your pointer but I'm afraid you'll have to give more precise info... How come credits.pickle is in .bzrignore ? Talk about a trap...20:48
maleptvila: build_credits should be in MANIFEST.in?20:49
malepter20:49
maleptcredits.pickle.20:49
malepttwo different thoughts there20:49
vilahttp://bazaar-vcs.org/bzr-gtk/releasing says: 'Build tarball (bzr export bzr-gtk-0.XX.Y.tar.gz) ', but since credits.pickle is ignored, of course it's not exported20:52
maleptah...20:52
vilabuild_credits *did* build it20:52
maleptvila: perhaps you should add credits.pickle to MANIFEST.in and then use `python setup.py sdist` to create the tarball?20:52
maleptalthough I'd do a diff between the 0.96.1 tarball and the sdist tarball to see what got lost, if anything20:53
malepta filelist diff*20:54
vilamalept: I think deleting credits.pickel from .bzrignore and redoing bzr export is less risky20:54
maleptvila: is that how bzr export works?20:54
maleptvila: doesn't credits.pickle need to be versioned, too?20:55
vilamalept: it exports all versioned files, I don't know the previous tarballs were done, yes of course, I need to bzr add it.20:56
maleptvila: ok, just checking20:59
vilamalept: I'm glad you did :)20:59
vilamalept: this release is long overdue, at least let's make it right, who knows how long it will last :-D21:00
maleptvila: indeed :)21:00
vilamalept: see my pm ?21:06
maleptvila: yes, sorry about that21:07
garyvdmHi vila. Can bug you for some help with tests?21:15
vilagaryvdm: sure, I'm trying to release bzr-gtk *properly* so I may suffer some interruptions :)21:16
vilaerr, I mean, let's talk about your tests, but I may be lagging a bit at some points21:17
garyvdmvila: I found a class in the PyQt source that can be used to test a custom qt model.21:17
garyvdmIt attaches it's self to some signals (events), and runs a test when that signal is fired.21:18
vilanice, and is there some standard way to store the test result ?21:19
garyvdmIf that fails though, it stops all the tests, rather than reporting that the test failed, and continuning.21:19
vilafailing or erroring ?21:20
garyvdmWhats the differenc?21:20
garyvdmdiference21:20
vilaERROR or FAIL in selftest -v output21:21
vilaFAIL is when a specific asertXXX fails and throw a specific exception while ERROR is when a different exception is thrown and not caught21:22
vilaSo a typo in test for example will error out21:23
garyvdmNeither (and it should be an error). There is an exception raised in the test that is fired from a signal. The stack of this exception is written to the console by the std python exception handler, and all other tests are not run.21:24
vilahmm, strange, are there threads involved ?21:25
vilacan you pastebin the traceback ?21:25
garyvdmNo threads - pastebin on the way.21:25
garyvdmhttp://paste.ubuntu.com/213912/21:27
garyvdmvila ^^^21:27
vilayou're not using --parallel ?21:28
garyvdmNo21:28
vilaTry running only the failing test21:28
vilathis traceback is too short, it makes no sense21:28
garyvdmSo maybe I need to overwrite sys.excepthook, capture the exception. And in the test, check if there have been any exception caught by the excepthook, and raise those.21:29
garyvdmhttp://paste.ubuntu.com/213917/21:31
garyvdmvila ^^^^ running only 1 test21:31
garyvdmbbl21:31
Imperiondoes Bazaar have that binary bug search functionality like git bisect?21:31
vilagaryvdm: no idea, but now you can set a breakpoint and do bt21:31
garyvdmvila: Thanks - I think I need to do what I suggested above. I just wanted to check that there is not a built in way to do that.21:35
vilaOh, I didn't see that,21:35
vilatry to understand why the exception is not caught by the test framework first, there is something weird here, working around it may not be the best long term solution21:36
garyvdmvila: Exceptions that are raised by code called from a signal don't get caught by the bzr error handler. So in qbzr, we overwrite sys.excepthook to be able add information to the error report.21:43
garyvdmI think the same thing happens with gtk.21:44
vilahaa21:45
vilano matches for grep excepthook in bzr-gtk though...21:45
vilaI remember that in perl-gtk there was various ways to catch the errors though (including ignoring them)...21:46
Imperiondoes Bazaar have that binary bug search functionality like git bisect?21:48
LarstiQImperion: yes, bisect plugin21:48
dashImperion: there's a bisect plugin21:48
Imperionthanks21:48
LarstiQthough likely not as polished21:49
garyvdmvila: I did a test with gtk, and it behaves the same. If I add "raise Exception("test")" to line 83 of branchview/graphcell.py, The stack of the error it written to the console hundreds of times, but it's not written by the bzr exception handler., e.g.: this is bit of that is written to the console: http://paste.ubuntu.com/213931/21:53
vilagaryvdm: If everything else fails, you can still use a dedicated mainloop21:53
vilayeah, I'm reading stuff on this subject to refresh my memory,21:54
vilathe idea is that once you called mainloop.run(), all exceptions happening inside that call are caught, displayed and ignored ;021:55
garyvdmAnd if you want to have a global handler for them, you overwrite sys.excepthook21:55
vilaThere may be a way to do the same with qt or as I said, for tests, use a specific mainloop that will fire one event at a time, you may get your hands on the exception that way21:56
vilabut adding a global handler will not allow you to re-reraise21:56
garyvdmBut I can get the exc_info (type, value, traceback).21:58
vilaand then ? call quit and re-raise but from where ?21:58
garyvdmThats what I'm going to figure out :-)21:59
vila:)22:02
=== ddaa1 is now known as ddaa
lifelessmoinmoin23:13

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