/srv/irclogs.ubuntu.com/2007/09/05/#bzr.txt

=== herzel76 [i=herzel@gateway/tor/x-0fce8468103591d3] has joined #bzr
ubotuNew bug: #137387 in bzr "Strange error message decorating the output of bzr status" [Undecided,New]  https://launchpad.net/bugs/13738712:05
=== Basic_py is now known as Basic
keirlifeless: sorry to interrupt your deep hacking. it seems all that's stored in the index layer (the values) are integers. do we actually want to store arbitrary strings?12:18
=== phanatic_ [n=phanatic@3e44ad9e.adsl.enternet.hu] has joined #bzr
=== jam-laptop [n=jameinel@adsl-75-51-62-134.dsl.chcgil.sbcglobal.net] has joined #bzr
=== jam-laptop [n=jameinel@adsl-75-51-62-134.dsl.chcgil.sbcglobal.net] has left #bzr []
lifelesskeir: there is a layering concern here12:30
lifelessright now there is a boolean and two ints stored in the product values12:30
keirlifeless, i see12:31
lifelessI would be ok with making them into structured data rather than strings if there is a tangible win; otoh it makes the index less able to be reused - e.g. the pack-names index will need to be different12:31
keirlifeless,  i am just wondering, because it is potentially useful if there is a fixed-size-data case12:31
lifeless(it currently stores 4 ints)12:31
keirin my attempts to compress data structures, i've been known to reuse the lower bits of pointer addresses to store booleans :)12:32
keirmy other question: are most uses repeated traversals?12:33
keirand why is it in the code you posted above, that it only traverses the first one?12:33
lifelessour knit deltas are deltas against one parent12:33
lifelessthere are two parent-lists per node in the .tix12:34
lifelessone parent-list is the per-file graph, which is unrelated to compression12:34
lifelessthe other parent-list is for the compression code12:34
keirwhat does tix stand for?12:34
lifelessand the compression code forms a tree, not a graph, so there is only ever 0 or 1 nodes12:34
lifeless'text index'12:34
keirok12:35
lifelessI don't know what the most common traversal is12:35
keirso there is an index for the compression code?12:35
lifelessor most common query pattern I should say12:35
lifelessfor .rix its probably breadth first repeated queries on the first node-reference list12:36
lifelessfor .iix it will probably be compression-sequence lookups - repeated queries following the compression parent12:37
=== jml [n=jml@ppp121-44-221-92.lns1.hba1.internode.on.net] has joined #bzr
lifelessfor .six it will simply be large set queries for (all revisions being pulled at once)12:37
Odd_BlokeI'm trying to modify my bundle for bug #52479 to work on local branches as well as remote ones.  However, I'm struggling to find a way of working out where an unbound branch is committing to (with a bound branch I just use Branch.get_bound_location()).  What's the best way to do this?12:37
ubotuLaunchpad bug 52479 in bzr "Message at the end of commit for bound branches" [Wishlist,In progress]  https://launchpad.net/bugs/5247912:37
lifelessfor .tix it could be compression-sequence lookups, or it might be file-graph searches12:37
lifelessOdd_Bloke: branch.base ?12:37
keiraaaag! i just hit ctrl-L and logging is off in my xchat12:38
keirdoes someone have a log of the last few hours?12:38
lifelessOdd_Bloke: in commit it should simply be 'committed to %s' % master_branch.base12:38
lifelessOdd_Bloke: you shouldn't need to make any calls about bound branches12:38
=== keir stomps on xchat for not having logging on by default.
lifelesskeir: there is one on the web I believe12:39
keirno one else has logging on?12:40
keiri was going to paste our chats into my notes and tidy it up12:40
lifelesskeir: there is not a separate index for compression; the compression code uses the second node-reference list to form the compression-tree12:40
Odd_Blokelifeless: Yeah, my one year of CompSci Java had me only looking at methods. :/  I'll modify it as such.12:40
lifelesskeir: its layering - the index layer is agnostic for the exact use its put to, which has allowed me to use it about 3 different ways so far12:40
keirlifeless, i don't know what a compression-tree is12:41
keirlifeless, yes, i understand.12:41
keirlifeless, however i think it is reasonable to add a 'my values are 8 bytes' flag to the graph builder12:41
lifelesskeir: I don't know how to describe it differently. I've tried twice12:41
lifelessWe store a given byte-sequence as either a full copy or as a line based deltas against another byte sequence12:42
keirlifeless, ok, so that is a compression tree. i understood that, just not that it was named 'compression tree'12:43
lifelesswell we don't have a ideal name for it12:43
lifelessits not a graph12:43
lifelessthough a graph can store it12:43
lifelesswhich is how I fit it into the GraphIndex structure12:43
keirand i imagine the compression tree, in typical use cases, has a very low branching factor12:44
lifelessgiven that the index builder only has to output data when the index has all its entries added to it, I don't see why you add a flag telling it how long the values are: you can determine that by inspection during finish()12:44
lifelesskeir: the compression tree for inventory is about 4 for every one12:45
lifelesserm12:45
lifelessthats wrong,t ahts the ratio of non-mainline to mainline12:45
lifelessbest thing to do is to query it yourself and see for a live repository :)12:45
keirtrue!12:46
lifelessyou could report on this for inventories and texts - .iix and .tix12:46
lifelessnow12:46
lifelessbyte-sequence reconstruction is performance critical for many operations12:46
keirwhat does that mean?12:46
keirbyte-sequence reconstruction12:47
lifelessI've been referring to 'texts' in an ambiguous way12:47
lifelesstexts can mean 'something in the .tix index' or it can mean 'any sequence of bytes we have stored in the repostiory' which is a superset of the first meaning12:47
lifelessso I'm disambiguating now to be clear12:47
keirok12:48
lifelessreconstructing things like the contents of an inventory or the contents of a given file version is a common operation12:48
lifelessand when its slow it multiplies in effect12:48
lifeless'bzr checkout mozilla' for instance constructs 55K byte sequences which are delta compressed12:48
keirah! so i imagine that's slow12:49
lifelessso that will be following the compression tree for 55K texts in the .tix and 1 inventory from the .iix12:49
keirbut ideally, there is a pack with a fulltext only a few deltas behind, correct?12:49
lifelessso for .tix and .iix getting the nodes from the compression tree for a single node is a very common operation12:49
lifelesswell fulltexts are put in when the deltas add to about the size of the full text12:50
lifelessso a big text gets more fulltexts between deltas than a small text12:50
lifelesserm switch the words there12:50
keiryes, i understand.12:50
lifelessok12:50
keiris it often that many files are queried?12:51
lifelesslets see12:51
keirfor one of my projects, astrometry.net, we use some very clever branch-and-bound algorithms to compare two trees; one is our index, and one is constructed at query time12:51
lifelessbranch and checkout will queries size-of-tree nodes for the compression graph12:51
lifelessmerge will query size-of-difference * two12:52
keirso in  those cases it may be possible to do better than N * (index lookup)12:52
lifelesspull does a merge under the hood12:53
keirso the only time branch is not equivalent to cp -R is when there's a shared repo, and you are only branching one of the branches?12:53
lifelesssame with update12:53
lifelessbranch is never equivalent to cp -R12:53
keirok. i fail to see why12:54
lifelessif there is no shared repo we do a clone, which spiders all the data and verifies12:54
keirin cases where it's not a shared repo12:54
keirso just cp -R + md5check12:54
lifelessyou as a user can do that12:54
lifelesswe dont12:54
lifelessyou might be mounting sftp over fuse for instance12:54
keirok. just because of portability?12:54
lifelessbeing on a file:// url doesn't guarantee data integrity12:55
lifelessyou might have a lot of unreferenced data12:55
keirok, right. my question is more one of what is the fundamental operation, and in non-shared branching, it is just copying raw bytes.12:55
lifelessand we don't copy that - if you make a new branch it only contains the data referenced12:55
lifelessok12:55
lifelessto make a new branch we:12:55
keirexactly, which is why it is not the case for shared repos, because you only branch one of the severa branches, and the shared repo contains all revs12:56
lifeless - ensure there is a repository that can be used at the branch. In the shared repo case we find that up the containing directories. In the non shared repo case we create it.12:56
lifeless - we perform a data fetch from the source branch's repository for the revisions referenced by the branch12:56
lifeless - we create a working tree of the tip of the branch12:57
lifelessfor a shared repository the fetch operation fast-paths and just asserts that the data requested is in fact present12:57
keirok12:59
lifelessIf you have more questions ping; I suggest getting some of the live indices and exmaining them playing with them etc, perhaps instrument to record the sequence of calls or something then use bzrlib and see what's asked for01:02
keiryeah01:03
keirwhere can i get a big pile of live indicies?01:03
lifelessmy repo that I have pointed you at01:04
keirok01:04
keirthose are all the uses for the index right now?01:04
lifelessor follow my dogfooding instructions from the list01:04
lifelessand make your own pack based repo01:04
lifelessyes, they are all the uses01:04
lifelesscourse, we aren't finished01:04
lifelessso as a client let me be clear - the scope is-a-changing :)01:04
lifeless(but not much I hope)01:05
=== poolie_ is now known as poolie
=== mw is now known as mw|out
=== herzel76 [i=herzel@gateway/tor/x-7a2349dcd7b2cadf] has joined #bzr
lifelesspoolie: still on the phone ?02:09
poolienow serving #7202:09
keirlifeless: can we exploit that most of the keys have large common prefixes?02:09
keirbecause of what we are storing, a radix tree for the keys might not be crazy02:14
ddaapoolie: got a patch for you02:16
abentleyThe form of the keys is not guaranteed.  imports from git, for example, may have revision ids of "git:%(hash)s".02:17
ddaahttp://paste.ubuntu-nl.org/36388/02:18
keiralso, i'm not sold that we want multiple adjacency lists for each node; why not use multiple graphs, with a seperate key/value index?02:18
keirabentley, ok.02:18
ddaaMake bzrlib.tests.TestCase use super() in setUp and tearDown, and fix a small typo that fucks up emacs syntax highlighting.02:18
ddaapoolie: poolie need anything else for this patch? It's fairly trivial.02:19
ddaa(the super stuff is needed now for some Launchpad test case)02:19
abentleykeir: Gnu Arch imports have a common prefix.  bzr-svn 3 does.  Dunno about bzr-svn 4.02:19
keirwhat's a reasonable size for a preamble?02:20
keiri figure there's going to be no way to avoid reading at least a few hundred bytes from the start of each index02:20
abentleyI think lifeless has been talking about reading 64K at a time.02:21
keirit seems to me that you can shrink down the size of the index if you separate the key/value part from the key->(key)* part02:21
abentley(for remote access, that is)02:21
keiryes, of course02:21
abentleySo you would want that 64K to include the preamble and a sizeable number of recent keys.02:22
poolieddaa, did you post it to the list?02:23
ddaaahem02:23
ddaano02:23
ddaaI do not plan to02:23
ddaaI do not have time to read the bzr list really.02:23
ddaaspiv is looking at it now02:23
pooliehrm02:24
ddaaI'll have him get through the hoops.02:24
spivddaa: hmm.02:24
keirhmm, so after a pull, locally an index gets built from the data that got pulled? (for pack repos anyway)02:25
spivddaa: the problem is it's an incompatible API change.  Other people might have subclasses with multiple-inheritance involving bzrlib.tests.TestCase already.02:26
=== spiv thinks
ddaaif they do, then they're bust02:27
spivddaa: not at all02:27
ddaabecause all the other test classes that derive from TestCase use super() already02:27
lifelesskeir: thats a possibility, consider benchmarking on live data02:28
ddaaAs far as I can tell, there is no way to look at it and not see it as a bug, because TestCase clearly is the one breaking the rules.02:28
spivWell, bzrlib doesn't multiply inherit from TestCase via different routes.02:28
lifelesskeir: you can use my dgofooding insutrctyions to convert repos like thepython import on launchpad to packs02:28
poolieddaa, posting a patch to the list does not require that you read everything on the list02:28
lifelessddaa: python's TestCase doesn't use super FWIW02:29
poolieit's enough to just say 'please cc me on replies', or pick out that one thread from the list02:29
abentleyddaa: There are at least a few places we use MI in the test suite: the bundle tests and the versionedfile tests come to mind.02:29
ddaalifeless: if that's a problem, then all the classes that derive from bzrlib.tests.TestCase should be changed not to use super()02:29
keirlifeless, ok. it seems reasonable that there may be multiple indexes with the same keyspace, and possibly differerent or same data02:30
lifelessddaa: is this impacking you in some way ?02:30
pooliewhat specific problem does it cause?02:30
spivddaa: what lifeless said.  Using super in bzrlib.tests.TestCase isn't going to solve all uses of inheriting from two different unittest.TestCase classes.02:30
ddaalifeless: yes, I want to MI from a TestCaseWithTransport and one existing test class in the Launchpad test suite that derives from unittest.TestCase.02:30
thumperddaa: best to state what you actually want it to do and why it doesn't currently work02:31
=== lifeless bows out there are enough eyeballs on this
lifeless-->commit performance02:31
spivddaa: I don't think that can work reliably, sadly.02:31
spivddaa: because you have diamond inheritance02:31
pooliei wish i'd inherited diamonds :)02:32
spivddaa: but part of the inheritance graph is unittest.TestCase, which doesn't use super.02:32
ddaaspiv: it is not a problem because there is no diamond above unittest.TestCase02:33
spivI *think* the fact that unittest.TestCase is the notional common root might be enough to make it work with current Python.02:33
keirlifeless, actually, i have a crazy idea. what about having a mapping var length keys -> fixed size id's. then we can support key tuples as (id1, id2) rather than the full string02:33
spivBut they've changed the MRO before and could easily do it again.02:33
spivIn general though, I think inheriting from multiple TestCases isn't a good thing to do.02:33
keirlifeless, then we get to have 1 place that lists all the file id's and one place that lists the rev id's02:33
ddaaspiv: I find it unlikely that a MRO change would affect a simple case like this one.02:34
spivBecause you'02:34
lifelesskeir: thats roughly what the current index does, the fixed size ids are byte offsets in this case02:34
lifelesskeir: so its a reasonable thing to do02:34
spivre likely to get difficult interactions even without super.02:34
ddaaspiv: okay, I give up on this patch and just somehow refactor my code.02:34
keirlifeless, ok. it looks like the file id's and rev id's are used in multiple idx's; so this would be a big win on large indexes02:34
poolieddaa, i'd suggest instead02:34
ddaaI see too much reviewer argument ahead.02:34
=== ryanakca [n=ryan@ubuntu/member/ryanakca] has joined #bzr
pooliewell, to back up02:35
poolieyou need some bzr-related setup and some lp-related setup done for a single test?02:35
ryanakcafor bzr commit, it's 'bzr commit -m "commit message" --fixes:lp:bugnumber' ?02:36
ddaapoolie: in a nutshell, yess02:36
pooliei'd be inclined to do it by02:38
poolierefactoring the parent classes so that all the setup methods are individually callable02:38
pooliewhich should generally be the case already for bzr02:39
pooliethen having your setUp just do what it wants02:39
pooliei think relying on super to do all this is confusing/problematic02:39
ddaayes, that what I meant by "refactor my code"02:39
pooliespiv, do you agree02:39
ddaaI it just mildly disappointing because MI would have been the natural way to do it IMO.02:39
spivYes, I think that would probably work.02:40
spivA hackish way to do that is simply:02:40
spivdef setUp(self): self.borrowedTest = OtherTestCase('foo'); self.borrowedTest.setUp()02:40
keirhah, i am redesigning berkely db02:41
ddaapoolie: BTW, you probably want to clean out the uses of super() in setup() and tearDown() methods of bzrlib.tests.TestCase descendants then.02:41
poolie:)02:41
spivWhich doesn't save you from conflicts in the setup (e.g. if both tests want to tweak global state like logging, os.environ, or the cwd).02:41
spivBut that would be a problem with MI anyway.02:41
ddaapoolie: either use it everywhere, or use it nowhere. The current situation is just a problem waiting to happen IMO.02:42
spivAlso, you don't get easy access to custom assertion methods on the OtherTestCase.02:42
ddaaspiv: which would be an annoyance in this case.02:42
pooliegoogle says "authentic python handbag" :)02:43
poolieddaa, if you want to remove them in fixing this that's ok with me,02:43
poolieor file a bug02:43
poolieddaa, please use the regular review mechanism if you want bazaar changes02:43
lifelesskeir: bdb doesn't have graph awareness; thats a key part of this index logic02:43
poolieand we will try to make it work efficiently for you02:44
ddaapoolie: ack02:44
lifelessryanakca: what are you asking ? have you read the help?02:44
poolieif you try it and you think it is eg taking too much time, raise that with one of us or on a company list02:45
keirlifeless, i know :)02:45
ryanakcalifeless:   --fixes=ARG           mark a bug as being fixed by this revision.02:45
ryanakcalifeless: ARG being something. Anyways, I don't need to anymore, since the Ubuntu upload closed them02:46
keirdo we want indexes to scale > 4gb?02:46
=== n2diy [n=darryl@wlk-barre-208-103-148-76.dynamic-dialup.coretel.net] has joined #bzr
keiror  rather, is it reasonable to expect to be able to fit the entire index in memory? or should i design assuming you can't do that02:46
lifelessryanakca: at the end of 'bzr help commit'02:47
lifelessSee also: bugs, uncommit02:47
lifelessryanakca: so 'bzr help bugs'02:47
ryanakcalifeless: thanks02:47
abentleylifeless: shall I merge Watkins' patch without test case refactorings?02:51
=== jml [n=jml@203-113-250-169-static.TAS.netspace.net.au] has joined #bzr
=== Rotund [n=rotund@d28-101.rb2.lax.centurytel.net] has joined #bzr
ubotuNew bug: #137407 in bzr "messy error if BZR_HOME does not exist" [Low,Triaged]  https://launchpad.net/bugs/13740702:56
pooliewe seem to have a lot of reviews bounced recently03:01
poolie because of disagreements about indenting03:01
pooliebut there is no clear statement in either hacking or pep8 about just what is allowed03:01
lifelessabentley: sure, that was speculation or I wouldn't have done bb:approve03:01
=== igc [n=igc@ppp59-167-96-213.lns3.bne1.internode.on.net] has joined #bzr
igcmorning03:03
abentleypoolie: clearly, the reviewer gets to choose the indenting style >:-)03:05
poolieok, that works :)03:05
abentleyWell, I'm not sure about double-indenting when doing line-wrapping.  Because you're already down to 67 characters if you're in a method body, 63 if you're in a try block, 59 if there's a loop inside the try block.03:12
keirlifeless, what is the 'absent' field used for?03:13
ubotuNew bug: #137412 in bzr "Code duplication in tests.blackbox.test_commit" [Undecided,New]  https://launchpad.net/bugs/13741203:15
lifelesskeir: it records keys which are not in the index but are referred to by a key reference03:16
lifelessI don't line 8-indents on line wraps03:16
pooliehere are the possibilities as i see them:03:17
pooliea- indent under the delimiter (opening brace or whatever)03:17
poolieb- indent 4 spaces03:17
pooliec- indent 8 spaces03:17
keirlifeless, hmm, what is it used for? in the next layer up?03:17
poolied- indent 0 spaces03:17
abentleyI would prefer a where practical, otherwise b.03:18
pooliea is nice03:18
pooliea bit more laborious to maintain03:18
pooliewell, for non-emacs users03:18
jml:)03:19
lifelesskeir: no, consider an index with one entry and one key-reference list:  ('key1',), 'value', [('anotherkey',)] 03:19
lifelesskeir: iter_all_entries() needs to yield ('key1',), 'value', [('anotherkey',)] 03:19
lifelesskeir: iter_entries([('anotherkey',)] ) needs to yield nothing03:20
lifelessanotherkey is not present in the index03:20
lifelessit is absent03:20
keirok03:20
lifelesshave a look at the serialisation tests03:20
keirbut aren't keys listed by their position in the file?03:20
lifelesshave a look at the serialisation tests03:20
poolielifeless, how about allowing a/b?03:21
poolie spiv ^^03:21
lifelessc?03:21
lifelesspoolie: we currentl use a or b as people feel comfortable03:21
pooliei thought you didn't like c?03:21
lifelessI don't like c03:21
pooliei sometimes use c as that's what vim seems to like03:21
pooliei am happy to change though03:21
lifelessvim is on crack03:22
keirvim rocks!03:22
pooliei just want it settled rather than being rehashed in every review03:22
lifelesssure03:22
poolieit is probably configurable in vim03:22
lifelesscan I ring to bounce an idea03:22
abentleylifeless, keir: Maybe you can compromise: vim is on crack rocks!03:22
poolielol03:22
keirabentley, heh03:23
abentleykeir: I speak as a vim user.03:23
=== bigdog [n=scmikes@79-67-14-216-arpa.cust.cinci.current.net] has joined #bzr
keirok, i just came up with a nice unified way of storing these graphindexes, and i realize it just bakes down to the same thing as a berkely db03:28
spivI use a or b.03:28
keirhow does knowing we're storing a graph help again?03:28
keiri mean, i can make the format amenable to readv() wire access, but it's still just storing k,v pairs03:29
=== ollie_r [n=orutherf@dsl092-164-022.wdc2.dsl.speakeasy.net] has joined #bzr
=== ionstorm [n=ion@70-58-119-250.phnx.qwest.net] has joined #bzr
=== poolie_ [n=mbp@ppp112-44.static.internode.on.net] has joined #bzr
lifelesskeir: you can group data topologically03:45
lifelesskeir: you can reduce latency by adding apis for common graph/tree walking operations where the index layer is able to predict and readahead in the graph order03:46
lifelessand you can dictionary compress key references because we have 'k,v,r' rather than 'k,v' where the key references would be opaque03:47
keiralright. time for graphviz03:55
abentleykeir: I don't know if you'll find it useful, but bzrtools includes "graph-ancestry", which uses dot.04:03
keirabentley, ok, thanks04:04
=== yminsky [n=yminsky@user-0cevcqv.cable.mindspring.com] has joined #bzr
=== bigdo1 [n=scmikes@79-67-14-216-arpa.cust.cinci.current.net] has joined #bzr
=== jamesh [n=james@220-253-85-85.QLD.netspace.net.au] has joined #bzr
=== bigdo1 is now known as bigdog
=== jamesh_ [n=james@canonical/launchpad/jamesh] has joined #bzr
=== jamesh_ is now known as jamesh
lifeless-> poolie04:55
=== igc food
=== jml_ [n=jml@ppp121-44-221-92.lns1.hba1.internode.on.net] has joined #bzr
poolie_jml_, hi?05:42
=== herzel76 [i=herzel@gateway/tor/x-37b4ca187502a5fb] has joined #bzr
=== AfC [n=andrew@office.syd.operationaldynamics.com] has joined #bzr
=== herzel76 [i=herzel@gateway/tor/x-531b9bb3d47019ec] has joined #bzr
AfCWeird. Someone submits a branch to us, including about new 50 files making up something that we decide not to accept (and so revert|delete). We work further on the branch, then merge it to 'mainline'. We then push to the public repo, and bzr does the endless-small-round-trips thing.06:05
AfCAfter thinking about it, I realized that it must be creating new knit files server side for each of those files, because they were in revisions that are in the branch even though the files involved were subsequently deleted.06:06
=== orospakr [n=orospakr@bas4-ottawa23-1177561563.dsl.bell.ca] has joined #bzr
=== herzel76 [i=herzel@gateway/tor/x-6d6086fd53966fd1] has joined #bzr
poolie_yes, because it's still carrying the history for those files06:23
=== jml_ is now known as jml
ubotuNew bug: #137449 in bzr "status performance regression compared to 0.17" [Undecided,New]  https://launchpad.net/bugs/13744908:01
=== hdima [n=hdima@idealer.cust.smartspb.net] has joined #bzr
=== AfC [n=andrew@office.syd.operationaldynamics.com] has joined #bzr
=== Lo-lan-do [n=roland@mirenboite.placard.fr.eu.org] has joined #bzr
=== g0ph3r_ [n=g0ph3r@p57A09D1C.dip0.t-ipconnect.de] has joined #bzr
=== pygi [n=mario@83-131-6-127.adsl.net.t-com.hr] has joined #bzr
=== g0ph3r_ is now known as g0ph3r
=== g0ph3r is now known as dbachran
=== dbachran is now known as dbachran_
=== dbachran_ is now known as dbachran
=== dbachran is now known as dbachran_
=== dbachran_ is now known as g0ph3r
=== sabdfl [n=sabdfl@ubuntu/member/pdpc.silver.sabdfl] has joined #bzr
=== mvo [n=egon@p54A67434.dip.t-dialin.net] has joined #bzr
=== igc food
=== mwh [n=mwh@62-31-157-102.cable.ubr01.azte.blueyonder.co.uk] has joined #bzr
=== sabdfl [n=sabdfl@ubuntu/member/pdpc.silver.sabdfl] has joined #bzr
=== Zindar [n=erik@88-110-212-200.dynamic.dsl.as9105.com] has joined #bzr
=== mrevell [n=matthew@canonical/launchpad/mrevell] has joined #bzr
=== mwhudson [n=mwh@62-31-157-102.cable.ubr01.azte.blueyonder.co.uk] has joined #bzr
=== allenap [n=allenap@212.233.37.68] has joined #bzr
=== fog [n=fog@debian/developer/fog] has joined #bzr
=== Mez [n=Mez@ubuntu/member/mez] has joined #bzr
=== hsn_ [n=radim@234.114.broadband5.iol.cz] has joined #bzr
=== asabil [n=asabil@ti0035a340-0802.bb.online.no] has joined #bzr
=== sabdfl [i=sabdfl@ubuntu/member/pdpc.silver.sabdfl] has joined #bzr
=== sverrej [n=sverrej@pat-tdc.opera.com] has joined #bzr
=== sverrej [n=sverrej@pat-tdc.opera.com] has joined #bzr
datouhm, bzr upgrade is not supported over bzr+ssh?11:29
dato% b upgrade --dirstate-tags bzr+ssh://bzr.debian.org/bzr/pkg-python-debian/trunk11:29
datobzr: ERROR: The branch format Bazaar-NG meta directory, format 1 is already at the most recent format.11:29
dato% b upgrade --dirstate-tags sftp://bzr.debian.org/bzr/pkg-python-debian/trunk11:30
dato... finished11:30
mwhudsonhttps://bugs.launchpad.net/bzr/+bug/12516611:32
ubotuLaunchpad bug 125166 in bzr "Smart server doesn't suppport upgrading" [Low,Confirmed] 11:32
pygimorning11:33
mwhudsonwith no knowledge at all, it seems like it should be fairly easy to fix...11:33
datomwhudson: ah, thanks.11:33
=== igc [n=igc@ppp59-167-96-213.lns3.bne1.internode.on.net] has joined #bzr
=== jnair [n=jayesh@203.123.188.10] has joined #bzr
lifelessdato: thats right12:28
=== anandn [n=anandn@220.225.40.40] has joined #bzr
=== yminsky [n=yminsky@user-0cevcqv.cable.mindspring.com] has joined #bzr
=== Zindar [n=erik@host217-42-238-84.range217-42.btcentralplus.com] has joined #bzr
=== rschuster [n=rob@e178095055.adsl.alicedsl.de] has joined #bzr
rschusterhi bzr-folks01:02
rschusteri am trying to implement a bzr-fetcher for OpenEmbedded and need your help01:03
rschusterhow can I find out the latest revision number of a certain (remote) branch?01:03
rschustersomething like 'svn info <remote-url>' which will contain the line: "Revision: 8404" (for example)01:04
datorschuster: as a command (that is, not using the Python API): bzr revno http://...01:06
rschusterdato: thanks alot thats it!01:09
datorschuster: you're welcome01:09
=== asabil [n=asabil@62.70.2.252] has joined #bzr
=== pygi [n=mario@83-131-6-127.adsl.net.t-com.hr] has joined #bzr
abentleyrschuster, note that the revision number is not the most accurate indicator of whether a branch has changed.01:40
datohe left already.01:40
igcnight all01:42
=== Starting logfile irclogs/bzr.log
=== ubuntulog [i=ubuntulo@ubuntu/bot/ubuntulog] has joined #bzr
=== Topic for #bzr: The Bazaar Version Control System | http://bazaar-vcs.org/ | Bazaar 0.90 is out - http://bazaar-vcs.org/releases/src/bzr-0.90.tar.gz | Please complete the Bazaar User Survey - http://www.surveymonkey.com/s.aspx?sm=L94RvLswhKdktrxiHWiX3g_3d_3d
=== Topic (#bzr): set by james_w at Tue Aug 28 23:38:27 2007
=== mrevell is now known as mrevell-lunch
=== welterde [n=welterde@trujillo.srv.pocoo.org] has joined #bzr
=== deadwill [n=deadwill@146037.fln.virtua.com.br] has joined #bzr
=== luks [i=lukas@unaffiliated/luks] has joined #bzr
=== mw|out [n=mw@189.146.24.28] has joined #bzr
=== statik [n=emurphy@189.66.188.72.cfl.res.rr.com] has joined #bzr
=== ddaa [n=david@canonical/launchpad/ddaa] has joined #bzr
=== bwinton [n=bwinton@mail.phantomfiber.com] has joined #bzr
=== sverrej [n=sverrej@pat-tdc.opera.com] has joined #bzr
=== cypherbios [n=cyr@ubuntu/member/cypherbios] has joined #bzr
=== sverrej_ [n=sverrej@pat-tdc.opera.com] has joined #bzr
asabilanyone knows how to make the visual studio integration working ?03:35
=== Ng [n=cmsj@mairukipa.tenshu.net] has joined #bzr
Nghey folks. If I push a bzr tree to an sftp:// I obviously just get a .bzr directory there. What magic can I do on the remote end to make it generate the working files too (not automatically, just manually is fine)03:57
=== mrevell-lunch is now known as mrevell
mwhudsonNg: 'bzr update'03:58
Ngmwhudson: that's what I thought, but it said "No WorkingTree exists for file:///blah/branch/.bzr/checkout/."03:58
Ng(fwiw, the local bzr is 0.18 and the remote is 0.17)03:59
mwhudsonoh03:59
mwhudson'bzr co'03:59
Ngspot on, thanks :)03:59
=== _logger [n=_logger@adsl-75-51-62-134.dsl.chcgil.sbcglobal.net] has joined #bzr
=== Demitar [n=demitar@c-212-031-190-120.cust.broadway.se] has joined #bzr
=== mthaddon [n=mthaddon@canonical/launchpad/mthaddon] has joined #bzr
=== orospakr [n=orospakr@132.213.238.4] has joined #bzr
=== mathias_ [n=mathias@chello213047054216.31.11.tuwien.teleweb.at] has joined #bzr
=== mw|out is now known as mw
=== grimboy [n=grimboy@85.211.236.250] has joined #bzr
=== pygi [n=mario@78-0-12-62.adsl.net.t-com.hr] has joined #bzr
=== tchan [n=tchan@lunar-linux/developer/tchan] has joined #bzr
=== p4tux [n=p4tux@189.169.92.184] has joined #bzr
=== fog [n=fog@debian/developer/fog] has left #bzr []
=== hsn_ [n=radim@234.114.broadband5.iol.cz] has joined #bzr
=== mathias_ [n=mathias@chello213047054216.31.11.tuwien.teleweb.at] has joined #bzr
=== dpm [n=dpm@p54A114D9.dip0.t-ipconnect.de] has joined #bzr
=== AndyP_ is now known as AndyP
=== abadger1999 [n=abadger1@65.78.187.68] has joined #bzr
=== james_w [i=jw2328@jameswestby.net] has joined #bzr
=== dpm_ [n=dpm@p54A114D9.dip0.t-ipconnect.de] has joined #bzr
jelmerLo-lan-do: The non-lhs push issue has been fixed in the 0.4 branch of bzr-svn06:54
=== mario_ [n=mario@78-0-25-35.adsl.net.t-com.hr] has joined #bzr
=== mario_ is now known as pygi
=== Ng [n=cmsj@mairukipa.tenshu.net] has left #bzr []
Lo-lan-dojelmer: Excellent, thanks.07:01
=== bwinton [n=bwinton@mail.phantomfiber.com] has left #bzr []
=== sverrej [n=sverrej@tul-1x-dhcp016.studby.uio.no] has joined #bzr
keirhow difficult would it be to implement git-style branch switching?07:13
keirso that you only have 1 working tree, which you can switch between branches with a bzr command07:13
jelmerkeir: that should be possible to implement using a plugin07:14
keirwow, really!07:14
jelmerand wouldn't be too hard I think07:14
keirok, that is high on my list after writing a new index layer07:14
keiri definitely prefer git's way of working regarding branches07:14
Lo-lan-doThere's already a bzr switch command...07:15
jelmerbzr switch takes a to_location though07:16
keiris in not in the main bzr?07:17
jelmerno, it's in bzrtools07:17
keirbzr help commands | grep switch -> empty07:17
keiraah, ok07:17
jelmeryou'd want it to take a tag I guess07:17
keirno, a branch name07:17
jelmerright, so you'd want to write a plugin that:07:17
jelmerkeeps a list of branch names in a file somewhere under .bzr/07:17
jelmerthe file would simply contain a dictionary with "branch name -> revid" mappings07:18
keirhow is a branch represented in a shared repo now?07:19
jelmerand the plugin would have a ocmmand to list the branches, one to add a branch to the file and one to change the active branch07:19
jelmerkeir: there's a .bzr/branch/last-revision file that contains the tip of the branch07:19
jelmerthat's all there is to a branch07:19
keirok07:20
datoor a .bzr/branch/revision-history for v5 branches07:20
keirso in a shared repo, it's .bzr/branch_name_here/revision-history?07:20
jelmerkeir: you can simply call Branch.set_last_revision(revid) to change the tip of a branch07:20
lukskeir: no, in the branch's .bzr dir07:21
keiraah, ok07:21
=== sverrej_ [n=sverrej@tul-1x-dhcp108.studby.uio.no] has joined #bzr
luksrepository doesn't know about it's branches07:22
keirright, i understand07:22
keirso i'd basically have to make a new branch format07:23
keirand by format, i mean placement of branches07:23
jelmerno, you should be able to use the current branch format07:25
jelmerthe only bit of data that is missing atm is the list of branches07:25
jelmerthe active branch can still be in .bzr/branch07:26
=== Herodes [n=chatzill@ppp193-100.adsl.forthnet.gr] has joined #bzr
HerodesI get this :07:28
Herodes"working tree is out of date, run 'bzr update'07:28
Herodesbzr: ERROR: exceptions.AssertionError: 257 != 1"07:28
Herodeshow can I fix it ?07:28
Herodesit is a new branch that I have ,...07:29
Herodesand I am merging a branch with 257 revisions,..07:29
Herodesso I suppose I need to push up the revision I have to 257...07:29
james_wkeir: my plugin does stuff like that, so I can give you pointers as well when you do it if you like.07:30
HerodesI found the problem..07:41
HerodesI was using the "bzr merge", where I needed to use "bzr branch". Sorry for spaming..07:42
=== jelmer_ [n=jelmer@157pc196.sshunet.nl] has joined #bzr
=== jelmer_ is now known as jelmer
=== gldnspud [n=gldnspud@72.171.93.139] has joined #bzr
=== relix [n=david@d51A403F3.access.telenet.be] has joined #bzr
relixHeya08:03
relixI'm trying to version my whole /home directory08:03
relixso I was in my home dir, and used "bzr init"08:03
relixthen I tried "bzr add" and after changing a couple of filenames that made it crash, it said "(amount) files ignored. Add them by name to version them"08:04
relixI can't go over these thousands of files to add them "by name"08:04
relixhow can I add them?08:04
relixI tried bzr add *; bzr add /david/home/; bzr add ./; bzr add;08:04
relixnone works08:04
james_wwhat files are they? dot files? (bzr ignored would tell you)08:06
=== yml [n=yml@put92-2-82-224-221-145.fbx.proxad.net] has joined #bzr
ymlhello08:07
ymlgood evening08:07
relixah thanks james_w08:07
relixapparantly one of my ignored settings filters a couple of thousand files08:08
relixso it's entirely my fault and I feel pretty dumb now having wasted your time :s08:08
=== mrevell is now known as mrevell-dinner
james_wrelix: no problem.08:08
ymlwhat is the easiest way to remove some of the revisions of a project hosted on launchpad?08:09
ymlif this is not possible. how can I delete a branch?08:11
james_wyml: remove completely, or just rewind a branch?08:12
ymlremove08:12
james_wyou have to delete the branch. However if launchpad use shared repositories even doing that might not get rid of it completely.08:12
ymlor remove all the revision below revno6008:13
ymlI mean remove the revision  from 1..5908:13
ymlor is it possible to create a branch from an exiting repository for all the revno>60 and the this new branch to do bzr push --overwrite08:17
=== herzel76 [i=herzel@gateway/tor/x-7b23387c61280b42] has joined #bzr
Pengrelix: I don't recommend doing that in bzr, if you're going to include dot directories like .opera. I did, and committing got really slow after a few months. OTOH, the bzr guys are working on improving that, so maybe it won't be so bad in the future.08:20
=== dato [n=adeodato@tarrio.org] has joined #bzr
mwhudsonyml: i don't think you can do what you suggest even locally can you?08:33
ymlmwhudson  : I don't know I am trying many combination but so far I have not found anything that do what I would like to do.08:34
mwhudsonbzr pretty firmly assumes that if you have revision X you have all of revision X's parents08:35
ymlI would like to dump the last 2 revsion and build a new rep with this.08:35
mwhudsonyou can drop the latest two revisions with 'bzr uncommit' (twice) and then push --overwrite08:36
ymlIdeally I would also like to delete branch on launchpad or at least remove all the content08:36
mwhudsonyou can use lftp to rm -rf the .bzr in your branch08:36
=== jrydberg [n=Johan@c80-216-246-123.bredband.comhem.se] has joined #bzr
mwhudson(via sftp)08:37
ymlmwhudson  I want to do the oposite keep ONLY the latest 2 revision08:37
mwhudsonyml: that's not what you said :)08:37
mwhudsonyml: and you can't do that08:37
ymlthat is clear  :-)08:37
ymlsftp> rm -rf .bzrCouldn't stat remote file: No such file or directoryRemoving /~yml-nospam/django-survey/main-yui/-rfCouldn't delete file: No such file or directory08:39
mwhudson*lftp*08:40
ymlmwhudson  : unfortunatly I am not able to do this08:40
ymlI am sorry what is lftp?08:40
mwhudsonthe default sftp client is surprisingly horrible08:40
mwhudsonhttp://lftp.yar.ru/08:41
Penglftp isn't that great, either. No globbing. :(08:41
mwhudsonactuall08:41
mwhudsony08:41
mwhudsonbzr uncommit -r 0 --force; bzr push --overwrite08:42
mwhudsonmay be sufficient08:42
ymlmwhudson so back to my original question bzr branch --revision=last:2 my path08:43
ymlkeep only the history of the file of the last 2 revisions08:44
ymleven if when I do bzr log I can retrieve the complete history?08:44
ymlthat mya sound strange on this channel I want to destroy all the information in the revisions 1..5908:45
mwhudsonyou can probably create a new branch that has the same content08:46
mwhudsonbut they won't be connected in the revision graph08:46
ymlThis is fine08:47
=== dpm_ [n=dpm@p54A10BF0.dip0.t-ipconnect.de] has joined #bzr
=== brmassa [n=brmassa@201-43-140-128.dsl.telesp.net.br] has joined #bzr
brmassaguys, i did some changes on my working tree but i changed my mind. how can i reset it and restore my last revision?08:55
Lo-lan-dobzr revert?08:56
brmassathanks08:56
ymlmwhudson slap my forehead,your solution of creating a new rep seems to work08:57
ymlI wait that launchpad refresh its history08:57
luks"bzr uncommit -r 0 --force; bzr push --overwrite" will not actually remove the data from launchpad08:58
relixpeng yeah I'm getting memory errors right now :(08:58
relixI ignored .opera's cache4 directory though so it shouldn't be much of a problem08:58
ymlluks  : GRRRR!!! I was happy that bzr didn't raise any error message :-)08:59
ymltoo easy08:59
luksit will remove the branch, but the repository with all the data is still there09:00
ymlHow can I remove the content of a branch?09:00
luksuse a sftp client that remove remove directories recursively and remove the .bzr directory09:01
lukser, that can remove09:01
ymlI have an error message when I try to do that09:02
luksthe 'sftp' client can't do that09:02
ymlsftp> rm -rf .bzrCouldn't stat remote file: No such file or directoryRemoving /~yml-nospam/django-survey/main-yui/-rfCouldn't delete file: No such file or directory09:02
ymlluks I do not understand? can I do that with sftp or not?09:03
=== brmassa [n=brmassa@201-43-140-128.dsl.telesp.net.br] has left #bzr ["Leaving"]
luksyml: "<mwhudson> you can use lftp to rm -rf the .bzr in your branch"09:04
ymlI try lftp a couple of minute ago09:05
ymllftp yml-nospam@bazaar.launchpad.net:~> ls`ls' at 0 [Connecting...] 09:05
ymland for the last 5 minutes it is displaying this error message09:05
ymlInteresting it seems that my history is gone thanks to09:07
ymlhttp://codebrowse.launchpad.net/~yml-nospam/django-survey/main-yui/changes09:07
ymlbzr uncommit -r 0 --force; bzr push --overwrite09:08
ymlis that possible?09:08
Pengrelix: Ignore opcache/, opthumb.dat, thumbnails/ and widgets/*/ too.09:09
ymlI had 62revisions before09:09
jelmerwell, the data is not easily accessible, but it's still there09:09
relixgood idea Peng09:10
relixhad thumbnails ignored already09:10
relixbut it's crashing on something different: the .incomplete dir of dc++09:10
Pengrelix: I dunno anything about that. Large files or anything?09:11
relixyeah possibly09:11
Pengrelix: It'll have to hold entire files in RAM occasionally.09:12
Pengs/have to// ;)09:12
=== tca [n=tom@ti541110a080-5238.bb.online.no] has joined #bzr
ymljelmer: does that mean that people without a write access to this rep cannot see them09:13
relixah, righ09:13
jelmeryml: no, they will be able to access it if they try very hard09:15
jelmerwel, not *very* hard perhaps, but it's not trivial to access09:16
ymlIs there a way to get anything better09:16
=== brmassa [n=brmassa@201-43-140-128.dsl.telesp.net.br] has joined #bzr
ymlI mean more radical09:17
yml:-)09:17
jelmeryml: yes, remove the entire .bzr directory09:17
ymlcould you guide me to do this ?09:18
jelmeryml: but I'm not entirely sure how to do that on launchpad, maybe the folks in #launchpad can better tell you09:18
yml2 peoples mention lftp09:18
jelmer"rm -rf .bzr" will work if it's on a local system09:18
ymlbut I do not manage to get that far09:18
ymlok jelmer09:18
yml I am going to ask on #launchpad09:19
ymlThank you very much all09:19
brmassaguys, i have a project on my pc and also on launchpad.net. how can i have the same branch on my office pc? if i merge with my launchpad, all revisions becomes one.09:20
jelmerbrmassa: you'd want 'bzr branch <launchpad-url>'09:22
brmassaand for the second time, when i have a branch already? can i do it again?09:23
Lo-lan-doHow about a checkout?09:27
brmassahmmm really really09:28
datobrmassa: bzr pull09:30
brmassaim gonna check both.09:32
brmassathe windows version available on site has the python lib for criptography?09:33
brmassaparakiko or something...?09:33
beunowho can help me fin out why I'm getting this error on a 500mb branch?   bzr: ERROR: exceptions.MemoryError:09:38
beunoI'm branching it through sftp09:38
brmassa500mb? jezz!09:42
jelmerbeuno: please sent an email to the list09:45
jelmerbeuno: that should work, but the people most likely to be able to help aren't here atm09:45
beunojelmer, will do, thanks09:45
=== jrydberg__ [n=Johan@c80-216-246-123.bredband.comhem.se] has joined #bzr
=== EtienneG [n=etienne@ubuntu/member/EtienneG] has joined #bzr
=== brmassa [n=brmassa@201-43-140-128.dsl.telesp.net.br] has left #bzr ["Leaving"]
lifelessabentley: yo10:20
james_wdato: are you around?10:28
datojames_w, yes10:29
james_whi.10:29
james_wI'm working on the bug with builddeb where it fails when the tarball contains multiple files in the root. #440069. Do you remember it?10:30
datoyes10:30
=== brmassa [n=brmassa@201-43-140-128.dsl.telesp.net.br] has joined #bzr
james_wyou said that dpkg-source supports it by unpacking to a temporary directory.10:32
datoI believe it does that10:32
james_wI already do that, but I need to source directory to copy the debian/ in to.10:32
brmassalifeless... will 0.90 be on gutsy repository?10:32
james_wso I currently rename the contents of the extracted tarball to the package-version that I want, assuming there is one entry and it is a directory.10:33
james_wdo you think checking for a single directory and erroring if there is more that one is a good approach, or will I find even wierder tarballs out there?10:34
datothe thing is you unpack in a temporary directory. if there's only one item, you move it out of the temp directory, into the name you want. if there's more than one, you rename the *temporary directory* to the name you want.10:34
datoif you are *building* in a temporary directory, then you need two temporary directories, one under the another10:35
datotoplevel for building, other one for the unpack steop10:35
james_wah, rename the tempdir. Thanks, I'll no that.10:35
datoright, np10:36
datojames_w: I have an unpack-in-subdir script that does that, here it is: http://rafb.net/p/GhPw3485.html10:36
datobut it's pretty much straightforward10:36
datothough now I notice, that does not do renaming, but other stuff, dunno why10:38
james_wdato: you rock. thanks.10:55
=== michelp [n=michelp@70.103.91.130] has joined #bzr
=== ion [n=ion@70-58-119-250.phnx.qwest.net] has joined #bzr
lifelessabentley: ping11:04
=== yml [n=yml@put92-2-82-224-221-145.fbx.proxad.net] has left #bzr ["Kopete]
datojames_w: you're welcome :)11:08
=== Demitar [n=demitar@c-212-031-190-120.cust.broadway.se] has joined #bzr
=== beuno is now known as beuno_
=== beuno_ is now known as beuno
=== beuno is now known as beuno_
=== beuno_ is now known as beuno
=== ionstorm [n=ion@70-58-119-250.phnx.qwest.net] has joined #bzr
=== mthaddon [n=mthaddon@canonical/launchpad/mthaddon] has joined #bzr
=== Zindar [n=erik@88-110-212-200.dynamic.dsl.as9105.com] has joined #bzr
NfNitLoopAnyone here have experience with svk and bzr-svn?   I'm looking for a comparison.11:51
NfNitLoopI've got a svn repo here in the states and developers down in Argentina.   The poor connection between here and there is becoming a headache.11:51
arjenAUNfNitLoop: well svk is not quite a distributed system. it's a distributed trick bolted onto a very centralised system. if you can choose, I'd go for the pure design, bzr or hg11:57
arjenAUNfNitLoop: using the svn plugin for bzr does not quite make it distributed either, but it's a good way to migrate to bzr.12:00
NfNitLoopWell, it was a giant pain to get them to switch to svn.  I don't see us migrating away from it any time soon.12:01
lifelessAFAICT bzr-svn has more fidelity12:01
NfNitLoopSo I'm looking at a way of "bolting on" a solution to give the remote devs. a more distributed environment.12:01
lifelessand you can wrk with bzr native as soon as one user has done the conversion12:02

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