/srv/irclogs.ubuntu.com/2009/06/29/#bzr.txt

mwhudsonhmm00:02
lifelessmwhudson: ?00:27
mwhudsonlifeless: nm :)00:28
pooliegood morning bzr!00:29
lifelesshi poolie00:34
igcmorning00:38
kingoslifeless: thanks for your help so far with my bug 356028. Where do we go from here?00:40
ubottuLaunchpad bug 356028 in bzr "bzr check fails with KeyError" [Undecided,New] https://launchpad.net/bugs/35602800:40
* igc continues reviewing the check patch from lifeless01:25
* igc lunch04:03
lifelessigc: what -Dprogress changes?04:36
lifelessigc: oh, I see it.04:44
igclifeless: ui/text.py + some doc in debug-flags & NEWS04:48
lifelessyah04:49
lifelessI can split it out if needed, but it seems like make-work04:49
rockstarlifeless, around?07:22
lifelessyes07:23
rockstarlifeless, scenario: I have a working tree with changes in it from a merge.  How can I get the revisions that are being merged into this tree?07:25
lifelesscli or lib?07:28
rockstarlifeless, lib07:28
rockstarlifeless, it looks like WorkingTree.changes_from(WorkingTree.basis_tree).modified will give me a list of tuples in which index 1 is a rev id.07:29
lifelesstree.get_parent_ids() returns a vector07:29
lifeless0 is the tree's commit (which may not be the branch tip if the tree is stale)07:30
lifeless1 is the first merge07:30
lifelessetc07:30
lifelessthen use tree.branch.repository (or some other repo if needed) to get a graph - r.get_graph()07:30
rockstarHm.  That's a bit sub-optimal.  The WorkingTree is a checkout, both branches are remote branches (on Launchpad)07:31
lifelessif you want all the 'new revs' you can use one of the difference functions in the graph object (pydoc bzrlib.graph.graph) to get the new revs07:31
lifelessthe tree doesn't store or cache the new revs details07:31
rockstarYea, all I want is the revs that will be merged in the merge.07:31
lifelessif you want the revs that will be the parents of the new commits, it is precisely tuple(tree.get_parent_ids())07:32
lifelessassuming this is for tarmac; it sounds like you're reproducing some aspect of bzr core - is there some higher level functio that isn't quite right?07:33
rockstarWell, ideally, I want all the revs that will be part of the merge, i.e. the source branch may have 10 revisions with 3 different authors.  I want to find those 3 authors.07:33
lifelessok, then do the graph bit I referenced above07:33
rockstarYou mean bzrlib.graph.Graph ?07:34
lifelesstree.branch.repository.get_graph(), and then one of the functions there can give you the difference data07:34
lifelessbzr status -v does precisely this07:35
lifelessin terms of performance; firstly lightweight checkouts over the internet are slow.07:35
lifelessI don't recommend that lightweight checkouts ever be used over the net07:35
lifelessbut even so - you need the revision graph, so there really isn't anyway around it: you either have it locally, or you don't :)07:36
rockstarIt's not lightweight.  It's similar to what PQM does, if I'm not mistaken.07:36
rockstarAlthough Tarmac is pretty worthless if the net goes away.07:36
lifelessif its a heavyweight checkout then you have the revision data locally07:37
rockstarOkay.  That's good.07:37
rockstarBut that local revision data is still gotten through tree.branch.repository, correct?07:37
lifelessyes07:38
lifelessthe branch oobject will be a local bound branch07:38
rockstarAh, that's nice.  I always wondered what the difference was between lightweight and heavyweight checkouts.07:39
vilahi all07:41
pooliehey vila07:46
pooliespiv, how did you go today?08:13
spivpoolie: good so far.  A little bit of API friction but nothing serious.08:15
spivI have StreamSource producing inventory delta records and StreamSink consuming them successfully in-process, I think.  I haven't done a full test suite run yet though.08:19
lifelessspiv: I'm inclined to have it in the normal SS and SS08:20
lifelessspiv: rather than subclasses; what do you think?08:20
lifelessspiv: (your text implies you agree, just putting it out there for explicit consideration)08:20
spivlifeless: yes, that's definitely my preference, and how it's implemented so far.08:21
spivThe only real impediment to that I think is making sure it can operate compatibly with network sinks/sources that can't take inv deltas, I haven't poked much at that yet but I'm sure it's not going to be too bad.08:23
lifelessspiv: I think we should define them as all taking them08:23
lifelessits why I made this a critical bug, so it would be in place for 2.0 and not need bumping then08:23
pooliewell08:24
spivSure, but there are 1.16 and earlier servers (and clients) that can't.  Possibly we can just make RemoteStreamSink/Source translate delta->fulltext before passing to the network serialisation layer.08:24
poolie^w08:25
lifelessspiv: on a missing verb condition? yes, for push. pull will get the missing verb asking for the stream.08:25
spiv(iff the network layer knows that the other end can't cope with inv delta recods)08:25
spivRight.  Like I said, I don't think it's too hard to deal with.08:26
lifelessagreed08:27
lifelessEOD08:31
pooliespiv, so when you say in process you mean it works doing a cross-format local pull?08:35
poolieor push08:35
spivpoolie: right.08:35
vilaspiv: do you know how to bind a class method into an instance method explicitly ?08:45
vilaspiv: re-reading my question I now have doubts about the means :) The need is: I want to decide at load_tests() time what method will be called inside setUp. I don't want to have a test in setUp, I want a single raw call08:48
spivvila: I don't quite follow your question.08:56
spivOr what problem you are trying to solve :)08:56
vilaspiv: I want parametrized tests to call a method during setUp. I want to define that method in load_tests. I refer to that method by its name, so I get the class attribute,08:58
vilaIf I make a call with attribute, it's an unbound method08:58
vilaIf I make a call with that attribute, it's an unbound method08:58
vilaspiv: my current workaround is to do:         self._do_changes(self)08:59
vilaand that's ugly :)08:59
spivI don't understand why it would be an unbound method in that case.08:59
spivThere's some part of this picture I don't see :)08:59
spivif you do "x = object.method", then "x" will be a bound method (assuming no wacky descriptors like property, staticmethod, etc)09:00
vilaspiv: because the test object is created and then self.do_change receive class.method because the test instance doesn't exist when load_tests is called09:00
lifelessvila: ?!09:01
lifelessvila: pastebin your code09:01
lifelessvila: you're doing something special09:01
spivvila: so you're doing "x = klass.method", because you don't have an instance of the object yet?09:01
spiv(why?)09:01
spivIn that case, yes, you should do what you're doing.09:01
spivThere's probably a way to bind it post hoc, but I'd avoid the magic.  This sounds like a strange thing to be doing, though.09:02
vilahttp://paste.ubuntu.com/206061/09:02
pooliei'm going to stop soon...09:03
vilaspiv, lifeless: I realize I shouldn't run into that, that's why I ask where I went wrong :)09:04
vilapoolie: g'night09:04
spivvila: so I think that's as clean as you can make that approach with current APIs09:05
vilaspiv, lifeless : An other way to do what I want is to use the *name* of the method, but it's not very elegant either :-/09:05
lifelessso to paraphrase09:06
lifelessyou want to run a set of tests in a class, twice09:06
spivvila: because multiply_tests doesn't give you any way to read attributes off the test cases you are multiplying, just assign to them.09:06
lifelesschanging one function call from A to B09:06
vilaspiv: yes09:06
vilalifeless: yes09:06
spivvila: (and you really would want to make sure that if it did it that the bound methods were bound to the right TestCase instance!)09:06
lifelessvila: file a bug on testscenarios if you would; this is interesting :)09:07
spivvila: personally I think I would have gone with the name of the method and a getattr09:07
spivgetattr at call time, that is, obviously.09:08
vilaspiv: Yeah, that's what I thought, thanks09:08
spivBecause "here's the name of the method" is a very clear indirection point.09:08
vilalifeless: will do, thanks too :)09:08
spivAnd also because that would consume less memory I think ;)09:08
vilaspiv: and can be explicitly checked at setUp time, right09:09
spivCreating methods via assigning callables to instances is pretty cool, but it's easy for it to be confusing.09:09
vilaspiv: well, the same can be said about any technique you don't practice often09:10
lifelessdef do_dirty_tree:09:10
lifeless    getattr(self, change_method)(self)09:10
spivWell, yes, but particularly with dynamic features where you can't e.g. look up _do_changes in your tags file an get taken to the method definitino.09:10
vilaspiv: I don't think cricket rules are so confusing since my last trip to Australia for instance :-D09:10
spivvila: do you remember how many ways there are to get out? :)09:11
* vila looks behind him, but no, lifeless isn't reading above his shoulder :)09:12
vilaspiv: no. But I think I could understand when it happens when watching a game...09:12
spiv(http://en.wikipedia.org/wiki/Laws_of_cricket#Ways_to_get_out has the answer)09:12
vila42 laws... now, *that's* says a lot about H2G author :-)09:14
vilaerr HG209:14
poolievila, having what looks like a test class but only exists to provide those mixin bits seems not quite right09:18
pooliehm09:18
vilalifeless: https://bugs.edge.launchpad.net/testscenarios/+filebug :-P09:18
lifelessvila: bah humbug09:19
vilapoolie: creating a mixin just for creating a mixin ?09:19
poolieusing the word mixin loosely09:19
lifelessvila: one way would be to write those mutators as standalone functions that take a test case object09:19
vilapoolie: Right, I see your point09:19
lifelessvila: testscenarios has a functional feel09:19
pooliein parts...09:19
poolienot so much in09:20
poolie+    tests.multiply_tests(changes_tests, changes_scenarios, result)09:20
lifelessusing the word functional loosely :P09:20
pooliethat line was just annoying me09:20
lifelessvila: fixed09:20
poolieit's a shame it doesn't return a thing for you to use09:20
vilapoolie: so that I can assign the right method there you mean ?09:21
vilaI'm quite happy with getattr(self, self._do_changes)()09:21
vilaI'ts clear, light and robust09:22
poolieso i was going to theorize thatn09:22
poolieif you want more power in your test multiplication stuff09:23
poolieyou're probably doing it wrong09:23
poolieas they say09:23
poolielike, trying to test too many combinations09:23
pooliepresumably the effects of strictness are separated in the code from the determination of whether we're strictly ok or not?09:23
poolievlia, what i was going to say about the mixin class is, why not put do_uncommitted_changes and do_pending_merges into the TestPushStrict class09:24
poolieif they're only used there09:24
poolieand then, um09:25
pooliegetattr(self, self._type_of_changes)09:25
jmlvila, rugby union also has laws09:26
vilapoolie: it seems we all agree about getattr(self, self._do_changes)()09:26
vilajml: well, the point is, I once watched a cricket match, and when one team burst out in joy, I was puzzled about why :)09:28
vilajml: at least in rugby you get some understanding that when the ball pass the line, points are scored :)09:28
poolie> Results 1 - 10 of about 1,210,000 for rugby scandal09:29
spivvila: depends on which line :)09:29
poolievila: :) my new bit, maybe, is suggesting you fuse the classes09:29
pooliealso, i think _do_changes is not such a good name09:29
pooliebecause it actually sounds like a method09:29
pooliebut you can't _do_changes09:30
pooliei mean, you can't _do_changes()09:30
spivSometimes the ball passes a line and then they stand in a funny formation and just toss it back over the line ;)09:30
poolieoh like basketball? :)09:30
vilapoolie: I may be overtesting here, but yet, the full test suite reveals at least one bug when I make --strict the default for push (push can be used without tree and I wasn't testing that)09:31
spivYeah, a variable name that clearly indicates "this variable is the name of a method" rather than "this variable is a method" would be good I think.09:31
poolievila: nice one09:31
poolieand fair enough09:31
poolieon further consideration09:31
pooliei think one reason to put the methods in their class is to make it clear how much stuff they apply to09:31
vilaspiv: but they are having some kind of discussion when they stand in that funny formation, not a single team piling up with joy :)09:32
poolieparameterization is kind of action-at-a-distance09:32
pooliewhich can be confusing09:32
poolieso the more you do to reduce the distance and make it clear, the better09:32
spivpoolie: right09:32
abeaumont_vila: i'm playing with bzr-upload testsuite, i'm trying to add a test for my branch, but i've seen that many tests are disabled due to not having FtpServer feature, i installed test_local_server but even with the plugin (and installing anon proftpd) it didn't work, looking at the code i'm not sure it should work... should it?09:32
vilapoolie: yes,09:32
vilaabeaumont_: short: you want to install muddleftp09:33
vilaabeaumont_: long: local_test_server is used to *inject* real ftp servers into the test suite09:33
spivpoolie: and also it helps make clear what facilities the methods can use (i.e. a method on a TestCaseWithTransport can obviously use self.make_branch, a free function somewhere less clearly so).  "Action at a distance" is a key part of the problem, I think.09:34
vilaspiv: I agree with that09:34
vilapoolie: my intent in defining more classes here is that it's better than a single one for clarity. It may not be pure enough for application code, but the classes are final here, so any reader can focus on trivial test code without the need to  read more classes09:36
* igc dinner09:36
abeaumont_vila: ah, ok, i'll look at muddleftp. Thanks!09:37
vilaabeaumont_: eerk, memory playing tricks, I meant: http://code.google.com/p/pyftpdlib/09:38
vilaabeaumont_: bzrlib supports medusa and pyftplib, but medusa is bogus starting with python2.609:39
vilaabeaumont_: look at bzrlib/tests/ftp_server directory for all the details09:39
abeaumont_vila: ok, thanks again :)09:47
abeaumont_vila: i was surprised to see that my broken code didn't cause any test to fail, until i used verbose :D09:48
vilaabeaumont_: hmm, but even the non verbose mode should tell you about skipped tests no ?09:48
abeaumont_vila: yes, but i didn't take it too seriously (FtpServer? my trivial test doesn't need such a thing :)09:50
vilaabeaumont_: :)09:50
nil1Hi09:57
nil1Is the encrypted repository format already usable?09:58
jmlhmm.10:02
vilalifeless: ./bzr selftest '(?i)loom' => FAILED (failures=3, errors=6)   :-}10:08
vilalifeless: no offence intended, just a data point :-D10:08
\shlifeless: bug #81689 , well this could be a nice workaround, but in general I would like to see that behaviour fixed on MS Windows :)10:50
ubottuLaunchpad bug 81689 in bzr "Branches with symlinks can't be checked out on Windows" [Medium,Triaged] https://launchpad.net/bugs/8168910:50
=== mvo__ is now known as mvo
TheJosh1337Hi12:58
TheJosh1337Does anyone know of a tool that I can use to generate merge graphs for a bzr repo?12:58
TheJosh1337like 'bzr visualise'13:02
TheJosh1337I wan't to show a commit history graph on a web page13:06
vilaTheJosh1337: bzr qlog13:06
vilaha, that's different, I thought you wanted bzr viz for all branches in a shared repo13:07
TheJosh1337What I want is a generated image file which I can dump onto a website13:08
vilaYou want to ask again to beuno maybe, or garyvdm (but he's off-line right now)13:08
TheJosh1337showing the commits and merges made to trunk13:08
TheJosh1337or become friendly with the PHP gd commands13:08
TheJosh1337beuno, is there a program that is similar to bzr viz, but which generates an image file appropriate for embedding on a web page?13:10
asabilTheJosh1337: I think bzrtools has something like that13:11
asabilit generates a graphviz file iirc13:11
TheJosh1337cool13:11
TheJosh1337sweet that's perfect thanks!q13:14
TheJosh1337asabil, Thank you that was perfect. The tool generates .pngs native, so it's perfect.13:55
TheJosh1337im off now, going to bed13:55
=== mrevell is now known as mrevell-lunch
=== mrevell-lunch is now known as mrevell
=== abentley1 is now known as abentley
=== bac` is now known as bac
beunovila, hi!15:12
vilabeuno: good morning ;-)15:13
beunovila, good afternoon15:13
beunohow are you?15:13
vilabeuno: fine, you ?15:14
beunovila, pretty good as well15:14
beunowant to help me out with a small OSX issue?15:14
beunoI need bzr 1.16 working on 10.5  :)15:14
vilalet's try15:14
vilabeuno: let me guess, you have the C files for the extensions ?15:15
beunovila, I haven't done anything, the guy always uses the installer15:15
beunoand there's only one available for 1.1415:15
vilaoh, damn, phanatic where are you ? :-/15:16
vilahmm, wait didn't someone create an installer for 1.16 ?15:16
beunoand I impulsively upgraded all branches at the office to 2a15:16
beunoand I left out one of the guys who uses 10.515:16
verterokbeuno: just use 1.16 from source15:17
beunoverterok, how do I tell him to do that?  :)15:17
vilaverterok: can't you 10.4 installer be used on 10.5 ?15:17
vilaverterok: can't youR 10.4 installer be used on 10.5 ?15:17
verterokvila: no :( becuase 10.5 defulat python installation is in a different directory than the MacPython install in 10.4 :p15:18
* vila cries15:18
* verterok joins vila15:18
* beuno cries15:18
vilahttp://bazaar-vcs.org/MacOSXBundle/Prepare15:19
verterokbeuno: curl <url to tar.gz> > bzr-1.16.1.tar.gz &&  tar -zxf bzr-1.16.1.tar.gz && cd bzr-1.16 && make; ./bzr15:19
vilaverterok: excellent ! Update the wiki :-P15:20
verterokvila: heh15:20
beunoverterok, will try that, and continue crying about the installer15:21
beunothank you  :)15:21
vilahttp://straussd.fourkitchens.com/bzr-1.16-osx-10.5.zip15:21
beunooh15:21
vilahttp://straussd.fourkitchens.com/bzr-1.16-osx-10.5-2.zip15:21
verterokbeuno: or I can build a bzr-only package in my 10.5 machine...but you 'll need to wait bit15:21
vilaeerr, forget the first link15:21
verterokohh, nice!15:21
beunoOH15:22
beunoeven nicer  :)15:22
vilaI thought that one found its way to the right place though, I'll try to poke the list15:22
beunoperfect, now I feel less bad about upgrading everything without talking to anyone15:23
beunothank you  :)15:23
verterokvila: btw, I'm doing a bit of research to automate the 10.5 installer build, looks like it's possible as 10.5 use an xml descriptionto build the installer, with 10.4 I'm still stuck with the manual build (damn binary formats!)15:25
vilaverterok: that would be a signigicant step for 10.5 and maybe you may find a way to use that installer for 10.4 too....15:26
verterokvila: I hope so...15:26
beunovila, installer worked great15:27
vilabeuno: please reply on the list and keep david in CC :-P15:30
=== Kissaki^0ff is now known as Kissaki
phinzeso i've got local changes in a branch i need to move to another local branch, which i would usually cheat with cd ~/right.place; bzr diff ../wrong.place | patch -p016:56
phinzebut this time it has file moves16:56
phinzewhich diff/patch won't pick up... is there a way to pull this off with shelves or something?16:57
phinzeor is it just easiest to replay the moves and then diff/patch (which i imagine may very well be the case)?16:58
jmlphinze, cd right.place; bzr merge --uncommitted ../wrong.place16:58
phinzeaha... will give it a shot jml16:58
vilajml, phinze: will work if both branches are at the same tip16:58
phinze"All changes applied successfully.16:59
phinzebeautiful; thanks :)16:59
jmlphinze, yeah, it's one of my favourite features.16:59
phinzevila: actually wrong.place was a large feature branch and right.place was trunk, and it work without problems...16:59
phinzeso i guess today i got lucky :)17:00
vilaphinze: oh, it will always work, the question is will it do what you think :)17:00
vilaphinze: merge --uncommitted will get the uncommitted changes but also the missing revisions17:01
jmlvila, !17:01
phinzehah; yeah looks good for this case, though the code in question was in a plugin that is kept in sync between the two branches, so that probably helps17:01
phinzethe merge didn't look like it was any more than what 'bzr st' showed17:01
vilaphinze: most of the time I use it to apply a work in progress on a remote-but-accesible-vis-mounted-file-system machine where I want to run tests before committing17:03
vilas/vis/via/17:03
phinzeyeah i was in a fixing-bug-on-feature-branch-caused-by-plugin-code-kept-in-trunk situation17:03
vilajml, phinze: bah forget me, I misread the command as (cd ~/wrong.place; bzr diff) | (cd ~/right.place; patch -p0)17:13
trondnHi.. How do I update the content of a sandbox to a given version ?17:42
trondnor do I need to create a new clone to do so?17:43
trondn(I'm thinking of the equivalent of just doing: hg up -r <rev> )17:47
dash'bzr revert -r xxx'17:47
trondndash: thanks17:48
ingenthrquick question based on trondn's; if i bzr revert -r previous-rev-no17:51
ingenthrbzr revno still shows the current revno17:52
dashright. revert only affects your working copy, not your branch.17:52
ingenthrthis is why i thought revert wasn't doing it's thing...  how can see what the state of my current branch is?17:52
dashwhich part of its state?17:52
ingenthroh, okay, how can i see my current working copy17:53
dashit's the files you've got :)17:53
ingenthruse case is as follows: i need to go back and work on an older, tagged version17:53
ingenthrso i used bzr tags to find the revno17:53
dashok17:53
ingenthrthen the correct thing to do is revert to that revno and do whatever work i need to do?17:53
ingenthrthanks for the help by the way dash17:54
dashnp17:54
dashwell it depends17:54
ingenthrdo i have the right workflow for my use case?17:54
dashyou want to create a new version based on modifications to the version at that tag, and not including the changes since the tag?17:54
ingenthrin this case, probably not17:55
=== mario_ is now known as pygi
ingenthrbut i can see other cases where i may17:55
ingenthri.e. a "sustaining tail"17:55
ingenthri guess that'd be it's own branch then?17:55
dashyes17:55
dashyou can do 'bzr branch -r <revno>' if you only want to get the history up to a certain point17:56
dashwhen creating a branch17:56
ingenthrbut in the case i'm not making changes, i can just revert -r revno and do my build with alternate parameters, right?17:56
dashyep.17:56
ingenthrokay, thanks.... spent a lot of time with the docs on this...17:57
ingenthri didn't find much in the docs with what to do with a tag once you've got one :)17:57
ingenthrand i'm obviously new to bzr17:57
dashit's just a name for a revision17:57
ingenthryeah, it's the larger workflow issues17:58
ingenthri.e. going back to a tag, working from there, issuing a patch, etc.17:58
ingenthri think i'm in good shape for now though, thanks dash!17:58
dash:)17:59
dashingenthr: bzr itself, for example, has separate branches for each major version18:00
dashso if there's a problem in 1.15, changes can be made in lp:bzr/1.15 and 1.15.1, 1.15.2, etc., versions can be released from there18:01
ingenthrwhere 1.15 is a tag, right?18:03
ingenthrnot a revno18:03
dashit's a branch name18:03
dashthey may use tags, I don't remember.18:03
Chuck__Hi all. I appreciate bzr for its ease of use. I am currently worked with just one colleague on a paper in latex and we want to use bzr. I have my own repository and I sent it to him via e-mail. Now what is the most straightforward way to send him a patch which he may merge (eventually getting conflicts)? I want the result to be that we have the same revisions18:11
Chuck__I tried to use bzr submit -o file18:12
Chuck__using as a public branch a branch with the exact revision I sent18:12
Chuck__and then merge works, but does not commit a new version, so the log message is not the same for example. I want instead to see the same log message and author of the commit on both sides.18:12
luksthe original revisions are still there18:13
luksbut if there were no modifications on the other side, he could use pull instead of merge18:13
luksthen the branch would look identically on both sides18:14
Chuck__aha just use pull18:14
Chuck__and if there are conflicts it will work as usual18:14
Chuck__he will get conflicts, then send a patch to me, isn't it?18:14
luksif there is a possibility for conflicts, pull will refuse to work18:14
lukspull will only work if there are no changes at all18:14
Chuck__hmm conflicts always lead to confusion. So if we both change the repository what are the options to get synchronised?18:15
Chuck__without both having r/w access to a repository?18:15
lukswell, the easiest option is to use merge and not worry18:16
luksbzr log will still show you the original revisions18:16
Chuck__luks: you mean, use merge, and then commit?18:16
luksbut it will have one new revision, the merge commit18:16
luksyes18:16
Chuck__but if I happen to have both repositories, will bzr be able to tell that the two seemingly different commits are the same?18:17
luksas I said, there are situations when you can use pull instead of merge18:17
Chuck__He could pull on a clean copy of the last synchronisation point18:17
luksChuck__: I think you are misunderstanding how merge works18:17
Chuck__and then merge with his own, that would work?18:18
Chuck__luks please explain me if you have time18:18
Chuck__I always get confused by VCS in general18:18
lukssure18:18
lukslet's assume you have two branches, both with two commits A B18:19
luksnow if you commit C to one of them, you can use bzr send to generate a patch and use bzr pull on the other side to apply it18:20
luksthen you end up with identical branches on both sides18:20
luksnow let's say you commit C to one of them, and send him the patch18:21
luksbut before he gets the patch, he commits D to his branch18:21
Chuck__luks wait a sec. I am already lost18:21
luksnow you have "A B C" and he has "A B D"18:21
Chuck__ah ok18:21
Chuck__yes this is the situation18:22
luksand in this situation you need to merge18:22
Chuck__aha ok18:22
luksso after merge you end up something that is not really a line18:22
luksone sec18:22
Chuck__yes this is clear, it's like a diamond sort of18:23
luksok, so I'm not doing to "draw" it :)18:24
luksthe point is that bzr knows where each revision is from18:24
luksand it knows the original ordering of the revisions18:24
Chuck__ok18:25
Chuck__so the merge is actually a new revision18:25
luksso your revision C is still there, but there is a new revision, under which your original revision is merged18:25
luksyes18:25
Chuck__yes but will I see C in the changelog?18:25
luksof course18:26
Chuck__hmm then I did the wrong experiment, let me redo it18:26
luksyou will see it "indented" under the new revision18:26
Chuck__aah so only when I finally commit the merge. So the merge status is special. I have the conflicts and then I can commit, but it will actually commit 2 revisions18:26
Chuck__did I get it?18:26
lukstechnically, it will commit only 1 revision18:27
luksyour original revision will be copied when you run merge18:27
Chuck__my original revision="C"18:28
Chuck__?18:28
luksand the new revision will be added when you merge18:28
luksyes18:28
Chuck__but after merge if I do bzr log I still don't see C, right?18:28
luksChuck__: are you on windows by a chance?18:28
luksChuck__: you should see C18:28
Chuck__luks: no way, I left windows for good 12 years ago :)18:28
Chuck__aha ok I will retry now18:28
Chuck__ok I see C18:29
Chuck__whatever it is18:29
Chuck__I was just wrong earlier.18:29
luksif you have bzr-gtk or qbzr installed (bzr plugins), you can use bzr viz or bzr qlog18:29
luksthat should make it much more obvious what's going on18:29
Chuck__so it's very clear now. I just prepare a patch with "bzr something" which I already forgot, and then "bzr merge" on the obtained file. What is something btw :) I'll write this down18:30
Chuck__bzr send18:30
lukssomething is send :)18:30
luksyea18:30
Chuck__you've been patient and helpful. Thanks. A last question though: is there any sane reason why I should prefer the hassle to find a shared sftp service instead of sending patches via e-mail in such a simple scenario?18:31
luksit might be easier for you than sending emails18:31
luksbut no technical reason18:31
luksthe result will be the same both ways18:31
Chuck__the result is the same, that's what it seems, ok.18:32
luksyes18:32
Chuck__*very* good. This will become popular among my friends :)18:32
Chuck__because until now we had two options: a centralised server, which always was a pain, because of passwords, and firewalls, or send all the files by e-mail every time, which is a pain when the directory grows18:33
Chuck__now we will use bzr :)18:33
Chuck__thanks again and bye18:33
luksbye :)18:33
Chuck__luks sorry there is still a "very last one" :) Previously I did bzr diff using as a "public branch" just the result of "bzr branch -rLAST_REVISION_SENT" on my repository. Is there a more convenient way than re-creating a branch every time?18:37
dashdiff takes an -r argument18:38
luksdash: but send doesn't (in an useful way)18:38
Chuck__bzr send I meant18:38
luksChuck__: unfortunatelly, there isn't18:38
Chuck__luks the pqm extension seem in topic but I do not dare :)18:39
dashhm18:39
luksyou can bzr pull -rLAST_REVISION_SENT in the pseudo-public branch18:39
dashcan't you use 'bzr diff -rsubmit:'?18:39
luksdash: you can't merge from that18:39
lukssend is useful because it sends a bundle18:39
luksbut it insists on a public branch18:39
dashoh, sorry, he meant send. :)18:40
Chuck__ok no problem so I will have two repositories. One will be the most up-to-date idea I can have of the "other" repository, that is the "pseudo public repository". The other one will be my working copy.18:40
luksI think bzr send with -r or -c will start doing cherry-picks18:40
lukswhich are not the desired result18:40
Chuck__luks yes -r applies to the "local" revisions18:40
Chuck__I think it would be possible to implement this behavior in bzr itself18:41
luksyeah, there were some discussion what should send do in such situations18:41
luksthe use case was very similar actually18:41
luksfor now you will have to run pull in the public branch every time you send a patch18:42
Chuck__luks not sure: I will have to wait for the possible merge, and either pull or merge myself no?18:43
Chuck__no sorry, always pull18:43
luksChuck__: no, you don't have to wait for the merge18:43
Chuck__yes I do, I want the other person's changes :)18:43
lukswell, they will send it to you18:43
luksbut that should not block the workflow (from bzr point of view)18:44
Chuck__and I will apply these at least in the working copy. But what about the "pseudo public"18:44
Chuck__ah yes I know18:44
Chuck__but then the notion of synchronisation point is becoming fuzzy again18:44
Chuck__so when I get the merge from the other party, I have to pull it in the public repository18:45
Chuck__and then this is my new public repo18:45
luksif you send a patch, and after that update the pseudo-public branch to match your working branch, it will work18:45
luksmerging from somebody else is just "working on the branch"18:45
Chuck__I will probably send redundant versions including the other person's own merge in the future, but it will work.18:45
luksyes, exactly18:46
luksyou can look at the log he sent, and update the pseudo-public branch to the right revision18:46
Chuck__ok now I got the complete picture I hope. Pull in the pseudo-public, merge in the working copy18:46
luksbut that might be too much work18:46
Chuck__this must be automatised18:46
Chuck__ok bye for now I wish I had the time to help a bit.18:47
dashHm =/19:02
dashdoes loggerhead 1.10 not work with bzr 1.16?19:02
dashhttps://bugs.launchpad.net/loggerhead/+bug/382765 suggests it does not19:17
ubottuUbuntu bug 382765 in loggerhead "history.py uses deprecated (and deleted) ProgressBarStack" [Critical,Triaged]19:17
jenredhello! Having a very frustrating problem with bazaar +launchpad maybe someone could help?19:36
jenredI'll ask anyway ;>19:36
jenreddespite having what looks like a good local setup -- I have a GSoC student who keeps getting permission denied when she tries to push to her branch19:37
jenredas far as I can tell her key-pair is set up correctly19:38
Takanyone have thoughts about the design for a gui for interactive conflict resolution?19:45
beunoTak, something that shows me the code that I have, and the code that's coming it clearly and let me decide which one to keep, for starters, would be fantastic19:46
Takbeuno: well yeah, those are the essential ingredients19:47
beunoexactly, essential is a fantastic start!19:48
Takbut I'm hoping to come up with something a little less clumsy than, say, the tortoise ui19:48
luksjenred: it's hard to say what's wrong without knowing details19:49
jenredluks is there somewhere better to ask?19:50
jenredshe's running Intrepid and has regenerated her keys multiple times19:50
jenred-Dhpss did give her a  "report a bug" with a traceback -- I think she's opening a bug19:51
lukswell, the obvious problems might be missing "bzr launchpad-login"19:51
jenredwe already tried that ;>19:51
luksor not uploaded key on launchpad19:51
jenredyep key is there19:51
luksor wrong key on laynchpad19:51
jenredthat's what I was thinking but she's double-checked19:52
lukscan she use sftp to connect to bazaar.launchpad.net?19:52
jenrednot sure if she's tried sftp ... we'll give that a try19:54
luksthat might give some more useful error message19:54
dash"interactive conflict resolution"?19:57
dashis that the new euphemism for a fight in the parking lot19:57
jenredluks thanks19:57
luksjenred: btw, just to be safe, when I said sftp I meant actual sftp client, not a sftp url for bzr20:00
jenredohhh20:01
jenredright20:02
jenredshe's getting a bzr: ERROR: Unable to connect to SSH host launchpad.net; EOF  during negotiation20:03
jenredusing sftp url20:03
luksbazaar.launchpad.net20:15
luksnot launchpad.net20:15
jenredright20:15
jenredno luck but a better error message20:15
jenredi think there is a mismatch problem between her UID locally, and her lp login20:16
kanika_vatsluks, Hi there I am the one getting this error jenred is talking about.....20:18
kanika_vatsI have tried everything what you have said.....also I feel that I have my right ssh public key registered with launchpad...and that my launchpad-login registered with bazaar is also correct20:20
luks"sftp YOUR_LAUNCHPAD_IS@bazaar.launchpad.net"20:20
luks*ID20:21
kanika_vatsalright...let me see20:22
kanika_vatsohk...i have got an sftp> prompt20:23
luksso it's working20:23
kanika_vatsyea...it is20:23
lukswhat's your launchpad ID and what's the project/branch you want to push to?20:24
kanika_vatslaunchpad ID: kanika-krikan20:24
kanika_vatsbranch:lp:~systers-dev/systers/orm20:26
luksok, try bzr push with this URL - bzr+ssh://kanika-krikan@bazaar.launchpad.net/~systers-dev/systers/orm/20:27
kanika_vatsi am getting the error:20:29
kanika_vatsPermission denied (publickey).20:29
kanika_vatsbzr: ERROR: Connection closed: please check connectivity and permissions (and try -Dhpss if further diagnosis is required)20:29
lukswell, that's strange20:29
kanika_vatsI know it is.....have tried many things...and have also checked everything is right multiple times20:30
kanika_vatsI am able to do a local commit...an update..checkout everything except commiting or pushing to my launchpad branch20:31
lukscan you please run "bzr push -Derror bzr+ssh://kanika-krikan@bazaar.launchpad.net/~systers-dev/systers/orm/" and pastebin the error?20:31
kanika_vatsohk...yea sure20:31
luksideally from ~/.bzr.log20:31
kanika_vatsthere is no log file....in ~/.bzr20:34
kanika_vatswheni do ls20:34
kanika_vatsi get20:34
kanika_vatsbranch  branch-format  branch-lock  checkout  README  repository20:34
kanika_vatsthese files20:34
kanika_vatsbut the error that i am getting on running the above cmnd is:20:34
lukson in ~/.bzr, "less ~/.bzr.log"20:35
luksbtw, having a .bzr dir in your home directory is probably not a good idea20:35
kanika_vatsI am not having .bzr dir in my home directory20:36
kanika_vatsI am having it another directory /usr/local/mailman where i checked out my code from the launchpad branch20:37
kanika_vatsPermission denied (publickey).20:38
kanika_vatsbzr: ERROR: bzrlib.errors.ConnectionReset: Connection closed: please check connectivity and permissions (and try -Dhpss if further diagnosis is required)20:38
kanika_vatsTraceback (most recent call last):20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/commands.py", line 857, in run_bzr_catch_errors20:38
kanika_vats    return run_bzr(argv)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/commands.py", line 797, in run_bzr20:38
kanika_vats    ret = run(*run_argv)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/commands.py", line 499, in run_argv_aliases20:38
kanika_vats    return self.run(**all_cmd_args)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/builtins.py", line 802, in run20:38
kanika_vats    use_existing_dir=use_existing_dir)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/push.py", line 47, in _show_push_branch20:38
kanika_vats    dir_to = bzrdir.BzrDir.open_from_transport(to_transport)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/bzrdir.py", line 798, in open_from_transport20:38
kanika_vats    return format.open(transport, _found=True)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/bzrdir.py", line 1725, in open20:38
kanika_vats    return self._open(transport)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/bzrdir.py", line 2605, in _open20:38
kanika_vats    return remote.RemoteBzrDir(transport)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/remote.py", line 76, in __init__20:38
kanika_vats    response = self._client.call('BzrDir.open', path)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/smart/client.py", line 111, in call20:38
kanika_vats    result, protocol = self.call_expecting_body(method, *args)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/smart/client.py", line 124, in call_expecting_body20:38
kanika_vats    method, args, expect_response_body=True)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/smart/client.py", line 72, in _call_and_read_response20:38
kanika_vats    expect_body=expect_response_body)20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/smart/message.py", line 258, in read_response_tuple20:38
kanika_vats    self._wait_for_response_args()20:38
kanika_vats  File "/usr/lib/python2.5/site-packages/bzrlib/smart/message.py", line 224, in _wait_for_response_args20:38
kanika_vats    self._read_more()20:38
kanika_vats  20:39
kanika_vats File "/usr/lib/python2.5/site-packages/bzrlib/smart/message.py", line 247, in _read_more20:39
kanika_vats    "(and try -Dhpss if further diagnosis is required)")20:39
kanika_vatsConnectionReset: Connection closed: please check connectivity and permissions (and try -Dhpss if further diagnosis is required)20:39
kanika_vatsthis is what i get on running the command20:39
lukskanika_vats: I'm afraid I don't know what's the problem :(20:40
luksyou can try asking in #launchpad20:40
luksthey will be probably more helpful20:40
kanika_vatshey never mind .....thanks a lot for your time and help20:40
kanika_vatsI will ask the launchpad people about the bug....20:41
kanika_vats;>20:41
kanika_vatsthnks20:41
spirov92hey, there's no example on using feature branches. How do these work?20:50
dashit's a branch20:50
dashyou write a feature20:50
dashthen later, you merge it to the mainline.20:51
spirov92sounds simple20:51
spirov92to use a feature branch, do I have to copy the files?20:54
luksno, you have to create a branch20:57
luksusing "bzr branch" :)20:57
beunomwhudson, hi21:41
beunoI feel like releasing loggerhead again21:42
Lo-lan-doYay21:42
mwhudsonbeuno: ah yeah, good idea :)21:42
Lo-lan-doWill you be at debconf?21:42
beunothere are 2 blockers I can think of:  we need to ship with a daemonized version of serve-branches21:42
beunoand, we need to fix the Critical bug that breaks lh and bzr 1.1621:42
Lo-lan-doSo we can discuss how best to integrate with fusionforge…21:43
beunoLo-lan-do, I won't this time  :(21:43
Lo-lan-doBlah21:43
beunoLo-lan-do, there may be other developers like lifeless21:43
beunohe's a DD, but I'm not sure if he plans to go21:43
Lo-lan-doI think jelmer will be there.  But anyway, I'll poke you on IRC when the release is done.21:44
beunomwhudson, bug 38276521:45
ubottuLaunchpad bug 382765 in loggerhead "history.py uses deprecated (and deleted) ProgressBarStack" [Critical,Triaged] https://launchpad.net/bugs/38276521:45
beunoI have *no* idea how to fix it21:45
beunomind if I assign it to you?  :)21:46
mwhudsonbeuno: i can't in any way make the code fail21:46
mwhudsonso i guess we should delete it21:46
beunoyay!21:46
beunoeasy fix21:46
mwhudsonbeuno: the bug about loggerhead not working as a plugin should be fixed i guess21:55
beunomwhudson, agreed. Target whatever you feel needs to be fixed before release. I'm going to tackle some of the bugs, and start brushing up on the release process21:58
beunoLo-lan-do, do you have the code you use to daemonize serve-branches?22:01
Lo-lan-doUm, I thought you merged it already…22:02
beunodid I?22:03
Lo-lan-dohttp://bzr.debian.org/loggerhead/users/lolando/loggerhead/daemonise22:03
Lo-lan-doDrop the first "loggerheadd/" for the branch URS22:03
Lo-lan-doL22:04
beunothanks Lo-lan-do22:04
Lo-lan-dobzr missing --other http://bzr.debian.org/users/lolando/loggerhead/daemonise22:04
Lo-lan-doYou might need to rebase and/or port to current code :-)22:05
=== ja1 is now known as jam
=== BasicPRO is now known as BasicOSX
jampoolie: ping23:08
pooliehi jam23:18
pooliejam, want a chat?23:18
jamyep23:18
beunomwhudson, any ideas why even though I have python-paste installed, I can't import it from any version of python?23:28
mwhudsonbeuno: that sounds fairly broken23:29
beunomwhudson, it's a fresh install from 2 weeks ago, after setting up Launchpad23:30
mwhudsonbeuno: is /var/lib/python-support/python2.6/paste/ there?23:31
beunomwhudson, yes, and has files23:31
mwhudsonbeuno: and what happens when you import paste in python2.6 ?23:32
mwhudsonbeuno: is /var/lib/python-support/python2.6 on sys.path?23:32
mwhudson(if not, then everything would be broken i guess23:32
mwhudson)23:32
beuno>>> import paste23:33
beunoTraceback (most recent call last):23:33
beuno  File "<stdin>", line 1, in <module>23:33
beunoImportError: No module named paste23:33
beunoI do have it in sys.path23:34
beuno>>> import sys23:35
beuno>>> print sys.path23:35
beuno['', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/var/lib/python-support/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/var/lib/python-support/python2.6/gtk-2.0', '/usr/local/lib/python2.6/dist-packages']23:35
mwhudsonbeuno: this is impossible :)23:38
mwhudsonbeuno: try running python -v23:39
mwhudsonand then import paste23:39
mwhudson(there will be heaps of output, pastebin it)23:39
beunomwhudson, https://pastebin.canonical.com/19122/23:41
mwhudson??23:42
mwhudsonbeuno: maybe the same with -vv ?23:42
beunomwhudson, https://pastebin.canonical.com/19123/23:45
mwhudsonbeuno: does /var/lib/python-support/python2.6/paste have an __init__.py file?23:46
lifelessls /var/lib/python-support/python2.6 for us23:46
beunolifeless, https://pastebin.canonical.com/19124/23:47
beunomwhudson, it does not23:47
mwhudsonbeuno: well there's the problem then23:47
lifelessI think you need to run 'sudo update-python-modules /usr/share/python-support/python-paste.public'23:48
lifelessor sudo update-python-modules python-paste.public, if the former complains about the argument23:48
rellis__How do you pass in username with bzr+ssh:// ?23:50
lifelessbzr+ssh://USERNAME@host/...23:50
rellis__bah i thought i tried that23:51
beunolifeless, https://pastebin.canonical.com/19125/23:53
beunomwhudson, I've reinstalled the package thrice!23:53
mwhudsonbeuno: i guess you need to find someone know knows something about ubuntu23:53
mwhudson(that's surely not me :/)23:54
mwhudsonbeuno: have you tried searching for similar bugs on launchpad?23:54
lifelessbeuno: karmic ?23:54
beunolifeless, jaunty23:54
beunomwhudson, searching...23:54
lifelessbeuno: run the second command I gave you23:55
beunolifeless, I did23:55
beunothat's the pastebin23:55
lifelessplease include the actual command run when pastebinning, it will avoid confusion23:56
beunoyeah, sorry  :)23:56
beunoboth commands give the same output23:56
lifelessI can't tell if you did 'sudo update-python-modules /usr/share/python-support/python-paste.public' or 'sudo update-python-modules python-paste.public'23:56
beunolifeless, both gave me the same output23:57
lifelessok23:58
lifeless ls /usr/share/python-support/python-pas* -d - I get  '/usr/share/python-support/python-pastedeploy.public  /usr/share/python-support/python-paste.public  /usr/share/python-support/python-pastescript'23:58
beunobeuno@beuno-laptop:~$ ls /usr/share/python-support/python-pas* -d23:59
beuno/usr/share/python-support/python-paste  /usr/share/python-support/python-pastedeploy  /usr/share/python-support/python-pastescript23:59

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