/srv/irclogs.ubuntu.com/2010/08/03/#bzr.txt

spivGood morning.01:06
pooliejelmer: hi?02:17
pooliespiv, hi02:17
=== Ursinha-afk is now known as Ursinha
=== Ursinha is now known as Ursinha-afk
bendjI've setup bzr on a box that's behind a fairly tight firewall. I thought bzr+ssh:// just needs port22 access -- apparently not sufficient.  Are the required ports doc'd somewhere?  I'm digging, not finding :-/04:36
mwhudsonbendj: it should just require 2204:36
bendjmwhudson: Hm.  getting, "ssh: connect to host bazaar.launchpad.net port 22: Connection timed out.  bzr: ERROR: Connection closed: Unexpected end of message. Please check connectivity and permissions, and report a bug if problems persist. "04:38
bendj'normal ssh' from the box works fine.04:40
bendjgremlins.  sigh ...04:41
mwhudsonbendj: can you run 'ssh bazaar.launchpad.net' from the command line?04:41
bendjmwhudson: I get "No shells on this server. Connection to bazaar.launchpad.net closed."04:42
mwhudsonok that's good04:42
mwhudsonbendj: if you look in the ~/.bzr.log file i think you'll see the command line bzr is launching ssh wiht04:43
mwhudson*with04:43
mwhudsonmaybe there's something obviously funny in there04:43
bendjmwhudson: hm.  that's full of non-ascii garbage.  not good.  uninstall/rebuild/reinstall, i s'pose?04:45
mwhudsonbendj: what platform/bzr version?04:46
mwhudsonbendj: maybe just delete .bzr.log to start with04:46
bendjopensuse 11.3, x86_64, Bazaar (bzr) 2.3.0dev1 (r5361)04:47
bendjmwhudson: hey, deleting the log file wokred!04:47
bendjer, worked04:47
bendj1st time i've seen that :-|04:48
mwhudsonodd04:48
bendjthx!04:48
bendjtt4n04:50
mtayloris there anyway to tell where the bzr twisted impl of ssh is going to look for ssh keys?05:28
* mtaylor is battling a windows machine at the moment05:28
pooliemtaylor: i think it prefers to look in the putty agent "pageant" if that's installed05:31
pooliei don't know of a way to say "what directory are you looking in" beyond boking into the source05:32
mtaylorpoolie: nevermind actually - the wiki saved me05:32
mtaylorpoolie: http://wiki.bazaar.canonical.com/Bzr_and_SSH ... it llooks in %USERPROFILE% apparently05:33
spivmtaylor: actually, bzr doesn't use a Twisted client for SSH, I think that's a paramiko bug (it logs the server's name as the client's)05:40
mtaylorspiv: hehe05:40
spivI guess because paramiko uses the same class for the client and server, but didn't parameterise that bit of the logging...05:41
spiv(I just filed a bug on paramiko about it.)05:55
cwrhi07:35
lokkju.join #dorkbotpdx07:35
lokkjuoops07:35
cwri created a new user and tried to push a new revision to a existing branch. unfortunately i get this error07:40
cwrhttp://pastebin.org/44416607:40
cwrcreating a new branch on the server is no problem, so the new user has write permissions07:41
fullermdHaving permissions to write a new branch doesn't mean they have write permissions in the existing branch.07:42
cwrwas it the wrong to just commit the changes? do i have to do something like merge?07:42
cwrfullermd: how can I give a user permissions to write to an existing branch?07:46
* fullermd shrugs.07:46
fullermdchmod as appropriate.07:47
fullermdAs a first approximation, whatever perms are up a level that let the user create a new branch.07:48
* spiv is done for the day08:17
knittlwhat data model uses bzr to store history? i.e. how is history recorded, and _what_ is recorded?10:00
knittlgit uses commit/tree/blob, mercurial uses revlogs (changelog, manifest, filelog)10:01
LeoNerdI'm not sure the question makes much sense...10:01
LeoNerdbzr has its own names for these things, yes... but that doesn't really help answer the question10:02
knittlLeoNerd: i wasn't able to find documentation for this in bzr terms10:02
knittland git and hg were just given to have examples, it's not easy to describe what i want10:02
LeoNerdbzr branches contain revisions... if that answers your question?10:04
ddaayou want a description of the models and datastructure used in the current achive format?10:04
knittlno, it doesn't10:04
knittlddaa: yes!10:04
ddaaI'm not familiar enough to give a good answer, but I know it would be pretty long.10:04
knittli take pointers to documentation10:05
ddaaFirst, unlike git, and probably hg, bzr has a layered design.10:05
knittlbut i wasn't able to find proper docs10:05
knittlnot even in bzr.bzr/docs/developers/…10:05
ddaaThere's a model layer, that deals with trees, branches, repositories, revisions, bzrdir, file revisions, etc.10:05
knittli'm interested in how revisions go together with trees and files10:06
ddaaand there are various transport/storage layers that translate that into actual storage/protocols10:06
ddaathose involve things like indexes, packs, weaves, etc.10:06
ddaaThen there is the tree format, with things like dirstate.10:06
ddaaall those things are pretty much orthogonal10:07
ddaaand most have multiple implementations10:07
ddaamostly historical10:07
knittllet me try explain what i want :D10:08
knittlif i do bzr commit (locally)10:08
ddaaknitti, on the model level, a revision has some commit information, and an inventory10:08
knittlinventory = tree?10:08
ddaaan inventory is a tree-like model that maps file ids to names, parent ids, and file revisons.10:09
knittlbut i'm really wondering why there is no documentation?10:09
ddaa(and probably a number of other metadata)10:09
knittlwhere/how are files stored?10:09
ddaaThe repository is a model that (among other things) store file contents addressed by file revision ids.10:10
ddaa(other things include commit/revisions, inventories, and metadata such as tags)10:10
knittlwhy is there no documentation?10:10
ddaaprobably because nobody has bothered to write it.10:11
ddaaAlso, the source code is relatively well document.10:11
ddaadocumented10:11
bialixthere is documentation on repository storage format10:11
bialixwhen packs was introduced10:11
knittlbialix: where?10:11
ddaabialix: I think he's more interested in the API model than in a specific storage format.10:11
bialixin docs/developers/10:12
ddaathe latter is not going to help much without the former, anyway.10:12
bialixah10:12
knittlddaa: no, i'm not interested in api10:12
bialixthen, there is no docs because all devs have this knowledge implanted in their brains?10:13
knittlbialix: yes, it seems so10:13
ddaawell, if you are interested in "the bzr storage format", know that there are number of them, and it's subject to change.10:13
ddaawhy would you want to access the on-disk storage format w/o bzrlib anyway?10:14
ddaaThat's an actual question.10:14
bialixI would like to10:14
knittli know bzr changes format quite often, but i'm only interested in the current implementation/format10:14
bialix2a?10:14
lifelessknittl: it doesn't change much at all10:14
knittland i don't want to access it, i am comparing various dvcss10:14
knittlwrite about advantages/disadvantages10:15
ddaalifeless knows everything10:15
bialixheh10:15
lifelessknittl: the formats are documented in bzrlib.repofmts.*10:15
knittland that includes describing on-disk storage format and relations between different types of objects10:15
lifelessknittl: yes and no10:15
lifelessrelations are covered by the model stuff ddaa spoke about10:15
bialixknittl: and what it will say?10:15
lifelesson disk format for individual things is determined by the classes the repo format uses - e.g. btree vs a linear index vs no index10:16
lifelesswhat you are asking is kind of like asking 'what is the drizzle disk format'10:16
lifelesswhere the answer is 'well, it depends. What plugin are you using?'10:16
lifeless(or the mysql, or the postgresql, or oracle etc)10:17
knittllet my try again …10:17
* ddaa gestures over at the svn repository format10:17
knittlgit hashes every object10:17
knittlcommit points to tree, tree points to trees and blobs10:17
knittlevery object is stored in .git/objects/xx/xxxxx…10:18
lifelesswell you were right up to the last point10:18
ddaaknitti wants to know how the bzr2 repository stores commits and trees, specifically10:18
lifelesswhen you become wrong.10:18
knittlwhere xx/xxxxx… is the sha110:18
knittlhg has changelog, manifest and filelog (all a form of revlog)10:18
lifelessyou're conflating different layers10:19
knittlrevlog stores sha1, 2 parents, length, base revision for delta and finally id of changeset (quasi a backreference)10:19
knittlso there's: 1 changelog, 1 manifest and for each file a filelog. in .hg/store/data/$filename10:20
ddaahe's not really interested in all the nice layering in bzrlib, just in the current storage strategy10:20
lifelessgit has an object model and a storage model; the object model uses hashes as keys and has commit, tree and blob object types (and more these days). The storage model can have loose objects or packed objects, and they are indexed either by fs path or by a page based index.10:20
knittlis it really so much i'm asking for or am i being uncleaar what i actually want?10:21
lifelessddaa: I can see that, but he is confusing him self by analysing two wholly independent layers as one. So when we answer either question, we get told we're answering the wrong thing.10:21
knittllifeless: i'm more interested in the object model (references between types)10:21
knittlbut storage is also important. and storage models change often in bzr10:21
lifelessknittl: bzr object model has commit -> inventory -> blobs10:22
knittlweave, knitpack, etc.10:22
lifelessknittl: and commit -> signature10:22
bialixknittl: maybe this helps: http://doc.bazaar.canonical.com/bzr.2.1/developers/packrepo.html#technical-notes10:22
lifelessknittl: this is documented in the developer docs in the very entry point under 'basic concepts' or something like that.10:22
knittllifeless: i've read that page10:23
knittlwhat i took from it so far: knitpack is superior to older formats10:23
lifelessknittl: I think you're answering bialix10:23
knittlhm?10:24
lifelesshttp://doc.bazaar.canonical.com/bzr.dev/developers/overview.html - 'core concepts'10:24
lifelessbah, 'core classes'10:24
knittli think i can only understand on-disk after i've fully understood object model10:24
knittlcore classes are workingtree/branch/repository?10:25
knittlwhere's commit? where are blobs?10:25
lifelessyeah, there is less there than I thought :) its handwaved at under repository10:25
lifelesssorry10:25
bialixknittl: there is no "blobs" in your understanding10:26
bialixyou're using wrong terms10:26
knittlbialix: 11:24 < lifeless> knittl: bzr object model has commit -> inventory -> blobs10:26
bialixokay, but we call them differently10:26
bialixcommit is revision object10:26
bialixblobs are file objects10:27
bialixsomething like that10:27
knittl(also there is a formatting issue on that page: the list under repository)10:27
knittlbialix: ok, revision. i use git a lot, so i'm used to the term 'commit'10:27
knittland storage and object model go hand in hand. at least in hg and git10:30
knittl*grin*10:30
bialixit depends how you're looking at things10:32
lifelessknittl: they don't go that hand in hand10:33
lifelessknittl: google have a bigtable implementation of hg, which has _very little_ to do with the revlog implementation in the public code, from what I hear.10:33
lifelessand git has multiple storage engines too (loose vs packed)10:33
knittlbut somewhat10:35
knittlso, how are revision objects, inventory objects and file objects in bzr linked together?10:35
bialixwith references, of course10:36
knittland they reference what? revnos? hashes?10:36
bialix[12:26]<knittl>bialix: 11:24 < lifeless> knittl: bzr object model has commit -> inventory -> blobs10:36
bialixGUID10:36
knittlbialix: yep. but how?10:36
knittlguid. good10:36
knittlwhat's that signature object you talked about earlier?10:37
bialixsignature? I guess you're asking about revision signature. This is gpg signature for revision object10:39
bialixsomething similar exists in git too10:40
spivA signature's ID is the ID of the revision it is a signature of.10:40
* bialix bbl10:41
knittlbut that would mean signature -> revision10:50
knittl?10:50
spivWhat does the "->" denote, precisely?10:51
spivThat a signature references a particular revision via the revision ID?  Yes.10:51
knittlspiv: yes10:52
knittlthe example/explanation i was given before was »and revision -> signature«10:52
knittlwhich made no sense for gpg signatures10:52
spivWell, if you have a revision, you can use it's ID to lookup the signature.10:53
spiv(And perhaps find that there is no signature for that revision)10:53
spivs/it's/its/10:53
spivSo, in that sense, "revision -> signature" is also correct.10:54
knittlbut revision has no pointer to signature id11:01
spivIt has exactly as much as a pointer as signature has to revision.11:02
ddaakind of, a revision has a revision id. This one is not strictly a reference, it's an association. Like two relational tables with matching primary keys.11:03
knittlrevision id is stored with signature11:04
knittland signature can be looked up if revid is given11:04
knittlbut revision does _not_ store the id of the signature11:04
ddaayes it does, the id of the signature in the revid11:04
spivLet's say you have a revision ID 'xyz'.  You can retrieve the revision record from the repository's revisions store with the key 'xyz'.  You can also retrieve the corresponding signature from the repository's signatures store with the key 'xyz'.11:04
ddaas/in/is/11:04
spivThat is to say, having the revision ID means you have the signature's ID (and vice versa).11:05
spivIf you like, you can represent the keyspace for bzr's internal storage as tuples that look like (store_name, key_part_1 [, key_part_2, ...])11:06
knittlrevid and signature id are the same?11:06
ddaayes they are11:06
ddaadifferent namespaces, I guess11:07
knittlok11:07
spivIn that unified keyspace that revision's key would be ('revisions', 'xyz') and the signature's key would be ('signatures', 'xyz').11:07
spivObviously it is trivial to determine one from the other.11:08
knittlthat means forging signatures is possible?11:08
spivNo.11:08
knittlor is this prevented somehow?11:08
ddaasignatures are GPG signatures11:08
spivThe ID of the signature is not the content of the signature.11:08
knittlspiv: yes11:09
knittlso how can i verify the gpg-signature is the original?11:09
ddaawhat do you mean by original?11:09
knittli create a new revision11:09
knittli sign it11:10
spivYou have a revision.  You have a signature.  You can determine with GPG if that signature is a valid signature for the revision, and you can then decide how much you trust the signer.11:10
ddaaspiv thank you11:10
ddaaknitti, then I sign it too11:10
knittlok, trusting the signer. thanks spiv, makes sense11:10
knittlddaa: why do you always write knitti with an i? xD11:10
ddaaknittl:because my typing skills are better than my eyesight.11:11
ddaaknittl: you need to be a bit familiar with how gpg is used for this stuff to make sense. The GPG notion of "trust" is a bit peculiar.11:12
knittlddaa: i understand now11:17
knittli was only a bit confused11:17
knittlpublic key is tricksy stuff ;)11:19
jelmerpoolie: pong11:30
bialixspiv: ping, if you still around11:49
bialixspiv: question about smart server aka `bzr serve`.11:49
* bialix waves at GaryvdM11:50
GaryvdMHi bialix.11:50
bialixGaryvdM: thanks for bzrw11:51
GaryvdM\o/11:51
bialix\o/11:51
spivbialix: slightly around11:57
bialixspiv: bzr serve uses port 4155 (IIRC). when client connects to this port server creates separate thread for this client, is it correct?11:58
bialixif that correct does server creates new socket pair for particular client? or this is wrong question?11:59
bialixI mean it won't be possible to another client re-use the previous connection and server states12:00
spivThe server creates a new thread, yes.12:01
spivThe server doesn't create a socket pair, it just calls accept on the listening socket, and that returns the socket object for the new connection.12:02
spiv(See the Python docs for socket.listen and the accept() method of socket objects)12:02
spivEr, actually, they are both methods of socket objects, but you know what I meant I'm sure :)12:03
bialixok12:05
bialixspiv: what is state of VFS calls?12:06
spivbialix: no recent changes.  They are still used by many common operations.12:20
bialixok, I wonder is it possible to create new hpss protocol version via plugin to address Bug #12691112:21
ubot5Launchpad bug 126911 in Bazaar "Smart server has no built in authentication (affected: 2, heat: 34)" [Medium,Confirmed] https://launchpad.net/bugs/12691112:21
bialixat least as experiment12:21
spivI'm not spending much time on improving that at the moment.  I occasionally fix one more case, but there's still lots to do...12:21
spivI think that would be possible.12:22
bialixit should be fixed at client side first?12:22
spivThe VFS calls?12:22
bialixyes12:22
spivWell, most remaining cases need a new verb to fix, so both sides.12:22
bialixverb are not documented?12:23
spivThe SmartServerRequest subclasses have docstrings.12:23
bialixI found network-protocol.txt and it has some gaps about requests and errors with XXX contributions welcome12:24
spivAnd the complete list of verbs (and what classes are used to implement them) can be seen at the bottom of bzrlib/smart/request.py12:24
bialixok12:24
spivContributions certainly are welcome! :)12:24
spivCurrently for anything not in that document the code is the best (and only) reference.12:24
bialixI may try to add this to docs as part of my learning of hpss12:25
bialixyes, that's right12:25
spivThat would be lovely, thanks!12:25
bialixrequest_handlers.register_lazy(12:26
bialix    'Branch.set_tags_bytes', 'bzrlib.smart.branch',12:26
bialix    'SmartServerBranchSetTagsBytes')12:26
bialixwhat is the verb here? the first?12:26
lifelessyes12:27
bialixso idea is to have verb similar to python expression used to do the work on local objects?12:28
bialixand IIUC things like request_handlers.register_lazy('list_dir', 'bzrlib.smart.vfs', 'ListDirRequest') are VFS calls12:29
spivYes, the VFS verbs are the ones implemented in bzrlib.smart.vfs12:48
hrwhi12:48
hrwhow to revert changeset in bzr? with git I would do "git revert REVISION" but how in bzr?12:48
spivAnd we do try to keep the network API matching the Python one where possible, unless there's a good reason not to.12:49
spivhrw: merge the reverse of the revision, and commit that12:50
spiv"bzr help revert" mentions the recipe: 'For example, "merge . --revision -2..-3" will remove the changes introduced by -2'12:50
spiv(-2 is the notation for "2nd most recent commit")12:51
hrwspiv: like in cvs then12:51
spivSee also "bzr uncommit".12:51
hrwI want to remove HEAD~3 so uncommit is not a solution12:52
hrwwill export patch, revert it etc12:52
spivYou don't need to export a patch.12:52
spivSimply do "bzr merge . -r -3..-4 && bzr commit"12:53
spiv(Exporting a patch has basically the same effect, except it isn't as good at undoing deletes or changes to binary files)12:54
spiv(Or at undoing renames of directories...)12:55
hrwthx12:56
spivHuh, I think I just found a cheap way to shrink the size of inventory file instances by about 20%.13:23
=== Ursinha-afk is now known as Ursinha
bialixGaryvdM: ping14:03
GaryvdMbialix: Pong14:25
bialixGaryvdM: I need your expertise on http://groups.google.com/group/qbzr/browse_thread/thread/af4d21e4f6cd2a79 (last mnessage)14:26
bialixGaryvdM: and we need tree name for 0.19 final, something related to meerkats maybe14:27
GaryvdMbialix: Looks good.14:28
bialixokay, I will land it14:28
bialixGaryvdM: I've decided to prepare 0.18.7, to get me in the qbzr-dev mindset14:29
rubbsI'm getting this crash when trying to clone a git repo on github with bzr-git. http://pastebin.com/DMXFS1ds14:59
rubbsI'm using the ppa stable version for lucid if that makes a difference14:59
rubbsI can just download the source, the history isn't really that important.15:00
jelmerrubbs: Hi15:01
jelmerrubbs: This is a known issue, fixed in newer versions of bzr-git15:01
jelmerrubbs: What PPA are you using? I don't think there is one...15:01
rubbsjelmer: sorry didn't know it was fixed. I just have the bzr ppa, I guess I for some reason thought bzr-git was packaged in that, but now that I think about it, it doesn't make sense15:02
rubbsI installed bzr-git with aptitude15:02
rubbsI'll do a manual install with the newest git.15:02
jelmerrubbs: You probably want to add this PPA that packags the latest bzr-git:15:03
rubbsjelmer: awesome will do thanks.15:03
jelmerhttps://edge.launchpad.net/~mathiaz/+archive/bzr-git15:04
jelmer(well, not recent but recent enough)15:04
rubbsjelmer: that worked perfectly thank you. I guess I should have googled before bothering you ;)15:10
jelmerrubbs, no worries. we should proball15:20
jelmerly upload this newer version to lucid as well, but I haven't found time to do that yet.15:20
rubbsunderstandable. I'm only barely starting to get some free time left. I am hoping to get back into helping the bzr-doc team again. I've been busy with a new job so I've had to cut back a little.15:21
=== deryck is now known as deryck[lunch]
BjornT_i get a traceback when running 'bzr status': http://paste.ubuntu.com/472713/17:11
BjornT_any idea of what's wrong?17:11
=== beuno is now known as beuno-lunch
BjornT_on a related note, why is the latest upload to the bzr-nightly ppa two months old, and the latest beta isn't in the bzr-beta ppa?17:17
BjornT_james_w: ^^^17:17
maxbThey've not been very well maintained17:24
maxbMaybe I should volunteer17:25
maxbI'm already managing PPAs of svn and mercurial :-)17:25
BjornT_maxb: that would be excellent :)17:25
maxband tortoisehg17:25
maxbThen I'd just need git to complete the set17:25
maxbI wonder how many people actually care about bzr-nightly - wouldn't you just run bzr from a branch?17:27
BjornT_maxb: well, it's quite handy letting apt handle the updating, and being able to easily revert back to older released versions, if needed.17:30
BjornT_maxb: also, not having to bother about building it properly is also a plus (considering 'make' just failed to build the C extensions :) )17:33
maxbheh17:33
BjornT_https://bugs.edge.launchpad.net/bzr/+bug/61306617:39
ubot5Launchpad bug 613066 in Bazaar "IndexError when running bzr status (affected: 1, heat: 6)" [Undecided,New]17:39
=== oubiwann is now known as oubiwann-away
=== oubiwann-away is now known as oubiwann
=== beuno-lunch is now known as beuno
=== andreaa is now known as andreaa`afk
=== khmarbaise_ is now known as khmarbaise
Ursinhajam, hi23:01
jamhi Ursinha23:03
Ursinhajam, I just submitted the mp for the bzr-pqm changes: https://code.edge.launchpad.net/~ursinha/bzr-pqm/add-noqa-incr-lpland/+merge/3170323:03
jamUrsinha: I see it, and it showed up for review normally (though there are 2 review requests)23:04
Ursinhajam, ah, please, ignore the first one, trigger happy here and I submitted before I should23:05
maxbAnyone else using bzr 2.2 and finding it has a regression in clearing progress messages from the terminal?23:12
=== Ursinha is now known as Ursinha-brb
mgzbug 61112723:17
ubot5Launchpad bug 611127 in Bazaar "progress bar does not clear correctly (affected: 2, heat: 12)" [Medium,Confirmed] https://launchpad.net/bugs/61112723:17
maxbah :-/23:19
=== andreaa`afk is now known as andreaa
pooliehi mgz, maxb23:51
=== Ursinha-brb is now known as Ursinha-afk
mgzhey poolie. just getting back to working out what breaks with python 2.723:53
mrjazzcatpoolie: hey Martin.  Hope all is well with you.  Is there a trick to getting companies behind a proxied firewall to speak lp: (bzr to LP)??23:56
mrjazzcatpoolie: if it's documented, you could point me there.  Still haven't found it23:57
lifelessmrjazzcat: http_proxy and https_proxy both need to be set, and you need bzr 2.223:58
lifelessmrjazzcat: also, if you're logged in, you need port 22 - ssh - open23:58
mrjazzcathey lifeless: thanks.  I'll go mess with that.  Yes, I was thinking it should go through ssh.  Thank you!23:59

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